桂林网站制作哪家好,怎样做企业文化网站,缔客网络上海响应式网站建设,业务网站制作MySql概念#xff1a; 建立在关系模型基础上#xff0c;有多张相互连接的二维表组成的数据库
SQL通用语法#xff1a; 1.SQL语句可以单行或多行书写#xff0c;以分号结尾 2.SQL语句可以使用空格/缩进来增强语句的可读性 3.MySQL数据库的SQL语句不区分大小写#xff0c;关…
MySql概念 建立在关系模型基础上有多张相互连接的二维表组成的数据库
SQL通用语法 1.SQL语句可以单行或多行书写以分号结尾 2.SQL语句可以使用空格/缩进来增强语句的可读性 3.MySQL数据库的SQL语句不区分大小写关键字建议使用大写 4.注释 单行注释-- 注释内容或#注释内容(mysql特有) 多行注释/*注释内容*/
mysql定义字符集
设置表字符集
alter table 表名 default character set utf8;修改需要插入中文字段的属性
alter table 表名 change 列名 列名 varchar(255) character set utf8;修改数据库字符集
编辑配置文件my.cnf
client下
default-character-setutf8
mysqld下
character-set-serverutf8
重启mysql
show variables like %character%SQL分类
DDL数据库定义语言用来定义数据库对象(数据库表字段)DML数据库操作语言用来定义对数据库表中的数据进行增删改DQL数据库查询语言用来查询数据库中表的记录DCL数据库控制语言用来创建数据库用户控制数据库的访问权限
DDL-数据库操作 查询所有数据库
SHOW DATABASES;
查询当前数据库
SELECT DATABASE();
创建数据库
CREATE DATABASE [IF NOT EXISTS]数据库名 [DEFAULT CHARSET字符集] [COLLATE排序规则];IF NOT EXISTS数据库不存在的情况下
DEFAULT CHARSET字符集可以省略默认是UTF-8
COLLATE排序规则
方括号中的东西都是可选的
CREATE DATABASE 表名 CHARACTER SET utf8;
删除数据库
DROP DATABASE 数据库名
使用
USE [if exists]数据库名
方括号表示如果存在则删除
DDL-表操作-查询
查询当前数据库所有表
SHOW TABLES;
查询表结构
DESC 表名
查询指定表的建表语句
SHOW CREATE TABLE 表名
DDL-表操作-创建
创建表
mysql create table test(- id int comment 编号,- name varchar(50) comment 姓名,- age int comment 年龄,- xingbie varchar(1) comment 性别- ) comment user表;
Query OK, 0 rows affected (0.00 sec)mysql show tables;
---------------
| Tables_in_zhu |
---------------
| test |
---------------
1 row in set (0.00 sec)mysql
这里的test是表名idnameagexingbie是列数int和varchar是类型varchar(1)是长度comment是注释
圆括号外的comment是注释说明是一个表
DDL表操作-数据类型
数值类型
类型 大小 有符号SIGNED范围 无符号UNSIGNED范围 描述
TINYINT 1byte -128127 0255 小数数值
SMALLINT 2byte -3276832767 065536 大整数值
MEDIUMINT 3byte -83886088388607 016777215 大整数值
INT或INTEGER 4byte -21474836482147483647 04294967295 大整数值
BIGINT 8byte -2^63,2^63-1 0,2^64-1 极大整数1
FLOAT 4byte 单精度浮点值
DOUBLE 8byte 双精度浮点值
DECTMAL 小数值
字符串类型
类型 大小 描述
CHAR 0-255bytes 定长字符串
VARCHAR 0-65535bytes 变长字符串
TINYBLOB 0-255bytes 不超过255个字符的二进制数据
TINYTEXT 0-255bytes 短文本字符串
BLOB 0-65 535bytes 长文本数据
MEDIUMBLOB 0-16 777 215 bytes 二进制形式中等长度文本数据
MEDIUMTEXT 0-16 777 215 bytes 中等长度文本数据
LONGBLOB 0-4 294 967 295bytes 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295bytes 极大文本数据
日期类型
类型 大小 范围 格式 描述
DATE 3 1000-01-01--9999-12-31 YYYY-MM-DD 日期值
TIME 3 -838:59:59--838:59:59 HH:MM:SS 时间值持续时间
YEAR 1 1901--2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00--9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期时间
TIMESTAMP 4 1970-01-01 00:00:01--2038-01-19 03:14:07 YYYY-MM-DD HH:MM:SS 混合日期和时间值时间戳
DDL-表操作-修改
1.添加字段
ALTTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];
2.修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧的字段名 新字段名 新类型(长度) [COMMENT 注释][约束];3.删除字段
ALTER TABLE 表名 DROP 字段名4.修改表名
ALTER TABLE 表名 RENAME TO 新表名;
5.删除表
DROP TABLE [if exists]表名; 如果存在
TRUNCATE TABLE 表名; //删除指定表并且重新创建
DML介绍 DML用来对数据库中表的记录进行增删改操作是数据库的操作语言
添加数据INSERT
修改数据UPDATE
删除数据DELETEDML-添加数据
1.给指定字段添加数据
1.给指定字段添加数据
INSERT INTO 表名(字段名1字段名2,....) VALUES(值1值2,...);2.给全部字段添加数据
INSERT INTO 表名 VALUES(值1,值2);3.批量添加数据
INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1值2),(值1值2);
INSERT INTO 表名 VALUES(值1值2,...),(值1值2,...);注意
插入数据时指定的字段顺序需要与值的顺序是一一对应的
字符串和日期型数据应该包含在引号中
插入的数据大小应该在字段的规定范围内DML-修改数据
UPDATE 表名 SET 字段名1值1,字段名2值2,....[WHERE 条件];注意修改语句的条件可以有也可以没有如果没有条件则会修改整张表的所有数据例子
修改id为1的name值为你好
update newtable set name你好 where id1;DML-删除数据
DELETE FROM 表名 [WHERE 条件];例子
删除newxingbie为女的所有数据 删除所有数据
DELETE from newtable;DQL-介绍
DQL数据库查询语言用来查询数据库中表的记录
查询语句SELET
DQL-语法
SELECT字段列表
FROM表名列表
WHERE条件列表
GROUP BY分组字段列表
HAVING分组后条件列表
ORDER BY排序字段列表
LIMIT分页参数
查询分类
基本查询条件查询(WHERE)聚合函数(countmaxavgsum)分组查询(GROUP BY)排序查询(ORDER BY)分页查询(LIMIT)
DQL-基本查询
1.查询多个字段
SELECT 字段1字段2字段3... FROM 表名;
SELECT * FROM 表名;2.设置别名
SELECT 字段1 [AS 别名],[AS 别名2],....FROM 表名;
例如起字段名为 工作地址 具有一次性单一性第二次查询不用as则为原来的样子
如下没有as也是同样效果所以as可以省略 3.去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
例如
DML-条件查询
1.语法
SELECT 字段列表 FROM 表名 WHERE 条件列表;
2.条件
比较运算符 功能大于大于等于小于 小于等于等于
或! 不等于
BETWEEN...AND... 在某个范围之内(含量小最大值)
IN(...) 在in之后的列表中的值多选一
LIKE 占位符 模糊匹配(...匹配单个字符%匹配任意个字符)
IS NULL 是NULL########################################################################
逻辑运算符 功能
AND或 并且(多个条件同时成立)
OR或|| 或者(多个条件任意一个成立)
NOT或 非不是
is null的使用
查询有身份证号的员工信息
select * from yg where idcard id is not null;查询没有身份证号的员工信息
select * from yg where idcard id is null
例子 年龄不等于88的员工 年龄在15岁(包含)到20岁(包含)之间的员工信息 还有一个是between...and在某个范围之内的来匹配 性别为女年龄小于25 or语句使用-查询年龄的等于18或20或40的员工信息 in是满足括号中一个条件即可 筛选名字为两个字的员工like使用
select * from yg where name like __;查身份证号最后一位是5的员工like语句
select * from yg where idcard like %5;
%5代表最后一个字符是5
或者
select * from yg where idcard like _________________5;
和上一个一样 DQL-聚合函数
1.常见聚合函数
函数 功能
count 统计数量
max 最大值
min 最小值
avg 平均值
sum 求和语法
SELECT 聚合函数(字段列表) FROM 表名;
注意null值不参与聚合运算
1.统计该企业员工数量 2.统计该企业员工的平均年龄 3.统计企业员工最大年龄和最小年龄 4.统计西安地区员工的年龄之和 DQL-分组查询
1.语法
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件]
2.where和having区别
执行时机不同where是分组之前进行过滤不满足where条件而having是分组之后对结果进行过滤
判断条件不同where不能对聚合函数进行判断而having可以
3.根据性别分组统计男员工和女员工的数量 4.根据性别分组统计男员工和女员工的平均年龄 5.查询年龄小于45的员工并根据工作地址分组获取员工数量大于2的工作地址 起别名查询 DQL-排序查询
1.语法
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式,字段2 排序方式2;
2.排序方式
ASC升序默认值
DESC降序
3.根据年龄对公司的员工进行升序排序
SELECT * FROM yg ORDER BY age asc; 或 4.根据入职时间对员工进行降序排序
SELECT * FROM yg ORDER BY ENDRYDATE DESC; 5.根据年龄对公司的员工尽心升序排序年龄相同则按照入职时间降序排序 DQL-分页查询
1.语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
起始索引从0开始起始索引查询页码-1*每页显示记录数
分页查询是数据库的方言不同的数据库有不同的实现mysql中是LIMIT
如果查询的是第一页数据起始索引可以省略直接简写为limit 102.查询第一页数据显示10条记录
起始为1-1*10 或者
2.查询第2页员工数据每页显示10条记录 查看第1行数据 DQL-案例练习
1.查询年龄为20,21,22,23岁的女性员工信息 2.查询性别为男并且年龄在20到40岁以内的姓名为三个字的员工 3.查询员工表中年龄小于60的男性员工和女性员工的人数 4.查询所有年龄小于等于35岁员工的姓名和年龄并对查询结果按年龄升序排序如果年龄相同按入职时间降序排序 5.查询性别为男且年龄在20-40岁以内的前5个员工信息对查询的结果俺年龄升序排序年龄相同按入职时间排序 DQL-执行顺序
from 表名列表
where 条件列表
group by 分组字段列表
having 分组后条件列表
select 字段列表
order by 排序字段列表
limit 分页参数
DCL数据库控制语言用来管理数据库用户控制数据库的访问权限
DCL管理用户
1.查询用户
use mysql;
select * from user;2.创建用户
create user 用户名主机名 identifled by 密码;3.修改用户密码
alter user 用户名主机名 identified with mysql_native_password by 新密码;4.删除用户
drop user用户名主机名;
DCL-权限控制
mysql中定义了很多种权限但是常用的就以下几种
权限 说明
ALL,ALL PRIVLEGES 所有权限
SELECT 查询数据
INSERT 插入数据
UPDATE 修改数据
DELETE 删除数据
ALTER 修改表
DROP 删除数据库/表/视图
CREATE 创建数据库/表 1.查询权限
SHOW GRANTS FOR 用户名主机名;例子
赋给root%所有的数据库和表的权限之后如下 2.授予权限
GRANT 权限列表 ON 数据库名.表名 TO 用户名主机名;
授予me用户对于sjk这个数据库的所有权限 授予root%所有权限对于所有数据库和表 3.撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM 用户名主机名;撤销root%的所有权限