基础
SQL
DDL:数据定义语言,用来定义数据库,表,字段
DML:对数据库中的数据进行增删改
DQL:对数据库表中的数据进行查询
DCL:用来创建数据库用户,控制数据库的访问权限
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W4C9h4dQ-1653654942703)(https://gitee.com/y-tao/imgsup/raw/master/imgs/image-20220526223232304.png)]
DDL
数据库
#查看数据库
show databases;
#创建数据库之前判断是否存在,并设置字符集#utf8mb4
create database if not EXISTS db_2 DEFAULT charset utf8mb4;
#使用数据库
use db_2;
# 查询当前使用的数据库
select database()
#删除数据库
drop database if exists db_2;
表
#查看当前数据库的表
show tables
#查看某个表的表结构
desc tb_test
#查看创建表语句
show CREATE table tb_test
#
create table if not exists tb_user(
id int comment '编号',
name varchar(50) comment '姓名'
)comment '用户信息'
DML
对表中的数据进行增删改
insert into tb_user (id,name) VALUES (1,"dd");
insert into tb_user VALUES (1,"cc",1);
UPDATE tb_user set name = "张三" where id = 1;
update tb_user set id=2,name="abc";
DELETE FROM tb_user where id=2;
DQL
对表中的数据查询
select * from tb_test where ab between 2 and 4;
select distinct ab from tb_test where ab in (2,4,14);
select id from tb_user where age in (18) && name like "%三%"
#聚合函数 null值不参与聚合函数计算
select max(id) 最大,min(id)最小,count(*),avg(id),sum(age) from tb_user;
3
#group by 分组函数
select id,count(*) c from tb_user group by id having c>=2;
#order by ASC升序 desc 降序
select id from tb_user id ORDER BY id ASC ,age desc
#limit
select * from tb_user limit 0,5;
DQL执行顺序
1.from决定查询的表单
2.where 决定查询条件
3.group by决定分组having分组后条件
4.select 决定查询的内容
5.order by决定查询内容的排序
6.limit决定排序之后的分组
DCL
对数据库用户,数据库的访问权限
#查询所有用户
select * from user
#创建用户me,连接主机localhost密码123456
create user 'me'@'localhost' identified by '123456'
#修改用户me 密码为1111
alter user 'me'@'localhost' identified with mysql_native_password by '1111'
#删除用户me
drop user 'me'@'localhost'
DCL权限设置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-saFyxkPv-1653654837920)(D:\anzhuang\typora\imgs\image-20220527192341795.png)]
#给me用户添加一个db1数据库下所有表的所有权限
grant all on db1.* to 'me'@'localhost'
#查看me用户的所有权限
show grants for 'me'@'localhost'
#移除me用户的db1的所有表的所有权限
revoke all on db1.* from 'me'@'localhost'
o ‘me’@‘localhost’
#查看me用户的所有权限
show grants for ‘me’@‘localhost’
#移除me用户的db1的所有表的所有权限
revoke all on db1.* from ‘me’@‘localhost’