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 '用户名'@'主机名';

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

相关推荐

  1. SQL语句分类

    2024-07-10 14:00:02       62 阅读
  2. SQL语句分类

    2024-07-10 14:00:02       29 阅读
  3. SQL语句分为以下三种类型

    2024-07-10 14:00:02       50 阅读
  4. <span style='color:red;'>SQL</span><span style='color:red;'>分类</span>

    SQL分类

    2024-07-10 14:00:02      56 阅读
  5. SQL分类

    2024-07-10 14:00:02       33 阅读
  6. <span style='color:red;'>SQL</span><span style='color:red;'>语句</span>

    SQL语句

    2024-07-10 14:00:02      55 阅读
  7. sql语句

    2024-07-10 14:00:02       42 阅读
  8. SQL 语句

    2024-07-10 14:00:02       50 阅读
  9. <span style='color:red;'>SQL</span><span style='color:red;'>语句</span>

    SQL语句

    2024-07-10 14:00:02      37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 14:00:02       99 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 14:00:02       107 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 14:00:02       90 阅读
  4. Python语言-面向对象

    2024-07-10 14:00:02       98 阅读

热门阅读

  1. vue安装总是失败原因剖析

    2024-07-10 14:00:02       25 阅读
  2. 使用Spring Cloud构建微服务架构下的淘客返利系统

    2024-07-10 14:00:02       28 阅读
  3. TCP/IP协议族结构和协议

    2024-07-10 14:00:02       30 阅读
  4. 重读AI金典算法模型-GPT系列

    2024-07-10 14:00:02       24 阅读
  5. win10使用小技巧三

    2024-07-10 14:00:02       30 阅读
  6. 根据关键词query获取google_img(api方式)

    2024-07-10 14:00:02       25 阅读
  7. redis中的事务和mysql中的事务有什么区别?

    2024-07-10 14:00:02       23 阅读
  8. C# 构造函数依赖注入 使用out向外传递参数

    2024-07-10 14:00:02       28 阅读