以实验作业进行讲解
1.进入mysql服务器中,首先执行"drop database if exists two"语句,以此确保打开的mysql中没有数据库two。
2.创建名为two的数据库。
3.练习题使用数据库two并按以下要求创建数据表department。
(1)字段did:设置数据类型int(4)、非空约束、主键约束。 //非空约束:not null 主键约束:primary key
(2)字段dname:设置数据类型varchar(36)。
操作如下:
并插入以下数据:
4.继续使用数据库two创建数据表employee。
(1)字段id:设置数据类型int(4)、非空约束、主键约束。
(2)字段name:设置数据类型varchar(36)。
(3)字段age:设置数据类型int(2)。
(4)字段did:设置数据类型int(4)、非空约束。
操作如下:
并插入如下数据:
交叉连接:交叉连接返回的结果是被连接的两个表中所有数据行的笛卡尔积,也就是返回第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数,例如:department表中有四个部门,employee表中有四个员工,那么交叉连接的结果就是连接排序在一起,一般情况下很少使用。
例题:使用交叉连接查询部门(department)表和员工(employee)表中所有数据。
代码为:select * from department,employee;
操作如下:
内连接(inner join):又称简单连接和自然连接,是一种常见的连接查询。内连接使用比较运算符对两个表中的数据进行比较,并列出与连接匹配的数据行,组合成新的记录,也就是说在内连接查询中,只有满足条件的记录才能出现在查询结果中。
例题:使用内连接查询department和employee部门号(did)相同的员工部门及姓名。
代码为: select department.dname,employee.name from employee join department on department.did=employee.did;
操作如下:
例题:使用where条件语句实现以上的查询功能。
代码为:select department.dname,employee.name from employee,department where department.did=employee.did;
自连接查询:自连接查询是一种特殊的内连接,它是指相互连接的表格在物理上为同一个表,但是逻辑上分为两个表。
employee
employee as P1 employee as P2
as:设置别名 as:设置别名
例题:使用employee表,利用自连接查询“王红”所在的部门有那些员工。
代码为:select p2.* from employee as p1 join employee as p2 where p1.did=p2.did;
操作如下:
例题:使用where条件语句实现以上的查询功能。
代码为:select p2.* from employee as p1 join employee as p2 where p1.did=p2.did and p1.name="王红";
操作如下: