1.DDL数据库定义语言
1.1.库操作
查询所有数据库
show databases;
查询当前数据库
select database(); • 1
创建
create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则]
删除
drop database [is exists] 数据库名; • 1
使用
use 数据库名; • 1
1.2.表操作
查询当前数据库所有表
show table; • 1
查询表结构
desc 表名; • 1
建表语法
create table 表名( 字段1 类型 [comment 注释], 字段2 类型 [comment 注释], 字段3 类型 [comment 注释] )[comment 表注释];
删除表
drop table 表名; • 1
删除指定表,并重新创建表
truncate table 表明; • 1
1.3.表管理
添加字段
alter table 表名 add 字段名 类型 [comment 注释] [约束]; • 1
修改数据类型
alter table 表名 modify 字段名 新类型; • 1
修改字段名和字段类型
alter table 表名 change 旧字段 新字段 类型 [comment 注释] [约束];
alter table 表名 drop 字段名; • 1
truncate table 表名
alter table 表名 rename to 新表名; • 1
2…DML数据库操作语言
2.1.添加数据
给指定字段添加数据
insert into 表名 (字段名1,字段名2) values (值1,值2); • 1
给全部字段添加数据
insert into 表名 values(值1,值2);
批量添加数据
insert into 表名 (字段名1,字段名2) values (值1,值2),(值1,值2),(值1,值2); insert into 表名 values (值1,值2),(值1,值2),(值1,值2);
注意
- 插入数据时,指定的字段顺序需要与值的顺序是一一对应的。
- 字符串和日期型数据应该包含在引号中。
- 插入的数据大小,应该在字段的规定范围内
2.2修改数据
修改数据
update 表名 set 字段=值1,字段2=值2 [where 条件]; • 1
2.3删除数据
删除数据
delete from 表名 [where 条件]
注意
- delete语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。
- delete语句不能删除某一个字段的值(可以使用update)
扩充:
TRUNCATE语句和DELETE语句的区别
1、delete语句,是DML语句,truncate语句通常被认为是DDL语句。 2、delete语句,后面可以跟where子句,通常指定where子句中的条件表达式,只删除满足条件的部分记录,而truncate语句,只能用于删除表中的所有记录。 3、truncate语句,删除表中的数据后,向表中添加记录时,自动增加字段的默认初始值重新从1开始,而使用delete语句,删除表中所有记录后,向表中添加记录时,自动增加字段的值,为删除时该字段的最大值加1,也就是在原来的基础上递增。 4、delete语句,每删除一条记录,都会在日志中记录,而使用truncate语句,不会在日志中记录删除的内容,因此,truncate语句的执行效率比delete语句高。
3…DQL数据库查询语言
3.1.DQL语法
select 字段列表 from 表名 where 条件 group by 分组字段列表 having 分组后条件 orber by 排序字段 limit 分页
- 基本查询
- 条件查询(where)
- 聚合函数(count,max,min,avg,sum)
- 分组查询(group by)
- 排序查询(orber by)
- 分页查询(limit)
3.2.基本查询
1.查询多个字段
select * from 表名; select 字段1,字段2,字段3 from 表名;
2.设置别名
select 字段1 [as 别名],字段2 [as 别名] from 表名; • 1
3.去除重复记录
select distinct 字段列表 from 表名;
3.3条件查询
1.语法
select 字段列表 from 表名 where 条件列表;
2.条件
3.4聚合函数
1.介绍
将一列数据作为一个整体,进行纵向计算
2.常见聚合函数3.语法
select 聚合函数(字段列表) from 表名; • 1
注意
- null值不参与所有聚合函数运算
3.5分组查询
1.语法
select 字段 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件]; • 1
2.where与having区别
执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
判断条件不同:where不能对聚合函数进行判断,而having可以。
3.注意
执行顺序:where > 聚合函数 > having。
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
3.6排序查询
1.语法
select 字段 from 表名 order by 字段 排序方式; • 1
2.排序方式
- asc:升序(默认值)
- desc:降序
3.注意
- 如果是多个字段排序,当第一个字段值相同时,才会根据第二个字段进行排序
3.7分页查询
1.语法
select 字段 from 表名 limit 起始索引,查询记录数; • 1
2.注意
- 起始索引从0开始,起始索引=(查询页面-1)*每页显示记录数
- 分页查询是数据库的方言,不同数据库有不同的实现,MySQL中是limit
如果查询的是第一页数据,起始索引可以省略
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kZ2pYaKQ-1681953129852)(D:/stuby_data/person-data/数据库SQL/黑马MySQL学习笔记.assets/image-20230405160922791.png)]
4…DCL数据控制语言
4.1常用命令
DCL(数据库控制语言),用来管理数据库用户,控制数据库的访问权限.
1.查询用户
use mysql; select * from user; • 1 • 2
2.创建用户
create user '用户名'@'主机名' identified by '密码';
3.修改用户密码
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码'; • 1
4.删除用户
drop user 'mysql'@'主机名';
注意
- 主机名可以使用%通配
- 主要是DBA(数据库管理员)使用
4.2权限控制1.查询权限
show grants for '用户名'@'主机名'; • 1
2.授予权限
grant 权限列表 on 数据库.表名 to '用户名'@'主机名'; • 1
3.撤销权限
revoke 权限列表 on 数据库.表名 from '用户名'@'主机名';
注意
- 多个权限之间,使用逗号分隔
| 插入数据 |
| update | 修改数据 |
| delete | 删除数据 |
| alter | 修改数据 |
| drop | 删除数据库或表 |
| create | 创建数据库或表 |
1.查询权限
show grants for '用户名'@'主机名'; • 1
2.授予权限
grant 权限列表 on 数据库.表名 to '用户名'@'主机名'; • 1
3.撤销权限
revoke 权限列表 on 数据库.表名 from '用户名'@'主机名';
注意
- 多个权限之间,使用逗号分隔
- 授权时,数据库名和表名可以使用*进行通配,代表所有