SQL分类

DDL
数据库操作
查询数据库:
查询所有数据库
sql
show databases;
查询名字里有t的数据库
sql
show databases like '%t%';
查询名字以t为结尾的数据库
sql
show databases like '%t';
查看数据库name是怎么创建出来的
sql
show create database name;
创建数据库
创建数据库name
sql
create database name;
可设置创建数据库的编码格式
sql
Create database name character set utf-8mb4 ;
编码格式
关键字问题:
sql
create database `table`
table加了引号,因为这是一个关键字,不能直接作为名字
sql
不能创建同名数据库,但可以用一下语句来使创建语句不报错
sql
create database if not exists table;
删除数据库
删除数据库
sql
drop database name;
切换数据库
sql
use name;
数据表操作
查询表
查询所有表
sql
show tables;
查看表结构
sql
desc 表名;
查询指定表的建表语句
sql
show create table 表名;
创建表
创建一张如下的表
sql
create table tb_user{
id int commet '编号',
name varchar(50) comment '姓名',
age int comment '年龄',
gender varchar(1) comment '性别'
} comment '用户表';
数据类型:
字符串:
创建表的格式问题:
修改表
添加字段:
为表emp添加一个昵称为nickname的字段
sql
alter table emp add nickname varchar(20) comment '昵称'
修改数据类型
sql
alter table 表名 modify 字段名 新数据类型(长度);
修改字段名和字段类型
sql
alter table 表名 chance 旧字段名 新字段名 类型;
删除字段
sql
alter table 表名 drop 字段名;
修改表名
sql
alter table 表名 rename to 新表名;
删除表
删除表
sql
drop table [if exists] 表名
删除表并重新创建表
sql
truncate table 表名
DML
全名数据操作语言,对数据进行增删改查
插入数据
给指定字段添加数据:
sql
insert into 表名 (字段名1, 字段名2, ...)
value (值1, 值2, ...);
给全部字段添加数据:
sql
insert into 表名 values (值1, 值2, ...)
批量添加数据:
sql
insert into 表名 (字段名1, 字段名2, ...)
values (值1, 值2, ...),
(值1, 值2, ...),
(值1, 值2, ...);
字段名也可以不用加
修改数据
sql
update 表名
set 字段名1 = 值1,
字段名2 = 值2,
...
[while 条件];
例如:
删除数据
sql
delete from 表名
[where 条件];

查询数据
sql
select 字段名(可以用*)
from 表
where 条件;
DQL
数据查询语言
查询
查询多个字段
字段设置别名
去除重复记录
条件查询
条件:
常用逻辑运算符
聚合函数
将一列数据作为一个整体,进行纵向计算
NULL值是不参与所有聚合函数运算的
分组查询
下面是一个分组查询的例子
查询结果:
一个加上having关键字后的例子
having和where的区别:
- where是分组之前过滤而having是分组之后过滤
- where不能用聚合函数作为条件
排序查询
例子:
升序:
降序:
多条件排序:
分页查询:
b5d38a10307db01e.png)
DQL执行顺序:

DCL

MySQL客户端连接服务端的权限说明
sql.user表中常用的字段分类:
查询用户

创建用户
在创建用户时,可以添加WITH直接为用户指定可操作的资源范围,如登录的用户在一小时内可以查询数据的次数等。
在创建用户时,不仅可以为用户设置密码,还可以为密码设置有效时间。
利用ACCOUNT 关键字可以为创建的用户设置是否被锁定。
它有两个可选值,分别为LOCK(锁定)和UNLOCK(解锁)。被锁定的用户不能在客户端登录MySQL服务器。
设置密码

删除用户
sql
DROP USER [IF EXISTS] 账户名 [, 账户名] ...;

权限控制
常用权限:
查询权限

授予权限
语法:
例子:
sql
-- 授予用户对特定表的INSERT, UPDATE, DELETE权限
GRANT INSERT, UPDATE, DELETE ON database_name.table_name TO 'username'@'host';
-- 授予用户WITH GRANT OPTION(可以转授权限)
GRANT SELECT ON database_name.* TO 'username'@'host' WITH GRANT OPTION;

在为用户授予权限时可以分为六种不同的等级
回收权限
语法:
例子:
刷新权限
GRANT、 CREATE USER等操作会将服务器的缓存信息保存到内存中,而REVOKE、 DROP USER操作并不会同步到内存中,因此可能会造成服务器内存的消耗,所以在REVOKE、 DROP USER后推荐使用MySQL提供的"FLUSH PRIVILEGES"重新加载用户的权限。
SQL函数
字符串函数
数值函数
日期函数
流程函数