)
\\一个ASCII92反斜线(“\”)字符。
\%一个ASCII37“%”字符。
它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符。
查看章节6.3.2.1字符串比较函数。
\_一个ASCII95“_”字符。
它用于在正文中搜索“_”的文字实例,否则这里“_”将解释为一个通配符。
查看章节6.3.2.1字符串比较函数.
3、日期和时间类型
4、Null类型
Null是ANSI中值的空。
查找NUll类型用ISNull和ISNotNull测试;并且不能对NULL类型进行算术运算。
其结果为NULL。
5.mysql的注释
为两种:
/**/和#(单行注释,类似UNIX的脚本注释;)
第07章MySQL函数
mysql运算符
A.比较运算符=,!
=(<>),>,>=,<,<=
Null安全等于比较<=>
isnull,isnotnullisnull(express)
如果expr大于或等于min,并且expr小于或等于max,between返回1,否则返回0.它等价于表达式
(min<=exprandexpr<=max)
exprin(v1,v2,....);如果expr是in列表中的一值,它将返回1,否则返回0.
B.逻辑运算符
在mysql中,所有的逻辑运算符返回的值均为true,false,或null(未知),在mysql中,它们由1(true),0(false)和null实现.
select!
1等同于selectnot1;
C.流程控制函数
ifnull(expr1,value)当expr1的值是null时,返回value,不是null时,返回expr1
casevaluewhen[compare-value]thenresult[..]
set@a=2;
selectcase@a
when1then'one'
when2then'two'
else'more'end;
if(expr1,expre2,expr3)
如果expr1为真,(expr1<>0以及expr1<>null),那么if()返回expr2,否则返回expr3
nullif(expr1,expr2)如果expr1=expr2为真,返回null,否则返回expr1;
mysql>selectnullif(1,1);
->null
mysql>selectnullif(1,2)
->1
D.mysql字符串函数
返回字符串str最左边的那个字符的ASCII码值.
mysql>selectascii('2');
->50
返回N的字符串表示的2进制值形式.
mysql>selectbin(12);
->'1100'
返回N的字符串表示的八进制值形式
mysql>selectoct(12);
->14
如果x是一个数字,返回n的字符串表示的16进制值形式,这里n是一个长长的(bigint)数字.
如果x是一个字符串,x中的每个字符均被转换为2位16进制数字,并以16进制的字符串形式返回.
这是0xff形式的字符串反转操作.
mysql>selecthex(255);
->ff
mysql>selecthex('abc');//selectascii('a');->97selecthex(97);->61
->616263
mysql>0x616263;
->abc
char()以整数类型解释参数,返回这个整数所代表的Ascii码值给出的字符组成的字符串,null值将被忽略
mysql>selectchar(120,120,104);
->xxh
concat(str1,str2,...)
将参数连接成字符串返回,如果有任何一个参数为null,返回值也为null.
locate(子串substr,母串str)返回子串substr在字符吕中第一次出现的位置.如果子串substr在str中不存在,返回值为0:
ltrim(str)
返回移除了领头的空格字符后的str;
第08章MySQL数据操纵语言DML
·select语法
·
select列1,列2,列3,,,,,
from表1,表2,表3
[where条件]
[groupby...]
[having....]
[]
第二节 域/列类型属性
域/列的类型属性,有以下特性:
■其中可以存放什么类型的值。
■值要占据多少空间,以及该值是否是定长的(所有值占相同数量的空间)或(所占空间量依赖于所存储的值)。
■该类型的值怎样比较和存储。
■此类型是否允许NULL值。
■此类型是否可以索引。
·数字
·日期和时间
·字符串(字符)
列类型的属性
有以下四种:
·Default
·NotNull 或Null
·PrimaryKey即主键
·Auto_increment(只有1个只能被索引)
一、数据库的操作
|操作系统下的操作
mysql-h-u-p
mysql-hlocalhost-uroot
·创建数据库
·删除数据库
·显示数据库
·使用数据库
·数据库其他相关操作
1、创建数据库
CREATEDATABASEdb_Name;
说明:
2、删除数据库
DROPDATABASEdb_Name;
说明:
可以简写为:
dropdb_name;
3、显示数据库
SHOWdatabases;
说明:
显示当前有哪些数据库。
4、使用数据库
USEdatabase;
说明:
5、显示数据库中有哪些表
首先USEdatabase;
然后SHOWtables;
参见:
show的用法
二、表格、索引的操作
·创建表格
·更改表格
·建立索引
·删除表格、索引
·表格其他相关操作
以下操作都是以表格table_name或索引为操作单位。
DESCRIBE或DESC命令除外。
文件 用途
tbl_name.frm 表定义(form)文件
tbl_name.MYD 数据文件
tbl_name.MYI 索引文件
1、创建表格:
CREATETABLEtable_name
(
column1DATATYPE[NOTNULL][NOTNULLPRIMARYKEY],
column2DATATYPE[NOTNULL],
...)
说明:
DATATYPE--是资料的格式,也就是字段的数据类型
NotNull--不允许资料有空的
PRIMARYKEY--是本表的主键。
可以通过一个表的内容来拷贝一个表,如
CREATE [TEMPORARY]TABLE new_tbl_nameSELECT*FROMold_tbl_name;
CREATE [TEMPORARY]TABLE new_tbl_nameSELECT*FROMold_tbl_namewhere1=0; (只是拷贝空表)
2、更改表格
ALTERTABLEtbl_nameADDCOLUMNcol_nameDATATYPE
说明:
增加一个栏位即(字段)(没有删除某个栏位的语法)。
ALTERTABLEtbl_nameRENAMEASnew_name;
说明:
对表重命名。
ALTERTABLEtable_namedropcolumn_name
说明:
删除指定的列名。
ALTERTABLEtbl_nameCHANGEold_column_namenew_column_nameDATATYPE
说明:
更改列名及列属性。
例:
ALTERTABLEtbl_nameCHANGEold_column_namenew_column_nameint
(2)notnullprimarykey;
ALTERTABLEtable_nameADDPRIMARYKEY(column_name)
说明:
更改表得的定义把某个栏位设为主键。
ALTERTABLEtable_nameDROPPRIMARYKEY(column_name)
说明:
把主键的定义删除。
ALTERTABLEmy_tblTYPE=ISAM或[MYISAM,HELP,InnoDB……等等]
说明:
更改表的类型
3、建立索引
CREATEINDEXindex_nameONtable_name(column_name);
CREATEUNIQUEindex_nameONtable_name(column_name);
ALTERTABLEtbl_nameADDINDEXindex_name(column_list);
ALTERTABLEtbl_nameADDUNIQUEindex_name(column_list);
ALTERTABLEtbl_nameADDPRIMARYKEY(column_list);
说明:
对某个表格的栏位建立索引以增加查询时的速度。
4、删除表格、索引
DROPtbl_name1,tbl_name2,tbl_name3....;
DROPINDEXindex_nameONtbl_name;
ALTERTABLEtbl_name DROPINDEXindex_name;
ALTERTABLEtbl_name DROPPrimaryKey;
5、显示表格中列的信息
语法:
{DESCRIBE|DESC}tbl_name[col_name|wild]
DESCRIBEtbl_name;
说明:
DESCRIBE是SHOWCOLUMNSFROM的缩写。
用于显示表格中列的信息。
DESCRIBEtbl_name;等于SHOWCOLUMNSFROMtbl_name;
也可以简写为:
desctal_name;
describevt.描写,记述,形容,形容
三、记录的操作
·记录的添加
·记录的更改
·记录的删除
·
·
首先来大概了解一下INSERT的语法,有以下几种方式:
INSERT [INTO]tbl_name[(col_name,...)] VALUES((expression|DEFAULT),...),(...),...
[ONDUPLICATEKEYUPDATEcol_name=expression,...]
或者 INSERT[INTO]tbl_name[(col_name,...)] SELECT...
或者 INSERT[INTO]tbl_name SETcol_name=(expression|DEFAULT),...
[ONDUPLICATEKEYUPDATEcol_name=expression,...]
说明:
我们只关心记录添加的方式啦。
注意啦,现在我们开始啦。
1、记录的添加
最简单的一种:
直接添加一行记录就是:
INSERT [INTO]tbl_name[(col_name,...)] VALUES((expression|DEFAULT),...),(...),...);
例:
INSERTINTOtbl_name(col1,col2)VALUES(15,col1*2);inserttbl_name(col1,col2)values('007','xxh5fd')
第二种:
2、记录的更改
还是先来看一看UPDATE的语法
UPDATEtbl_name[,tbl_name...] SETcol_name1=expr1[,col_name2=expr2...]
[WHEREwhere_definition]
说明:
UPDATE以新的值更新现存表中行的列。
SET子句指出要修改哪个列和他们应该给定的值。
WHERE子句如果被给出,指定哪个记录行应该被更新。
否则,所有的记录行被更新。
如果ORDERBY子句被指定,记录行将被以指定的次序更新。
例子:
UPDATEybcsetid=8whereid=0;
3.记录的删除
简单的语法:
DELETEFROMtable_nameWHEREconditions
说明:
删除符合条件的资料。
数据语法:
SHOW语句可用来获取数据库和表的几个方面的信息,它有如下用法:
SHOWDATABASES列出服务器上的数据库
SHOWTABLES列出当前数据库中的表
SHOWTABLESFROMdb_name列出指定数据库中的表
SHOW[FULL]COLUMNSFROMtbl_name显示指定表中列的信息,等同于desctbl_name;
SHOWINDEXFROMtbl_name显示指定表中索引的信息
SHOWTABLESTATUS显示缺省数据库中表的说明信息
SHOWTABLESTATUSFROMdb_name显示指定数据库中表的说明信息
DESCRIBEtbl_name和EXPLAINtbl_name语句与SHOWCOLUMNSFROMtbl_name功能相同。
SELECT的使用及语法详解
作用说明:
SELECT用于检索从一个或多个表中选取出的行。
select_expression表示你希望检索的列。
SELECT也可以被用于检索没有引用任何表的计算列。
要讲的内容是:
·第一个查询
·选择特定的列,对列进行排序
·查找不重复的数据
·创建虚拟列,及列的别名的使用
·按条件检索
·
·
好,现在开始我们的第一个查询啦!
SELECT*Fromtbl_name;
组合查询
组合查询是指所查询得资料来源并不只有单一的表格,而是联合一个以上的
表格才能够得到结果的。
SELECT*
FROMtable1,table2
WHEREtable1.colum1=table2.column1
说明:
1.查询两个表格中其中column1值相同的资料。
2.当然两个表格相互比较的栏位,其资料形态必须相同。
3.一个复杂的查询其动用到的表格可能会很多个。
整合性的查询:
SELECTCOUNT(*)
FROMtable_name
WHEREcolumn_name=xxx
说明:
查询符合条件的资料共有几笔。
SELECTSUM(column1)
FROMtable_name
说明:
1.计算出总和,所选的栏位必须是可数的数字形态。
2.除此以外还有AVG()是计算平均、MAX()、MIN()计算最大最小值的整合性查询。
SELECTcolumn1,AVG(column2)
FROMtable_name
GROUPBYcolumn1
HAVINGAVG(column2)>xxx
说明:
1.GROUPBY:
以column1为一组计算column2的平均值必须和AVG、SUM等整合性查询的关键字
一起使用。
2.HAVING:
必须和GROUPBY一起使用作为整合性的限制。
复合性的查询
SELECT*
FROMtable_name1
WHEREEXISTS(
SELECT*
FROMtable_name2
WHEREconditions)
说明:
1.WHERE