SQL语句分类

SQL分类

  • DDL:数据定义语言,用来定义数据库对象(数据库、表、字段)
  • DML:数据操作语言,用来对数据表中的数据增删改的
  • DQL:数据查询语言,用来查询表中记录
  • DCL:数据控制语言,用来创建数据库用户、控制数据库访问权限

1. DDL

DDL——数据定义语言

数据库:

  • 创建数据库
create database [if not exists] 数据库名 [default cherset 字符集] [collate 排序规则];

字符集说明:mysql中不建议使用utf8字符集,utf8字符集默认占3个字节,而有些特殊字符占四个字节,故建议使用呢utf8mb4字符集

drop database [if existss] 数据库名; #删除数据
select database(); #查询当前数据库

数据表:

  • 表相关
desc 表名; #查看表结构
show create table 表名; #查询指定表的建表语句
  • 创建
create table 表名(
	字段 字段类型 [commit 字段注释]
)[commit 表注释];

一般建表会在后面加ENGINE=InnoDB default charset=utf8mb4;

  • 数据表的修改/删除操作
alter table 表名 add 字段名 类型(长度) [commit 注释] [约束]; #增加字段
alter table 表名 modify 字段名 新数据类型(长度); # 修改数据类型
alter table 表名 change 旧字段名 新字段名 类型(长度)[commit 注释] [约束]; #修改字段名和类型
alter table 表名 drop 字段名; #删除字段
alter table 表名 rename to 新表名; #修改表名

drop table [if not exists] 表名; # 删除表
truncate table 表名; # 删除指定表,并重新创建该表

2. DML

DML——数据操作语言

insert into 表名(字段名1,字段名2...) values(1,2...); # 1.给指定字段添加数据
insert into 表名 values(1,2...); # 2.给全部字段添加数据
insert into 表名 values(1,2...),(1,2...)...; # 3.批量添加数据
update 表名 set 字段名1=1,字段名2=2...[where 条件];
delete from 表名 [where 条件];

3. DQL

DQL——数据查询语言

语句描述:

select 字段列表 from 表名列表
where 条件列表
group by 分组字段列表
having 分组后条件列表
order by 排序字段列表(asc 默认升序, desc 降序)
limit 分页参数(起始索引, 查询记录数)

执行顺序:

from --> where --> group by --> having–> select --> order by --> limit


  • 条件查询
比较运算符功能
<>或!=不等于
between…and…在某个范围之间[min,max]
in(…)在in之后的列表中的值,多选一
like 占位符模糊匹配(_匹配任意单个字符,%匹配任意个字符)
is null是NULL
and or/&& ||与、或
NOT 或 !非,不是

  • 聚合函数/分组查询
函数功能
count统计数量
max,min最大、最小值
avg平均数
sum求和
select 聚合函数(字段列表) from 表名;
  • 分组查询
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];

where和having的区别?

  • 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;having分组之后对结果进行过滤;
  • where不能对聚合函数进行判断,having可以;

举例:查询年龄小于40的员工,并根据工作地址分组,获取员工数量大于等于10的工作地址和数量?

select address, count(*) from emp where age<40 
group by address having count(*) >= 10;

  • 排序查询
select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;

4. DCL

DCL——数据控制语言

  • 用户&权限管理
# 查询用户
use mysql;
select * from user;
# 创建用户
create user '用户名'@'主机名' identified by '密码';
# 修改用户密码
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';
# 删除用户 
drop user '用户名'@'主机名';
# 查询权限
show grants for '用户名'@'主机名';
# 授予权限
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
# 撤消权限
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';

多个权限使用,分割,*可以表示所有数据库和所有表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值