1 SQL分类
SQL是结构化查询语言
(Structured Query Language)的缩写。它是一种用于管理和操作关系型数据库系统的标准化语言。SQL分类如下:
分类 | 说明 |
---|---|
DDL | 数据定义语言,用来定义数据库对象(数据库,表,字段) |
DML | 数据操作语言,用来对数据库表中的数据进行增删改 |
DQL | 数据查询语言,用来查询数据库中表的记录 |
DCL | 数据控制语言,用来创建数据库用户,控制数据库的访问权限 |
1.1DDL数据库定义语言
查询所有数据库:
show databases;
查询当前数据库
select database();
创建数据库
create database [if not exist] 数据库名 [default charset 字符集][collate 排序规则];
删除数据库
drop database [if exists] 数据库名;
使用数据库
use 数据库名;
查询当前数据库所有表
show tables;
查询表结构
desc 表名;
查询指定表的建表语句
show create table 表名;
创建表
create table 表名(
字段1 数据类型 约束,
字段2 数据类型 约束,
字段3 数据类型 约束
)
添加字段
alter table 表名 add 字段名 类型(长度) [comment 注释][约束];
修改数据类型
alter table 表名 modify 字段名 新数据类型(长度);
修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度)[comment 注释][约束];
删除字段
alter table 表名 drop 字段名;
修改表名
alter table 表名 rename to 新表名;
删除表
drop table [if exists] 表名;
删除表
truncate table 表名;
1.2DML数据库操作语言
添加
给全部字段添加数据
INSERT INTO 表名 VALUES (值1,值2,......)
给指定字段添加数据
INSERT INTO 表名(字段名1,字段名2,......) VALUES (值1,值2,......)
批量添加数据
INSERT INTO 表名 VALUES (值1,值2,......),(值1,值2,......),(值1,值2,......)
注:
(1)插入数据时,指定的字段顺序需要与值的顺序是一一对应的 。
(2)字符串和日期类型数据应该包含在引号中。
(3)插入的数据大小,应该在字段的规定范围内。
删除
DELETE FROM 表名 [WHERE 条件]
注:
(1) DELETE语句不能删除某一个字段的值(可以使用UPDATE)。
(2) DELETE语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据 。
修改
UPDATE 表名 SET 字段名1=值1,字段名2=值2,......[WHERE 条件]
注:
(1) 修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据
1.3DQL数据库查询语言
条件查询
SELECT 字段列表
FROM 表名列表
WHERE 条件列表
GROUP BY 分组字段列表
HAVING 分组后条件列表
ORDER BY 排序字段列表
LIMIT 分页参数
//查询
SELECT * FROM t_user WHERE name = "小李"
//多字段查询
SELECT name, age FROM t_user
//去重查询
SELECT DISTINCT name FROM t_user
//某个字段为null
SELECT * FROM t_user WHERE idcard IS NULL
//某个字段不为null
SELECT * FROM t_user WHERE idcard IS NOT NULL
//区间查询
SELECT * FROM t_user WHERE age >= 20 && age <= 30
SELECT * FROM t_user WHERE age >= 20 AND age <= 30
SELECT * FROM t_user WHERE age BETWEEN 20 AND 30
//多条件查询
SELECT * FROM t_user WHERE age = 12 OR age = 21 OR age = 23
SELECT * FROM t_user WHERE price IN (12,21,23)
常见聚合函数:count 统计数量 max 最大值 min 最小值 avg 平均值 sum 求和
分组查询:
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件]
WHERE 与 HAVING 的区别
(1.) 执行时机不同:WHERE是分组之前过滤,不满足WHERE条件不参与分组;而HAVING是分组之后对结果进行过滤 .
(2.) 判断条件不同:WHERE不能对聚合函数进行判断,而HAVING可以 。
注:
(1) 执行顺序:WHERE > 聚合函数 > HAVING 。
(2) 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义 。
1.4DCL数据库控制语言
数据库中的DCL全称是Data Control Language,是数据控制语言,用来管理数据库用户,控制数据库的访问权限。
1 查询用户
user mysql;
select * from user;
在MySQL中用户的信息 和具有权限的信息都存放在系统数据库Mysql中的user表
2 创建用户
create user '用户名' @ '主机名' identified by ’密码‘
如果希望能够在任意主机上访问数据库,在主机名位置输入通配符%即可
3 修改用户密码
alter user ’用户名‘@’主机名‘ identified with mysql_native_password by ’新密码‘;
4 删除用户
drop user ’用户名‘@’主机名‘;
5 查询权限
show grants for ’用户名‘@’主机名‘;
6 授予权限
grant 权限列表 on 数据库名 表名 to '用户名'@'主机名';
7 撤销权限
revoke 权限列表 on 数据库.表名 from '用户名'@'主机名'