基本语句(DDL):
show databases; 查询所有数据库
create database 库名 ; 创建一个新库
use 库名 打开该数据库
show tables;//显示该数据库的下的所有表
增删改语句(DML):
删除语句:
delete from 表名 where 筛选条件;
插入语句:
insert into 表名 values(值);这里的值与默认的所有字段顺序一一对应
insert into 表名(字段) values(值);这里的值需要与表名后列出的字段一一对应。
删除语句:
update 表名 set 字段=修改后的值 where 筛选条件;
(注意:删除与修改语句在没有指定where筛选条件下,默认是对所有的数据进行更改);
查询语句(DQL):
(字段为*表示所有字段)
select 字段 from 表名 where 判断条件
like :
_ 表示一个字符的占位符
% 表示任意个数的占位符
聚合函数:
定义:
将一列数据作为一个整体进行纵向计算,通常搭配分组查询使用常用函数:
count 计算纵向数据的数量
max 计算纵向数据的最大值
min 计算纵向数据的最小值
avg 计算纵向数据的平均值
sum 计算纵向数据的总和
分组查询:
group by
where和group by的区别:
group by是在where的筛选后才进行的,having是对分组之后的结果进行过滤;
where不能对聚合函数进行判断,而having可以
select 字段 from 表名 group by 分组字段 having 刷选条件
排序查询:
order by
select 字段 from 表名 order by 排序字段1 排序规则,排序字段2 排序规则 ...;
排序规则:
asc 升序 desc 降序
先根据排序字段1来先排序,如果1相等则根据2来排序,以此类推。
分页查询:
limit
select 字段 from 表名 limit 起始索引,要查询的条数;
起始索引=(查询页码-1)*每一页的记录数,如果起始索引为1的话,可以省略,只需要写出查询条数即可。
编写顺序:
select 字段 from 表名 where 筛选条件 group by 分组字段 having 分组筛选 order by 排序字段 ,排序规则 limit 起始索引,查询记录数。
执行顺序:
from >where >group by >select >order by >limit;
用户语句(DCL):
一个本机的数据库,可以为该数据库创建多个用户,每个用户都对这个数据的的访问具有权限,其它主机通过登录用户的方式以对应用户的身份来访问这个数据库,而DCL语句就是为数据库的用户设置权限。
管理用户:
创建用户:
create user 用户名@主机名 identified by ‘密码’;
修改用户:
alter user 用户名@主机名 identified with mysql_native_password by '新密码';
删除用户:
drop user 用户名@主机名;
用户权限:
all; 所有权限
select; 查询数据
delete;删除数据
update;修改数据
insert;插入数据
alter ;修改表的权限;
drop;删除数据库/表/视图的权限;
create;创建数据库/表的权限;
查询权限:
show grants for 用户名@主机名;
grant 权限列表 on 数据库.表名 to 用户名@主机名;//授予用户对数据库的表的一种权限。
revoke 权限列表 on 数据库.表名 from 用户名@主机名;//撤销用户对数据库的表的一种权限。
函数:
字符串函数:
concat(s1,s2,s3,...) 将字符串s1,s2,s3拼接在一起
lower(s) 将字符串s的字母全部变为小写
upper(s) 将字符串s的字母全部变为大写
lpad(s,size,t_s) 将字符串的位数设置为size位,多于出来的位数用t_s左填充
rpad(s,size,t_s) 将字符串的位数设置为size位,多于出来的位数用t_s右填充
trim(s) 将字符串s的头部和尾部的空格删除掉,如果没有则不做删改。
substring(s,start,size) 返回字符串s从第start位开始之后的size位,这里的start是从1开始的
数值函数:
ceil(a) 将数值向上取整
floor(a) 将数值向下取整
mod(a,b) 取余函数
rand() 随机生成0-1的小数
round(x,y) 对参数x采用四舍五入的方式保留y位小数
案例: 通过数据库的函数,生成一个六位数的随机验证码。
select lpad(round(rand(),6)*1000000,6,'0');
日期函数:
curdate() //显示当前日期,年月日
curtime() //显示当前时间 时分秒
now() //显示当前时期 年月日时分秒
select year(date) 获取date里的年份
select month(date) 获取date里的月份
select day(date) 获取date里的日期
select date_add(now(),interval size 类型); 为时间now添加size个大小个类型 ,类型可以是年月日
select datediff(now(),'2002-09-28'); 求两者之间的天数,前者减去后者。
流程函数:
if(bool,s1,s2) //如果book为真则打印s1,反之打印s2
if(s1,s2) //如果s1为空则打印s2反之打印s1
case 字段 when 判断条件1 then 符合判定条件的结果2 when 判断条件1 then 符合判定条件的结果2