MySQL必知必会笔记Word文档下载推荐.docx
《MySQL必知必会笔记Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《MySQL必知必会笔记Word文档下载推荐.docx(53页珍藏版)》请在冰豆网上搜索。
Sql是结构化查询语言的缩写。
Sql是一种专门用类与数据库通信的语言。
第二章
MySQL简介
什么是Mysql
Mysql是一种DBMS,即它是一种数据库软件。
Mysql版本主要更改
4-——InnoDB引擎,增加了事务处理、并、改进全文搜索等支持
4.1——对函数库、子查询、集成帮助等的重要增加、
5——存储过程、触发器、游标、试图等。
第三章使用mysql
连接
主机名端口一个合法用户用户口令
Mysql-uroot-p-hmyserver-P9999
选择数据库
可使用USE关键字,mysql语言组成部分的一个关键字,绝不要使用关键字命名一个表或列
USEdataname;
显示数据库列表
SHOW
DATABASES;
一个数据库内的表的列表(USE进入数据库的情况下)
SHOWTABLES;
SHOW也可以用来显示表列
SHOWCOLUMNSFROMcolumn;
DESCRIBE是SHOWCOLUMNS的一种快捷方式;
DESCRIBEcust;
其他的SHOW语句
SHOWSTATUS显示广泛的服务器状态信息
SHOWCREATEDATABASE显示创建特定数据库的MYSQL语句
SHOWCREATETABLE显示创建特定表的MYSQL语句
SHOWGRANTS显示授权用户的安全权限
SHOWERRORS显示服务器的错误信息
SHOWWARNINGS显示服务器的警告信息
MySQL必知必会笔记
(二)SELECT语句
检索
排序
过滤
通配符搜索
正则表达式搜索
第四章检索数据
检索单列
SELECTcolumnOneFROMtable;
检索多列
SELECTcolumnOne,columnTwo,columnThireFORMtable;
检索所有列
SELECT*FROMproducts;
//一般,除非你确实需要表中的每个列,否则最好不要用*通配符
检索不同的行
检索出来的数据不重复DISTINCT关键字,顾名思义返回不同的值
SELECTDISTINCTcolumnOneFROMtable;
//检索出来的columnOne没有重复值
DISTINCT关键字应用于所有列而不仅是前置它的列
SELECTDISTINCTvend_id,prod_price......要求vend_id,prod_price这两列都不出现重复的值
限制结果条数
sql语句后面加入下面sql语句
LIMIT5显示结果的前5条
LIMIT3,4
从行3开始的后4行
LIMIT4OFFSET3从行3开始的后4行
第五章排序检索数据
子句Sql语句是由子句构成,有些子句是必须的,有些事可选的。
一个子句通常是由一个关键字和所提供的数据组成。
按单列排序
SELECTcolumnOneFROMtableORDERBYcolumnOne;
SELECTcolumnOneFROMtableORDERBYcolumnTwo;
//用非检索列也是可以的,如根据columnTwo
按多列排序
SELECTcolumnOne,columnTwo,columnThireFROMproductsORDERBYprod_price,prod_name;
排序是先根据前面的columnOne排序,如果一样再根据后面的columnTwo排序
指定排序方向
ASC升序默认DESC降序关键字仅作用到直接位于前面的列名
SELECTcolumnOne,columnTwo,columnThireFROMtableORDERBYcolumnOneASC,columnTwo
DESC;
//先按columnOne正排序再按columnTwo倒序排序
第六章过滤数据
使用WHERE语句
SELECTcolumnOne,columnTwoFROMtableWHEREcolumnOne=3;
WHERE子句操作符
操作符说明
=等于
<
>
不等于(数字比较)
!
=不等于(数字和字符串比较)
小于
>
大于
=小于等于
=大于等于
BETWEEN在指定的两个指之间必须指定2个值。
这两个值必须使用AND连接
SELECTcolumnOne,columnTwo,FROMtableWHEREcolumnOneBETWEEN3AND8;
//检索columnOne值为3到8之间的行
空值检查
SELECT语句中有一个子句检查具有NULL值的列,ISNULL子句。
SELECTcolumnOneFROMtableWHEREcolumnOneISNULL;
//检索columnOne值为NULL的行
注意:
在数据库中NULL是不能被匹配和不匹配的语句找出来,所以一定要注意表中是否存在NULL值。
第七章数据过滤
组合WHERE子句
组合方式
AND组合和OR组合
必须满足所有条件
SELECTcolumnOne,columnTwo,columnThireFROMtableWHEREcolumnOne=2009ANDcolumnTwo<
=10;
//检索columnOne=2009且columnTwo<
=10的行
满足任意一个条件
SELECTcolumnOne,columnTwo,columnThireFROMtableWHEREcolumnOne=2009ORcolumnTwo<
//检索columnOne=2009或columnTwo<
计算次序
先计算AND再计算OR,不要过分依赖默认计算次序,可以使用括号改变计算次序,它能消除歧义。
IN操作符
IN操作符用来指定范围,范围中的每个条件进行匹配。
IN取合法值的逗号分隔的清单。
SELECTcolumnOne,columnTwoFROMtableWHEREcolumnOneIN(1002,1005,1006)ORDERBYcolumnTwo;
//检索columnOne为1002或1005或1006的行并且按columnTwo分组
IN操作符完成与OR相同的功能,优点如下:
1使用长的合法选项清单时,IN操作符的预防更清楚且直观
2使用IN时,计算的次序更容易管理(以为使用的操作符更少)
3IN操作符一般比OR操作符执行更快
4IN操作符最大的优点可以包含其他SELECT语句,使得能够更动态的创建WHERE子句。
NOT操作符
WHERE子句中的NOT操作符有且只有一个功能,那就是否定它之后所跟的任何条件
SELECTcolumnOne,columnTwoFROMtableWHEREcolumnOneNOTIN(1002,1005,1006)ORDERBYcolumnTwo;
//检索columnOne不为1002或1005或1006的行并且按columnTwo分组
MySQL支持使用NOT对IN、BETWEEN和EXISTS子句取反。
第八章用通配符进行过滤
LINK操作符
通配符:
用来匹配值的一部分的特殊字符。
搜索模式:
又字面值、通配符或两者组成构成的搜索条件
%任何字符出现任何位置区分大小写
//检索以jet开头的词或句子
SELECTcolumnOne,columnTwoFROMtableWHEREcolumnOneLINK'
jet%'
;
//检索以jet结尾的词或句子
%jet'
//检索以jet包含的词或句子
%jet%'
//检索以e开头,以u结尾的词或句子
//检索'
e%u'
%还可以匹配0字符,注意尾空格会影响搜索模式的结果。
_匹配单个字符
_abc'
//匹配aabceabceabc等前面一个字母的词
让like区分大小写的方法
在WHERE和列名之间加BINARY关键字,或者再建立表时就指定区分大小写namevarhar(50)binary
使用通配符是有代价的,提供以下的技巧:
不要过度的使用通配符
除非是必要的,否则通配符不要用在搜索模式的开始处
仔细注意通配符的位置。
不要放错位置
第九章用正则表达式进行搜索
仅支持正则表达式的一小部分
基本字符匹配
检索列prod_name包含1000的所有行
SELECTcolumnOneFROMtableWHEREcolumnOneREGEXP'
1000'
ORDERBYcolumnOne
.匹配任意一个字符100020003000a000
.000'
正则匹配不区分大小写,如想区分匹配可在REGEXP后面加上BINARY关键字
进行OR匹配
为搜索两个或n个字符串之一
1000|2000|3000'
;
匹配单个字符
[123]Ton'
//匹配1Ton或2Ton或3Ton
当有非匹配的内容时使用[],它是|的另一种形式,如1|2|3Ton这时匹配的只有3带有Ton
如果想要得到非匹配的内容可以使用[^123]的形式
匹配范围[0-9][a-z][A-Z]
[1-5]Ton'
匹配特殊字符
想要匹配.[]|这些字符串怎么办呢,可以在这些字符前加\\进行转义,第一个\mysql自己解释,第二个给正则解释的
元字符说明
\\\\
\\f换页
\\n换行
\\r回车
\\t制表
\\v纵向制表
匹配字符串类
自己经常使用的数字、所有字母或所有数字字母字符等的匹配。
为了方便工作,可以使用预定义的字符集,称为字符集:
类说明
[:
alnum:
]任意字母和数字,同[0-9a-zA-Z]
alpha:
]任意字符,同[a-zA-Z]
blank:
]空格和制表,同\\t
cntrl:
]ASCII控制字符,ASCII0到31和127
digit:
]任意数字同[0-9]
graph:
]与[:
print:
]相同,但不包括空格
lower:
]任意小写字母,同[:
a-z:
]
]任意可打印字符
punct:
]既不在[:
]有不在[:
]的字符
space:
]包括空格在内的任意空白字符,同[\\f\\n\\r\\t\\v]
upper:
]任意大写字母[A-Z]
xdigit:
]任意十六进制数字,同[a-fA-F0-9]
匹配多个实例
以前的匹配都是单次匹配。
如果存在一个匹配,改行就检索出来,如果不存在,检索不出任何行。
但有时需要对匹配的数目进行更强的控制。
重复元字符
元字符说明
*0个或多个匹配
+1个或多个匹配
?
0个或1个匹配
{n}指定数目匹配
{n,}不少于n个匹配
{n,m}匹配数目的范围m不超过255
列:
SELECTcolumnOneFROMtableWHEREcolumnOneREGEXP'
\\([0-9]sticks?
)\\'
Sticks?
匹配的是stick或sticks(?
号决定前面的s出现一次或0次)
[[:
]]'
ORDERBYcolumnOne;
[:
]匹配任意的数字,{4}要求前面匹配的数字出现4次
定位符
前面的所有例子都是匹配一个串中的任意位置的文本。
为了匹配特定位置的文本
元字符说明
^文本的开始
$文本的结束
[[:
<
:
]]词的开始
]]词的结束
例如:
你要找一个数(包括以小数点开始的数)开始的所有产品,怎么办,前面都是在行内任意位置匹配。
所以不行
^[0-9\\.]'
简单的正则测试,可以不在数据库操作的情况下练习
SELECT'
hello'
REGEXP'
[0-9]'
MySQL必知必会笔记(三)SELECT语句
计算字段
数据处理函数
汇总函数
分组数据
子查询
第十章创建计算字段
计算字段
存储在表中的数据一般不是应用程序所需要的格式。
我们需要直接从数据库中检索出转换、计算或格式化的数据。
而不只是检索出数据,然后再到应用程序或报告程序中区格式化。
这就发挥了计算字段的作用了。
与前面的字段不同,计算字段并不实际存在于数据库中。
计算字段是运行时在SELECT语句中创建的。
需要注意的是,只有SELECT语句知道那些列是实际列,哪些列不是,客户机的角度来看,计算字段和其他字段是一样的。
拼接字段
拼接:
将值联结到一起构成单个值。
生成供应商columnOne(columnTwo)的格式
SELECTConcat(columnOne,'
('
columnTwo,'
)'
)FROMtableORDERBYcolumnOne;
使用别名
别名使用AS关键字赋予
执行算术运算
另一常见的用途就是对检索出来的数据进行算术运算。
检索出column_id为2005的columnOne乘以columnTwo的值
SELECTcolumn_id,columnOne,columnTwo,columnOne*columnTwoAScolumn_priceFROMtableWHEREcolumn_id=2005
操作符+-*/
SELECT3*2;
将返回6
SELECTNow();
返回当前的日期和时间
第十一章使用数据处理函数
SQL实现了一下类型的函数
1用于处理文本串,如删除、填充、装换大小写
2用于数据上进行的算术操作,如返回绝对值,进行代数运算
3用于处理日期和时间值并从这些值中提取特定的成分,如返回两个日期差,检查日期有效性
4返回DBMS正使用的特殊信息,如用户登录信息,检查版本细节信息
文本处理函数
Upper()将文本转换为大写
SELECTvend_name,Upper(vend_name)ASvend_name_upcaseFROMvendorsORDERBYvend_name;
常用的文本处理函数
Left()返回串左边的字符
Length()返回串的长度
Locate()找出串的一个子串
Lower()将串转换为小写
Right()返回右边的字符
Soundex()返回串的SOUNDEX值
SubString()返回串的字符
Upper()将串转换ewing大写
Soundex()是一个将任何文字串转换为描述语音表示的字母数字模式的算法。
他考虑了类似发信字符和音节,使得能对串进行发音的比较而不是字母比较,如:
Y.lee搜索可以匹配Y.lie
SELECTcust_name,cust_contactFROMcustomersWHERESoundex(cust_contact)=Soundex('
YLie'
)
删除多余空格的函数
RTrim()LTrim()Trim()依次是删除右边左边两边的空格
SELECTConcat(RTrim(vend_name),'
('
RTrim(vend_country),'
)FROMvendorsORDERBYvend_name;
日期和时间处理函数
日期和时间常用相应的数据类型和特色的格式存储,以便能快速和有效的排序或过滤,并节省物理存储空间。
AddDate()增加一个日期天、周等
AddTime()增加一个时间时、分等
CurDate()返回当前日期
CurTime()返回当前时间
Date()返回日期时间的日期部分
DateDiff()计算两个日期之差
Date_Add()高度灵活的日期或时间串
Date_Format()返回一个格式的日期或时间串
Day()返回一个日期的天数部分
DayOfWeek()对于一个日期,返回对于星期几
Hour()返回一个时间的小时部分
Minute()返回一个时间的分钟部分
Moth()返回一个日期的月份部分
Now()返回当前的日期和时间
Second()返回一个时间的秒部分
Time()返回一个日期时间的时间部分
Year()返回一个日期的年份部分
My