MYSQL_回顾
一、填空题
- 数据库的英文写法是database,简写db
- 列举常用的3种数据库MYSQL,SqlServer,Oracle
- 在数据库中,表的列被称之为字段,行被称之为记录
- 数据库中的数据类型,整数int,小数float,字符char、varchar,日期date,时间time
- SQL叫结构化查询语言
- 现在使用对管理MySQL数据库的工具是navicat
- MySQL默认的数据库管理员用户名是root,默认端口号3306
- 创建表时,没有指定字段是否允许为空的情况下,该字段是 (允许) 为空
- 表中的自动增长字段,数据类型必须为整型,且该字段应该是当前表的主键,一个表中最多可以有1个自动递增字段
- 当给表中添加记录时,如果某些字段在没有为其指定数据的情况下,仍旧有值自动填充,则需要为这些字段设置默认值
- 为了确保表中不会出现完全相同的两条记录,应该为表创建主键
- 要求表中的某个字段数据,必须来自于另外一张表的某个字段值,则当前表的字段应该设置成外键,另外那张表的字段应该是表中的主键字段
- 表的引用完整性要求子记录必须有父记录,那么从表中的子记录 (可以) 随意删除,主表中的父记录 (不可以) 随意删除或修改
- 向表中添加记录的命令:insert,修改记录的命令update,删除记录的命令delete
- 查询命令select,指定从哪张表进行查询的子句是from,指定查询命令的条件是where,将查询结果排序的子句是order by,指定正序排序是asc关键字,降序使用desc关键字,截取查询结果的指定记录数使用limit关键字,去除查询结果的重复记录,使用distinct关键字,为查询结果的列名指定别名,使用as关键字,分组统计查询中,用group by表示分组的字段
- 多表连接查询分为内连接,外连接,自连接,交叉连接;其中,被称为笛卡尔积的是交叉查询;返回两张表在公共字段上的相同值的记录,使用内连接查询,在上述功能返回的记录基础上,追加两张表中所有剩余的记录,使用全外连接查询
- 嵌套查询中,如果外层查询的条件使用比较运算符,那么内层查询的结果要求只能返回一个值,否则,外层查询的条件需要使用in。内层查询和外层查询如果使用的是不同的表,则select后面的字段可以是两张表中的字段/只能是外层表中的字段
二、简答题
-
添加记录时,列举可以使用default的情况?
有默认值的字段、允许为空的字段、自动递增的字段
-
写出where条件可以使用的所有运算符?
比较运算符:>,<,>=,<=,!=
逻辑运算符:and、or、like、between...and...、is null、in........
-
描述什么是嵌套查询,并分析为什么嵌套查询的效率比较低?
嵌套查询是指,在一个查询中嵌套另外一个查询,成为嵌套查询
外层查询每搜索一条记录,内层查询都要重新计算一次
-
为什么要进行多表连接查询?描述进行多表连接查询时,两张表的公共字段有什么要求?
查询需要的数据来自于多张表,所以进行多表连接查询
字段名可以不同,数据类型必须相同
-
列举5个聚合函数,并说明其作用?
sum(字段):对指定字段下的数据求和;
avg(字段):对指定字段下的数据求平均值;
max(字段):对指定字段下的数据求最大值;
min(字段):对指定字段下的数据求最小值;
count(字段):对指定字段下的数据求个数;
count(*):对表的记录数求和
-
对比where和having的区别
where:分组之前的排序,不可以使用聚合函数
having:分组之后的排序,可以使用聚合函数
-
什么是主键?主键的作用是什么?主键和唯一约束有什么区别
主键是表中的一个特殊字段
主键可以用来确保表中不会出现完全相同的记录
主键不允许为空,一个表最多只能有一个主键
唯一约束字段可以为空,一个表可以同时有多个唯一约束的字段
-
描述一下date类型和datetime类型的区别
date:只能显示年月日
datetime:可以显示年月日时分秒
-
由以上表employee,有一个工资字段salary,有一个字段depart,编写SQL命令实现将技术部的所有员工的工资上调40%
update employee set salary=salary*(1+0.4) where depart='技术部' -
使用SQL命令,包含字段编号、姓名、年龄、入职日期、编号为主键
create table employee ( id int not null, name varchar(20) not null, age int not null, joindate daet null, constraint pk_employee_id primary key(id) )