黑马程序员技术交流社区

标题: 【成都校区】《MySQL多表》 [打印本页]

作者: 不知道别问我    时间: 2018-11-22 12:42
标题: 【成都校区】《MySQL多表》
* 查询语法:
        select
                列名列表
        from
                表名列表
        where....
* 准备sql
        # 创建部门表
        CREATE TABLE dept(
                id INT PRIMARY KEY AUTO_INCREMENT,
                NAME VARCHAR(20)
        );
        INSERT INTO dept (NAME) VALUES ('开发部'),('市场部'),('财务部');
        # 创建员工表
        CREATE TABLE emp (
                id INT PRIMARY KEY AUTO_INCREMENT,
                NAME VARCHAR(10),
                gender CHAR(1), -- 性别
                salary DOUBLE, -- 工资
                join_date DATE, -- 入职日期
                dept_id INT,
                FOREIGN KEY (dept_id) REFERENCES dept(id) -- 外键,关联部门表(部门表的主键)
        );
        INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES('孙悟空','男',7200,'2013-02-24',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);
* 笛卡尔积:
        * 有两个集合A,B .取这两个集合的所有组成情况。
        * 要完成多表查询,需要消除无用的数据
* 多表查询的分类:
        1. 内连接查询:
                1. 隐式内连接:使用where条件消除无用数据
                        * 例子:
                        -- 查询所有员工信息和对应的部门信息

                        SELECT * FROM emp,dept WHERE emp.`dept_id` = dept.`id`;
                       
                        -- 查询员工表的名称,性别。部门表的名称
                        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`;




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2