mysql常用语句

DDL:
创建数据库 并且设置数据库编码集UTF8
creat database 数据库名字 CHARACTER SET ‘UTF8’;

查看所有数据库
show databases

删除数据库
drop database 数据库名字

使用数据库
use 数据库名字;

创建表
create table 表名(字段名1 数据类型1,字段名2 数据类型2,…);

修改表名
alter table 旧表名 rename 新表名;

显示表数据
describe 表名;
或者 desc 表名;

向表中添加新的列
alter table 表名 add 字段名1 数据类型1;

修改表的列
alter table 表名 change 旧字段名 新字段名 数据类型;

删除表的列
alter table 表名 drop 字段名;

删除表
drop table 表名;

创建主键
字段名 数据类型 primary key 或者 primary key(字段名)

添加唯一约束 和 非空约束
字段名 数据类型 unique not null;

默认约束
字段名 数据类型 default 默认值

添加外键约束
constraint foreign key(本表字段名) references class(约束字段名)

创建完表后 添加主键约束
alter table 表名 add primary key (主键名);

创建完表后 删除主键约束
alter table 表名 drop primary key;

创建完表后 添加唯一约束
alter table 表名 add unique(列名);

创建完表后 删除唯一约束 (这个位置的索引名就是加了唯一约束的列名)
alter table 表名 drop index 索引名;

查看表的语法,可以看到索引
show create table 表名[\G]; 添加G可以把信息一行一行打印

创建索引
create index 索引名 on 表名(列名)

创建唯一索引 列名为多个的时候 需要每个都满足 才进行判断
create unique index uk_索引 on 表名(列名)

创建一个全文索引
create fulltext index ft_索引 on 表名(列名)

删除索引
alter table 表名 drop index 索引名

实现非空约束( 更改和删除其他约束,都可使用该方式)
alter table 表名 change 原列 新列名 数据类型 not null

添加外键约束
alter table 表名 add constraint 外键约束名 foregin key(外键的列名) references 主表名称(主键列名)

删除外键约束
alter table 表名 drop foregin key 外键约束名称

DML:
插入单行数据
insert into 表名(<列名列表…>) values(<值列表…>)

将其他表的数据复制到表中
insert into 表名(<列名列表…>) select 字段列表 from 其他表;

省略列名的方式 (输入全部的参数)
insert into 表名 values(<值列表>)

设置主动增长约束 在设置了自动增长的约束 插入时null
auto_increment

修改自动增长约束 比如在一些特例中需要从自定值开始
alter table 表名 auto_increment = 值

查询表的全部数据
select * from 表名;

更新数据
update 表名 set 列1=新值1,列2=新值2,N列=新值 where 过滤条件 (and or )
使用update语句 删除某一列数据 (这列必须是没有非空约束)
update 表名 set 列=null where 过滤条件 (and or )

删除行数据
delete form 表名 where 过滤条件 (and or (between min and max))

删除表所有数据
delete会记录日志数据可恢复,效率低
delete form 表名
truncate不会记录日志,数据不可恢复,效率高,不能用于有外键约束的表
truncate table 表名

DQL:

查询数据
select 字段列表 from 表 where 条件筛选 group by 字段列表 having 聚合条件筛选 order by 语句 limit 开始序号,返回行数

distinct 可用于投影去重,即可以作用在单列上,也可以作用在多列上(针对多列,同时去重)
select distinct 字段列表 from 表;

分页取出
SELECT 字段列表 FROM 表 LIMIT 开始序号,返回行数

将两个表的数据取出 字段列表列数一样
select 字段列表1 from 表1 UNION SELECT 字段列表2 from 表2

内联接:
SELECT 字段列表 FROM 表1 inner join 表2 on 表1.外键 = 表2.主键;
SELECT 字段列表 FROM 表1,表2 where 表1.外键 = 表2.主键;

外联接:
SELECT 字段列表 FROM 表1 left join 表2 on 表1.外键 = 表2.主键;
SELECT 字段列表 FROM 表1 right join 表2 on 表1.外键 = 表2.主键;

自联接:
SELECT 字段列表 FROM 表1 join 表1 on 表1.外键 = 表1.主键;

写的顺序:select … from… where… group by… having… order by… limit [offset,]
(rows)
执行顺序:from… where…group by… having… select … order by… limit

DCL:

日期函数:

返回系统当前时间
select now() [from dual];
返回系统的日期
select CURDATE() [from dual];
返回系统的时间
select CURTIME() [from dual];
两个时间相差多少天
select DATEDIFF(‘1996-4-5’,‘1995-4-5’) [from dual];

查询年
select YEAR(date字段) from 表
查询月
select MONTH(date字段) from 表
查询天
select DAY(date字段) from 表
查询日期部分
select DATE(date字段) from 表

查询星期几部分 1为星期天
select dayofweek(date字段) from 表

查询时间部分 HOUR MINUTE SECOND
select TIME(datetime字段) from 表

设置时间格式 年 月 日 时:分:秒
select DATE_FORMAT(datetime字段,’%Y %m %d %H:%i:%s’)from 表

文本处理函数:
将字母转换为大写
select upper(‘a’);
将字母转换为小写
select lower(‘A’);

从5号位开始截取
select substring(‘123456789’,5);

从5号位开始截取并截取2位
select substring(‘123456789’,5,2);

四舍五入一个10的随机数
select round(RAND()*10)

正则表达式

匹配以张李开头的字符串
select 字段列表 from 表 where hex(字段) regepx’^E5BCA0|E69D8E’;

视图:
create view 视图名字 as select 表1.字段 ,表2.字段 from 表1,表2;

触发器:
create trigger 触发器名字 触发时间 操作导致触发
on 表 for each row 当触发程序激活时执行的语句 end

触发器启动时间:before或after
操作导致触发:insert,update,delete

变化之前可以用old代表旧数据
变化之后可以用new代表新数据

存储过程:
inout 传入值名 传入值数据类型
create procedure 存储过程名(in 传入值名 传入值数据类型,
out 传入值名 传入值数据类型 )
begin
sql语句集
end

定义变量:
declare 变量名 变量类型 default 默认值;

赋值:
set 变量名字 = 值;

判断语句:
if 条件判断 then
sql语句集
elseif 条件判断 then
sql语句集
else
sql语句集
end if;

//语法一
case 表达式
when 表达式值 then sql语句集;
when 表达式值 then sql语句集…
[else sql语句集]
end case

//语法二
case
when 条件表达式 then sql语句集;
[when 条件表达式 then sql语句集]……
[else sql语句集]
end case

//语法一
select 列名列表,case 值 when 比较值 then 结果
[when 比较值 then 结果….]
[else 结果] end
from 表名 where 过滤条件

//语法二
select 列名列表,case when 条件表达式 then 结果
[when 条件表达式 then 结果….]
[else 结果] end
from 表名 where 过滤条件

循环:
while(条件判断) do
sql语句集
end while

repeat
sql语句集
until 条件表达式 end repeat

begin_label: loop
sql语句集
end loop :end_label

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值