概念
三大范式的一些概念
三大范式
第一范式(1NF):每一列都是不可分割的原子数据项
第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)
第三范式(3NF):在2NF基础上,任何非主属性不依赖于其他非主属性(在2NF基础上消除传递依赖)
mysqldump -u用户名 -p密码 > 保存的路径
source 文件路径
Export to
栏下选择路径,导出root@localhost
,右键点击select 列名列表 from 表名列表 where ...;
select 字段列表 from 表名1 [inner] join 表名2 on 条件
;select 字段列表 from 表1 left [outer] join 表2 on 条件;
select 字段列表 from 表1 right [outer] join 表2 on 条件;
select * from emp where salary = (select max(salary) from emp);
select * from emp where salary < (select max(salary) from emp);
select * from emp where dept_id in (select id from dept where name='财务部' or nmae='外联部');
select * from dept t1, (select * from emp where join_date > '2012-09-11') t2 where t1.id=t2.dept_id;
CREATE DATABASE db1; -- 部门表 CREATE TABLE dept( id INT PRIMARY KEY PRIMARY KEY, -- 部门id dname VARCHAR(50), -- 部门名称 loc VARCHAR(50) -- 部门位置 ); -- 添加4个部门 INSERT INTO dept VALUES (10,'研发部','北京'), (20,'学工部', '上海'), (30,'销售部','广州'), (40,'财务部','深圳'); -- 职务表 CREATE TABLE job( id INT PRIMARY KEY, -- 职务id jname VARCHAR(20), -- 职务名称 descripition VARCHAR(50) -- 职务描述 ); -- 添加4个职务 INSERT INTO job VALUES (1,'董事长','管理整个公司,接单'), (2,'经理','管理部门员工'), (3,'销售员','向客人推销产品'), (4,'文员','使用办公软件'); -- 员工表 CREATE TABLE emp( id INT PRIMARY KEY, -- 员工id ename VARCHAR(50), -- 员工姓名 job_id INT, -- 职务id mgr INT, -- 上级id joindate DATE, -- 入职日期 salary DECIMAL(7,2), -- 薪水 bonus DECIMAL(7,2), -- 奖金 dept_id INT, -- 部门id FOREIGN KEY(job_id) REFERENCES job(id), FOREIGN KEY(dept_id) REFERENCES dept(id) ); -- 添加员工 INSERT INTO emp VALUES (1001,'孙悟空',4,1004,'2000-12-17','8000.00',NULL,20), (1002,'卢俊义',3,1006,'2001-02-20','16000.00','3000.00',30), (100,'林冲',3,1006,'2001-02-22','12500.00','5000.00',30), (1004,'唐僧',2,1009,'2001-04-02','29750.00',NULL,20), (1005,'李逵',4,1006,'2001-09-28','12500.00','14000.00',30), (1006,'宋江',2,1009, '2001-05-01','28500.00',NULL,30), (1007,'刘备',2,1009,'2001-09-01','24500.00',NULL,10), (1008,'猪八戒',4,1004,'2007-04-19','30000.00',NULL,20), (1009,'罗贯中',1,NULL,'2001-11-17','50000.00',NULL,10), (1010,'吴用',3,1006,'2001-09-08','15000.00','0.00',30), (1011,'沙僧',4,1004,'2007-05-23','11000.00',NULL,20), (1012,'李逵',4,1006,'2001-12-03','9500.00',NULL,30), (1013,'小白龙',4,1004,'2001-12-03','30000.00',NULL,20), (1014,'关羽',4,1007,'2002-01-23','13000.00',NULL,10); -- 工资等级表 CREATE TABLE salarygrade( grade INT PRIMARY KEY, losalary INT, hisalary INT ); -- 添加5个工资等级 INSERT INTO salarygrade VALUES (1,7000,12000), (2,12000,14000), (3,14000,20010), (4,20010,30010), (5,30010,99990); -- 需求 -- 1.查询所有员工信息,编号,姓名,工资,职务名称,职务描述 SELECT t1.`ename`, t1.`id`, t1.`salary`, t2.`jname`, t2.`descripition` FROM emp t1, job t2 WHERE t1.`job_id`=t2.`id`; -- 2.查询员工编号,姓名,工资,职务名称,职务描述,部门名称,部门位置 SELECT t1.`ename`, t1.`salary`, t2.`jname`, t2.`descripition`, t3.`dname`, t3.`loc` FROM emp t1, job t2, dept t3 WHERE t1.`job_id`=t2.`id` AND t1.`dept_id`=t3.`id`; -- 3.查询员工姓名,工资,工资等级 SELECT t1.`ename`, t1.`salary`, t2.grade FROM emp t1, salarygrade t2 WHERE t1.`salary` BETWEEN t2.`losalary` AND t2.`hisalary`; -- 4.查询员工姓名,工资,职务名称,职务描述,部门名称,部门位置,工资等级 SELECT t1.`ename`, t1.`salary`, t2.`jname`, t2.`descripition`, t3.`dname`, t3.`loc`, t4.`grade` FROM emp t1, job t2, dept t3, salarygrade t4 WHERE t1.`job_id`=t2.`id` AND t1.`dept_id`=t3.`id` AND t1.`salary` BETWEEN t4.`losalary` AND t4.`hisalary`; -- 5.查询部门编号,部门名称,部门位置,部门人数 SELECT t1.`id`, t1.`dname`, t1.`loc`, t2.total FROM dept t1, ( SELECT dept_id, COUNT(id) total FROM emp GROUP BY dept_id ) t2 WHERE t1.`id`=t2.dept_id; -- 6.查询所有员工姓名以及上级姓名,没有领导的员工也要查询 SELECT t1.ename, t1.mgr, t2.id, t2.ename FROM emp t1 LEFT JOIN emp t2 ON t1.mgr=t2.id;