MySQL数据库学习笔记.docx
- 文档编号:10568944
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:21
- 大小:28.99KB
MySQL数据库学习笔记.docx
《MySQL数据库学习笔记.docx》由会员分享,可在线阅读,更多相关《MySQL数据库学习笔记.docx(21页珍藏版)》请在冰豆网上搜索。
MySQL数据库学习笔记
MySQL数据库学习笔记
关系数据库的查询语言SQL(StructuredQueryLanguage),是一种非常口语化、既易学又易懂的语法。
此一语言几乎是每个资料库系统都必须提供的,用以表示关连式的操作,包含了资料的定义(DDL)以及资料的处理(DML)。
SQL原来拼成SEQUEL,这语言的原型以“系统R“的名字在IBM圣荷西实验室完成,经过IBM内部及其他的许多使用性及效率测试,其结果相当令人满意,并决定在系统R的技术基础发展出来IBM的产品。
而且美国国家标准学会(ANSI)及国际标准化组织(ISO)在1987遵循一个几乎是以IBMSQL为基础的标准关连式资料语言定义。
第一章、了解概念,并理解它
一、资料定义DDL(DataDefinitionLanguage)
资料定语言是指对资料的格式和形态下定义的语言,他是每个资料库要建立时候时首先要面对的,举凡资料分哪些表格关系、表格内的有什麽栏位主键、表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的。
数据库
第二章 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; 组合查询 组合查询是指所查询得资料来源并不只有单一的表格,而是联合一个以上的 表格才能够得到结果的。 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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL 数据库 学习 笔记
![提示](https://static.bdocx.com/images/bang_tan.gif)