SQL中的数据库对象

视图:VIEW

  1. 概念
    ① 虚拟表,本身不存储数据,可以看做是存储起来的SELECT语句
    ② 视图中SELECT语句中涉及到的表,称为基表
    ③ 针对视图做DML操作,对影响到基表中的数据,反之亦然
    ④ 创建、删除视图本身,不会影响到基表

  2. 创建视图

    CREATE VIEW view_emp_avg_salary(dept_id, avg_salary)
    AS
    SELECT department_id, AVG(salary)
    FROM employees
    WHERE department_id IS NOT NULL
    GROUP BY department_id;
    
  3. 查看视图:DESC 视图名;

  4. 修改视图

    # 方式一
    CREATE OR REPLACE VIEW 视图名
    AS
    SELECT ...
    
    #方式二
    ALTER VIEW 视图名
    AS
    SELECT ...
    
  5. 删除视图

    DROP VIEW 视图名;
    

索引:INDEX

用于提高查询性能

存储过程:PROCEDURE

用于完成一次完整的业务处理,没有返回值,但可以通过传出参数将多个值传给调用者

  1. 创建
    ① 无参数无返回值
    # 查询所有员工信息
    DELIMITER $
    CREATE PROCEDURE select_all_emp()
    BEGIN
     SELECT * FROM employees;
    END $
    DELIMITER;
    # 调用
    CALL select_all_emp();
    
    ② 无参数有返回值:OUT
    # 查询员工中的最低工资,并将最低工资输出到ms
    DELIMITER $
    CREATE PROCEDURE select_min_sal(OUT ms DECIMAL)
    BEGIN
    	SELECT MIN(salary) INTO ms
    	FROM employees;
    END $
    DELIMITER;
    # 调用
    CALL select_min_sal(@ms);
    # 查看参数结果
    SELECT @ms;
    
    ③ 有参数无返回值:IN
    # 查询指定姓名的员工工资
    DELIMITER $
    CREATE PROCEDURE show_salary_by_lastname(IN lastName VARCHAR(50))
    BEGIN
    	SELECT salary
    	FROM employees
    	WHERE last_name = lastName;
    END $
    DEIMITER;
    # 调用
    CALL show_salary_by_lastname('Popp');
    
    ④ 有参数有返回值:INOUT
    # 查询指定姓名的员工工资和部门,并从参数中返回出来
    DELIMITER $
    CREATE PROCEDURE show_salary_by_lastname2(IN lastName VARCHAR(50), OUT sal DECIMAL, OUT dept_id INT)
    BEGIN
    	SELECT salary,department_id INTO sal, dept_id
    	FROM employees
    	WHERE last_name = lastName;
    END $
    DELIMITER;
    # 调用
    CALL show_salary_by_lastname2('Popp', @sal, @deptId);
    # 查询结果
    SELECT @sal, @deptId;
    
    ⑤ 有参数有返回值:INOUT
    # 查询指定员工的领导姓名,并从参数中返回出来
    DELIMITER $
    CREATE PROCEDURE show_manager_by_lastname(INOUT lastName VARCHAR(50))
    BEGIN
    	SELECT m.last_name INTO lastName
    	FROM employees e JOIN employees m
    	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值