常用SQL语句

SQL:结构化查询语言

DDL:数据库定义语言 creat drop alter

DQL:数据库查询语言

更改表名

alter table 表名 rename 新表名;
更改字段名
alter table 表名 change 列名 新列名 数据类型;
增加字段
alter table 表名 add 列名 数据类型;
– 增加到列名2后
alter table 表名 add 列名 数据类型 after 列名2;
– 增加到第一列
alter table 表名 add 列名 数据类型 first;
删除字段
alter table 表名 drop 列名;
更改字段类型
alter table 表名 modify 列名 新数据类型;
alter table 表名 modify 列名 新数据类型 comment ‘注释说明’;
查看建表语言
show creat table 表名;

主键(唯一性)

不能为NULL且不能重复
– 建表时
一个主键
creat table 表名(
id int primary key,
name varchar(3),
income decimal(5,2)
);
多个主键
creat talbe 表名(
id int,
name varchar(3),
income decimal(5,2),
primary key(id,name)
);
– 建表后
alter table 表名 add primary key(列名…);

主键自增

– 建表时
creat table 表名(
id int auto_increment,
name varchar(4),
primary key(id)
);
– 建表后
alter table 表名 modify 主键列 主键数据类型 auto_increment;
设置自增起始值
alter table 表名 auto_increment = 值;

外键(关联完整性)

– 建表时
creat table teacher(
id int,
name varchar(4),
primary key(id)
);
creat table student(
id int,
name varchar(4),
teacher_id int,
primary key(id),
– foreign key (外键列) references 关联表名 (关联表主键列名)
foreign key (teacher_id) references teacher(id)
);
添加一个讲师
insert into teacher (id,name)values(1,‘张老师’);
添加一个学生
insert int student(id,name,teacher_id)valuse(1,‘小明’,1);
– 建表后
alter table 表名 add foreign key(外键列名)references 关联表名 (关联主键列名)

唯一约束 unique

列和列组合不能重复,可以为NULL
– 建表时
creat table 表名(
id int ,
name varchar(4),
unique(id)
);


creat table 表名(
id int unique,
name varchar(4)
);
– 建表后
alter table 表名 add unique (约束列);

非空约束 not null

默认值 default

– 建表时
create table 表名(
id int not null,
name varchar(4) default ‘姓名’,
sex varchar(1) not null default ‘无’
);
– 建表后
alter table 表名 modify 列名 数据类型 not null default ‘默认值’;

check 扩展约束 (MySQL不支持)
常用于值两者取一,例如性别

数量关系
可用通过第三者建立两者的表关联关系

and

select 列 form 表 where 表达式1 and 表达式2;

or

select 列 form 表 where 表达式1 or 表达式2;
and 与 or 同时出现时,and优先级高
= 等于 <>不等于

判断不能为空

select * from 表 where 列 is not null;

between…and…

select 列 from 表 where 列 between 值1 and 值2;

in

select 列 from 表 where 列 in (值…);

模糊查询like

%匹配任意个数的任意字符
_ 匹配单个任意字符
select 列 from 表 where 列 like ‘值’;

Order by

select 列 from 表 order by 列 asc(默认升序)/desc(降序);

limit

限制条数
select 列 from 表 limit 条数;
select 列 from 表 limit 开始值(不包含),条数;

组函数 group by

count():总条数
max(列):最大值
min(列):最小值
avg(列):平均值
sum(列):总和
select count(
),max(段),min(段)…from 表 group by 列;

having 过滤

select teacher_id,avg(score) as avg from student group by teacher_id having avg>60;

子查询

– select后
select 列名,(查询语句)from 表名;
– from后
select*,
case rank
when’A’then’优’
when’B’then’良’
when’B’then’差’
end rank_ch
from(
select*,
case
when score<60 then ‘C’
when score>=60 and score<80 then ‘B’
when score>=80 then ‘A’
end as rank
from student
)a;
– where后
select * from student where teacher_id in(
select id from teacher where name = ‘张老师’
);

union 去除重复项

union all 不去重复项

select * from student where teacher_id = 1
union/union all
select * from student where score>60;

常用函数

select version(); 显示版本信息
select database(); 显示当前数据库
select char_length(‘影’); 返回字符个数,一个汉字3字节
select concat(‘a’,‘b’,‘c’,‘d’); 拼接字符串
select concat(’=’,‘a’,‘b’,‘c’); 以首字符为拼接符拼接
select upper(‘abcd’); 大写输出
select lower(‘ABCD’); 小写输出
select substring(‘中华人民解放军’,‘1’,‘4’); 返回’中华人民’
select tirm(’ abc '); 删除两侧空格
select curdate(); 返回当前日期
select curtime(); 返回当前时间
select now(); 返回当前日期时间
select unix_timestamp(); 返回当前日期时间对应的时间戳(秒)
select unix_timestamp(‘2021-02-04 23:05:00’); 返回参数指定日期时间对应的时间戳(秒 )
select from_unixtime(18830853629); 返回参数指定时间戳对应的日期时间
select datadiff(‘2021-02-04’,now()); 返回两参数对应日期相差的天数
select adddate(now(),-2); 返回指定天数前后的日期时间
select year(‘2021-02-04’); 返回2021获得年份
select month(‘2021-02-04’); 返回2获得月份
select day(‘2021-02-04’); 返回4获得日
select if (条件,真,假); 类似java三目运算
select ifnull(表达式或字段,表达式或字段为NULL时返回值); 通常用于给可能有NULL的情况下的提供默认值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值