SQL面试复习-高级部分


前言

sql作为一门古老的语言,学习起来性价比超高!几十年都不用更新!本节内容为进阶高级复习题!

创建数据库/表

create database 数据库名create table 表名 (字段1 varchar(255) 约束,字段2 类型 约束,primary key (字段1)...)

约束

not null 不能为nullunique 唯一primary key 主键foreign key 外键default 默认check 选择

删除数据库/表

drop table 表名drop database 数据库名只清空:delete from 表truncate table 表

返回前xxx条数据

select top 5 字段 from 表select 字段 from 表 limit 5

like 模糊搜索

select 字段 from 表 where 字段2 like "%结尾"%代表任意字符not like 代表不包含这个模糊搜索

通配符

% 代表0个或多个字符_ 代表一个字符REGEXP [1,2,'a'] 代表内部任何单一字符REGEXP ^[A-H] 不包含任何单一大写字母REGEXP ![^字符列表] 不包含任何单一字符

IN 选取多个规定内的

select 字段 from 表 where 字段 in (值1,值2)not in 不在

between 在一个区间内选择

select 字段 from 表 where 字段 between 值1 and 值2not between 不属于

别名 as

select 字段 as 新字段名 from 表select 字段 from 表 as 新表名

多表链接 join on

内链接 inner join

MySQL,面试复习题,数据库/表,like模糊搜索,多表链接
select * from 表1 inner join 表2 on 表1.字段1 = 表2.字段2

左右链接 left/right join

MySQL,面试复习题,数据库/表,like模糊搜索,多表链接
MySQL,面试复习题,数据库/表,like模糊搜索,多表链接
select * from 表1 lect/right join 表2 on 表1.字段1=表2.字段2

完全链接 full join

MySQL,面试复习题,数据库/表,like模糊搜索,多表链接
select * from 表1 full join 表2 on 表1.字段1=表2.字段2

outer join

可以用在左右全中,如left outer join,可以返回不包含的内容

join去重

MySQL,面试复习题,数据库/表,like模糊搜索,多表链接
在 on 后加where 如 select * from 表1 left join 表2 on 表1.字段1=表2.字段2 where 表2.字段 is null

合并查询结果 union

select * from 表1 union select * from 表2

允许重复合并结果 union all

select * from 表1 union all select * from 表2

复制数据到其他表

create table 新表 as select * form 旧表insert into 新表 select * from 旧表insert into 新表 (字段名) select * from 旧表

创建索引 create index

create index 索引名 on 表名 (字段名-可不写)创建不允许值重复的唯一索引create unique index 索引名 on 表名 

删除索引 drop index

alert table 表名 drop index 索引名