-- 数据库入门笔记
  -- 我来入个门
CREATE DATABASE db;
-- 使用数据库
USE db;

-- 创建表
CREATE TABLE t(
    tid DECIMAL(4,2)
);
INSERT INTO t VALUES(3);

-- 查询表
SELECT * FROM t;

DROP TABLE dd;
--id INT(6) UNSIGNED 说明id不能有负数
CREATE TABLE dd(
    id INT(6) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
    sname VARCHAR(20),
    sgender ENUM('男','女','保密'),
    PRIMARY KEY(id)
)ENGINE=MYISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

INSERT INTO dd VALUES(NULL,'赵刘保','男');
INSERT INTO dd VALUES(NULL,'小明','保密');

SELECT * FROM dd;

-- 查看数据库信息
SHOW DATABASES;

-- 建立数据库
 CREATE DATABASE aa;
 CREATE DATABASE `database`;
-- 判断数据库是否存在 如果不存在则建立该数据库,并且设置编码字符集为utf8
 CREATE DATABASE IF NOT EXISTS `aa` DEFAULT CHARACTER SET utf8;

-- 删除数据库
DROP DATABASE aa;
DROP DATABASE IF EXISTS `database`;

-- 修改数据库

ALTER DATABASE `aa`  DEFAULT CHARACTER SET gbk;
ALTER DATABASE `aa`  DEFAULT CHARSET utf8;

-- 建立数据库
CREATE DATABASE ff;
CREATE DATABASE IF NOT EXISTS `ff`;
CREATE DATABASE IF NOT EXISTS `ff` DEFAULT CHARACTER SET utf8;
CREATE DATABASE IF NOT EXISTS `ff` DEFAULT CHARSET SET gbk;

-- 使用数据库
USE ff;
USE `ff`;

-- 删除数据库
DROP DATABASE `ff`;
DROP DATABASE IF EXISTS `ff`;

-- 修改数据库的字符集
ALTER DATABASE `ff` DEFAULT CHARSET gbk;

-- 查看建立数据库的语句

SHOW CREATE DATABASE `ff`;

CREATE DATABASE `ff` /*!40100 DEFAULT CHARACTER SET gbk */

-- MySQL数据库的注释
-- (1)--
-- (2)/**/
-- (3)#

-- 数据表的操作

-- 建立表
CREATE TABLE  person(

)ENGINE=INNODB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8;

USE ff;

CREATE TABLE t(i INT);

SHOW CREATE TABLE t;

CREATE TABLE emp(
    eid INT(6) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
    ename VARCHAR(10) NOT NULL,
    PRIMARY KEY (eid)
)ENGINE=MYISAM AUTO_INCREMENT=2014 DEFAULT CHARSET=utf8;

-- 批量删除表
DROP TABLE t,emp;

-- 修改表名
RENAME TABLE t1 TO student;
-- 等价
ALTER TABLE student RENAME t1;
ALTER TABLE student RENAME TO t1;

DESC student;

-- 修改列名
ALTER TABLE student CHANGE eid id INTEGER;
ALTER TABLE student CHANGE ename sname VARCHAR(30) NOT NULL;

-- 增加一列
ALTER TABLE student ADD score TINYINT ;
ALTER TABLE student ADD address VARCHAR(100) AFTER score;

-- 删除列
ALTER TABLE student DROP COLUMN score;
ALTER TABLE student DROP COLUMN address;

-- 修改表的字段数据类型
ALTER TABLE student MODIFY sid BIGINT UNSIGNED NOT NULL AUTO_INCREMENT;

DROP DATABASE aa;

DROP TABLE student;

-- 数据表增删改查
CREATE TABLE student(
    sno INT(6) UNSIGNED ZEROFILL AUTO_INCREMENT NOT NULL,
    
    sname VARCHAR(20) NOT NULL,
    
    sbirthday DATETIME,
    
    saddress VARCHAR(50),
    
    sscore TINYINT UNSIGNED,
    
    PRIMARY KEY(sno)

)ENGINE=INNODB AUTO_INCREMENT=2000 DEFAULT CHARSET=utf8;

DESC student;

-- 插入数据
INSERT INTO student VALUES(NULL,'赵刘保','1995-01-14','湖北武汉',100);

INSERT INTO student VALUES(NULL,'赵刘保','1995-01-14','湖北武汉',100),(NULL,'赵刘保','1995-01-14','湖北武汉',100);

INSERT INTO student(sname,sbirthday,saddress,sscore)
SELECT sname,sbirthday,saddress,sscore FROM student;

INSERT student(sname,sscore) VALUES('Jack',80),('Andy',85);

REPLACE INTO `student`(sname,sscore) VALUES('Terry',90);

-- replace可以替换也可以插入
REPLACE INTO `student`(sno,sname,sscore) VALUES(2005,'Terry',90);

-- 修改数据
UPDATE `student` SET `sscore`=99 WHERE `sno`=2004;

-- 删除数据
DELETE FROM `student` WHERE `sno`=2003;
DELETE FROM `student`; -- 无条件删除所有数据
TRUNCATE TABLE `student`; -- 清空数据表的全部记录,auto_increment 从1开始(但是保留表结构)
SELECT * FROM student;

-- 使用数据库
USE `ff`;

-- 查询条件 != (不等于)、<>(不等于) 、= 、between...and (范围查询) 、not between...and
SELECT * FROM `student` WHERE `sscore`=100;

-- 模糊查询 like %
SELECT * FROM student WHERE sname LIKE '%保%';

-- % 不再是任意符号 因为条件是= 号
SELECT * FROM student WHERE sanme='%保';

-- in(x1,x2...xn)取符合条件的值

UPDATE `student` SET sscore=90 WHERE sno=2000;

-- 聚合函数与分组查询

-- 常用聚合函数avg(), sum(), max(), min(),count()(统计个数)

-- 垮库查询的要求 只要写出数据库名.表名 即可
USE db;

SELECT * FROM ff.`student`;-- 跨库查询

USE ff;

SELECT * FROM student;

SELECT COUNT(*) FROM student;

-- 聚合函数主要用来统计和分析,配合group by 使用

SELECT COUNT(*) FROM student WHERE sscore>90;

SELECT AVG(sscore) AS '平均分' FROM student; -- 空值不参与运算
SELECT MAX(`sscore`) '最高分' FROM `student`;
SELECT MIN(`sscore`) 最低分 FROM `student`;

-- group by
SELECT `sname`,saddress AS '地区' ,COUNT(8) FROM student
WHERE saddress IS NOT NULL
GROUP BY `saddress`
HAVING COUNT(*)>4 -- having 为分组条件 必须跟在group by后面
ORDER BY COUNT(*) DESC;-- asc(升序)

-- union 的使用
-- eg:查出武汉和上海地区最高分学生的各项信息
SELECT * FROM student WHERE sscore IN(SELECT MAX(`sscore`) FROM student WHERE saddress='湖北武汉')
UNION
SELECT * FROM student WHERE sscore IN(SELECT MAX(`sscore`) FROM student WHERE saddress IS NULL);

-- 数据的高级查询和连接查询
CREATE TABLE teacher(
    tid INT(4) ZEROFILL UNSIGNED AUTO_INCREMENT,
    tname VARCHAR(20) NOT NULL,
    PRIMARY KEY(tid)
)ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

INSERT INTO teacher VALUES(NULL,'李老师'),(NULL,'张老师');
SELECT * FROM teacher;

CREATE TABLE stu(
    sid INT(4) ZEROFILL UNSIGNED AUTO_INCREMENT,
    sname VARCHAR(20) NOT NULL,
    score TINYINT UNSIGNED,
    sgender ENUM('男','女','保密'),
    smajor VARCHAR(30) DEFAULT '通信工程',
    tid INT,
    PRIMARY KEY(sid)
)ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
DROP TABLE stu;
INSERT INTO stu VALUES(NULL,'小明',80,'男',NULL,1);
INSERT INTO stu VALUES(NULL,'小红',82,'女',NULL,1);
INSERT INTO stu VALUES(NULL,'小张',85,'保密','软件工程',2);
-- 插入时可以使用默认值
INSERT INTO stu(sname,`score`,`sgender`) VALUES('小强',70,'男'),('小磊',90,'女');

SELECT * FROM stu;
UPDATE  stu SET smajor='通信工程' WHERE smajor IS NULL;
-- 多表查询(内连接)
SELECT s.`sid`,s.`sname`,t.`tname`
FROM stu s ,teacher t
WHERE s.`tid`=t.`tid`;-- 这时tid为null则查询不出来,所以使用外连接

-- 外连接 join、 left join ...on 、right join...on
SELECT s.`sid`,s.`sname`,t.`tname`
FROM stu s LEFT JOIN teacher t ON s.`tid`=t.`tid`;

-- 自连接(同一个表多次使用)

-- 表的约束
-- 跟据旧表,快速建立新表,只包括表的结构,不包括数据
USE ff;
CREATE TABLE tt LIKE stu;
SELECT * FROM TT;
-- 默认约束:default '男' default 18
-- 非空约束: not null
-- 主键约束: primary key(主键自带索引,一个表只能有一个主键)
-- 外键约束:foreign key references 要求使用外键约束的表,存储引擎必须是innodb
-- check 约束
-- 利用主键约束建立表
CREATE TABLE t1(
 tid INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
 tname VARCHAR(30),-- 变长字符串
)ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

CREATE TABLE t3(
 tid INT UNSIGNED AUTO_INCREMENT,
 tname VARCHAR(30),-- 变长字符串
 PRIMARY KEY(tid)
)ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

CREATE TABLE t4(
 tid INT UNSIGNED AUTO_INCREMENT,
 tname VARCHAR(30),-- 变长字符串
 CONSTRAINT mypk PRIMARY KEY(tid)-- mypk 约束名
)ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

-- 利用符合主键建立表(复合主键的意思是只要有一个不重复就可以,复合主键约束实质上还是一个主键)
CREATE TABLE t2(
 tid INT UNSIGNED AUTO_INCREMENT ,
 tname VARCHAR(30),-- 变长字符串
 PRIMARY KEY(tid,tname)
)ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

-- 利用默认约束建立表
CREATE TABLE s(
    sid INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
    tname VARCHAR(30),
    tage INT UNSIGNED DEFAULT 18
)ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
INSERT INTO s(sid, tname) VALUES(1,'zlb');
SELECT * FROM s;

-- mysql 系统时间函数
SELECT NOW();
SELECT CURDATE();
SELECT CURRENT_TIMESTAMP();-- 时间戳

CREATE TABLE s1(
    sid INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
    tname VARCHAR(30),
    tage INT UNSIGNED DEFAULT 18,
    tdate DATETIME DEFAULT NOW()
)ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
INSERT INTO s1(sid, tname) VALUES(1,'zlb');
SELECT * FROM s1;

-- 利用check约束建表(check约束能识别但是mysql数据库不执行)
CREATE TABLE si(
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    sname VARCHAR(20),
    sage TINYINT UNSIGNED CHECK(age>18)
)ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
INSERT INTO si(sage) VALUES(3);
SELECT * FROM si;

CREATE TABLE st(
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    sname VARCHAR(20),
    sage TINYINT UNSIGNED ,
    CONSTRAINT st_sage_ck CHECK(age>18)
)ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
INSERT INTO st(sage) VALUES(3);
SELECT * FROM st;

DROP TABLE si,st,t1,t2,t3,t4,tt;
DROP TABLE s1,stu,s,emp;

-- 演示外键约束
USE db;
CREATE TABLE teacher(
    tid INT UNSIGNED NOT NULL AUTO_INCREMENT,
    
    tname VARCHAR(30) NOT NULL,
    
    KEY(tname),-- 建立表的时候同时在tname列建立索引
    
    PRIMARY KEY(tid) -- 当建立索引时必须要指明主键
    
)ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;-- 如果要使用外键则数据库的引擎必须为innodb
DROP TABLE teacher ;

INSERT INTO teacher VALUES(NULL,'张老师'),(NULL,'李老师'),(NULL,'赵老师');

SELECT * FROM teacher;

CREATE TABLE student(
    sid INT UNSIGNED NOT NULL AUTO_INCREMENT,
    sname VARCHAR(30) NOT NULL,
    tid INT UNSIGNED,
    PRIMARY KEY(sid),
    CONSTRAINT fk FOREIGN KEY (tid) REFERENCES teacher(tid) -- 建立外键 关联到teacher表
    -- CONSTRAINT fk FOREIGN KEY (tid) REFERENCES teacher(tid) ON DELETE CASCADE;-- on delete cascade级联删除
    -- constraint fk foreihn key(tid)  references theacher(tid) on delete set null -- 级联置空
)ENGINE=INNODB AUTO_INCREMENT=201421112001 DEFAULT CHARSET=utf8;

-- 修改表的字段数据类型
ALTER TABLE student MODIFY sid BIGINT UNSIGNED NOT NULL AUTO_INCREMENT;

INSERT INTO student VALUES(NULL,'张三',1),(NULL,'李四',2),(NULL,'王五',1),(NULL,'赵六',2)
USE db;
SELECT * FROM student ;

DELETE FROM teacher WHERE tid =3;
ROLLBACK;
SELECT * FROM teacher;
DELETE FROM teacher WHERE tid=2;-- Cannot delete or update a parent row: a foreign key constraint fails

-- 索引的使用  
SHOW TABLES;-- 查看数据库中的所有表
SHOW  FULL COLUMNS FROM `student`;-- 查看数据表的所有列的详细信息
DESC student;-- 没有上一个函数全面

-- 增加主键
 SELECT * FROM t;
 DROP TABLE t;
 CREATE TABLE t(
    tid INT(10)
 );
ALTER TABLE t ADD CONSTRAINT PRIMARY KEY(tid);
ALTER TABLE t ADD CONSTRAINT pk PRIMARY KEY(tid);

-- 删除约束
ALTER TABLE t DROP PRIMARY KEY;

-- 索引:检索目录

-- 建立索引
CREATE INDEX ix ON teacher(tname DESC);
ALTER TABLE teacher ADD INDEX (tname DESC);

-- 删除索引
DROP INDEX ix ON teacher;
ALTER TABLE `teacher` DROP INDEX tname;

DESC teacher;

-- 建表时建立索引

CREATE TABLE root(
    rid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,-- 主键会自动建立索引
    rname VARCHAR(40) NOT NULL UNIQUE,-- 自动建立唯一约束会自动建立唯一索引
    address VARCHAR(50) NOT NULL,
    rbook VARCHAR(20),
    KEY(rname),-- 建表时自动建立索引
    KEY(rbook)
    
)ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
DROP TABLE root;

-- pk 唯一且非空
-- uk 可以为空,但是不可以重复
-- fk 一个表的外键一般指向另一个表的主键或者唯一约束建,并且类型一致

-- 常用函数
    -- length()函数
SELECT LENGTH('abc');
SELECT LENGTH('abc是');-- 返回字符的字节数
SELECT CHAR_LENGTH('abc');-- 返回字符的个数
-- 注意 utf8 编码中汉字是3个字节,gbk编码汉字是3个字节

SELECT * FROM student WHERE CHAR_LENGTH(sname)=2;-- 与
SELECT * FROM student WHERE sname LIKE '__';-- 表示的含义一样

-- 随机函数
SELECT RAND();-- 返回0~1之间的随机小数
SELECT ROUND(RAND());-- 返回0~1之间的随机整数
SELECT ROUND(RAND()*3+1);-- 返回0~4之间的随机整数

-- 随机查询出2条数据
SELECT * FROM student ORDER BY RAND() LIMIT 2;

-- 日期函数
-- 查看10天的会员记录
SELECT COUNT(*) FROM member WHERE regdate BETWEEN DATE_ADD(NOW(),INTERVAL-10 DAY) AND NOW();

SELECT DATE_ADD(NOW(),INTERVAL-10 DAY);-- 查看10天前的日期
SELECT NOW();-- 查看现在的日期

SELECT DATEDIFF(CURDATE(),'1995-2-13');-- 返回两个日期之间相差的天数

-- 格式化日期函数
SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日');

-- 格式化日期的运用
CREATE TABLE ss(
    sid INT NOT NULL,
    sname VARCHAR(20),
    sbirthday DATETIME
);
INSERT INTO ss VALUES(1,'小张','1995-01-14');
DELETE FROM ss WHERE sid=1;
SELECT * FROM ss;
INSERT INTO ss VALUES(1,'小张','1995-01-14 06:14:06'),(2,'小何','1883-11-8'),(3,'小猪','1996-04-13');
SELECT sid id ,sname AS '姓名' ,DATE_FORMAT(sbirthday,'%Y年%m月%d日')  出生年月 FROM ss;

USE db;
 -- 返回两个对象之间的时间差(小时)
 SELECT TIMESTAMPDIFF(HOUR,'2014-09-01',NOW());
 -- 返回两个对象之间的时间差(分钟)
SELECT TIMESTAMPDIFF(MINUTE,'2017-08-17 9:00:00',NOW());
 -- 返回两个对象之间的时间差(天)
 SELECT TIMESTAMPDIFF(DAY,'2017-08-17 9:00:00',NOW());
 
 -- 返回某一天处于当年的第几周
 SELECT WEEKOFYEAR(NOW());
 
 -- 使用该函数可以在存储过程中使用 int unsigned 类型 而不必须使用datetime类型
 -- SELECT FROM_UNIXTIME() 将数字表达的日期转化为标准的 "yyyy-mm-dd h:i:s"
 SELECT FROM_UNIXTIME(137655100);
-- UNIX_TIMESTAMP() 将日期转化为int型
 SELECT FROM_UNIXTIME(UNIX_TIMESTAMP()), UNIX_TIMESTAMP();
 SELECT FROM_UNIXTIME(1417253607),FROM_UNIXTIME(1417253607,'%T');
 SELECT FROM_UNIXTIME(1417253607),FROM_UNIXTIME(1417253607,'%m月%d日');
 SELECT FROM_UNIXTIME(1417253607),FROM_UNIXTIME(1417253607,'%Y');
 
 -- 字符串连接函数
 SELECT CONCAT('姓名:',sname) FROM ss;-- 姓名:小何
 SELECT CONCAT('手机号:','15927030097');-- 手机号:15927030097
 SELECT CONCAT_WS('-','aa','bb',sname) FROM ss;-- aa-bb-小张
 SELECT * FROM ss;
 SELECT CONCAT_WS('-',sid,sname,sbirthday) FROM ss;-- 1-小张-1995-01-14 06:14:06
 
 -- 重复函数
 SELECT REPEAT('*',3);
 -- 空格函数
 SELECT CONCAT ('aaa',SPACE(5),'aaa');
 
 -- 字符串处理函数
 -- uper() 转换成大写 lower() 转换成小写
 SELECT UPPER('acd');
 SELECT LOWER('DD');
 -- 字符串截取函数
 SELECT sname, LEFT(sname,1) FROM ss;-- 从左开始截取一个
 SELECT sanme ,RIGHT(sname,2) FROM ss;-- 从右截取二个
 SELECT sname, MID(sname,2,1) FROM ss;-- 从第二个位置截取一个  
 
 
 -- ifnull函数的使用
 SELECT IFNULL(NULL,'保密');
 SELECT IFNULL('男','保密');
 
 -- if 函数的使用
 USE ff;
 SELECT * FROM student;
 
 SELECT sno, sname,sscore,IF(sscore>=90,'优秀',IF(sscore>=70,'良好',IF(sscore>60,'良好','补考'))) '等级' FROM student;
 
 -- 注意:需要更新的数据一般不写死
 
          -- 密文函数
 -- md5 32位,sha1 40位 他们都是单向加密
 SELECT MD5('admin'),SHA1('admin');
 
 PASSWORD('aaa');-- 返回41位密文字符串
 
 -- uuid 36位16进制的全球唯一字符串
 SELECT UUID(),LENGTH(UUID());
 
 -- format()函数
 SELECT FORMAT(12345,6189);
 /*
 将数字X 的格式写为'#,###,###.##',以四舍五入的方式保留小数点后 D 位,
  并将结果以字符串的形式返回。若  D 为 0, 则返回结果不带有小数点,或不含小数部分。

*/
 
 -- 将ip 地址转化为数字 同时也能把数字转换为ip
 SELECT INET_ATON('192.168.1.1');
 
 
    -- 存储过程(没有返回值和oracle一样):编译后在服务器上运行,速度比较快
   /*
    存储过程(Stored Procedure)是在大型数据库系统中,
    一组为了完成特定功能的SQL 语句集,存储在数据库中,
    经过第一次编译后再次调用不需要再次编译,
    用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
    存储过程是数据库中的一个重要对象。  
   */
   USE ff;
   -- 创建一个简单的存储过程
   DELIMITER // -- 将MySql的结束符设置为//,避免与存储过程中的SQL语句的结束符号互相冲突
        -- DELIMITER 与结束符之间一定要有一个空格
   CREATE PROCEDURE pro()
   BEGIN
    SELECT * FROM student;
END//

DELIMITER //

-- 创建一个使用变量的存储过程
DELIMITER //
CREATE PROCEDURE mypro()
BEGIN
  DECLARE id1 INT DEFAULT 1;
  SELECT * FROM student WHERE sid=id1;
END//
-- 创建一个带参数的存储过程mypro([in/out/inout],参数名,参数类型)

-- 使用存储过程
CALL pro();

-- 查看数据库的存储过程信息
SHOW PROCEDURE STATUS WHERE Db='ff';
   
   
   
                           -- 函数
  -- 创建函数
  DELIMITER //
  CREATE FUNCTION lever(score TINYINT)
  RETURNS VARCHAR(30)
  BEGIN
    DECLARE lve VARCHAR(30);
    CASE
    WHEN score>=90 THEN SET lve='优秀';
    WHEN score>=70 THEN SET lve='良好';
    WHEN score>=60 THEN SET lve='及格';
    ELSE SET lve='补考';
    END CASE;
    RETURN lve;
   
  END//
  DELIMITER ;
  -- 调用函数
  SELECT sname,sscore,lever(sscore) FROM student;
 
  -- 删除函数
  DROP FUNCTION lever;
 
 
        -- 触发器的使用
 -- 创建触发器
 USE db;
 SELECT * FROM ss;
 SELECT * FROM student;
 SELECT * FROM ff.`student`;
 SHOW CREATE TABLE ff.`student`;
 USE ff;
 CREATE TABLE studebtbac LIKE student;
 
CREATE TABLE `studentbac` (
  `sno` INT(6) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
  `sname` VARCHAR(20) NOT NULL,
  `sbirthday` DATETIME DEFAULT NULL,
  `saddress` VARCHAR(50) DEFAULT NULL,
  `sscore` TINYINT(3) UNSIGNED DEFAULT NULL,
  PRIMARY KEY (`sno`)
) ENGINE=INNODB AUTO_INCREMENT=2009 DEFAULT CHARSET=utf8;
 
  DELIMITER //
  CREATE TRIGGER tt1 AFTER INSERT ON student FOR EACH ROW
  BEGIN
    DECLARE ss TINYINT ;
    SET ss=`student`.`sscore`;
    IF ss<60 THEN
          INSERT INTO `studentbac` VALUES(student.`sno`,student.`sname`,student.`sbirthday`,student.`saddress`);
    END IF;
END//

INSERT INTO student(sname,sscore) VALUES('MM',40),('And',45);
INSERT INTO ff.`student`VALUES(NULL,'赵刘保','1995-01-14','湖北武汉',30);
    
    -- 删除触发器
DROP TRIGGER tt1;

SELECT * FROM `studentbac`;
SELECT * FROM student;
DELETE FROM student WHERE sno>2008;

-- MySQL事件
  -- 事件:在特定的时间自动执行数据库语句
  SHOW VARIABLES LIKE 'event_scheduler'; -- event_scheduler    OFF
 
  SET GLOBAL event_scheduler=1;-- 开启事件功能
  SET GLOBAL event_scheduler=0;-- 关闭事件功能
  SET GLOBAL event_scheduler=ON;
  SET GLOBAL event_scheduler=off;
 
  -- 创建事件
  CREATE EVENTS

MySql 数据库入门笔记相关推荐

  1. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  2. 最新、最全、最详细的 MySQL 数据库学习笔记总结(2021最新版)

    数据库是什么 数据库管理系统,简称为DBMS(Database Management System),是用来存储数据的管理系统. DBMS 的重要性 无法多人共享数据 无法提供操作大量数据所需的格式 ...

  3. linux数据库创建score表,MySQL数据库学习笔记

    MySQL数据库学习笔记phpma (实验环境:Redhat9.0,MySQL3.23.54) 纲要: 一,连接MySQL phpma 二,MySQL管理与授权 三,数据库简单操作 四, 数据库备份 ...

  4. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  5. mysql数据库入门教程(11):视图讲解大全

    一.视图的介绍 含义:虚拟表,和普通表一样使用 mysql5.1版本出现的新特性,是通过表动态生成的数据 举例说明什么是视图:假设一个年级有10个班,上面有领导来啦,说要检查舞蹈功底,学校为了应付检查 ...

  6. mysql数据库入门教程(6):数据的增删改

    前面两篇博文介绍了数据库的查询 mysql数据库入门教程(4):查询讲解大全 mysql数据库入门教程(5):多表操作(连接查询,子查询,分页查询,联合查询) 今天介绍下数据库的增删改. 数据库基本操 ...

  7. mysql数据库入门教程(5):多表操作(连接查询,子查询,分页查询,联合查询)

    前文介绍了单表查询:mysql数据库入门教程(4):查询讲解大全 今天介绍下多表查询 一.连接查询 含义:又称多表查询,当查询的字段来自于多个表时,就会用到连接查询 先送上下面所讲用到的sql脚本 h ...

  8. 组态王6.55连接MySql数据库(笔记)

    组态王6.55连接MySql数据库(笔记) 1. 安装Mysql数据库 此步骤注意设置用户名和密码 比如设置:root用户的密码为123 2. 安装Navicat图形界面 安装Navicat 8 fo ...

  9. Python连接Mysql数据库入门

    Python 连接mysql数据库入门教程 直接上代码 数据库建表省略 要执行哪段代码把#去掉即可:有文字解释 难度 : ⭐⭐(全星5颗星的情况下) import pymysql # 导入模块 根据P ...

最新文章

  1. Java8内存模型—永久代(PermGen)和元空间(Metaspace)
  2. Mybatis XML文件的异常
  3. 1001 A+B Format (20 分)【难度: 简单 / 知识点: 模拟】
  4. 关于形如--error LNK2005: xxx 已经在 msvcrtd.lib ( MSVCR90D.dll ) 中定义--的问题分析解决...
  5. 粉刷木板(ybtoj-单调队列)
  6. 为Openstack制作CentOS7镜像
  7. python中datetime函数怎么获得当年年份_Python 日期和时间函数使用指南
  8. PHP拼接SQL语句批量更新多个字段
  9. hnust 数据挖掘原理与算法期中考试复习资料
  10. 软件测试笔记本硬件,专业工作站软件测试_惠普笔记本电脑_笔记本评测-中关村在线...
  11. flask +layUI+ ajax 上传图片
  12. 2021-10-08
  13. python request 淘宝评论数据简易爬虫
  14. 2022牛客寒假算法基础集训营2
  15. 51nod 1108.距离之和最小 V2 - 曼哈顿距离
  16. 孙飞脸色一变,惊讶道:“修者,你也是修者?”
  17. 李沐动手学深度学习第四章-4.9.环境和分布偏移
  18. ISCC2022--Writeup
  19. 倍福---CNC系统介绍
  20. 智象科技一体化运维平台的价值

热门文章

  1. 2022电大国家开放大学网上形考任务-设施栽培技术非免费(非答案)
  2. 利用Socket实现远程DOS控制
  3. 对比分析Zigbee协议与802.15.4协议的联系与区别
  4. python画思维导图的英文_英语思维导图简单画法介绍
  5. EVE原料成本计算器 v1.0.0.0
  6. 串口通信波特率数据错乱
  7. 硬盘被格式化了怎么恢复
  8. Mac 通过docker安装MinIO
  9. 动态欧拉角与静态欧拉角的区别
  10. ES7在WIN环境开启闪退【完美解决】