DDL数据定义语言:使用create ,drop,alter等关键字
创建库:create database [if not exists] 数据库名 charset utf8
删除库:drop database [if exists] 数据库名
修改库的字符集:update database 数据库名 charset utf8
创建表:create table 表名 (列名 数据类型 [约束] [默认值] [注释], ...
[constraint 约束名 约束规则]
)
删除表:drop table [if exists] 表名
修改表名:rename table 旧表名 to新表名
复制表结构:create table 新表名 like 被复制表名
主键自动增长: auto-increment
注释: comment '注释'
已经创建好的数据库不能修改数据库名称
DML数据操纵语言:使用insert ,delete,update等关键字
插入数据: insert into 表名 values('字段值1','字段值2',...,'字段值n');
insert into 表名 set 列名1=值1,..列名n=值n;
insert into 表名(列1,列2……,列n) VALUES(值1,值2…..,值n),(值1,值2….., 值n);
insert into 表名(列1,列2……,列n) 查询语句(查询的列数与插入列数匹配);
删除数据:delete from 表名where条件
修改数据:update 表名set 字段 =' 值' where 条件
DQL数据查询语言:使用select等关键字
基础查询:select 字段 from 表名
select * from 表名 :查询全部数据
select distinct 字段 from 表名:排除重复行
查询结果处理:分类:单行函数,分组函数(又称聚合函数)
单行函数:
字符函数:
length():获取参数值的字节个数
char_length():获取参数值的字符个数
concat(str1,str2,.....):拼接字符串
upper()/lower():将字符串变成大写/小写
substring(str,pos,length):截取字符串 位置从1开始
instr(str,指定字符):返回子串第一次出现的索引,如果找不到返回0
trim(str):去掉字符串前后的空格或子串,trim(指定子串 from 字符串)
lpad(str,length,填充字符):用指定的字符实现左填充将str填充为指定长度
rpad(str,length,填充字符):用指定的字符实现右填充将str填充为指定长度
replace(str,old,new):替换,替换所有的子串
逻辑处理:
case when 条件 then 结果1 else 结果2 end; 可以有多个when
ifnull(被检测值,默认值)函数检测是否为null,如果为null,则返回指定的值,否则返回原本的值
if: if(条件,结果1,结果2)
数学函数:
round(数值):四舍五入
ceil(数值):向上取整,返回>=该参数的最小整数
floor(数值):向下取整,返回<=该参数的最大整数
truncate(数值,保留小数的位数):截断,小数点后截断到几位
mod(被除数,除数):取余,被除数为正,则为正;被除数为负,则为负
rand():获取随机数,返回0-1之间的小数
日期函数:
now():返回当前系统日期+时间
curdate():返回当前系统日期,不包含时间
curtime():返回当前时间,不包含日期
YEAR(日期列),MONTH(日期列),DAY(日期列) , HOUR(日期列) ,MINUTE(日期列)SECOND(日期列):获取指定的部分,年、月、日、小时、分钟、秒
str_to_date:将日期格式的字符转换成指定格式的日期
date_format:将日期转换成字符串
datediff(big,small):返回两个日期相差的天数
分组函数:
功能:用作统计使用,又称为聚合函数或统计函数或组函数
分类:sum 求和、avg 平均值、max 最大值、min 最小值、count 计数
1.sum,avg一般用于处理数值型max,min,count可以处理任何类型
2.以上分组函数都忽略null值
3.count函数的一般使用count(*)用作统计行数
4.分组函数后的字段要求是group by
添加外键
1.修改表的做法:alter table 表名 add constraint 约束名 foreign key() references 被参照表()
2.创建表的做法:constraint 约束名 foreign key() references 被参照表()
约束命名规则:FK_ForeignTable_PrimaryTable_On_ForeignColumn
关联查询: on 条件
inner join:内连接
left join:左外连接
right join:右外连接
条件查询:select 字段from 表 where 条件
比较:<、>、=、!=、>=、<=
逻辑运算:and、or、not
模糊查询:like关键字 ,一般与通配符一同使用
通配符:% 表示多个字符,_表示一个字符
between and
is null,is not null:是否为空
union,union all: sql语句1
union/union all
sql语句2
当使用Union时,会自动去除重复记录,而使用union all时会返回所有记录,效率高于union
排序:order by DESC(降序)/ASC(升序) 默认为ASC
数量限制:limit 跳过数目,显示数目
分组查询:select 分组函数,列(要求出现在group by的后面)
from 表
[where 筛选条件]
group by 分组的列表
[having 分组后的筛选]
[order by 子句]