#创建部门表CREATE TABLEdept(
idINT PRIMARY KEYAUTO_INCREMENT,
NAMEVARBINARY(20)
);INSERT INTO dept(NAME) VALUES("开发部"),("市场部"),("财务部");
#创建员工表CREATE TABLEemp(
idINT PRIMARY KEYAUTO_INCREMENT,
NAMEVARBINARY(10),
genderCHAR(1),#性别
salaryDOUBLE,#薪水
join_date DATE,#入职日期
dept_idINT,FOREIGN KEY (dept_id) REFERENCESdept(id) #外键,关联部门表(部门表的主键)
);INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES ('孙悟空','男',7200,'2013-02-21',1);INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES ('猪八戒','男',3600,'2010-12-02',2);INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES ('唐僧','男',9000,'2008-08-08',2);INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES ('白骨精','女',5000,'2015-10-07',3);INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES ('蜘蛛精','女',4500,'2011-03-14',1);
SELECT COUNT(*) FROM emp,dept;
#笛卡尔积 A,B 两个集合,取这两个集合的所有组成情况
SELECT * FROM emp,dept;
#消除无用的数据,内连接查询,外链接查询,子查询
#查询所有员工信息和对应的部门信息
SELECT * FROM emp , dept WHERE emp.`dept_id` = dept.`id`;
id name gender salary join_date dept_id id name
1孙悟空男72002013-02-2111开发部
2猪八戒男36002010-12-0222市场部
3唐僧男90002008-08-0822市场部
4白骨精女50002015-10-0733财务部
5蜘蛛精女45002011-03-1411开发部
#查询员工表的名称,员工表的性别,部门名称
SELECT emp.`name` , emp.`gender`,dept.`name` FROM emp,dept WHERE emp.`dept_id` = dept.`id`;
SELECT
t1.name,t1.gender,t2.name
FROM
emp t1,dept t2
WHERE
t1.`dept_id` = t2.`id`;
name gender name
孙悟空男开发部
猪八戒男市场部
唐僧男市场部
白骨精女财务部
蜘蛛精女开发部
#左外连接 查询左表的所有数据以及其交集部分
SELECTt1.*,t2.`name` FROM emp t1 LEFT JOIN dept t2 ON t1.`dept_id` = t2.`id`;
id name gender salary join_date dept_id name
1孙悟空男72002013-02-211开发部
5蜘蛛精女45002011-03-141开发部
2猪八戒男36002010-12-022市场部
3唐僧男90002008-08-082市场部
4白骨精女50002015-10-073财务部
#右外连接
SELECTt1.*,t2.`name` FROM emp t1 RIGHT JOIN dept t2 ON t1.`dept_id` = t2.`id`;