目录
十六、更新&删除&更新Update set,Delect from,Alter
第一章
第二章
第三章
第四章 过滤WHERE
WHERE 子句可用的操作符
null检查:is null 不是=null
AND优先级大于OR
IN 操作符指定范围
用于匹配一组值,其后也可以接一个 SELECT 子句,从而匹配子查询得到的一组值。
NOT 操作符用于否定一个条件。
六、通配符进行过滤 like:针对文本数据
% 匹配 >=0 个任意字符,类似于 *;不匹配null
_ 匹配 ==1 个任意字符,类似于 .;
[ ] 可以匹配集合内的一个字符,用脱字符 ^ 可以对其进行否定
七、计算字段
AS 来取别名
Concat() 连接两个字段 TRIM() 可以去除首尾空格
八、函数处理
文本处理
Soundex()发音相似的值
日期和时间处理
日期格式:YYYY-MM-DD
时间格式:HH:MM:SS
函 数 | 说 明 |
---|---|
AddDate() | 增加一个日期(天、周等) |
AddTime() | 增加一个时间(时、分等) |
CurDate() | 返回当前日期 |
CurTime() | 返回当前时间 |
Date() | 返回日期时间的日期部分 |
DateDiff() | 计算两个日期之差 |
Date_Add() | 高度灵活的日期运算函数 |
Date_Format() | 返回一个格式化的日期或时间串 |
Day() | 返回一个日期的天数部分 |
DayOfWeek() | 对于一个日期,返回对应的星期几 |
Hour() | 返回一个时间的小时部分 |
Minute() | 返回一个时间的分钟部分 |
Month() | 返回一个日期的月份部分 |
Now() | 返回当前日期和时间 |
Second() | 返回一个时间的秒部分 |
Time() | 返回一个日期时间的时间部分 |
Year() | 返回一个日期的年份部分 |
mysql> SELECT NOW();
-> '2017-06-28 14:01:52'
九、汇总数据COUNT(*)
count(column)统计有值的总数
DISTINCT汇总不同值:
十、分组数据Group+Having过滤
分组数据Group:Where之后 Order by之前哦
可以对每组数据使用汇总函数进行处理,例如求每组数的平均值等。
过滤分组Having:where过滤行,having过滤分组
十一、子查询(由内而外执行 搭配IN使用)
子查询中只能返回一个列。
可以将子查询的结果作为 WHRER 语句的过滤条件:
作为计算字段使用子查询,统计每个顾客的订单数
子查询只能是单列
冲突列名采用全名限定名
十二、联结表 Inner Join() 比子查询快
选择多个表
内联结 Inner join 搭配on
连接用于连接多个表,使用 JOIN 关键字,并且条件语句使用 ON。
自连接
自连接可以看成内连接的一种,只是连接的表是自身而已。
找出与 Jim 处在同一部门的所有员工姓名。
自然连接
自然连接是把同名列通过等值测试连接起来的,同名列可以有多个。
内连接和自然连接的区别:内连接提供连接的列,而自然连接自动连接所有同名列;内连接属于自然连接。
select *
from employee natural join department;
外连接
外连接保留了没有关联的那些行。分为左外连接,右外连接以及全外连接,左外连接就是保留左表的所有行。
检索所有顾客的订单信息,包括还没有订单信息的顾客。
select Customers.cust_id, Orders.order_num
from Customers left outer join Orders
on Customers.cust_id = Orders.curt_id
十四、组合查询Union
多个select,结果的组合
每个查询必须包含相同的列、表达式或者聚集函数。
默认会去除相同行,如果需要保留相同行,使用 UNION ALL 。
只能包含一个 ORDER BY 子句,并且必须位于语句的最后
十五、插入Insert into
INSERT INTO mytable(col1, col2)
VALUES(val1, val2);
插入检索出来的数据
INSERT INTO mytable1(col1, col2)
SELECT col1, col2
FROM mytable2;
复制表
十六、更新&删除&更新Update set,Delect from,Alter
添加列
ALTER TABLE mytable
ADD col CHAR(20);
删除列
ALTER TABLE mytable
DROP COLUMN col;
删除表
DROP TABLE mytable;
十八、视图View
视图是虚拟的表(查询),本身不包含数据,也就不能对其进行索引操作。对视图的操作和对普通表的操作一样。
视图具有如下好处:
- 简化复杂的 SQL 操作,比如复杂的联结;
- 只使用实际表的一部分数据;
- 通过只给用户访问视图的权限,保证数据的安全性;
- 更改数据格式和表示。
十九、存储过程Procedure
存储过程可以看成是对一系列 SQL 操作的批处理;
使用存储过程的好处
- 把实现封装在了存储过程中,不仅简单,也保证了安全性;
- 可以复用代码;
- 由于是预先编译,因此具有很高的性能。
二十、事务
不能回退 SELECT 语句,回退 SELECT 语句也没意义;也不能回退 CRETE 和 DROP 语句。
START TRANSACTION
// ...
SAVEPOINT delete1 保留点——可只回退到这里哦
// ...
ROLLBACK TO delete1
// ...
COMMIT
二十一、游标CustCursor
在存储过程中使用游标可以对一个结果集进行移动遍历。
游标主要用于交互式应用,其中用户需要对数据集中的任意行进行浏览和修改。
使用游标的四个步骤:
- 声明游标,这个过程没有实际检索出数据;
- 打开游标;
- 取出数据;
- 关闭游标;
二十二、高级特性
约束:实施引用完整性
主键
外键:此列只能接受另一个表的主键值!如级联删除
唯一约束
检查约束:符合某种条件
索引Index:加快搜索和排序速度
触发器TROGGER
触发器会在某个表执行以下语句时而自动执行:DELETE、INSERT、UPDATE