黑马程序员技术交流社区

标题: 【广州校区】【原创】MySQL常见问题精华总结 [打印本页]

作者: 帅气de路人甲    时间: 2017-12-12 16:10
标题: 【广州校区】【原创】MySQL常见问题精华总结
【001】MySQL是什么数据库?
答:
MySQL是一个关系型数据库管理系统,目前属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 web 应用方面,MySQL是最好的RDBMS应用软件(Relational Database Management System,关系数据库管理系统)。
关系数据库将数据保存在不同的表中,而不是将所有的数据放在一个大仓库内,这样就增加了速度并提高了灵活性

【002】写出SQL的分类?
答:
结构化查询语言(Structured Query Language)简称SQL,是关系型数据库管理系统都需要遵循的规范,SQL分类如下:
①  数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象中的数据库、表、列等;关键字:create、alter、drop等
②  数据操作语言:简称DML(Data Manipulation Language),用来对数据库中的表记录进行更新;关键字:insert、delete、update等
③  数据控制语言:简称DCL(Data Control Language),用来定义数据库的访问权限、安全级别和创建用户
④  数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录;关键字:select、from、where等
注意:
SQL语句可以单行或多行书写,以分号结尾;
MySQL数据库中的SQL语句不区分大小写,关键字建议使用

【003】SQL常用操作有哪些?
答:
①  数据库操作(DDL)
②  表结构操作(DDL)
③  数据操作语言(DML)
注意:
1、值与字段必须对应:个数相同、类型相同
2、值的数据大小必须在字段的长度范围内
3、除了数值类型外,其它的字段类型的值必须使用引号(建议单引号)
4、如果要插入空值,可以不写字段,或插入null
注意:
1、列名的类型与修改的值要一致
2、修改值的时候不能超过最大长度
3、除了数值类型外,其它的字段类型的值必须使用引号引起
④  简单、条件查询(DQL)
⑤  级联操作
在修改和删除主表的主键时,同时更新或删除副表的外键值,称为级联操作

【004】使用drop、delete、truncate删除有何异同点?
答:
相同点:
1、truncate和不带where子句的delete,以及drop都会删除表内的数据
2、drop、truncate都是DDL语句(数据定义语言),执行后会自动提交
不同点:
1、truncate和delete只删除数据,不删除表的结构
     drop语句将删除表的结构被依赖的约束(constain)、触发器(trigger)、
     索引(index);依赖于该表的存储过程 / 函数将保留,但是变成invalid状态
2、delete是DML,操作事务提交后才生效,如有相应的trigger,执行时会被触发
     truncate、drop是DDL,操作立即生效,不能回滚,操作不触发trigger
     即:delete是DML语句,不会自动提交;drop / truncate是DDL语句,自动提交
3、效率:drop > truncate > delete
4、delete删除表中数据,但不重置auto_increment记录数
     truncate删除表数据,重置auto_increment记录数(其实是先删除表再创建表)

【005】SQL常用单表查询有哪些?
答:
①  排序(order by)
通过order by将查询的结果进行排序,放置在select语句的最后
②  聚合
聚合函数查询是纵向查询,是对一列的值进行计算,然后返回一个单一的值;
聚合函数会忽略空值,常用的5个聚合函数如下:
③  分组(group by)
分组中的having子句,是用于在分组后对数据进行过滤的,类似于where条件
注意:
   有 having 就一定有group by,但是有 group by 不一定有 having
就是select后面的所有列中,如果没有使用聚合函数,就必须出现在group by 后面

【006】having 与 where 的区别?
答:
having        :筛选分组,在分组后进行过滤,可使用分组函数
where        :筛选数据,在分组前进行过滤,不可用分组函数

【007】SQL有哪些常用约束(constraint)?
答:
①  主键约束:primary key
②  非空约束:not null
③  唯一约束:unique
④  外键约束:foreign key

【008】SQL表与表之间有什么关系?
答:
表与表之间主要有3种关系:1对多、多对1、1对1;
①  一对多关系
②  多对多关系
③  多对一关系

【009】SQL常用多表查询有哪些?
答:
①  交叉查询(笛卡尔积)
②  内连接查询
③  外连接查询
④  子查询

【010】关系数据库有几种范式?
答:
有6种范式:第1范式(1NF)、第2范式(2NF)、第3范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)、第5范式(5NF,又称完美范式)
一般来说,数据库只需满足第3范式(3NF)即可
①  第一范式:
符合1NF的关系中每个属性都不可再分,1NF是所有关系型数据库的最基本要求
②  第二范式:
2NF是在1NF的基础上,一张表只描述一件事情,即2NF属性完全依赖于主键
③  第三范式:
3NF是在2NF的基础上,表中的每一列都直接依赖主键,而不通过其它的列来间接依赖主键
即在满足2NF前提后,3NF的属性不依赖其它非主键属性,任何非主属性不得传递依赖主键

作者: java愤怒小鸟    时间: 2017-12-22 09:36
精辟,感谢
作者: FrankLinda    时间: 2017-12-23 00:38
完整,收录
作者: 纯情小飞飞    时间: 2017-12-23 18:36
不错不错,写的很好。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2