数据库

数据库基本操作

数据库排序  desc 降序  asc 升序

----- 根据 “列” 从小到大排列

--select * from 表 order by 列 asc

----- 根据 “列” 从大到小排列

--select * from 表 order by 列 desc

SELECT * FROM test1 ORDER BY  date_time DESC;

MySQL数据库的数据类型

MYSQL优化–explain分析sql语句执行效率

MySQL–利用procedure analyse()函数优化表结构

MySQL 主从复制与读写分离概念及架构分析

数据库 分表、分区、分库

使用Merge存储引擎实现MySQL分表

SQL注入    防止

 MySQL 内连接、外连接、左连接、右连接、全连接

内连接

          求交集 (用 inner join )

 外连接

          求差集(用 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();

 

 ***************函数部分结束(待更新)****************

通配符

  SQL 模糊查询LIKE concat用法

  concat用来拼接查询的字符串,如下代码所示
  
SELECT * FROM deployment WHERE name LIKE concat(concat('%',#{queryMessage}),'%')

 

数据库连接池:

 

触发器:

mysql触发器基本语法实际应用,图文+代码教程详细说明

 

REPLACE(UUID(),"-","")    生成不带‘ - ’的UUID

 

posted @ 2018-06-09 17:47  阿衰问问  阅读(187)  评论(0编辑  收藏  举报