DDL 对库和表结构的操作
create databases if not exits 库名 创造一个库
drop if exits 库名 删除一个库
creat table if not exits 表名 创造一个表
show tables 看表的名字
show create table 表名 查看表的创建语句
desc 表名 查看表结构
'''
'''表的结构
1 修改表的名字
rename 表名 to 新表名
2 修改表的列名
alter table 表名 change 旧列名 新列名 类型
3添加一个新的列在表中
alter table 表名 add 列名 类型
4 删除一个列在表中
alter table 表名 drop 列名
'''
'''
DML 对数据的操作
values 下面错了 统一纠正一下
insert 插入 delete 删除 update 更新
1 对表中数据的插入
insert into 表名( 列表1,列表2等)value (数据1 ,数据2等) 一一对应
也可单独为一个列中插入数据
insert into 表名 value(数据1 ,数据2等)必须将表中的列插完数据,第二行可以续 用逗号隔开,不用写value
2 修改表中的数据
update 表名 set 列名=值,列名=值 直接修改列中的所有值
updata 表名 set 列名=值 where 条件 单个修改值
3 delete 删除表中数据
delete from 表名 全部删除表中的数据
delete from 表名 where(条件) 删除一行的数据,通过条件判断
truncate table 表名 清空所有数据 与delete from 表名 的效果相同,实现原理不同,t 相当于删除表并创造一个新表
'''
'''
约束
1主键约束
主键约束可以一个列可以多个列能唯一的标识表中的每一行方便在rdbms中找到
主键约束是=唯一加非空
主键约束一个表中只存在一个
主键约束在建立时会自动添加唯一索引
关键词 primary key
操作
单列操作
添加主键约束直接在创造表的同时,列后面加入关键词||在表里的结构写完最后添加关键词(字段名)
联合主键的话在表里的结构写完最后添加关键词(字段名1,字段名2等)
联合主键的只要不是完全相同即可以,但不能为空
添加主键可以通过改变表的结构来实现
alter table 表名 add primary key (字段名)
删除主键约束通过删除表结构来实现
alter table 表名 drop primary key 联合主键也一样
2自增长约束(一般和主键约束一起使用)
自增装约束字段必须非空且必须有唯一索引,默认从1开始增长,自动加一。
自增长约束要求只能是单一字段,且数据类型是整型。
关键词 auto_increamen
操作
在创造表的后面直接在字段后面加。
修改默认值
在创造表的结构时在分号前面写 auto_increamen = 默认值
创建表结构之后加,利用修改表结构的方法
alter table 表名 auto-increamen= 默认值
delete 删除数据后从断点出开始增长
truncate 清空数据后从1 开始,哪怕其他默认值都不受到影响
3非空约束
非空约束不能为0;
关键字 not null
操作
在创造表时
字段名 类型 not null
在创造表之后
alter table 表名 modify 字段名 类型 not null
删除操作
alter table 表名 modify 字段名 类型
注:里面的数值可以为字符串,也可以为空格
4 唯一约束
里面的数值不可以有重复的
关键字 unique
操作
在创建表时,字段名后面添加关键字
创建表之后,alter table 表名 add constraint 约束名 unique
删除
如果是创造表时添加的约束,alter table 表名 drop 字段名
如果是创建表之后添加的约束,alter table 表名 drop 约束名
注
数据可以填为Null,Null的值和任何值都不一样,包括他自己,所以可以重复填符合唯一约束
5 默认约束
操作
在创建表时,在字段后面加入 default 默认值
在创建表之后,alter table 表名 modify 字段名 default 默认值
删除约束
alter table 表名 change column 字段名 类型 default null
'''
'''
DQL
一 简单查询
select * from 表名 where group by having order by limit
1 直接查询全表
select 全表的字段名 from 表名
select * from 表名 *(即可以代替全表的字段名)
2查询某一或多个字段名
select 字段名 from 表名
3给表起别名
select * from 表名 as 别名 (as 可以省略)
4给字段起别名
select 字段名 as 别名 from 表名
5 给查询的数据加加减乘除
select 字段名 操作 from 表名 此处的数据操作只会在查询中显示,并不会对表内数据做操作
6去重
select distinct 字段名 from 表名
二 算数运算符
between and (查询在某个区间的数)
in ()查询在括号里出现的东西
is null 判断是否数据里有null
is not null 判断是否数据里有null
select least() 函数,取括号里的最小值 当数值中有null 直接不进行比较 返回null
select greatest() 函数,取括号里的最大值 当数值中有null 直接不进行比较 返回null
like '' 去查询数据中的关键字 "%"--可以匹配任何字符 "_"--匹配单个字符
三 排序查询
select * from 表名 order by 字段名 desc 或asc 一般默认为升序
select * from 表名 order by 字段名1 升序或降序,字段2 升序或降序 以字段1为主要条件,字段1相等拿字段2 排序
select distinct 字段名 from 表名 order by 字段名 升序或降序 查重排序
四 聚合查询
select 函数(字段名) from 表名 [where 条件]
下列函数都是真对于一列的操作
mix() 一列中最大的数 忽略null
sum() 一列数据的和,如果数据不是数值型返回0
min() 一列中最小的数 忽略null
avg() 一列的平均数 忽略null
count() 一列中数值不为null的行数 忽略null
五 分组查询
select 分组字段 [函数] from 表名 group by 分组字段
select 分组字段 [函数] from 表名 group by 分组字段 having 条件 order by 字段名 having对于分组之后的结果进行操作
操作顺序 首先显示from 这个表,在group by 把表按组分开为多个表,再然后函数对每个小表进行操作,在进行select 之后在having对分组结构操作,最后排序
六 分页查询
select * from 表名 limit n 查询前n条信息
select * from 表名 limit m,n 从m+1开始查询,n为查询条数
insert into 表名2 (字段1,字段2等) select value1, value2 ,from 表名1
表2必须存在
'''
'''
多表操作
外键约束
首先要先有主表
关键词 foreign key
在创作表的时候,在最后的一行加上
constraint 外键名 foreign key(字段名) references 主表名 (主表字段)
在创造表之后
alter table 表名 add constraint 外键名 foreign key(字段名) references 主表名 (主表字段)
添加数据时先给主表添加数据在给从表添加数据,
删除数据时,从表数据随便删,如果从表数据依赖主表数据,则主表数据不可乱删。
删除外键约束
alter table 从表名 drop foreign key 外键名
多表联合查询
交叉式连接
select * from 表1 表2 会产生多余无用的数据 相当于两个表中的所有数据相乘
内连接
显示内连接
select * from 表1 inner join 表2 on 条件 inner 可以省略
隐式内连接
select * from 表1 ,表2 where 条件
外连接查询
左连接查询
select * from 表1 join 表2 on 条件 左边没有的值赋予null
右连接查询
select * from 表1 right join 表2 on 条件
全部连接查询
select * from 表1 left join 表2 on 条件 union all是将两个表拼接,不进行查重,union进行查重。
union
select * from 表1 right join 表2 on 条件
多个表进行左右连接查询
select
*
from
join 表2 on 条件,
join 表3 on 条件,
join 表4 on 条件
子查询
select * from 表 where 字段 判断符号 关键词()
关键字
all 相当于恒成立问题
some和any一样,相当于存在性问题
in和exists用法类似,但exists的效率快
自关联查询
自己给自己添加外键约束,把一张表当多表来使用。
聚合函数
group_concat([distinct]字段名 [order by ] [separator 分隔符] 分隔符一般默认为 “,”
数学函数
select 函数
round(a,b)四舍五入 b为位数
rand ()0到1的随机数
ceil()向上取整
floor()向下取整
abs()绝对值
pow(a,b)平方a的b次方
truncate(a,b)直接截取到b为小数
mod()取余
字符串函数
char_lenth()返回字符串的字符个数
concat()拼接字符串
concat_ws(x,s1,s2)将s1,s2拼接并用x隔开
field(s,s1,s2)返回s在字符串中出现的位置
trim()去除左右两端空格
ltrim()去除左端空格
rtrim()去除右端空格
mid(s,a,b)从第a个字符截取b位
position(s1 in s2)返回s1在s2中的位置
replace(s,s1,s2)将字符串s的中位置的s1代替为s2
reverse()字符串翻转
right(s,a)返回字符串的后a个字符
strcmp()比较两个字符串
substr用法和mid一样
upper()大写
lower()小写
'''
'''
视图
创建视图
create or replace view 视图名
as 查询操作
修改
alter view 视图名 as 新操作
删除
drop view 视图名
重命名
rename table 旧名字 to新名字
'''
'''
存储
相当于函数
创建存储
delimter $$
create procedure 函数名字()
begin
SQL语句
end $$
delimter ;
定义局部变量 变量只能在函数中使用
declare 变量名字 类型 [默认值]
给变量赋值
set 变量名字= 值
select into 赋值
调用函数
call 关键词
call 函数名字()
成员变量 全局都可使用,不用声明直接赋值
set @ 变量名字
全局变量和会话变量
@@变量名字
传参
delimter $$
create procedure 函数名字(in 数据名 类型)
begin
SQL语句
end $$
delimter ;
返回参数
out关键字
用成员变量在外面接受参数
形参用set into 赋值
inout传入并传出
if 用法
if 条件 then 语句;
elseif then 语句;
else then 语句;
end if;
case用法
case 变量
when 值 then 语句;
else 值 then 语句;
end case;
循环
[标签]while 条件 do
语句
end while[标签]; leave等于break , iterate等于continue
[标签]repeat 条件
语句
until 条件
end repeat[标签]; do while用法
Mysql常用语句及其含义
于 2024-07-18 21:00:00 首次发布