这篇有点水,是我看《sql必知必会》的笔记,凌乱的一码~,而且这本书着重介绍的是SQL语言,对于特定的DBMS不够深入,所以这周我看了同作者写的《MySQL必知必会》哈哈。在这里立个FLAG吧,三天看完,然后总结出一篇笔记,也就是周三晚上12点截止,我会发布mysql的读书笔记的,吼吼。如果我有幸让大家看到这篇文章,并且想交流一下的话,可以加我微信哦,我好闲的哈哈。wx:zz1994yr.。
我又回来了~~昨天跟朱老板聊国际内外形势,颇有点书生意气,很是酣畅。1点左右上床睡觉,跟平常比起来算是很早了,今天5点多就醒了过来,窗外雾蒙蒙的,却有一层红色纱裙环绕着天际,不多会,红彤彤的太阳就从山尖尖那里冒出头了。嗨,美景总是来的那么不经意。
跑偏了哈,今天继续Mysql的学习咯,来介绍一下基操。
[if !supportLists]一、[endif]seclect语句查询
seclect () from ();
seclect () ,() from ();
seclect distinct () from ();
[if !supportLists]二、[endif]order by语句排序
order by 字句放在最后,默认从小到大,从A到B。
order by ();
order by () , ();
order by () desc ;
[if !supportLists]三、[endif]where语句过滤
操作符
< ; >; <>; !=; !<; !>; <=; >=;between … and … ; IS NULL;
[if !supportLists]四、[endif]高级数据过滤
[if !supportLists]1. [endif]“ADN””OR”来进行多组筛选,AND优先级高,使用时尽量用小括号明确操作顺序。
[if !supportLists]2. [endif]IN 语句。 IN(— ,—);
[if !supportLists]3. [endif]NOT语句。WhereNOT ;
[if !supportLists]五、[endif]高高级数据过滤----通配符进行过滤
LIKE作为谓语出现,来进行模糊的匹配。(RegExp正则也可以来过滤,之后补)
[if !supportLists]1. [endif]%
用“%”来代替任意字符串。Where pro_name like(‘F%y%’);
PS: 区分大小写;
注意填充在字符串后面的空格(最好用函数去除);
% 无法区分NULL
[if !supportLists]2. [endif]_
用 “_” 来代替单一字符,精确。
[if !supportLists]3. [endif][]
用“[…]” 来指定一个字符集,[^…]来指定不包含的字符集
Seclect pro_name
From pro_tables
Where pro_name like ‘[JM]%’
Order by pro_name;
附注:RegExp来进行正则表达式匹配,使用方法一样。
[…] [^…] {n} {n,m} p1|p2|p3
[if !supportLists]六、[endif]计算字段
应用程序所需要的数据格式没法直接seclect数据库的列来呈现,这时就需要创建计算字段,直接在数据库中创建、转换、计算。
[if !supportLists]1. [endif]拼接字段
不同DBMS有不同的操作符。Access, sql server用“+” ,DB2,Oracle等用“|” 。
Select rtrim(vend_name) + ‘ (’ + rtrim(vend_cou) + ‘)’
As vend_title
From vendor
Order by vend_name;
附注: trim()函数去除字段的空格,rtrim() 和ltrim()
As()赋予别名
[if !supportLists]2. [endif]执行计算
Select price, quantity, price*quantity as expanded_price
From tables
Order by price;
[if !supportLists]七、[endif]数据处理函数
具体的DBMS中函数不同。在这里就不一一列举了,其实用法都很简单。
[if !supportLists]1. [endif]文本处理函数
Left() ; rtrim() ; length() ; .soundex() ;
[if !supportLists]2. [endif]日期、时间处理函数
看具体函数的参数意义。
[if !supportLists]3. [endif]数值处理函数
这类函数在不同DBMS中用法相同。
[if !supportLists]八、[endif]汇总数据
不需要实际的数据,用聚集函数获得汇总的数据,在所有的DBMS中用法一致。
[if !supportLists]1. [endif]AVG ()
[if !supportLists]2. [endif]COUNT ()
[if !supportLists]3. [endif]MAX()
[if !supportLists]4. [endif]MIN()
[if !supportLists]5. [endif]SUM()
聚集不同值时使用distinct()。
[if !supportLists]九、[endif]分组数据
将数据分为多个逻辑组,对每个分组进行聚集计算。
[if !supportLists]1. [endif]用group by创建分组
Select vend_id , count(*) asvend_item
From products
Group by vend_id;
[if !supportLists]2. [endif]用having 来过滤分组
Selectprod_id , sum(quantity) as sum_quan
Fromorderitems
whereitem_price >= 3
Group byprod_id
Havingsum(quantity) >=100
Order by prod_id;
[if !supportLists]3. [endif]Select字句的顺序
Select àfrom àwhere àgroup byàhaving àorder by
[if !supportLists]十、[endif]使用子查询
子查询就是select的嵌套
在用子查询过滤时注意表之间的联结。
(Select count(*)
From cust
Where cust_id = prod_id) as orders
[if !supportLists]十一、 [endif]联结表
几个表之间的联结。
[if !supportLists]1. [endif]用where 实现的等值联结
Where pro.prod_id = cust.cust_id
[if !supportLists]2. [endif]内联结(inner join)
Select name , id , pro
From vender inner join cust
On vender.id = cust.id
联结多个表的时候,用where…and…
[if !supportLists]十二、 [endif]创建高级联结
[if !supportLists]1. [endif]自联结
[if !supportLists]2. [endif]Outer join
[if !supportLists]十三、 [endif]组合查询
Ouiou进行组合查询,与where 用法类似。Onion all
[if !supportLists]十四、 [endif]插入数据
[if !supportLists]1. [endif]用insert into插入数据
Insert into __ ()
Value ( ) ;
insert into __ ()
select () from __;
[if !supportLists]2. [endif]Select into复制数据表
Select *
From ()
Into __
在mysql中用法不同
Create table __ as select * from __;
[if !supportLists]十五、 [endif]更新和删除数据
UPDATE DELETE
[if !supportLists]1. [endif]UPDATE __
SET __.__ =
FROM __;
[if !supportLists]2. [endif]DELETE FROM __
WHERE __ = ;
[if !supportLists]十六、 [endif]创建和操纵表
1.创建表Creat table __ (
***,
***
)
表列的名字和定义用“ , ”隔开
设置默认值,default __ 通常用于时间戳,MySQL中default current_date()
[if !supportLists]3. [endif]更新表 alter table __
[if !supportLists]4. [endif]删除表drop table __
[if !supportLists]十七、 [endif]使用视图
视图即是打包的函数,是虚拟的表
creat view __ as …
简化主程序。
[if !supportLists]十八、 [endif]使用存储过程
即创建函数,用时直接调用。
[if !supportLists]1. [endif]执行存储过程
Execute __ (…);
[if !supportLists]2. [endif]创建存储过程
各个DBMS创建不同,步骤都差不多。
[if !supportLists]十九、 [endif]管理事务处理
批量的进行SQL语言操作,保证遇到错误能够回退。
Transaction rollback commit savepoint
[if !supportLists]二十、 [endif]游标
Cursor