![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
weixin_54671087
这个作者很懒,什么都没留下…
展开
-
P93 查看删除触发器与课后练习
3.查看触发器#2.查看触发器#方式1:查看当前数据库的所有触发器的定义SHOW TRIGGERS;#方式2:查看当前数据库中某个触发器的定义SHOW CREATE TRIGGER salary_check_trigger;#方式3:从系统库information_schema的TRIGGERS表中查询“salary_check_trigger”触发器的信息。SELECT * FROM information_schema.TRIGGERS;4.触发器的删除#3.删除触发器原创 2021-12-12 14:54:30 · 654 阅读 · 0 评论 -
P92创建触发器
1.触发器的概述2.触发器的创建举例1#举例1:#①创建数据表CREATE TABLE test_trigger (id INT PRIMARY KEY AUTO_INCREMENT,t_note VARCHAR(30));CREATE TABLE test_trigger_log (id INT PRIMARY KEY AUTO_INCREMENT,t_log VARCHAR(30));#②查看表数据SELECT * FROM test_trigger;SELECT原创 2021-12-12 12:38:54 · 334 阅读 · 0 评论 -
第16章_变量、流程控制与游标练习题
第16_章练习题练习1.测试变量的使用#练习1:测试变量的使用#0.准备工作CREATE DATABASE test16_var_cur;USE test16_var_cur;CREATE TABLE employeesASSELECT * FROM atguigudb.`employees`;CREATE TABLE departmentsASSELECT * FROM atguigudb.`departments`;SET GLOBAL log_bin_trust原创 2021-12-12 11:34:23 · 449 阅读 · 0 评论 -
P90 游标的使用
5.游标的使用#6.游标的使用/*游标使用的步骤:①声明游标②打开游标③使用游标(从游标中获取数据)④关闭游标*/#举例:创建存储过程“get_count_by_limit_total_salary()”,声明IN参数 limit_total_salary,#DOUBLE类型;声明OUT参数total_count,INT类型。函数的功能可以实现累加薪资最高的几个员工的薪资值,#直到薪资总和达到limit_total_salary参数的值,返回累加的人数给total_count。原创 2021-12-11 15:59:11 · 495 阅读 · 0 评论 -
P89 跳转语句leave和iterate的使用
4.6跳转语句之leave#5.1 leave的使用/*举例1:创建存储过程 “leave_begin()”,声明INT类型的IN参数num。给BEGIN...END加标记名,并在BEGIN...END中使用IF语句判断num参数的值。如果num<=0,则使用LEAVE语句退出BEGIN...END;如果num=1,则查询“employees”表的平均薪资;如果num=2,则查询“employees”表的最低薪资;如果num>2,则查询“employees”表的最高薪资。IF原创 2021-12-11 15:13:59 · 296 阅读 · 0 评论 -
P88 循环结构loop、while、repeat
4.3循环结构之loop#4.1 循环结构之loop/*[loop_label:] LOOP 循环执行的语句END LOOP [loop_label]*/#举例1:DELIMITER //CREATE PROCEDURE test_loop()BEGIN #声明局部变量 DECLARE num INT DEFAULT 1; loop_label:LOOP #重新赋值 SET num=num+1; IF num >=10 THEN LEAVE loop_原创 2021-12-11 12:20:49 · 208 阅读 · 0 评论 -
P87 分支结构case的使用
4.2分支结构之case#3.2 分支结构之CASE#举例DELIMITER //CREATE PROCEDURE test_case()BEGIN #演示1:case...when...then... /* declare var int default 2; case var when 1 then select 'var=1'; when 2 then select 'var=2'; when 3 then select 'var=3'; else selec原创 2021-12-11 10:55:05 · 277 阅读 · 0 评论 -
P86 分支结构if的使用
4.1分支结构之 if#3.1分支结构之 if#举例1DELIMITER//CREATE PROCEDURE test_if()BEGIN #声明局部变量 DECLARE stu_name VARCHAR(15); IF stu_name IS NULL THEN SELECT'stu_name is null'; END IF;END//DELIMITER;#调用CALL test_if();#举例2:DELIMITER//CREATE PROCED原创 2021-12-10 18:03:17 · 155 阅读 · 0 评论 -
P85程序出错的处理机制
3.定义条件和处理程序3.1错误演示#2.1错误演示:#错误代码: 1364#Field 'email' doesn't have a default valueINSERT INTO employees(last_name)VALUES('Tom');DESC employees;#错误演示:DELIMITER //CREATE PROCEDURE UpdateDataNoCondition()BEGIN SET @x = 1; UPDATE employees SET原创 2021-12-10 16:11:30 · 182 阅读 · 0 评论 -
P84 会话用户变量与局部变量的
2.用户变量/*①用户变量: 会话用户变量 vs 局部变量②会话用户变量:使用"@"开头,作用域为当前会话③局部变量:只能使用在存储过程和存储函数中的*/2.1会话用户变量#1.6会话用户变量/*①变量的声明和赋值#方式1:“=”或“:=”SET @用户变量 = 值;SET @用户变量 := 值;#方式2:“:=” 或 INTO关键字SELECT @用户变量 := 表达式 [FROM 等子句];SELECT 表达式 INTO @用户变量 [FROM 等子句];②使原创 2021-12-10 12:14:07 · 136 阅读 · 0 评论 -
P83 global与session变量的使用
1.变量1.1查看系统变量#1.2.查看系统变量#查询全局系统变量SHOW GLOBAL VARIABLES; #617个#查询会话系统变量SHOW SESSION VARIABLES; #640个SHOW VARIABLES;#默认查询的是会话系统变量,640个#查询部分系统变量SHOW GLOBAL VARIABLES LIKE'admin_%';SHOW VARIABLES LIKE'character_%';#1.3查看指定系统变量SELECT @@glob原创 2021-12-10 10:58:09 · 243 阅读 · 0 评论 -
P82 存储过程与函数的练习题
存储过程练习#存储过程练习#0.准备工作CREATE DATABASE test15_pro_func;#1. 创建存储过程insert_user(),实现传入用户名和密码,插入到admin表中CREATE TABLE admin(id INT PRIMARY KEY AUTO_INCREMENT,user_name VARCHAR(15) NOT NULL,pwd VARCHAR(25) NOT NULL);DELIMITER //CREATE PROCEDURE ins原创 2021-12-09 21:02:32 · 665 阅读 · 0 评论 -
P81存储过程与函数的查看、修改、删除
4.存储过程、存储函数的查看#方式1.使用show create语句查看存储过程和函数的创建信息SHOW CREATE PROCEDURE show_mgr_name;SHOW CREATE FUNCTION count_by_id;#方式2.使用SHOW STATUS语句查看存储过程和函数的状态信息SHOW PROCEDURE STATUS;SHOW PROCEDURE STATUS LIKE'show_max_salary';SHOW FUNCTION STATUS LIKE'原创 2021-12-09 19:29:20 · 68 阅读 · 0 评论 -
P80 存储函数的创建与调用
2.存储函数的创建与调用#举例1:创建存储函数,名称为email_by_name(),参数定义为空,#该函数查询Abel的email,并返回,数据类型为字符串型。DELIMITER //CREATE FUNCTION email_by_name()RETURNS VARCHAR(25) DETERMINISTIC CONTAINS SQL READS SQL DATABEGIN RETURN (SELECT email FR原创 2021-12-09 17:26:29 · 688 阅读 · 0 评论 -
P79 存储过程的创建与调用
1.存储过程的创建与调用#0.准备工作CREATE DATABASE dbtest15;USE dbtest15;CREATE TABLE employeesASSELECT * FROM atguigudb.`employees`;CREATE TABLE departmentsASSELECT * FROM atguigudb.`departments`;1.1无参数,无返回值#1.创建存储过程#类型1:无参数,无返回值#举例1:创建存储过程select_all_d原创 2021-12-09 16:42:34 · 338 阅读 · 0 评论 -
P77 第14章视图课后练习
第14章练习题练习一USE dbtest14;#1. 使用表employees创建视图employee_vu,其中包括姓名(LAST_NAME),#员工号(EMPLOYEE_ID),部门号(DEPARTMENT_ID)CREATE OR REPLACE VIEW employee_vu(lname,emp_id,dept_id)ASSELECT last_name,employee_id,department_idFROM emps;#2. 显示视图的结构DESC employee_原创 2021-12-08 20:12:18 · 732 阅读 · 0 评论 -
P76 更新视图数据与视图的删除
4.更新视图中的数据#4.1 一般情况,可以更新视图的数据SELECT * FROM vu_emp1;SELECT employee_id,last_name,salaryFROM emps;#更新视图的数据,也会修改表中的数据UPDATE vu_emp1SET salary=20000WHERE employee_id=101;#更新表的数据,会导致视图的数据的更改UPDATE empsSET salary=10000WHERE employee_id=101;#删除视图原创 2021-12-08 19:47:25 · 407 阅读 · 0 评论 -
P75 视图的创建与查看
2.如何创建视图create database dbtest14;use dbtest14;create table empsasselect *from atguigudb.`employees`;create table deptsasselect *from atguigudb.`departments`;select * from emps;select * from depts;desc emps;desc atguigudb.employees;2.1原创 2021-12-08 17:38:00 · 110 阅读 · 0 评论 -
P74 数据库对象与视图的理解
1.视图的理解/*1.视图的理解① 视图,可以看做是一个虚拟表,本身是不存储数据的 视图的本质,就可以看做是存储起来的select语句 ②视图中select语句中涉及到的表,称为基表③针对视图做DML操作,会影响到对应的基表中的数据,反之亦然④视图本身的删除,不会导致基表中数据的删除⑤视图的应用场景:针对于小型项目,不推荐使用视图 针对于大型项目,可以考虑使用视图 ⑥视图的优点:简化查询;控制数据的访问..原创 2021-12-08 16:50:38 · 93 阅读 · 0 评论 -
P73 第13章_约束练习题
第13章_约束练习题练习一#练习1 已经存在数据库test04_emp,两张表emp2和dept2CREATE DATABASE test04_emp;USE test04_emp;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 emp2ADD原创 2021-12-08 15:49:56 · 824 阅读 · 0 评论 -
P72 检查约束与默认值约束
7.检查约束#8. check约束create table test10(id int,last_name varchar(15),salary decimal(10,2) check(salary>2000));insert into test10values(1,'Tom',2500);#添加失败 工资低于2000,Check constraint 'test10_chk_1' is violated.INSERT INTO test10VALUES(1,'Tom',1原创 2021-12-08 14:53:43 · 212 阅读 · 0 评论 -
P71 外键约束的使用
6.外键约束6.1在create table时添加#7.1 在create table时添加#主表和从表:父表和子表#①先创建主表CREATE TABLE dept1(dept_id INT,dept_name VARCHAR(15));#②再创建从表CREATE TABLE emp1(emp_id INT PRIMARY KEY AUTO_INCREMENT,emp_name VARCHAR(15),department_id INT,#表级约束CONSTRA原创 2021-12-08 11:09:04 · 207 阅读 · 0 评论 -
P70 AUTO_INCREMENT
5.AUTO_INCREMENT5.1在create table时# 6.1在create table时CREATE TABLE test7(id INT PRIMARY KEY AUTO_INCREMENT,#id自增,自动赋值last_name VARCHAR(15));#开发中,一旦主键作用的字段上声明有AUTO_INCREMENT,则我们在添加数据时#就不要给主键对应的字段去赋值INSERT INTO test7(last_name)VALUES('Tom');SELEC原创 2021-12-07 20:18:14 · 50 阅读 · 0 评论 -
P69 主键约束
4.主键约束1.在create table时添加约束#5.1 在create table时添加约束#一个表中最多只能有一个主键约束#错误:Multiple primary key definedCREATE TABLE test3(id INT PRIMARY KEY, #列级约束last_name VARCHAR(15) PRIMARY KEY,salary DECIMAL(10,2),email VARCHAR(25));#主键约束特征:非空且唯一,用于唯一的标识表中的一条原创 2021-12-07 19:27:49 · 117 阅读 · 0 评论 -
P68 唯一性约束
3.唯一性约束作用:1.在create table时添加约束#4.1 在create table时添加约束CREATE TABLE test2(id INT UNIQUE, #列级约束last_name VARCHAR(15),email VARCHAR(25),salary DECIMAL(10,2),#表级约束 起名CONSTRAINT uk_test2_email UNIQUE(email));DESC test2;SELECT * FROM information原创 2021-12-07 17:33:10 · 223 阅读 · 0 评论 -
P67 非空约束的使用
2.非空约束#2. 如何查看表中的约束SELECT * FROM information_schema.table_constraintsWHERE table_name = 'test1';CREATE DATABASE dbtest13;USE dbtest13;#3.not null 非空约束#3.1 在create table时添加约束CREATE TABLE test1(id INT NOT NULL,last_name VARCHAR(15) NOT NULL,emai原创 2021-12-07 16:36:18 · 49 阅读 · 0 评论 -
P66 数据完整性与约束的分类
第13章_约束1.数据完整性与约束的分类/*1.3 约束的分类:角度1:约束的字段的个数单列约束 vs 多列约束角度2:约束的作用范围列级约束:将此约束声明在对应字段的后面表级约束:在表中所有字段都声明完以后,在所有字段的后面声明的约束角度3:约束的作用(或功能)① not null(非空约束)② unique (唯一性约束)③ primary key(主键约束)④ foreign key(外键约束)⑤ check(检查约束)⑥ default(默认值约束)1.原创 2021-12-07 11:20:36 · 49 阅读 · 0 评论 -
P64 二进制类型与JSON类型详解、数据类型小结与建议
10.二进制字符串类型#10.1 binary与varbinaryCREATE TABLE test_binary1(f1 BINARY,f2 BINARY(3),#f3 VARBINARY,f4 VARBINARY(10));DESC test_binary1;INSERT INTO test_binary1(f1,f2)VALUES('a','abc');SELECT * FROM test_binary1;#Data too long for column 'f1'原创 2021-12-06 19:46:53 · 141 阅读 · 0 评论 -
P63 文本字符串类型、ENUM类型、SET类型讲解
7.文本字符串类型1 .CHAR与VARCHAR类型#7.1 char类型CREATE TABLE test_char1(c1 CHAR,c2 CHAR(5));DESC test_char1;INSERT INTO test_char1(c1)VALUES('a');#Data too long for column 'c1' at row 1,超出长度INSERT INTO test_char1(c1)VALUES('ab');SELECT * FROM test.原创 2021-12-06 17:38:35 · 197 阅读 · 0 评论 -
P62 日期与时间类型
6.日期与时间类型1.year类型#6.1 year类型CREATE TABLE test_year(f1 YEAR,f2 YEAR(4));desc test_year;insert into test_year(f1)values('2021'),(2022);select * from test_year;INSERT INTO test_year(f1)VALUES('2155');#报错,超出范围Out of range value for column '..原创 2021-12-06 15:51:15 · 191 阅读 · 0 评论 -
P61 浮点数、定点数、位类型讲解
3.浮点类型#测试float和double的精度问题CREATE TABLE test_double2(f1 DOUBLE);INSERT INTO test_double2VALUES(0.47),(0.44),(0.19);SELECT SUM(f1)FROM test_double2;4.定点数类型#4.定点数类型CREATE TABLE test_decimal1(f1 DECIMAL,f2 DECIMAL(5,2));DESC test_decimal原创 2021-12-02 15:36:25 · 212 阅读 · 0 评论 -
P60 整型数据类型讲解
2.整数类型#2.整型数据类型USE dbtest12;CREATE TABLE test_int1(f1 TINYINT,f2 SMALLINT,f3 MEDIUMINT,f4 INTEGER,f5 BIGINT);DESC test_int1;INSERT INTO test_int1(f1)VALUES(12),(-12),(-128),(127);SELECT * FROM test_int1;#错误的情况,超出范围:INSERT INTO test_int1.原创 2021-12-02 10:57:44 · 55 阅读 · 0 评论 -
P59 MySQL数据类型概述_字符集设置
1.字符集设置#关于属性:character set nameSHOW VARIABLES LIKE 'character_%';#创建数据库时指明字符集CREATE DATABASE IF NOT EXISTS dbtest12 CHARACTER SET'utf8'SHOW CREATE DATABASE dbtest12;#创建表的时候,指明表的字符集CREATE TABLE temp(id INT)CHARACTER SET'utf8';SHOW CREATE TAB..原创 2021-12-02 10:10:11 · 619 阅读 · 0 评论 -
P59 表 增删改课后练习题
增删改课后练习#练习1:#1. 创建数据库dbtest11CREATE DATABASE IF NOT EXISTS dbtest11 CHARACTER SET 'utf8';#2. 运行以下脚本创建表my_employeesUSE dbtest11;CREATE TABLE my_employees(id INT(10),first_name VARCHAR(10),last_name VARCHAR(10),userid VARCHAR(10),salary DOUBLE(原创 2021-12-01 15:08:26 · 265 阅读 · 0 评论 -
P57 DDL和DML的综合案例
5.DDL和DML的综合案例#5.综合案例# 1、创建数据库test01_libraryCREATE DATABASE IF NOT EXISTS test01_library CHARACTER SET'utf8';USE test01_library;# 2、创建表 books,表结构如下:/*字段名 字段说明 数据类型id 书编号 INTname 书名 VARCHAR(50)authors 作者 VARCHAR(100)price 价格 FL原创 2021-12-01 10:58:28 · 221 阅读 · 0 评论 -
P56 DML更新删除操作与MySQL8.0新特性之计算列
2.DML更新删除操作与MySQL8.0新特性之计算列#2.更新数据(或修改数据)#update...set...where...#可以实现批量修改数据UPDATE emp1SET hire_date=CURDATE()WHERE id=5;SELECT * FROM emp1;#同时修改一条数据的多个字段UPDATE emp1SET hire_date=CURDATE(),salary=6000WHERE id=4;#题目:将表中姓名中包含字符a的提薪20%UPDATE e原创 2021-12-01 09:39:11 · 71 阅读 · 0 评论 -
P55 DML之添加数据
1.DML之添加数据#0.储备工作USE atguigudb;CREATE TABLE IF NOT EXISTS emp1(id INT,`name` VARCHAR(15),hire_date DATE,salary DOUBLE(10,2));DESC emp1;SELECT * FROM emp1;#1.添加数据#方式1:一条一条的添加数据#①没有指明添加的字段#正确的INSERT INTO emp1VALUES(1,'Tom','2002-12-21',原创 2021-11-30 17:20:35 · 53 阅读 · 0 评论 -
P54 第十章 创建和管理表的练习题
练习题#练习1:#1. 创建数据库test01_office,指明字符集为utf8。并在此数据库下执行下述操作create database if not exists test01_office character set'utf8';use test01_office;#2. 创建表dept01/*字段 类型id INT(7)NAME VARCHAR(25)*/create table if not exists dept01(id int(7),`name` varc原创 2021-11-30 16:21:08 · 922 阅读 · 1 评论 -
P53 阿里MySQL命名规范及MySQL8.0 DLL的原子化
5.MySQL8.0 DLL的原子化#9测试Mysql8.0新特性:DDL的原子化CREATE DATABASE mytest;USE mytest;CREATE TABLE book1(book_id INT ,book_name VARCHAR(255));SHOW TABLES;DROP TABLE book1,book2;SHOW TABLES; #此时book1没有删掉,而5.7中被删掉了...原创 2021-11-30 15:10:31 · 579 阅读 · 0 评论 -
P52 DCL中commit与rollback的使用
4.DCL 中COMMIT 和ROLLBACK#7.DCL 中COMMIT 和ROLLBACK#commit:提交数据。一旦执行commit,则数据就被永久的保存在了数据库中,#意味着数据不可以回滚#rollback:回滚数据,一旦执行rollback,则可以实现数据的回滚#8.对比TRUNCATE TABLE 和 DELETE FROM# 相同点:都可以实现对表中所有数据的删除,同时保留表结构# 不同点:# TRUNCATE TABLE:一旦执行此操作表数据全部清除,数据是不可以回滚原创 2021-11-30 11:17:29 · 382 阅读 · 0 评论