MySQL数据库学习笔记word资料13页.docx
《MySQL数据库学习笔记word资料13页.docx》由会员分享,可在线阅读,更多相关《MySQL数据库学习笔记word资料13页.docx(22页珍藏版)》请在冰点文库上搜索。
MySQL数据库学习笔记word资料13页
MySQL数据库学习笔记
关系数据库的查询语言SQL(StructuredQueryLanguage),是一种非常口语化、既易学又易懂的语法。
此一语言几乎是每个资料库系统都必须提供的,用以表示关连式的操作,包含了资料的定义(DDL)以及资料的处理(DML)。
SQL原来拼成SEQUEL,这语言的原型以“系统R“的名字在IBM圣荷西实验室完成,经过IBM内部及其他的许多使用性及效率测试,其结果相当令人满意,并决定在系统R的技术基础发展出来IBM的产品。
而且美国国家标准学会(ANSI)及国际标准化组织(ISO)在1987遵循一个几乎是以IBMSQL为基础的标准关连式资料语言定义。
要练说,得练看。
看与说是统一的,看不准就难以说得好。
练看,就是训练幼儿的观察能力,扩大幼儿的认知范围,让幼儿在观察事物、观察生活、观察自然的活动中,积累词汇、理解词义、发展语言。
在运用观察法组织活动时,我着眼观察于观察对象的选择,着力于观察过程的指导,着重于幼儿观察能力和语言表达能力的提高。
第一章、了解概念,并理解它
一、资料定义DDL(DataDefinitionLanguage)
资料定语言是指对资料的格式和形态下定义的语言,他是每个资料库要建立时候时首先要面对的,举凡资料分哪些表格关系、表格内的有什麽栏位主键、表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的。
数据库
课本、报刊杂志中的成语、名言警句等俯首皆是,但学生写作文运用到文章中的甚少,即使运用也很难做到恰如其分。
为什么?
还是没有彻底“记死”的缘故。
要解决这个问题,方法很简单,每天花3-5分钟左右的时间记一条成语、一则名言警句即可。
可以写在后黑板的“积累专栏”上每日一换,可以在每天课前的3分钟让学生轮流讲解,也可让学生个人搜集,每天往笔记本上抄写,教师定期检查等等。
这样,一年就可记300多条成语、300多则名言警句,日积月累,终究会成为一笔不小的财富。
这些成语典故“贮藏”在学生脑中,自然会出口成章,写作时便会随心所欲地“提取”出来,使文章增色添辉。
第二章 MySQL数据库数据类型
“教书先生”恐怕是市井百姓最为熟悉的一种称呼,从最初的门馆、私塾到晚清的学堂,“教书先生”那一行当怎么说也算是让国人景仰甚或敬畏的一种社会职业。
只是更早的“先生”概念并非源于教书,最初出现的“先生”一词也并非有传授知识那般的含义。
《孟子》中的“先生何为出此言也?
”;《论语》中的“有酒食,先生馔”;《国策》中的“先生坐,何至于此?
”等等,均指“先生”为父兄或有学问、有德行的长辈。
其实《国策》中本身就有“先生长者,有德之称”的说法。
可见“先生”之原意非真正的“教师”之意,倒是与当今“先生”的称呼更接近。
看来,“先生”之本源含义在于礼貌和尊称,并非具学问者的专称。
称“老师”为“先生”的记载,首见于《礼记?
曲礼》,有“从于先生,不越礼而与人言”,其中之“先生”意为“年长、资深之传授知识者”,与教师、老师之意基本一致。
第一节、数据类型
MySQL数据库目前支持以下几种
下列代码字母用于描述中:
M 指出最大的显示尺寸。
最大的显示尺寸长度为255。
D 适用于浮点类型。
指出跟随在十进制小数点后的数字数量。
最大可能值为30,但不应大于M-2。
方括号("["and"]")指定可选的类型修饰部份。
1、数值型(包括整数与浮点数,浮点型支持科学表示法)
浮点类型:
numeric[nju:
merik]decimal(5,2),数字位:
5,小数位:
2
numeric等价于decimal并且是作为字符串存储的.而不是作为二进制浮点数.
说明:
salaryDECIMAL(3,2)
在这个例子中,3(精度(precision))代表重要的十进制数字的数目,2(数据范围(scale))代表在小数点后的数字位数。
在这种情况下,因此,salary列可以存储的值范围是从-99.99到99.99。
(实际上MySQL在这个列中可以存储的数值可以一直到999.99,因为它没有存储正数的符号)。
整型:
integer
类型 占用字节 从 到
TINYINT 1 -128 127
SMALLINT 2 -32768 32767
MEDIUMINT 3 -8388608 8388607
INT 4 -2147483648 2147483647
BIGINT 8 -9223372036854775808 9223372036854775807
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 在串的环境中,可用十六进制常数来指定串值。
其语法与前面描述的数值值相同,但是每对十六进制的数字都被看作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)
\\一个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;