务必记住所有得事务必须使用InnoDB数据库引擎,如果你使用得是MyISAM数据库引擎是无法使用事务得。
12月13日
在LeetCode上刷题发现了自己有很多不会的,然后就看各位大佬的解题思路,发现自己还有好多知识点都不会
这天遇到的知识点有
if(expr1,expr2,expr3),当在运行的时候,如果expr1成立,那么返回expr2,否则返回expr3
这个知识点估计有点冷门
还有就是case的用法
enum(枚举类型)、set(集合)
向枚举类型中插入数据,仅仅可以插入定义时后面跟随的诸多数据之一,且不可插入其它数据。
enum同时只可以插入诸多数据之一,但set可同时插入多个,而且向set中插入数据时只能使用一个引号。
mysql> create table my_time(
-> t1 datetime,
-> t2 timestamp
-> );
数据类型(TIMESTAMP)受时区影响。
MYSQL六大约束:
#1NOT NULL:非空
#2UNIQUE:唯一
#3PRIMARY KEY:主键(不可重复也不可为空)
#4DEDFAULT:默认
#5FOREIGN KEY:外键(与其他表相关联)
#6CHECK:检查约束(mysql中不支持)
①类型为UNIQUE的字段类型允许包含NULL但至多只能包含一个。
②添加外键时主表中与从表相关联的字段要为key类型(主键、唯一)。
③外键插入数据时先插入主表再插入从表,删除数据时先删除从表再删除主表。
更新约束条件
通用格式有 alter table 表名 modify column 字段名 条件(添加/删除非空约束,添加/删除默认约束,添加主键,添加唯一)
alter table 表名 drop 条件(主键)
①删除唯一约束:ALTER TABLE 表名 DROP INDEX 字段名
②添加外键:ALTER TABLE 从表名 ADD CONSTRAINT 别名 FOREIGN KEY(字段) REFERENCE 主表名(字段);
③删除外键:ALTER TABLE 从表名 DROP FOREIGN KEY 别名;
mysql 标识列
AUTO_INCREMENT 自增长列
注意:删除自增长列不使用DROP,而是直接修改表的性质。
DISTINCT 去重关键字
1、通配符:(使用like的模糊查询中用到)
①'%'在通配符中代表任意长度任意字符,其中任意长度可为0
②'_'在通配符中代表长度为1的任意字符
③如果要查询的字段中包含'%'、'_' 可以使用转义符'\'或自定义转义符,
//使用'\'作为转义符(默认)
//自定义转义符,使用escape关键字
1、单行函数:
①字符函数:
SELECT LENGTH('hello world!'); 返回括号中所占总字节数(多数函数返回字符数,仅该函数返回字节数)
SELECT CONCAT('str1','str2','str3'); 将括号中多个字符串拼接成一个长的字符串
SELECT UPPER('str'),LOWER('STR'); 变大、小写
SELECT SUBSTR('str',a,b); 在str中从第a位开始截取长度为b的字符串(第一个字符索引为1)
SELECT REPLACE('str','str1','str2');将str中的str1全部替换为str2
②数学函数
SELECT ROUND(1.345,2); 将1.345保留2位小数的四舍五入
SELECT CEIL(0.9),FLOOR(1.1); 将0.9向上取整,将1.1向下取整
SELECT TRUNCATE(1.55555,2); 保留两位小数
SELECT MOD(10,9); 取余(10%9)
③日期函数
SELECT NOW(); 打印当前时间
SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日'); 将标准日期类型(datetime)的数据转化为字符串(varchar)
SELECT STR_TO_DATE('1998-3-2','%Y-%c-%d') AS out_put; 将字符串(varchar)转化为指定日期类型
④流程控制函数(只举一例if函数)
SELECT IF(3>2,end1,end2); 当3>2成立时,执行end1,否则执行end2
2、分组函数
求和:sum()、均值:avg()、最大值:max()、最小值:min()、求数目:count()、求日期差(天):datediff()
注意:既然也是筛选为什么用的时having?
where筛选与having筛选的区别:分组前筛选用where,分组后筛选用having。
联合查询
1、优点:当多张表之间没有连接条件时,使用UNION(联合查询)很方便。
2、语法:
查询语句1
UNION
查询语句2
UNION
……
注意:
①要求多条查询语句的查询列数一致且每条查询语句都要完整(可单独执行),非最后一条查询条件不需要添加分号
②最终显示的字段名称是第一条查询条件中所查询的内容,要保证所有查询语句所查询的内容一致且数目相等
③UNION查询默认去重,可使用UNION ALL来避免去重