• 第十二,十三章 mysql数据类型,视图的课后练习


    第十二章 mysql数据类型的课后练习

    CREATE TABLE emp2(
    id INT,
    emp_name VARCHAR(15)
    );

    CREATE TABLE dept2(
    id INT,
    dept_name VARCHAR(15)
    );

    1.向表emp2的id列中添加PRIMARY KEY约束
    ALTER TABLE emp2 MODIFY COLUMN id INT PRIMARY KEY;
    ALTER TABLE emp2 ADD PRIMARY KEY(id);

    2. 向表dept2的id列中添加PRIMARY KEY约束
    ALTER TABLE dept2 MODIFY COLUMN id INT PRIMARY KEY;
    ALTER TABLE dept2 ADD PRIMARY KEY(id);

    3. 向表emp2中添加列dept_id,并在其中定义FOREIGN KEY约束,
    与之相关联的列是dept2表中的id列。
    ALTER TABLE emp2 ADD COLUMN dept_id INT;
    ALTER TABLE emp2 ADD CONSTRAINT fk_emp2_deptid FOREIGN KEY(dept_id) REFERENCES dept2(id);

        **第十四章   视图课后练习**
    
    • 1

    练习1
    1.使用表emps创建视图employee_vu,
    其中包括姓名(last_name),员工号(employee_id),部门号(department_id)
    CREATE VIEW employee_vu
    AS SELECT last_name,employee_id,department_id
    FROM emps;

    2.显示视图的结构
    DESC employee_vu;

    3.查询视图的全部内容
    SELECT *FROM employee_vu;

    4.将视图中的数据限定在部门号是80
    即对原有的视图进行修改
    CREATE OR REPLACE VIEW employee_vu
    AS
    SELECT last_name,employee_id,department_id
    FROM emps
    WHERE department_id=80;

    练习2
    题目:

    1. 使用表employees创建视图employee_vu,其中包括姓名(LAST_NAME),员工号(EMPLOYEE_ID),部门
      号(DEPARTMENT_ID)
    2. 显示视图的结构
    3. 查询视图中的全部内容
    4. 将视图中的数据限定在部门号是80的范围内
      1. 使用表employees创建视图employee_vu,其中包括姓名(LAST_NAME),员工号(EMPLOYEE_ID),部门
      号(DEPARTMENT_ID)

      CREATE OR REPLACE VIEW employee_vu
      AS
      SELECT last_name,employee_id,department_id
      FROM employees

    2. 显示视图的结构
    DESC employee_vu;

    3. 查询视图中的全部内容
    SELECT * FROM employee_vu;

    4. 将视图中的数据限定在部门号是80的范围内
    CREATE OR REPLACE VIEW employee_vu
    AS
    SELECT last_name,employee_id,department_id
    FROM employees
    WHERE department_id = 80;
    CREATE TABLE emps
    AS
    SELECT * FROM atguigudb.employees;

                  练习二
    
    • 1

    1. 创建视图emp_v1,要求查询电话号码以‘011’开头的员工姓名和工资、邮箱
    CREATE VIEW emp_v1
    AS
    SELECT last_name,salary,email
    FROM emps
    WHERE phone_number LIKE’011%';

    2. 要求将视图 emp_v1 修改为查询电话号码以‘011’开头的并且邮箱中包含 e 字符的员工姓名和邮箱、电话号码,工资
    CREATE OR REPLACE VIEW emp_v1
    AS
    SELECT last_name,email,phone_number,salary
    FROM emps
    WHERE phone_number LIKE’011%’
    AND email LIKE’%e%';

    SELECT * FROM emp_v1;

    3. 向 emp_v1 插入一条记录,是否可以?
    (不一定能成功,因为视图筛选了三个字段,插入的时候其他字段可能有非空约束)

    DESC emps; 发现好几个字段设置了非空约束,所以插入不会成功
    INSERT INTO emp_v1
    VALUES(‘tom’,‘tom@123.com’,‘010123456’); 失败

    4. 修改emp_v1中员工的工资,每人涨薪1000
    SELECT * FROM emp_v1;
    DESC emp_v1;
    UPDATE emp_v1
    SET salary=salary+1000;

    5. 删除emp_v1中姓名为Olsen的员工
    DELETE FROM emp_v1
    WHERE last_name=‘Olsen’;

    6. 创建视图emp_v2,要求查询部门的最高工资高于 12000 的部门id和其最高工资
    CREATE VIEW emp_v2
    AS
    SELECT depts.department_id,MAX(salary)
    FROM depts,emps
    WHERE depts.department_id=emps.department_id
    GROUP BY depts.department_id
    HAVING MAX(salary)>12000;

    7. 向 emp_v2 中插入一条记录,是否可以?
    DESC emp_v2;
    有字段存在not null约束,因此插入一条记录不会成功

    8. 删除刚才的emp_v2 和 emp_v1
    DROP VIEW emp_v1,emp_v2;

  • 相关阅读:
    Java 8 stream的详细用法
    内存池简单案例
    mysql中的悲观锁和乐观锁
    微信小程序
    Trinitycore学习之在vscode查看远端服务器上源码配置
    使用Python实现强化学习算法
    【SpringBoot】之自定义 Filter 过滤器
    竞赛 基于深度学习的人脸表情识别
    Flask实现cookie 开发
    防火墙技术基础篇:基于NSP配置L2TP VPN
  • 原文地址:https://blog.csdn.net/m0_46914845/article/details/126256916