数据库
数据库排序 desc 降序 asc 升序
----- 根据 “列” 从小到大排列
--select * from 表 order by 列 asc
----- 根据 “列” 从大到小排列
--select * from 表 order by 列 desc
SELECT * FROM test1 ORDER BY date_time DESC;
MySQL–利用procedure analyse()函数优化表结构
求差集(用 left join 或 right join) 求并集(用 union)【MYSQL目前不支持】
数据库的三大范式
数据库事务正确执行的四个基本要素
事务是由一组 SQL 语句组成的逻辑处理单元。
ACID: 原子性(Atomicity)、 一致性(Consistency)、 隔离性(Isolation)、持久性(Durability)。
并发事务带来的问题
更新丢失、脏读、不可重复读、幻读。
如何并发访问数据库---加锁。
锁是一种 并发控制技术,锁是用来在多个用户同时访问同一个数据的时候保护数据的。
有 有 2 种基本的锁类型:
共享(S)锁:若事务T在A对象上加上共享锁S,则其他事务不可修改A对象,但是,可以查询A对象、可以在A对象上加共享锁
排他(X)锁:若事务T在A对象上加上排他锁X,则其他事务不可修改、不可查询A对象,不可在A对象上加其他的共享锁和排他锁
产生死锁的四个必要条件:
互斥条件、请求与保持条件、不可剥夺条件、环路等待条件。(只要系统发生了死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。)
锁有两种机制:
悲观锁 :从数据开始更改时就将数据锁住,直到改完成才释放
乐观锁:准备提交所做的修改到数据库的时候才会将数据锁住
索引:
加快了查找速度,减慢了修改速度。
存储引擎:
MyIsam 与 与 InnoDB
涉及命令的问题
1、truncate 与 delete 的区别:
TRUNCATE TABLE:删除内容、 不删除 定义、释放空间。
DELETE TABLE:删除内容、 不删除 定义,不释放空间。
DROP TABLE:删除内容和定义,释放空间。
2、sql 的授权语句和收回权限语句:
grant 权限 on 数据库对象 to 用户;
revoke 权限 on 数据库对象 from ;
3、增加一行数据、增加列、删除列:
插入一行数据:
insert into stu(stuName,stuAge,stuSex) values('张三','20','男')
增加列:
ALTER TABLE table_name ADD column_name datatype
删除列:
ALTER TABLE table_name DROP COLUMN column_name
4、select Count (*) 和 Select Count( 数 字) 以及Select Count(column)
count(*) 跟 count(1) 的结果一样, 返回记录的总行数,都包括对 NULL 的统计,而 count(column) 是不包括 NULL 的统计。
5、EXISTS
SELECT * FROM person WHERE EXISTS (SELECT id FROM city WHERE id=1)
条件表达式与 EXISTS 关键字之间用AND 或者 OR 进行连接
SELECT * FROM person WHERE age>20 AND EXISTS (SELECT id FROM city WHERE id=1);
NOT EXISTS 与 EXISTS 正好相反
SELECT * FROM person WHERE NOT EXISTS (SELECT id FROM city WHERE id=1)
6、HAVING 子句
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name //分组 HAVING aggregate_function(column_name) operator value;
max min
函数部分
7、判断表的字段值是否为空
查询字段值为空的语法:where <字段名> is null
查询字段值不为空的语法:where <字段名> is not null 或者 where NoT(<字段名> IS NULL)
8、据时间进行分类计算总数
SELECT CAST(time as DATE) AS time,COUNT(*) AS 总数 FROM tab GROUP BY CAST(time as DATE)
SELECT * FROM ( SELECT a1.dt, IFNULL(cert_num,0) cert_num, IFNULL(save_num,0) save_num FROM ( SELECT CAST(cert_time AS DATE) dt ,COUNT(*) AS cert_num FROM ee_cert WHERE cert_time IS NOT NULL AND 1=1 GROUP BY CAST(cert_time AS DATE) ) a1 LEFT JOIN ( SELECT CAST(TIME AS DATE) dt ,COUNT(*) AS save_num FROM ee_cert WHERE 1=1 GROUP BY CAST(TIME AS DATE) ) b1 ON a1.dt=b1.dt UNION ALL SELECT a1.dt, IFNULL(cert_num,0) cert_num, IFNULL(save_num,0) save_num FROM ( SELECT CAST(TIME AS DATE) dt ,COUNT(*) AS save_num FROM ee_cert WHERE 1=1 GROUP BY CAST(TIME AS DATE) ) a1 LEFT JOIN ( SELECT CAST(cert_time AS DATE) dt ,COUNT(*) AS cert_num FROM ee_cert WHERE cert_time IS NOT NULL AND 1=1 GROUP BY CAST(cert_time AS DATE) ) b1 ON a1.dt=b1.
9、SQL Date 函数
MySQL DATE_FORMAT() 函数
定义和用法
DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
语法
DATE_FORMAT(date,format)
实例
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d'),NOW();
***************函数部分结束(待更新)****************
通配符
concat用来拼接查询的字符串,如下代码所示
SELECT * FROM deployment WHERE name LIKE concat(concat('%',#{queryMessage}),'%')
数据库连接池:
触发器:
REPLACE(UUID(),"-","") 生成不带‘ - ’的UUID