MySQL数据库学习笔记Word文档下载推荐.docx
《MySQL数据库学习笔记Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《MySQL数据库学习笔记Word文档下载推荐.docx(26页珍藏版)》请在冰点文库上搜索。
BIGINT8-9223372036854775808922337203685
4775807
2、字符串(字符)类型
3、日期和时间类型
4、Null类型不同于例如数字类型的0或字符串的
5、布尔类型TUREFALSE
标识符约定
标识符最大长度允许的字符
数据库64一个目录名中允许的任何字符,除了和.表64一个目录名中允许的任何字符,除了/和.
列64所有的字符
索引64所有的字符
加名255所有的字符
定界符反引号ANSISQL中双引号为定界符
注意:
在MYSQL中,数据库和表对应操作系统下的目录与文件,因而,操作系统的敏感性决定数据库和表命名的大小敏感,所以在LINUX下数据库与表名的大小写敏感提示:
USE,HELP是Mysql中为少数几个不需要终结符的语句之一.
用户变量表示为:
@var_name;
set@x=99;
等同于@x:
=99;
系统变量用两个@@表示,它分为2种,全局系统变量和会话系统变量.
下面详细说明各种类型
MySQL支持所有的ANSI/ISOSQL92数字类型.
1、数值型
一个整数可以在浮点语境中使用;
它被解释为等值的浮点数;
同样,一个浮点数可以被转化为整数,但损失精度,如100.1->
100,100.5->
101;
2.Mysql支持16进制数值,在数字的语境中,它们表现类似于一个整数(64位精度);
如select0xa+0;
在字符串的语境中,它们表现类似于一个二进制的字
符串,每一对16进制ASCII码被转为一个字符:
select0x787868;
=selectx'
787868:
selecthex('
xxh'
);
select0xa+5;
selecttrue,true,flase,FALSE;
其中浮点型用于域,表示方法解释一下,如:
FLOAT[(M,D)][UNSIGNED][ZEROFILL]
如果UNSIGNED被指定,负值是不允许的。
M是显示宽度,D是小数位数。
并且如果负号■”也占一个宽度。
2、字符串类型
字符串是多个字符组成的一个字符序列,由单引号,
或双引号字符包围,但在ANSI模式中运行时只能用单引号,也就是说在SQLSERVER数据库,使用应该使用单引号,保证兼容性应该使用单引号.
字符串类型有CHAR、VARCHAR、BLOB、TEXT、ENUM和SET;
ENUM是一个字符串对象,其值通常选自一个允许值列表中,该列表在表创建时的列规格说明中被明确地列举。
每个枚举值均有一个索引值:
在列说明中列表值所允许的成员值被从1开始编
号。
空字符串错误值的索引值为0。
这就意味着,你可
以使用下面所示的SELECT语句找出被赋于无效ENUM值的记录行。
mysql>
SELECT*FROMtbl_nameWHEREenum_col=0;
NULL值的索引值为NULL。
总结:
ENUM用于互相排斥的值,而SET列可以从一个值的列表中选择多个值。
常用技巧:
1.在命令提示符下:
mysql-h-urootdb_name<
x.sql
在串的环境中,可用十六进制常数来指定串值。
其
语法与前面描述的数值值相同,但是每对十六进制的数字都被看作ASCII代码并转换为字符,其结果用于串。
例如,0x616263作为串时为“abc。
”
在一个字符串中,如果某个序列具有特殊的含义,每个序列以反斜线符号(”开头,称为转义字符”
MySQL识别下列转义字符:
\0一个ASCII0(NUL)字符”
\'
一个ASCII39单引号(“’字符”
\"
一个ASCII34双引号(“"
字符”
\b一个ASCII8退格符”
\n一个ASCII10换行符”
\r一个ASCII13回车符”
\t一个ASCII9制表符(TAB)。
\zASCII(26)(Control-Z)。
这个字符可以处理在
Windows系统中ASCII(26)代表一个文件的结束的问题。
(当使用mysqldatabase<
filename时ASCII(26)可能会引起问题产生。
)
\\一个ASCII92反斜线(“”)字符。
\%一个ASCII37“%”字符。
它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符。
查看章节6.3.2.1字符串比较函数。
\_一个ASCII95“_字”符。
它用于在正文中搜索“_”的文字实例,否则这里“_将”解释为一个通配符。
查看章节6.3.2.1字符串比较函数.
3、日期和时间类型
4、Null类型
Null是ANSI中值的空。
查找NUll类型用ISNull和IS
NotNull测试;
并且不能对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中,所有的逻辑运算符返回的值均为
1(true),0(false)和null实现.
select!
1等同于selectnot1;
C.流程控制函数
ifnull(expr1,value)当exprl的值是null时,返回value,不是null时,返回expr1
casevaluewhen[compare-value]thenresult[..]
set@a=2;
selectcase@a
when1then'
one'
when2then'
two'
else'
more'
end;
if(expr1,expre2,expr3)
如果exprl为真,(expr1<
0以及expr1<
null),那么if()返回expr2,否则返回expr3
nullif(expr1,expr2)如果expr1=expr2为真,返回null,否则返回expr1;
selectnullif(1,1);
->
null
selectnullif(1,2)
1
D.mysql字符串函数
返回字符串str最左边的那个字符的ASCII码值.
selectascii('
2'
50
返回N的字符串表示的2进制值形式.
selectbin(12);
'
1100'
返回N的字符串表示的八进制值形式
selectoct(12);
14
如果x是一个数字,返回n的字符串表示的16进制值形如果x是一个字符串,x中的每个字符均被转换为2位
16进制数字,并以16进制的字符串形式返回.这是0xff形式的字符串反转操作.
selecthex(255);
ff
selecthex('
abc'
//selectascii('
a'
->
97
selecthex(97);
61
616263
0x616263;
abc
char()以整数类型解释参数,返回这个整数所代表的
Ascii码值给出的字符组成的字符串,null值将被忽略mysql>
selectchar(120,120,104);
xxh
concat(str1,str2,...)
将参数连接成字符串返回,如果有任何一个参数为null,
返回值也为null.
Iocate(子串substr,母串str)返回子串substr在字符吕中第一次出现的位置.如果子串substr在str中不存在,返回值为0:
Itrim(str)
返回移除了领头的空格字符后的str;
第08章MySQL数据操纵语言DML
select语法
seIect列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][NOTNULL
PRIMARYKEY],
column2DATATYPE[NOTNULL],
...)
NotNull--不允许资料有空的PRIMARYKEY--是本表的主键。
可以通过一个表的内容来拷贝一个表,如
CREATE[TEMPORARY]TABLEnew_tbl_name
SELECT*FROMold_tbl_name;
SELECT*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,lnnoDB……等等]
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_nameDROPINDEX
index_name;
ALTERTABLEtbl_nameDROPPrimaryKey;
5、显示表格中列的信息
语法:
{DESCRIBE|DESC}tbl_name[col_name|wild]DESCRIBEtbl_name;
DESCRIBE是SHOWCOLUMNSFROM的缩写。
用于显示表格中列的信息。
DESCRIBEtbl_name;
等于SHOWCOLUMNS
FROMtbl_name;
也可以简写为:
desctal_name;
describevt.描写,记述,形容,形容
三、记录的操作
记录的添加
记录的更改
记录的删除
首先来大概了解一下INSERT的语法,有以下几种方式:
INSERT[INTO]tbl_name
[(col_name,...)]VALUES((expression|
DEFAULT),...),(...),...
[ONDUPLICATEKEYUPDATE
col_name=expression,...]
或者INSERT[INTO]tbl_name
[(col_name,...)]SELECT...
或者INSERT[INTO]tbl_nameSETcol_name=(expression|DEFAULT),...
col_name=expression,...]说明:
我们只关心记录添加的方式啦。
注意啦,现在我们开始啦。
1、记录的添加最简单的一种:
直接添加一行记录就是:
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)
1.计算出总和,所选的栏位必须是可数的数字形态。
2.除此以外还有AVG()是计算平均、MAX()、MIN()计算最大最小值的整合性查询。
SELECTcolumn1,AVG(column2)
GROUPBYcolumn1
HAVINGAVG(column2)>
xxx
1.GROUPBY:
以column1为一组计算column2的平均值必须和AVG、SUM等整合性查询的关键字一起使用。
2.HAVING:
必须和GROUPBY一起使用作为整合性的限制。
复合性的查询
FROMtable_name1
WHEREEXISTS(
FROMtable_name2
WHEREconditions)
1.WHERE的conditions可以是另外一个的query。
2.EXISTS在此是指存在与否。
WHEREcolumn1IN(
SELECTcolumn1
1.IN後面接的是一个集合,表示column1存在集合里面。
2.SELECT出来的资料形态必须符合column1。
其他查询
WHEREcolumn