MySQL面试题 | 附答案解析(十三)
常用SQL语句
1. SQL语句主要分为哪几类
数据定义语言DDL(Data Ddefinition Language)CREATE,DROP,ALTER
主要为以上操作 即对逻辑结构等有操作的,其中包括表结构,视图和索引。
数据查询语言DQL(Data Query Language)SELECT
这个较为好理解 即查询操作,以select关键字。各种简单查询,连接查询等 都属于DQL。
数据操纵语言DML(Data Manipulation Language)INSERT,UPDATE,DELETE
主要为以上操作 即对数据进行操作的,对应上面所说的查询操作 DQL与DML共同构建了多数初级程序员常用的增删改查操作。而查询是较为特殊的一种 被划分到DQL中。
数据控制功能DCL(Data Control Language)GRANT,REVOKE,COMMIT,ROLLBACK
主要为以上操作 即对数据库安全性完整性等有操作的,可以简单的理解为权限控制等。
2. 超键、候选键、主键、外键分别是什么?
a.超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。
b.候选键:是最小超键,即没有冗余元素的超键。
c.主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。
d.外键:在一个表中存在的另一个表的主键称此表的外键。
3. SQL 约束有哪几种?
a..NOT NULL: 用于控制字段的内容一定不能为空(NULL)。
b..UNIQUE: 控件字段内容不能重复,一个表允许有多个 Unique 约束。
c..PRIMARY KEY: 也是用于控件字段内容不能重复,但它在一个表只允许出现一个。
d.FOREIGN KEY: 用于预防破坏表之间连接的动作,也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
e.CHECK: 用于控制字段的值范围。
4. 六种关联查询
a.交叉连接(CROSS JOIN)
b.内连接(INNER JOIN)
c.外连接(LEFT JOIN/RIGHT JOIN)
d.联合查询(UNION与UNION ALL)
e.全连接(FULL JOIN)
f.交叉连接(CROSS JOIN)
g.SELECT * FROM A,B(,C)或者SELECT * FROM A CROSS JOIN B (CROSS JOIN C)#没有任何关联条件
内连接分为三类
a.等值连接:ON A.id=B.id
b.不等值连接:ON A.id > B.id
c.自连接:SELECT * FROM A T1 INNER JOIN A T2 ON T1.id=T2.pid
d.外连接(LEFT JOIN/RIGHT JOIN)
e.左外连接:LEFT OUTER JOIN, 以左表为主,先查询出左表,按照ON后的关联条件匹配右表,没有匹配到的用NULL填充,可以简写成LEFT JOIN
f.右外连接:RIGHT OUTER JOIN, 以右表为主,先查询出右表,按照ON后的关联条件匹配左表,没有匹配到的用NULL填充,可以简写成RIGHT JOIN
联合查询(UNION与UNION ALL)
SELECT * FROM A UNION SELECT * FROM B UNION ...
a.就是把多个结果集集中在一起,UNION前的结果为基准,需要注意的是联合查询的列数要相等,相同的记录行会合并
如果使用UNION ALL,不会合并重复的记录行
b.效率 UNION 高于 UNION ALL
全连接(FULL JOIN)
a.MySQL不支持全连接
b.可以使用LEFT JOIN 和UNION和RIGHT JOIN联合使用
SELECT * FROM A LEFT JOIN B ON A.id=B.id UNIONSELECT * FROM A RIGHT JOIN B ON A.id=B.id
表连接面试题
有2张表,1张R、1张S,R表有ABC三列,S表有CD两列,表中各有三条记录。
R表
S表
最后,小编分类整理了许多java进阶学习材料和BAT面试给热爱IT行业的你,如果需要资料的请转发此文章后再私聊小编回复【java】就能领取2019年java进阶学习资料和BAT面试题以及《Effective Java》(第3版)电子版书籍。也可以加群:712263501领取海量学习资料进行学习。