SQL必知必会 核心笔记整理

目录

第一章

第二章

第三章

第四章 过滤WHERE

六、通配符进行过滤 like:针对文本数据

七、计算字段

八、函数处理

文本处理

日期和时间处理

九、汇总数据COUNT(*)

十、分组数据Group+Having过滤

十一、子查询(由内而外执行 搭配IN使用)

十二、联结表 Inner Join() 比子查询快

自连接

自然连接

外连接

十四、组合查询Union

十五、插入Insert into

十六、更新&删除&更新Update set,Delect from,Alter

十八、视图View

十九、存储过程Procedure

二十、事务

二十一、游标CustCursor

二十二、高级特性


第一章

第二章

第三章

第四章 过滤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

视图是虚拟的表(查询),本身不包含数据,也就不能对其进行索引操作。对视图的操作和对普通表的操作一样。

视图具有如下好处:

  1. 简化复杂的 SQL 操作,比如复杂的联结;
  2. 只使用实际表的一部分数据;
  3. 通过只给用户访问视图的权限,保证数据的安全性;
  4. 更改数据格式和表示。

十九、存储过程Procedure

存储过程可以看成是对一系列 SQL 操作的批处理;

使用存储过程的好处

  1. 把实现封装在了存储过程中,不仅简单,也保证了安全性;
  2. 可以复用代码;
  3. 由于是预先编译,因此具有很高的性能。

二十、事务

不能回退 SELECT 语句,回退 SELECT 语句也没意义;也不能回退 CRETE 和 DROP 语句。

START TRANSACTION
// ...
SAVEPOINT delete1 保留点——可只回退到这里哦
// ...
ROLLBACK TO delete1
// ...
COMMIT

二十一、游标CustCursor

在存储过程中使用游标可以对一个结果集进行移动遍历。

游标主要用于交互式应用,其中用户需要对数据集中的任意行进行浏览和修改。

使用游标的四个步骤:

  1. 声明游标,这个过程没有实际检索出数据;
  2. 打开游标;
  3. 取出数据;
  4. 关闭游标;

二十二、高级特性

约束:实施引用完整性

主键

外键:此列只能接受另一个表的主键值!如级联删除

唯一约束

检查约束:符合某种条件

 

索引Index:加快搜索和排序速度

触发器TROGGER

触发器会在某个表执行以下语句时而自动执行:DELETE、INSERT、UPDATE

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值