035天
行百里者半九十,想要在一个行业里成为顶尖人才,一定满足一万小时定律,要想学好JAVA,需要持之以恒不断地努力,每天都要勤思考+善于询问+解决问题!
知识温故而知新>>>>>>
外连接与内连接和交叉连接和自连接的分类
MySQL表的约束
MySQL中表的约束有哪几种?
• 非空约束(notnull)
• 唯一性约束(unique)
• 主键约束(primarykey) PK
• 外键约束(foreign key)FK
• 检查约束(目前 MySQL 不支持、Oracle 支持)
如何查询表的约束信息?
SHOW KEYS FROM 表名
如何在创建表时添加主键约束,非空约束,唯一约束,检查约束和外键约束,请举例说明
--添加主键约束
ALTER TABLE 表名 ADD PRIMARY KEY(列名)
--添加非空约束
ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL
--添加唯一约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名)
--添加外键约束
ALTER TABLE 表 名 ADD CONSTRAINT 约 束 名 FOREIGN KEY( 列 名 ) REFERENCES 参照的表名(参照的列名)
如何修改表实现约束的添加与删除
--删除主键约束
ALTER TABLE 表名 DROP PRIMARYKEY
注意:删除主键时,如果主键列具备自动增长能力,需要先去掉自动增长,然后在删除 主键。
--删除非空约束
ALTER TABLE 表名 MODIFY 列名 类型 NULL
--删除唯一约束
ALTER TABLE 表名 DROPKEY 约束名
--删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 约束名
--删除外键索引(索引名与约束名相同)
ALTER TABLE 表名 DROP INDEX 索引名
MySQL 中的 DML 操作
请描述插入语句的语法,并举例说明
INSERT INTO 表名(列名 1,列名 2,列名 3.....)VALUES(值 1,值 2,值 3......)
insert into sum001(id,name) values (11,'中国')
MySQL中自动增长使用什么关键字,自动增长类型有哪些要求?
关键字:auto_increment
• 一个表中只能有一个列为自动增长。
• 自动增长的列的类型必须是整数类型。
• 自动增长只能添加到具备主键约束与唯一性约束的列上。
• 删除主键约束或唯一性约束,如果该列拥有自动增长能力,则需要先去掉自动增长然 后在删除约束。
创建表时如何指定默认值?插入数据时如何对默认值进行处理?
create table emp3(emp_id int primarykey auto_increment,name varchar(30),
address varchar(50) default'Unknown');
如果在插入数据时并未指定该列(已经指定默认值的列)的值,那么 MySQL 会将默认值添加到该列中。
请描述更新语句的语法,并举例说明
UPDATE 表名 SET 列名=值,列名=值 WHERE 条件
update sum001 id=999 where name='中国'
请描述删除语句的语法,并举例说明
DELETE FROM 表名 WHERE 条件
delete fromsum001 where name='中国'
DELETE 与 TRUNCATE 区别
•truncate 是整体删除(速度较快), delete 是逐条删除(速度较慢);
•truncate 不写服务器 log,delete 写服务器 log,也就是 truncate 效率比 delete 高的原因;
• truncate 是会重置自增值,相当于自增列会被置为初始值,又重新从 1 开始记录,而 不是接着原来的值。而 delete 删除以后,自增值仍然会继续累加。
MySQL 中的事务处理
MySQL在默认的情况下事务是否自动提交?如何关闭 MySQL 的事务自动提交?
是自动提交,执行start transaction命令即可
MySQL 查询数据
描述MySQL的列选择的基本语法
SELECT*| 投影列 FROM 表名
描述MySQL的行选择的基本语法
SELECT*| 投影列 FROM 表名 WHERE 选择条件
MySQL如何为列起别名?
SELECT 列名 AS 列别名 FROM 表名 WHERE 条件
MySQL中如何去除重复?
在 SELECT 语句中用 DISTINCT 关键字除去相同的行。
查询 employees 表,显示唯一的部门 ID。
select distinct dept_id from employees;
MySQL模糊查询使用什么关键字,常用的通配符有那些?
•like
•%表示任意多个任意字符
•_表示一个任意字符
范围查找中between...and和in有什么区别
between...and :在一个连续的范围内
in 在一个非连续的范围内
MySQL如何做空值判断?
• 判断空 isnull • 判断非空 isnotnull
排序使用什么关键字,默认是升序还是降序?
• 用 ORDERBY 子句排序 •ASC: 升序排序,默认 •DESC: 降序排序
MySQL 常用单行函数
描述常用的日期函数
SYSDATE() 或者 NOW() 返回当前系统时间,格式为 YYYY-MM-DDhh-mm-ss
CURDATE() 返回系统当前日期,不返回时间
CURTIME() 返回当前系统中的时间,不返回日期
DAYOFMONTH(date) 计算日期 d 是本月的第几天
DAYOFWEEK(date) 日期 d 今天是星期几,1 星期日,2 星期一,以此类推
DAYOFYEAR(date) 返回指定年份的天数
DAYNAME(date) 返回 date 日期是星期几
LAST_DAY(date) 返回 date 日期当月的最后一天
描述常用的转换函数
DATE_FORMAT(date,format) 将日期转换成字符串(类似 oracle 中的 to_char())
STR_TO_DATE(str,format) 将字符串转换成日期(类似 oracle 中的 to_date()
MySQL 多表查询
描述什么是等值连接,并举例说明
等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
select * from student inner join score on student.Num=score.Stu_id;
描述什么是非等值连接,并举例说明
不等值连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!& lt;和<>。
select em.last_name,from employees em ,job j gr where em.salary between j.lowest_sal and j.highest_sal;
描述什么是自连接,并举例说明
select worker.last_name,manager.last_name from employees worker,
employees manager where worker.manager_id = manager.employee_id;
描述什么是内连接,并举例说明
内连接 (多表连接)
等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
不等值连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!& lt;和<>。
自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
外连接常见有哪些几种?
外连接(多表连接)
1.左连接 left join 或 left outer join
SQL语句:
select * from student left join score on student.Num=score.Stu_id;
2.右连接 right join 或 right outer join
SQL语句:
select * from student right join score on student.Num=score.Stu_id;
3.完全外连接 full join 或 full outer join
SQL语句:
select * from student full join score on student.Num=score.Stu_id;
4.自然连接 natural join
SQL语句:
Select emp.ename,dept.dname from emp natural join dept;
相当于:Select emp.ename,dept.dname from emp join dept
on emp.deptno = dept.deptno;
MySQL 聚合函数
MySQL聚合函数有哪几种?分别描述其功能。
1AVG(arg)函数
对分组数据做平均值运算。 arg:参数类型只能是数字类型。
2SUM(arg)函数
对分组数据求和。 arg:参数类型只能是数字类型。
3MIN(arg)函数
求分组中最小数据。 arg:参数类型可以是字符、数字、日期。
4MAX(arg)函数
求分组中最大数据。 arg:参数类型可以是字符、数字、日期。
5COUNT 函数
返回一个表中的行数。
COUNT 函数有三种格式: •COUNT(*) •COUNT(expr) •COUNT(DISTINCTexpr)
MySQL 数据分组
MySQL中如何创建数据分组?
--计算每个部门的平均薪水
selectavg(e.salary)fromemployeesegroupbye.department_id
MySQL中如何约束分组结果?
--约束分组结果(HAVING)
--显示那些最高薪水大于 5000 的部门的部门号和最高薪水
select e.department_id,max(e.salary) from employees e
group by e.department_id HAVING MAX(e.salary)>5000