配色: 字号:
Web编程技术MySQL一
2020-05-01 | 阅:  转:  |  分享 
  
追梦紫衣书阁《Web编程技术》最后编辑时间:2020-5-1目录任务一数据库基本操作任务二数据表基本操作任务三数据的管理单表查询任务四任
务五多表查询任务六数据库基础知识数据库由一批数据构成的有序集合,这些数据被分门别类地存放在一些结构化的数据表(table)里,而
数据表之间又往往存在交叉引用的关系,这种关系使数据库又被称为关系型数据库档案柜=数据库抽屉=表文件=记录行(记录)列(字段)数据表
传统的DBMS数据库管理系统Oracle应用广泛、功能强大,分布式数据库系统“关系-对象”型数据库MySQL快捷、可靠开源、免费、
与PHP组成经典的LAMP组合SQLServer针对不同用户群体的五个特殊的版本易用性好DB2应用于大型应用系统,具有较好的可伸
缩性数据库系统的使用响应和提供数据操作和查询数据库SQL结构化查询语言应用程序数据库服务器SQL概述什么是SQL?SQL是Str
ucturedQueryLanguage(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库
语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL语法组成DML(DataManipulati
onLanguage数据操作语言)——查询、插入、删除和修改数据库中的数据;——SELECT、INSERT、UPDATE、D
ELETE等;DCL(DataControlLanguage数据控制语言)——用来控制存取许可、存取权限等;——GRANT、
REVOKE等;DDL(DataDefinitionLanguage数据定义语言)——用来建立数据库、数据库对象和定义其列
——CREATETABLE、DROPTABLE、ALTERTABLE等功能函数——日期函数、数学函数、字符函数、系统函数
等任务一:数据库基本操作创建数据库创建数据库就是在数据库系统中划分一块存储数据的空间。基本语法格式如下:CREATEDATABA
SE数据库名称;任务一:数据库基本操作创建数据库示例:创建一个名称为cms的数据库,SQL语句如下:需要注意的是,为了避免用户
自定义的名称与系统命令冲突,最好使用反引号(``)包裹数据库名称、字段名称和数据表名称。CREATEDATABASE`cms
`;任务一:数据库基本操作创建数据库如果创建的数据库已存在,则程序会报错。因此,为了防止此情况的发生,在创建数据库时可以使用“IF
NOTEXISTS”,具体如下:上述SQL语句表示,若MySQL数据库服务器中不存在名称为cms的数据库时,创建该数据库,否则
不执行创建数据库cms的操作。CREATEDATABASEIFNOTEXISTS`cms`;任务一:数据库基本操作选择数
据库数据库服务器中可能存在多个数据库,选择数据库的命令如下:示例:选择数据库itcast进行操作,SQL语句如下。USE数据
库名称;USE`cms`;任务一:数据库基本操作删除数据库删除MySQL数据库服务器中的某个数据库:数据库的删除操作不仅会删除里
面的数据,还会回收原来分配的存储空间。DROPDATABASE数据库名称;任务一:数据库基本操作删除数据库示例:删除数据库i
tcast,SQL语句如下:DROPDATABASE`cms`;任务一:数据库基本操作删除数据库在使用“DROPDATABA
SE”命令删除数据库时,若待删除数据库不存在,MySQL服务器会报错。因此,可以在删除数据库时,使用“IFEXISTS”:若
MySQL数据库服务器中存在数据库cms,则删除该数据库,否则不执行删除数据库cms的操作。DROPDATABASEIF
EXISTS`cms`;任务二:数据表基本操作数据类型数据表在创建时,需为每个字段选择数据类型,而数据类型的选择则决定着数据的存
储格式,有效范围和相应的限制。如:一个需要10个字符宽度的字段,若将其宽度设为2个,则数据在存储时会发生错误;若将其宽度设为100
,则会剩余90个字符的宽度。因此,选择合适的数据类型对数据库的优化也很重要。任务二:数据表基本操作数据类型MySQL提供了多种数
据类型,主要分为3类:?数值类型?字符串类型?日期与时间类型任务二:数据表基本操作数据类型——数值类型MySQL提供了很多数值
类型,大体可以分为整数类型和浮点类型。整数类型根据取值范围分为INT、SMALLINT等,浮点类型又分为FLOAT、DECIM
AL等。任务二:数据表基本操作数据类型——数值类型:整数类型数据类型字节数取值范围说明TINYINT1有符号:-128~127无符
号:0~255最小的整数SMALLINT2有符号:-32768~32767无符号:0~65535小型整数MEDIUMINT3
有符号:-8388608~8388607无符号:0~16777215中型整数INT4有符号:-214748364
8~2147483647无符号:0~4294967295常规整数BIGINT8有符号:-92233720368
54775808~9223372036854775807无符号:0~184467440737095516
15较大的整数任务二:数据表基本操作数据类型——数值类型:浮点类型数据类型字节数取值范围说明FLOAT4有符号:-3.40282
3466E+38~-1.175494351E-38无符号:0/1.175494351E-38~3.402823466
E+38单精度DOUBLE8有符号:-1.7976931348623157E+308~2.225073858507
2014E-308无符号:0/2.2250738585072014E-308~1.797693134862
3157E+308双精度DECIMAL(M,D)M+2有符号:-1.7976931348623157E+308~2.2
250738585072014E-308无符号:0/2.2250738585072014E-308~1.79
76931348623157E+308定点数任务二:数据表基本操作数据类型——数值类型:浮点类型DECIMAL类型的有效
取值范围是有M和D决定。其中,M表示数据长度,D表示小数点后的长度。例如,数据类型设为DECIMAL(4,1),将
3.1415926插入到数据库后,显示的结果为3.1。任务二:数据表基本操作数据类型——字符串类型项目开发时,需要存储的数据多数
是字符串格式的,因此MySQL提供了许多用于存储字符串的数据类型。数据类型取值范围说明CHAR0~2^8-1(字符)用于表示固
定长度的字符串VARCHAR0~2^8-1(字符)用于表示可变长度的字符串ENUM0~2^16-1(字节数)表示枚举类型,只能存储
一个枚举字符串值BLOB0~2^16-1(字节数)用于表示二进制大数据(常规的)TEXT0~2^16-1(字节数)用于表示大文本数
据(常规的)任务二:数据表基本操作数据类型——字符串类型数据类型取值范围说明TINYBLOB0~2^8-1(字节数)用于表示二进制
大数据(较小的)TINYTEXT0~2^8-1(字节数)用于表示大文本数据(较小的)MEDIUMBLOB0~2^24-1(字节数)
用于表示二进制大数据(中等的)MEDIUMTEXT0~2^24-1(字节数)用于表示大文本数据(中等的)LONGBLOB0~2^3
2-1(字节数)用于表示二进制大数据(较大的)LONGTEXT0~2^32-1(字节数)用于表示大文本数据(较大的)BLOB和TE
XT都是用于存储大量数据的,但二者的区别在于,对于存储的数据进行排序和比较时,BLOB是区分大小写的,而TEXT是不区分大小写的。
任务二:数据表基本操作数据类型——日期与时间类型为方便在数据库中存储日期和时间,MySQL提供了几种相关的数据类型,这些数据类型
可以根据实际开发灵活选择。数据类型功能说明DATA用于存储日期,存储格式为YYYY-MM-DD例如:2008-12-24TIME
用于存储时间,存储格式为HH:MM:SS例如:14:25:10DATETIME用于存储日期和时间,存储格式为YYYY-MM-DD
HH:MM:SSTIMESTAMP用于存储时间戳,存储格式为YYYYMMDDHHMMSSYEAR(M)用于存储年份,M用于指定年
份的长度,其值为2或4中的一种任务二:数据表基本操作存储引擎在数据库中,数据表设计的是否合理直接影响着数据库的功效,而在设计数据表
时存储引擎的选择,则决定着数据表具有哪些功能。接下来将对MySQL常用存储引擎及其作用进行介绍。?InnoDB存储引擎?My
ISAM存储引擎任务二:数据表基本操作存储引擎——InnoDB存储引擎InnoDB存储引擎自MySQL5.5版本起被指定
为默认的存储引擎,用于完成事务、回滚、崩溃修复和多版本并发控制的事务安全处理。同时也是MySQL中第一个提供外键约束的表引擎,尤
其对事务处理的能力,是MySQL其他存储引擎所无法与之比拟的。InnoDB的优势在于提供了良好的事务管理、崩溃修复能力和并发
控制。任务二:数据表基本操作存储引擎——MyISAM存储引擎MyISAM存储引擎是基于ISAM存储引擎发展起来的,它不仅解
决了ISAM的很多不足,还增加了很多有用的扩展。其中,对于使用MyISAM存储引擎的数据表,会被存储成3个文件,文件名与表名
相同,文件扩展名分别为frm、myd和myi。任务二:数据表基本操作存储引擎——MyISAM存储引擎MyISAM存储引擎的
相关文件:相比InnoDB,MyISAM的优点是处理速度快;缺点是不支持事务处理等。扩展名功能说明Frm用于存储表的结构My
d用于存储数据,是MYData的缩写Myi用于存储索引,是MYIndex的缩写任务二:数据表基本操作数据表操作在数据库中,表是最基
本的数据对象,用于存放数据。若要对数据表进行基本的操作,则需先选择数据库,才能对数据表进行操作,如创建数据表、修改表结构、数据表更
名或删除数据表等;否则,数据库服务器会提示“Nodatabaseselected”错误。下面将对表的基本操作进行讲解。任务二:
数据表基本操作数据表操作——创建数据表在MySQL数据库中,使用CREATETABLE语句创建数据表:CREATE[T
EMPORARY]TABLE[IFNOTEXISTS]数据表名[(col_nametype[完整性约束条件],co
l_nametype[完整性约束条件],…)][table_options][select_statement];任务二:
数据表基本操作数据表操作——创建数据表在上述语法格式中,“[]”表示可选项;“完整性约束条件”指的是字段的某些特殊约束条件。关于表
的约束,将会在数据约束部分进行详细讲解,此处读者了解语法格式即可。任务二:数据表基本操作数据表操作——创建数据表CREATETA
BLE语句的参数说明如表所示。参数名称功能说明TEMPORARY如果使用该关键字,表示创建一个临时表IFNOTEXISTS如果
表已经存在则不执行创建操作col_name字段名Type字段类型table_options表的一些特性参数select_state
ment用于根据SELECT语句的查询结果创建表任务二:数据表基本操作数据表操作——创建数据表示例:②创建用户表user,该
表中有字段编号id、用户名user、密码password。具体SQL如下。CREATETABLEIFNOTEXIS
TS`user`(`id`INTUNSIGNEDCOMMENT''编号'',`name`VARCHAR(32)COM
MENT''用户名'',`password`VARCHAR(32)COMMENT''密码'')DEFAULTCHARSET=u
tf8;任务二:数据表基本操作数据表操作——创建数据表上述SQL语句中,UNSIGNED用于设置字段数据类型是无符号的,COMME
NT表示注释内容,“DEFAULTCHARSET=utf8”用于设置该表的默认字符编码为“utf8”。在对数据表进行操作时,表名
的位置也可以写成“数据库.表名”的形式,通过这种形式,将不需要使用“USE”选择数据库。`cms`.`user`任务二:数据表基本
操作数据表操作——修改表结构对于创建好的数据表,有时会根据项目要求对其结构进行修改。修改表结构是指增加或者删除字段、修改字段名称或
者字段类型、修改表名等。ALTER[IGNORE]TABLE数据表名ADD[COLUMN]create_definit
ion[FIRST|AFTERcolumn_name] #添加新字段|CHANGE[COLUMN]old_
col_namenew_col_nametype #修改字段名称及类型|MODIFY[COLUMN]cre
ate_definition #修改子句定义字段|DROP[COLUMN]col_name #删除
字段|RENAME[AS]new_tbl_name #更改表名任务二:数据表基本操作数据表操作——修改表结构
在上述语法中,当指定IGNORE时,如果出现重复关键的行,则只执行一行,其他重复的行被删除。其中,ALTERTABLE语
句允许指定多个动作,动作间使用英文逗号(,)分隔,每个动作表示对表的一个修改。任务二:数据表基本操作数据表操作——修改表结构示例:
①添加新的字段为user数据表添加描述字段desc,要求数据类型为CHAR(100)。ALTERTABLE`use
r`ADD`desc`CHAR(100);任务二:数据表基本操作数据表操作——修改表结构示例:②修改字段名称及类型将u
ser数据表中的描述字段desc的名称修改为description,数据类型修改为VARCHAR(100)。ALTER
TABLE`user`CHANGE`desc``description`VARCHAR(100);任务二:数据表基本操作
数据表操作——修改表结构示例:②修改字段名称及类型需要注意的是,在使用“CHANGE”时,必须为新字段名称设置数据类型,即使与
原来的数据类型相同,也必须进行重新设置。此外,当修改后的数据类型无法容纳原有数据时,修改将会失败。任务二:数据表基本操作数据表操作
——修改表结构示例:③修改字段数据类型修改user数据表中的description字段,将其数据类型由VARCHAR
(100)改为VARCHAR(255)。ALTERTABLE`user`MODIFY`description`VAR
CHAR(255);任务二:数据表基本操作数据表操作——修改表结构示例:④删除字段删除user数据表中的字段descri
ption,SQL语句如下:ALTERTABLE`user`DROP`description`;任务二:数据表基本操作数
据表操作——修改表结构示例:⑤更改表名称将数据表user的名称修改为new_user,SQL语句如下:ALTERTA
BLE`user`RENAME`new_user`;任务二:数据表基本操作数据表操作——重命名表MySQL中还提供了REN
AMETABLE语句,用于修改数据表的名称。该语句可以同时对多个数据表进行重命名,多个表之间以逗号“,”分隔。RENAMET
ABLE原数据表名TO新数据表名;任务二:数据表基本操作数据表操作——重命名表示例:下面将数据表“new_user”重命名为
“user”:RENAMETABLE`new_user`TO`user`;任务二:数据表基本操作数据表操作——删除表删除
数据表使用DROPTABLE语句即可实现,语法格式如下。可选项“IFEXISTS”用于在删除一个不存在的数据表时,防止产生
错误。DROPTABLE[IFEXISTS]数据表名;任务二:数据表基本操作数据表操作——删除表示例:下面以删除数据表“u
ser”为例进行演示,SQL语句如下:在开发时,应谨慎使用数据表删除操作,因为数据表一旦删除,表中的所有数据都将被清除。DROP
TABLEIFEXISTS`user`;任务二:数据表基本操作数据约束在MySQL中,为了减少输入错误和保证数据的完整性
,可以对字段设置约束。所谓约束就是一种命名规则和机制,通过对数据的增、删、改操作进行一些限制,以保证数据库中数据的完整性。常见的表
约束有五种,分别为主键约束、非空约束、默认约束、唯一约束和外键约束。任务二:数据表基本操作数据约束MySQL提供了两种定义约束的
方式:列约束和表约束。列约束定义在一个列上,只能对该列起约束作用,表约束一般定义在一个表的多个列上,要求被约束的列满足一定的关系。
接下来将对这几种常用的数据约束进行讲解。其中,由于外键约束的使用比较复杂,涉及到多表操作,将在后面的项目中讲解。任务二:数据表基本
操作数据约束——非空约束NOTNULL非空约束就是指被约束的当前字段的值不能为空值NULL。在MySQL中,非空约束是通
过NOTNULL定义的,其基本语法格式如下:在MySQL中,所有数据类型的值都可以是NULL,包括INT、FLOAT
等数据类型。需要注意的是,空字符串和0皆不属于空值NULL。字段名数据类型NOTNULL;任务二:数据表基本操作数据
约束——非空约束NOTNULL示例:创建数据表user,指定表中的name字段不能为空:从上述示例中可以看出,同一个数据
表中可以定义多个非空字段。CREATETABLE`user`(`id`INTNOTNULL,`name`VARC
HAR(20)NOTNULL)DEFAULTCHARSET=utf8;任务二:数据表基本操作数据约束——唯一约束UNIQU
E唯一约束用于保证数据表中字段的唯一性,即表中字段的值不能重复出现。唯一约束是通过UNIQUE定义的,语法格式如下:#列级约
束字段名数据类型UNIQUE;#表级约束UNIQUE(字段名1,字段名2,……);任务二:数据表基本操作数据约束——唯一
约束UNIQUE从上述语法可知,唯一约束既支持列约束也支持表约束。其中,在创建唯一约束时,虽然不允许出现重复的值,但是可以出现多
个空值NULL。且同一个表中可以有多个唯一约束。任务二:数据表基本操作数据约束——唯一约束UNIQUE示例:创建数据表use
r,要求用户名name字段不能为空,且不能重复,具体SQL语句如下:CREATETABLE`user`(`id`
INT,`name`VARCHAR(20)NOTNULLUNIQUE)DEFAULTCHARSET=utf8;任务二:
数据表基本操作数据约束——主键约束PRIMARYKEY在创建数据表时,通常利用PRIMARYKEY定义主键约束,用于唯一
标识表中的记录,类似指纹、身份证用于标识人的身份一样。主键约束相当于唯一约束和非空约束的组合,要求被约束字段不允许重复,也不允许出
现空值;每个表最多只允许含有一个主键,建立主键约束可以在列级别创建,也可以在表级别上创建。任务二:数据表基本操作数据约束——主键约
束PRIMARYKEY主键约束可以由一个字段构成单字段主键,也可以由多个字段组合而成。#列级约束字段名数据类型PRIM
ARYKEY#表级约束PRIMARYKEY(字段名1,字段名2,……)任务二:数据表基本操作数据约束——主键约束PRIM
ARYKEY例如,创建数据表user,要求编号id是无符号整型、自动增长的主键:id字段中的UNSIGNED表示无符号AUTO_INCREMENT表示该字段是自动增长的。CREATETABLE`user`(`id`INTUNSIGNEDPRIMARYKEYAUTO_INCREMENT,`name`VARCHAR(20)NOTNULLUNIQUE)DEFAULTCHARSET=utf8;任务二:数据表基本操作数据约束——默认约束DEFAULT默认约束用于指定数据表中字段的默认值,即当在表中插入一条新记录时,如果没有给这个字段赋值,会自动使用默认值。默认值是通过DEFAULT关键字定义的。字段名数据类型DEFAULT默认值;任务二:数据表基本操作数据约束——默认约束DEFAULT示例:创建数据表user,指定area字段默认值为空字符串。CREATETABLE`user`(`id`INTUNSIGNEDPRIMARYKEYAUTO_INCREMENT,`name`VARCHAR(20)NOTNULLUNIQUE,`area`VARCHAR(100)DEFAULT'''')DEFAULTCHARSET=utf8;ThankYou《Web编程技术》立体化教程项目组
献花(0)
+1
(本文系追梦紫衣书...原创)