diff --git "a/01 \345\274\240\350\276\211/20230213 Mysql\347\231\273\345\275\225.md" "b/01 \345\274\240\350\276\211/20230213 Mysql\347\231\273\345\275\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..cdea18837baa6caeedcbc79e4e17fd7aaeadcc9b --- /dev/null +++ "b/01 \345\274\240\350\276\211/20230213 Mysql\347\231\273\345\275\225.md" @@ -0,0 +1,7 @@ +# 1.笔记 + +1. 从官网下载mysql +2. 任务管理器-服务-开启服务mysql57 +3. 使用mysql时请注意自己的电脑是否添加了环境变量 +4. win+r开启cmd,输入mysql -u 用户名 -p 密码(默认为-u root -proot) + diff --git "a/01 \345\274\240\350\276\211/20230215 \345\273\272\345\272\223\345\273\272\350\241\250.md" "b/01 \345\274\240\350\276\211/20230215 \345\273\272\345\272\223\345\273\272\350\241\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..c39ace6afae063ad909835e29dd5723434c85a2a --- /dev/null +++ "b/01 \345\274\240\350\276\211/20230215 \345\273\272\345\272\223\345\273\272\350\241\250.md" @@ -0,0 +1,37 @@ +# 1.笔记 + +- create database 数据库名 charset utf8; + +- use 数据库名; + +- create table 表名称( + + ​ 字段名 数据类型, + + ​ 字段名 数据类型 + + ); + +# 2.作业 + +```mysql +create database class3 charset utf8; +use class3; + +-- 数据库class3 +-- 表student +-- 字段:学号,姓名,性别,爱好,住址,联系方式,邮箱,QQ号 +-- 并新增一条自己的记录。 +create table student( +id int, +name varchar(10), +gender enum('男','女'), +hobby text, +address varchar(20), +tel_contact char(11), +email varchar(20), +QQ_num varchar(15) +); +insert into student values ('2244310101','张辉','男','听音乐','福建福州','19912345678','1939123456@qq.com','1939123456'); +``` + diff --git "a/01 \345\274\240\350\276\211/20230216 DDL\345\222\214DML\350\257\255\345\217\245\347\273\203\344\271\240.md" "b/01 \345\274\240\350\276\211/20230216 DDL\345\222\214DML\350\257\255\345\217\245\347\273\203\344\271\240.md" new file mode 100644 index 0000000000000000000000000000000000000000..85aa59c34ca546057a7235e2ed9dc32b9183f37a --- /dev/null +++ "b/01 \345\274\240\350\276\211/20230216 DDL\345\222\214DML\350\257\255\345\217\245\347\273\203\344\271\240.md" @@ -0,0 +1,442 @@ +# 1.笔记 + +- DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段) + +- DML: 数据操作语言,用来对数据库表中的数据进行增删改 + +- DQL: 数据查询语言,用来查询数据库中表的记录 + +- DCL: 数据控制语言,用来创建数据库用户、控制数据库的控制权限 + + + + ### DDL(数据定义语言) + + #### 数据库操作 + + 查询所有数据库: + + ```mysql + SHOW DATABASES; + ``` + + 查询当前数据库: + + ```mysql + SELECT DATABASE(); + ``` + + 创建数据库: + + ```mysql + CREATE DATABASE [ IF NOT EXISTS ] 数据库名 [ DEFAULT CHARSET 字符集] [COLLATE 排序规则 ]; + ``` + + 删除数据库: + + ```mysql + DROP DATABASE [ IF EXISTS ] 数据库名; + ``` + + 使用数据库: + + ```mysql + USE 数据库名; + ``` + + #### 表操作 + + 查询当前数据库所有表: + + ```mysql + SHOW TABLES; + ``` + + 查询表结构: + + ```mysql + DESC 表名; + ``` + + 查询指定表的建表语句: + + ```mysql + SHOW CREATE TABLE 表名; + ``` + + 建表: + + ```mysql + CREATE TABLE 表名( 字段1 字段1类型 [COMMENT 字段1注释], 字段2 字段2类型 [COMMENT 字段2注释], 字段3 字段3类型 [COMMENT 字段3注释], ... 字段n 字段n类型 [COMMENT 字段n注释])[ COMMENT 表注释 ]; + ``` + + **最后一个字段后面没有逗号** + + 添加字段: + + ```mysql + ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束]; + ``` + + 例: + + ```mysql + ALTER TABLE emp ADD nickname varchar(20) COMMENT '昵称'; + ``` + + 修改数据类型: + + ```mysql + ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度); + ``` + + 修改字段名和字段类型: + + ```mysql + ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束]; + ``` + + 例:将emp表的nickname字段修改为username,类型为varchar(30) + + ```mysql + ALTER TABLE emp CHANGE nickname username varchar(30) COMMENT '昵称'; + ``` + + 删除字段: + + ```mysql + ALTER TABLE 表名 DROP 字段名; + ``` + + 修改表名: + + ```mysql + ALTER TABLE 表名 RENAME TO 新表名 + ``` + + 删除表: + + ```mysql + DROP TABLE [IF EXISTS] 表名; + ``` + + 删除表,并重新创建该表: + + ```mysql + TRUNCATE TABLE 表名; + ``` + + ### DML(数据操作语言) + + #### 添加数据 + + 指定字段: + + ```mysql + `INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);` + ``` + + 全部字段: + + ```mysql + INSERT INTO 表名 VALUES (值1, 值2, ...); + ``` + + 批量添加数据: + + ```mysql + `INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...);` + `INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...);` + ``` + + ##### 注意事项 + + - 字符串和日期类型数据应该包含在引号中 + - 插入的数据大小应该在字段的规定范围内 + + + + #### 更新和删除数据 + + 修改数据: + + ```mysql + `UPDATE 表名 SET 字段名1 = 值1, 字段名2 = 值2, ... [ WHERE 条件 ];` + ``` + + 例: + + ```mysql + UPDATE emp SET name = 'Jack' WHERE id = 1; + ``` + + 删除数据: + + ```mysql + DELETE FROM 表名 [ WHERE 条件 ]; + ``` + + + +# 2.作业 + +```mysql +*1、创建数据库test01_market +*2、创建表格customers + +*| 字段名 | 数据类型 | +*| --- | --- | +*| c_num | int(11) | +*| c_name | varchar(50) | +*| c_contact | varchar(50) | +*| c_city | varchar(50) | +*| c_birth | date | + +create database test01_market charset utf8; +use test01_market; + +create table customers( + c_num int(11), + c_name varchar(50), + c_contact varchar(50), + c_city varchar(50), + c_birth date +); + +**要求3:**将c_contact字段移动到c_birth字段后面 + +alter table customers modify c_contact varchar(50) after c_birth; + +**要求4:**将c_name字段数据类型改为 varchar(70) + +alter table customers modify c_name varchar(70); + +**要求5:**将c_contact字段改名为c_phone + +alter table customers change c_contact c_phone varchar(50); + +**要求6:**增加c_gender字段到c_name后面,数据类型为char(1) + +alter table customers add column c_gender char(1); +alter table customers modify c_gender varchar(50) after c_name ; + +**要求7:**将表名改为customers_info + +alter table customers rename to customers_info; + +**要求8:**删除字段 + +alter table customers_info drop column c_city; + +*1、创建数据库test02_library + +CREATE DATABASE test02_library; +alter database test02_library charset utf8; +show CREATE DATABASE test02_library; +use test02_library; + +*2、创建表格books + +show CREATE TABLE books; +alter table books charset=utf8; + +| *-- | 字段名 | 字段说明 | 数据类型 | 允许为空 | 唯一 | +| --- | ------- | ---- | ------------ | ---- | --- | +| -- | b_id | 书编号 | int(11) | 否 | 是 | +| -- | b_name | 书名 | varchar(50) | 否 | 否 | +| -- | authors | 作者 | varchar(100) | 否 | 否 | +| -- | price | 价格 | float | 否 | 否 | +| -- | pubdate | 出版日期 | year | 否 | 否 | +| -- | note | 说明 | varchar(100) | 是 | 否 | +| -- | num | 库存 | int(11) | 否 | 否 | + +CREATE TABLE books( + b_id int(1)ZEROFILL not null comment 书编号 , + b_name varchar(50) not null comment 书名, + authors1 varchar(100) not null comment 作者, + price FLOAT not NULL comment 价格, + pubdate year not NULL comment 出版日期, + note varchar(100) comment 说明, + num int(11) not NULL comment 库存 +); +ALTER TABLE books MODIFY b_id int(1)not null auto_increment; + +-- 3、向books表中插入记录 + +-- 1) 指定所有字段名称插入第一条记录 + +INSERT into books(b_id,b_name,authors1,price,pubdate,note,num) VALUES(1,'Tal of AAA','Dickes',23,1995,'novel','11'); + +-- 2)不指定字段名称插入第二记录 + +INSERT into books VALUES(2,'EmmaT','Jane lura',35,1993,'joke','22'); + +-- 3)同时插入多条记录(剩下的所有记录) +INSERT into books VALUES(3,'Story of Jane','Jane Tim',40,2001,'novel','0'); +INSERT into books VALUES(4,'Lovey Day','George Byron',20,2005,'novel','30'); +INSERT into books VALUES(5,'Old land','Honore Blade',30,2010,'law','0'); +INSERT into books VALUES(6,'The Battle','Upton Sara',30,1999,'medicine','40'); +INSERT into books VALUES(7,'Rose Hood','Richard haggard',28,2008,'cartoon','28'); + +-- 4、将小说类型(novel)的书的价格都增加5。 + +UPDATE books set price=price+5 WHERE note='novel'; + +*5、将名称为EmmaT的书的价格改为40。 + +UPDATE books set price=40 WHERE b_name='emmat'; + +*6、删除库存为0的记录 + +DELETE from books WHERE num=0; + +-- 1、创建数据库test03_bookstore + +CREATE database test03_bookstore CHARACTER set utf8; +use test03_bookstore; +drop DATABASE test03_bookstore; + +-- 2、创建book表 + +-- ```mysql +-- +----------+--------------+------+-----+---------+----------------+ +-- | Field | Type | Null | Key | Default | Extra | +-- +----------+--------------+------+-----+---------+----------------+ +-- | id | int(11) | NO | PRI | NULL | auto_increment | +-- | title | varchar(100) | NO | | NULL | | +-- | author | varchar(100) | NO | | NULL | | +-- | price | double(11,2) | NO | | NULL | | +-- | sales | int(11) | NO | | NULL | | +-- | stock | int(11) | NO | | NULL | | +-- | img_path | varchar(100) | NO | | NULL | | +-- +----------+--------------+------+-----+---------+----------------+ +CREATE TABLE book( + id int auto_increment not null PRIMARY key, + title varchar(100) not null , + author varchar(100) not null , + price DOUBLE(11,2) not null , + sales int not null , + stock int not null , + img_path varchar(100) not null +); +-- +-- 尝试添加部分模拟数据,参考示例如下: +-- +-- ```mysql +-- +----+-------------+------------+-------+-------+-------+----------------------------+ +-- | id | title | author | price | sales | stock | img_path | +-- +----+-------------+------------+-------+-------+-------+-----------------------------+ +-- | 1 | 解忧杂货店 | 东野圭吾 | 27.20 | 102 | 98 | upload/books/解忧杂货店.jpg | +-- | 2 | 边城 | 沈从文 | 23.00 | 102 | 98 | upload/books/边城.jpg | +-- +----+---------------+------------+-------+-------+-------+----------------------------+ +-- ``` +insert into book VALUES(1,'解忧杂货店 ','东野圭吾',27.20,102,98,' upload/books/解忧杂货店.jpg'); +insert into book VALUES(2,' 边城','沈从文',23.00,102,98,'upload/books/边城.jpg'); +SELECT *from book; +-- 3、创建用户表users,并插入数据 +CREATE table users( + id int auto_increment not null PRIMARY key, + username varchar(100) not null UNIQUE KEY, + `password` VARCHAR(100) not null, + email varchar(100) +); +-- ```mysql +-- +----------+--------------+------+-----+---------+----------------+ +-- | Field | Type | Null | Key | Default | Extra | +-- +----------+--------------+------+-----+---------+----------------+ +-- | id | int(11) | NO | PRI | NULL | auto_increment | +-- | username | varchar(100) | NO | UNI | NULL | | +-- | password | varchar(100) | NO | | NULL | | +-- | email | varchar(100) | YES | | NULL | | +-- +----------+--------------+------+-----+---------+----------------+ +-- ``` +-- +-- 尝试添加部分模拟数据,参考示例如下: +-- +-- ```mysql +insert into users VALUES(1,'admin','112233','admin@mxdx.com') +SELECT *from users; +show CREATE TABLE users; + +-- +----+----------+----------------------------------+--------------------+ +-- | id | username | password | email | +-- +----+----------+----------------------------------+--------------------+ +-- | 1 | admin | 112233 | admin@mxdx.com | +-- +----+----------+----------------------------------+--------------------+ +-- ``` +-- +-- 4、创建订单表orders + +-- ```mysql +-- +--------------+--------------+------+-----+---------+-------+ +-- | Field | Type | Null | Key | Default | Extra | +-- +--------------+--------------+------+-----+---------+-------+ +-- | id | varchar(100) | NO | PRI | NULL | | +-- | order_time | datetime | NO | | NULL | | +-- | total_count | int(11) | NO | | NULL | | +-- | total_amount | double(11,2) | NO | | NULL | | +-- | state | int(11) | NO | | NULL | | +-- | user_id | int(11) | NO | MUL | NULL | | +-- +--------------+--------------+------+-----+---------+-------+ +-- ``` +CREATE table orders( + id varchar(100) not null PRIMARY key, + order_time DATETIME not null, + total_count int not null, + total_amount DOUBLE(11,2) not null, + state int not null, + user_id int +); +desc orders; +alter table orders add index(user_id); +-- 尝试添加部分模拟数据,参考示例如下: +insert into orders VALUES('15294258455691','2018-06-20 00:30:45',2,52.20,0,1); +-- ```mysql +-- +----------------+---------------------+-------------+--------------+-------+---------+ +-- | id | order_time | total_count | total_amount | state | user_id | +-- +----------------+---------------------+-------------+--------------+-------+---------+ +-- | 15294258455691 | 2018-06-20 00:30:45 | 2 | 50.20 | 0 | 1 | +-- +----------------+---------------------+-------------+--------------+-------+---------+ +-- ``` +-- +-- 5、创建订单明细表order_items + +-- ```mysql +-- +----------+--------------+------+-----+---------+----------------+ +-- | Field | Type | Null | Key | Default | Extra | +-- +----------+--------------+------+-----+---------+----------------+ +-- | id | int(11) | NO | PRI | NULL | auto_increment | +-- | count | int(11) | NO | | NULL | | +-- | amount | double(11,2) | NO | | NULL | | +-- | title | varchar(100) | NO | | NULL | | +-- | author | varchar(100) | NO | | NULL | | +-- | price | double(11,2) | NO | | NULL | | +-- | img_path | varchar(100) | NO | | NULL | | +-- | order_id | varchar(100) | NO | MUL | NULL | | +-- +----------+--------------+------+-----+---------+----------------+ +-- ``` +CREATE TABLE order_items( + id int not null auto_increment PRIMARY KEY, + count int not NULL, + amount double(11,2) not NULL, + title varchar(100)not NULL, + author varchar(100) not null, + price double(11,2) not null, + img_path varchar(100)not null, + order_id varchar(100) not null +); +alter table order_items add index(order_id); +-- 尝试添加部分模拟数据,参考示例如下: +-- +-- ```mysql +-- +----+-------+--------+---------+---------+-------+----------------+----------------+ +-- | id |count| amount| title | author | price | img_path | order_id | +-- +----+-------+--------+------------+----------+-------+----------------+----------------+ +-- | 1 | 1 | 27.20| 解忧杂货店 | 东野圭吾 | 27.20 | static/img/default.jpg|15294258455691 | +-- | 2 | 1 | 23.00| 边城 | 沈从文 | 23.00 | static/img/default.jpg|15294258455691 | +-- +----+-------+--------+------------+----------+-------+------------+----------------+ +-- +insert into order_items VALUES(1,1,27.20,'解忧杂货店','东野圭吾',27.20, 'static/img/default.jpg','15294258455691'); +insert into order_items VALUES(2,1,23.00,'边城','沈从文',23.00,'static/img/default.jpg','15294258455691'); +``` + diff --git "a/01 \345\274\240\350\276\211/20230220 \347\272\246\346\235\237\347\232\204\345\255\246\344\271\240\345\222\214\344\275\234\344\270\232.md" "b/01 \345\274\240\350\276\211/20230220 \347\272\246\346\235\237.md" similarity index 89% rename from "01 \345\274\240\350\276\211/20230220 \347\272\246\346\235\237\347\232\204\345\255\246\344\271\240\345\222\214\344\275\234\344\270\232.md" rename to "01 \345\274\240\350\276\211/20230220 \347\272\246\346\235\237.md" index 2553f9a3e3a7c22cbc0516af2a678d47d6cd582f..23327cf7c046d3190e5b2a18d7eceadfcfb20e11 100644 --- "a/01 \345\274\240\350\276\211/20230220 \347\272\246\346\235\237\347\232\204\345\255\246\344\271\240\345\222\214\344\275\234\344\270\232.md" +++ "b/01 \345\274\240\350\276\211/20230220 \347\272\246\346\235\237.md" @@ -1,36 +1,28 @@ # 1.笔记 -``` -1、主键约束 -(1)关键字是primary key -(2)特点 -A:每一个表只能有一个主键约束 -B:主键约束的字段值是不允许为null -C: 也不允许重复的 -2、唯一键约束: -(1)关键字:unique key -(2)特点 -A:允许为null -B: 不能重复 -B:一个表可以有多个唯一键约束 -3、非空约束 -如果某个字段,不要求唯一,但是要求非空。那么就可以给字段加非空约束。 -4、默认值约束 -如果某个字段,在添加数据时未指定值时,希望不要用NULL处理,而是按照一个默认值处理, -就可以使用默认值约束。 -例如:学生性别,在未指定时,默认按照 男 处理 -5、检查约束 (MySQL5.7不支持CHECK约束,在MySQL8.0中开始支持CHECK约束) -6、外键约束 -约束两个表的关系,或者是一个表的两个字段之间的关系。 -7、自增属性 -维护某个字段的值自动增长的一个属性。 -它的要求: -(1)一个表最多只能有一个字段是自增的 -(2)自增的字段必须是整数类型 -(3)自增的字段必须是键约束的字段(通常是主键、唯一键) -自增字段赋值为null和0的时候,会自增, -如果赋值为其他的值,按照你指定的值来。 -``` +## 1.主键 primary key + +不可重复,一个表格只有一个,不可空 + +## 2.唯一 unique key + +可以空,一个表格可以有多个,不可重复 + +## 3.外键 foreign key (表的某个字段) references 主表名(被参考字段) + +必须要有主表和从表 + +## 4.默认 default + +就是null的时候为默认值 + +## 5.非空 not null + +不能为空 + +## 6.自增 auto_increment + +自动根据上面增加1 # 2.作业 diff --git "a/01 \345\274\240\350\276\211/20230222 \345\237\272\347\241\200\346\237\245\350\257\242_\350\277\220\347\256\227\347\254\246.md" "b/01 \345\274\240\350\276\211/20230222 \345\237\272\347\241\200\346\237\245\350\257\242_\350\277\220\347\256\227\347\254\246.md" index 2770d10a85e57e6f019789ae49961fd3f3d9d5f6..d6b12b6cdca71c322ad1d5bf031f914b987e1bb8 100644 --- "a/01 \345\274\240\350\276\211/20230222 \345\237\272\347\241\200\346\237\245\350\257\242_\350\277\220\347\256\227\347\254\246.md" +++ "b/01 \345\274\240\350\276\211/20230222 \345\237\272\347\241\200\346\237\245\350\257\242_\350\277\220\347\256\227\347\254\246.md" @@ -1,6 +1,6 @@ # 1.笔记 -``` +```mysql 大于:> 小于:< 大于等于:>= 大于或于等于都满足 @@ -12,7 +12,7 @@ not between x and y 集合范围:in (x,x,x) : 只要在这个范围就行 in (1,2,3) not in(x,x,x) - + like %:代表任意个字符 0个 1个 N个 _:代表一个字符,如果两个下划线代表两个字符 @@ -21,9 +21,10 @@ _:代表一个字符,如果两个下划线代表两个字符 逻辑或:|| 或 or 或者 逻辑非:! 或 not 不是 (取反) 逻辑异或: xor 两者只能满足其中一个,不能同时满足,不能同时不满足 - ``` + + # 2.作业 ```mysql diff --git "a/01 \345\274\240\350\276\211/20230223 \347\263\273\347\273\237\351\242\204\345\256\232\344\271\211\345\207\275\346\225\260.md" "b/01 \345\274\240\350\276\211/20230223 \347\263\273\347\273\237\351\242\204\345\256\232\344\271\211\345\207\275\346\225\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..fda81031d7f6968b85711a13d4f6971683e49d32 --- /dev/null +++ "b/01 \345\274\240\350\276\211/20230223 \347\263\273\347\273\237\351\242\204\345\256\232\344\271\211\345\207\275\346\225\260.md" @@ -0,0 +1,109 @@ +# 1.笔记 + +## 聚合函数 + +1.介绍 + +​ 将一列数据作为一个整体,进行纵向计算。(作用于表的某一列) + +2.常见聚合函数 + +| 函数 | 功能 | +| :---: | :------: | +| count | 统计数量 | +| max | 最大值 | +| min | 最小值 | +| avg | 平均值 | +| sum | 求和 | + +3.语法 + +```mysql +select 聚合函数(字段列表) from 表名; +``` + +注意:null值不参与所有聚合函数运算 + +函数:是指一段可以直接被另一段程序调用的程序或代码 + +- 字符串函数 +- 数值函数 +- 日期函数 +- 流程函数 + +## 一、字符串函数 + +Mysql中内置了很多字符串函数,常用的几个如下: + +| 函数 | 功能 | +| :----------------------- | :-------------------------------------------------------- | +| CONCAT(S1,S2,...Sn) | 字符串拼接,将S1,S2,...Sn拼接成一个字符串 | +| LOWER(str) | 将字符串str全部转为小写 | +| UPPER(str) | 将字符串str全部转为大写 | +| LPAD(str,n,pad) | 左填充,用字符串pad对str的左边进行填充,达到n个字符串长度 | +| RPAD(str,n,pad) | 右填充,用字符串pad对str的右边进行填充,达到n个字符串长度 | +| TRIM(str) | 去掉字符串头部和尾部的空格 | +| SUBSTRING(str,start,len) | 返回从字符串str从start位置起的len个长度的字符串 | + +```mysql +-- 拼接 +SELECT CONCAT('Hello', 'World'); +-- 小写 +SELECT LOWER('Hello'); +-- 大写 +SELECT UPPER('Hello'); +-- 左填充 +SELECT LPAD('01', 5, '-'); +-- 右填充 +SELECT RPAD('01', 5, '-'); +-- 去除空格 +SELECT TRIM(' Hello World '); +-- SUBSTRING +SELECT SUBSTRING('Hello World', 1, 5); +``` + +## 二、数值函数 + +常见的数值函数如下: + +| 函数 | 功能 | +| ---------- | ---------------------------------- | +| CEIL(X) | 向上取整 | +| FLOOR(X) | 向下取整 | +| MOD(x,y) | 返回x/y的模 | +| RAND() | 返回0~1内的随机数 | +| ROUND(x,y) | 求参数x的四舍五入的值,保留y位小数 | + +## 三、日期函数 + +常见的日期函数如下: + +| 函数 | 功能 | +| --------------------------------- | ------------------------------------------------- | +| CURDATE() | 返回当前日期 | +| CURTIMED() | 返回当前时间 | +| NOW() | 返回当前日期和时间 | +| YEAR(date) | 获取指定date的年份 | +| MONTH(date) | 获取指定date的月份 | +| DAY(date) | 获取指定date的日期 | +| DATE ADD(date,INTERVAL expr type) | 返回一个日期/时间值加上一个时间间隔expr后的时间值 | +| DATEDIFF(date1,date2) | 返回起始时间date1 和 结束时间date2之间的天数 | + +```mysql +-- DATE_ADD +SELECT DATE_ADD(NOW(), INTERVAL 70 YEAR); +``` + +## 四、条件判断函数 + +条件判断函数也是很常用的一类函数,可以在SOL语句中实现条件筛选,从而提高语句的效率。 + +| 函数 | 功能 | +| :--------------------------------------------------------- | :----------------------------------------------------- | +| IF(value,t,f) | 如果value为true,则返回t,否则返回f | +| IFNULL(value1,value2) | 如果value1不为空,返回value1,否则返回value2 | +| CASE WHEN [val1] THEN [res1] ... ELSE [default] END | 如果val1为true,返回res1,...否则返回default默认值 | +| CASE [expr] WHEN [val1] THEN [res1] ... ELSE [default] END | 如果expr的值等于val1,返回res1,...否则返回default默认值 | + + +