mysql的学习知识点,一天积累一点,那么一年就可以积累很多

务必记住所有得事务必须使用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来避免去重

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值