cgb2109-day04

Posted cgblpx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cgb2109-day04相关的知识,希望对你有一定的参考价值。

一,SQL练习

–1,测试

#练习1:依次按照多个条件排序,asc升序,desc降序
SELECT * FROM emp ORDER BY sal DESC,ename ASC
SELECT * FROM emp ORDER BY deptno DESC,ename ASC
#练习2:统计每个岗位的员工人数
SELECT job,COUNT(1) FROM emp
#什么时候必须需要分组?查询时出现了混合列
#按照啥分组?按照非聚合列分组
GROUP BY job 
#练习3:统计每个部门包含re的部门编号
SELECT deptno FROM dept 
WHERE dname LIKE 're%' #以re开始的
GROUP BY loc #合理的分组
#练习4:统计每年入职的员工的最高薪资,只要>5000的
SELECT MAX(sal) a,YEAR(hiredate) b FROM emp
GROUP BY b #分组,除了where里不能用别名其他位置都行
#having里可用聚合函数where不能
HAVING a>5000 #分组后过滤
#练习5:查询所有员工的最高薪-用分页
SELECT MAX(sal) FROM emp
SELECT sal FROM emp ORDER BY sal DESC LIMIT 1
#创建user表(id,name,pwd),并插入数据
CREATE TABLE USER(
 id INT PRIMARY KEY AUTO_INCREMENT,#主键自增
 NAME VARCHAR(20),
 pwd VARCHAR(10)
)
INSERT INTO USER VALUES(NULL,'jack',"123")
INSERT INTO USER VALUES(NULL,'rose',"456")
#对上面SQL中使用的事务进行优化,因为上面的SQL需要两个事务的开启和关闭
#下面这种SQL也叫作批量插入的功能,高效,多次插入使用同一个事务
INSERT INTO USER VALUES
	(NULL,'tony',"123"),(NULL,'jerry',"456")

二,字段约束

–1,默认约束

哪个字段添加了默认约束,从此字段值的就有了默认值

#默认约束:给字段设置默认值而不是默认的null,使用default
CREATE TABLE a(
 id INT PRIMARY KEY AUTO_INCREMENT,
 sex VARCHAR(10) DEFAULT '男'#默认约束
)

–2,检查约束

哪个字段添加了检查约束,从此,字段值必须符合检查的条件才可以

#检查约束:使用check,了解
CREATE TABLE b(
 id INT PRIMARY KEY AUTO_INCREMENT,
 age INT,
 CHECK(age<200 AND age>0)#检查约束
 #数据要满足检查条件才可以
)

–3,外键约束!

使用明确的一段代码表示,两个表之间的关系

#外键约束:先创建外键+再使用外键
CREATE TABLE tb_user(
 id INT PRIMARY KEY AUTO_INCREMENT,
 NAME VARCHAR(20),
 age INT,
 sex CHAR(10) DEFAULT '男'#默认约束
)
CREATE TABLE tb_user_address(
 user_id INT PRIMARY KEY,
 address VARCHAR(200),
 #foreign key(当前表的主键名) references 对方表(对方的主键)
 FOREIGN KEY(user_id) REFERENCES tb_user(id)#1.创建外键
)
#2.使用外键
#约束的情况1:子表的主键值  必须 取自 主表的主键值

三,标题

以上是关于cgb2109-day04的主要内容,如果未能解决你的问题,请参考以下文章

cgb2109-day06

cgb2109-day17

cgb2109-day16

cgb2109-day03

cgb2109-day11

cgb2109-day02