1、DDL—数据定义语句
1.1、数据库
增:创建数据库—create database 数据库名;
删:删除数据库—drop database 数据库名;
改:修改数据库字符集和校对规则—alter database 数据库名称 character set 字符集名称 collate 字符集对应校对规则
查:
切换数据库:use 数据库名;
查看权限下的所有数据库:show databases;
查看某个数据库详细定义语句:show create database 数据库名\G
1.2、数据库表
增:创建表格—create table 数据库表名(字段名 数据类型,字段名 数据类型.....)
删:删除表—drop table 表名称;
改:
修改表名称
alter table 旧表名 rename to 新表名;
rename table 旧表名称 to 新表名称
修改表结构
增加字段
alter table 表名称:add column 字段名称 数据类型;
加在某个字段后面:alter table 表名称 add column 后加字段名称 数据类型 After 某个字段
加字段放在第一位:alter table 表名称 Add cloumn 字段名称 数据类型 first;
删除字段:
alter table 表名称 column 字段名称
修改字段
数据类型:alter table 表名称 modify 【column】 字段名称 新的数据类型;
名称:alter table 表名称 change 【column】 旧字段名称 新的字段名称 新的数据类型;
位置:
alter table 表名称 modify 【column】 字段名称 数据类型 first;
alter table 表名称 modify 【column】 字段名称 数据类型 after 另一个字段;
查:
查看表结构
desc 表名称;
describe 表名称;
查看所有表格
show tables
show tables from 数据库名称
查看表的详细定义信息:show create table 表名称\G
2、DML数据操作语句
2.1、添加数据
单条:
insert into表名称 values(值列表)-------注意:这种方式默认添加的值与字段顺序一致,需要类型、个数必须一一对应
insert into表名称(字段列表) value (值列表)-------注意字段与值对应,可写部分字段
多条:insert into 表名 values(值列表),(值列表),(值列表)
2.2、删除数据
删除部分:delete from 表名称 where 条件
删除整张表:
delete from 表名称 ;一条一条删支持回滚
truncate 表名称 ;直接删表重建,效率高,但是不能回滚,建议忘掉
2.3、修改数据
修改所有:update 表名 set 字段名=值,字段名=值;
修改部分:update 表名 set 字段名 = 值 where 条件;
3、DQL—查询语句
3.1、普通查询
【select 字段列表 from 表名称 where 筛选条件】
说明:
列表字段可以只写需要用到的,如果查询所有字段可直接在select后面写【*】,但是建议养成直接写字段习惯。
不写where代表查询整张表数据
3.2、查询结果排序(order by)
【select 列表字段 from 表名 where 筛选条件 order by 排序字段 desc/asc】
说明:
关键字:order by
降序:desc
升序:asc
3.3、查询结果分组(group by)
【select 列表字段 from 表名称 where 筛选条件 group by 分组字段 having 筛选条件 order by 排序字段】
说明:
书写位置分组关键字(group by)在排序(order by)之前
having:代表分组后对分组结果进行筛选
一般分组常配合函数使用
使用分组后列表字段就不能随便写,要不写函数,要不只能写分组字段,否则报错
3.4、查询结果分页(limit)
【select 字段 from 表 where 条件 order by 排序字段 limit m,n】
公式:m=(page-1)*n
n:表示每页显示记录数
m:表示从第几行开始取记录,这里注意第一行的索引是0
page:表示第几页
3.5、函数
单行函数
数学函数:
函数 | 意义 |
ABS(x) | 返回x的绝对值 |
CEIL(x) | 返回大于x的最小整数值 |
FLOOR(x) | 返回小于x的最大整数值 |
FLOOR(x) | 返回小于x的最大整数值 |
MOD(x,y) | 返回x/y的模 |
RAND() | 返回0~1的随机值 |
ROUND(x,y) | 返回参数x的四舍五入的有y位的小数的值 |
TRUNCATE(x,y) | 返回数字x截断为y位小数的结果 |
SQRT(x) | 返回x的平方根 |
POW(x,y) | 返回x的y次方 |
字符串函数
函数 | 意义 |
CONCAT(S1,S2,……Sn) | 连接S1,S2,……Sn为一个字符串 |
UPPER(s)或UCASE(s) | 将字符串s的所有字母转成大写字母 |
LOWER(s)或LCASE(s) | 将字符串s的所有字母转成小写字母 |
LTRIM(s) | 去掉字符串s左侧的空格 |
RTRIM(s) | 去掉字符串s右侧的空格 |
TRIM(s) | 去掉字符串s开始与结尾的空格 |
时间日期函数:
函数 | 意义 |
CURDATE()和CURRENT_DATE() | 获取系统日期 |
CURTIME()和CURRENT_TIME() | 获取系统时间 |
加密函数
函数 | 意义 |
md5(str) | 返回字符串str的md5值,也是一种加密方式 |
SHA(str) | 返回字符串str的sha算法加密字符串,40位十六进制值的密码字符串 |
SHA2(str,hash_length) | 返回字符串str的sha算法加密字符串,密码字符串的长度是hash_length/4。hash_length可以是224、256、384、512、0,其中0等同于256。 |
条件判断函数
函数 | 意义 |
IF(value,t,f) | 如果value是真,返回t,否则返回f |
IFNULL(value1,value2) | 如果value1不为空,返回value1,否则返回value2 |
CASE WHEN 条件1 THEN result1 WHEN 条件2 THEN result2 … ELSE resultn END | if ,else if |
CASE (expr) WHEN 常量值1 THEN 值1 WHEN 常量值2 THEN 值2 … ELSE 值n END | switch...case |
分组函数(聚合函数)
求平均值:AVG(x)
求总和:SUM(x)
求最大值:MAX(x)
求最小值:MIN(x)
统计记录数:COUNT(x)
3.6、关联查询
内连接:
关键字 | inner join |
语法实例 | select 字段列表 from 表1 inner join 表2 on 关联条件 |
结果 | A表 ∩ B表 |
左外连接
关键字 | left join |
语法实例 | select 字段列表 from 表1 left join 表2 on 关联条件 |
结果 | A - A∩B |
右外连接
关键字 | right join |
语法实例 | select 字段列表 from 表1 right join 表二 on 关联条件 |
结果 | B - A∩B |
自连接连接
自己连接自己的字段,物理实际上只有一张表,但逻辑上是成两张表
3.7、集合操作(全外连接)
前提:俩个结果集,字段个数和字段类型一一对应
关键字 | 意义 |
union | 并集去重,对俩个集合进行并集操作,不包括重复行同时进行默认规则的排序 |
union All | 全集不去重,对俩个结果进行并集操作,包括重复行,不进行排序 |
intersect | 交集找重复,对俩个结果进行交集操作,不包括重复行,同时进行默认规则进行排序 |
minus | 对俩个结果进行差操作,不包括重复行,同时进行默认规则的排序 |