Mysql常用语句及其含义

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用法

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值