第2章 数据库和表的基本操作.docx
- 文档编号:5699149
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:44
- 大小:34.18KB
第2章 数据库和表的基本操作.docx
《第2章 数据库和表的基本操作.docx》由会员分享,可在线阅读,更多相关《第2章 数据库和表的基本操作.docx(44页珍藏版)》请在冰豆网上搜索。
第2章数据库和表的基本操作
第2章数据库和表的基本操作
学习目标
◆掌握数据库的基本操作,会对数据库进行增删改查操作
◆掌握数据表的基本操作,会对数据表进行增删改查操作
◆了解数据类型,学会SQL语句中不同类型数据的表示方式
◆掌握表的约束,学会使用不同的约束来操作表
◆掌握索引的作用,会创建和删除索引
在软件开发中,必不可少会使用到数据库和数据表。
学会数据库和数据表的基本操作,可以轻松实现数据的管理。
本章将针对数据库和数据表的基本操作进行详细地讲解。
数据库基础知识
2.1.1创建和查看数据库
MySQL安装完成后,要想将数据存储到数据库的表中,首先得创建一个数据库。
创建数据库就是在数据库系统中划分一块存储数据的空间。
在MySQL中,创建数据库的基本语法格式如下所示:
CREATEDATABASE数据库名称;
在上述语法格式中,“CREATEDATABASE”是固定的SQL语句,专门用来创建数据库。
“数据库名称”是唯一的,不可重复出现。
【例2-1】创建一个名称为itcast的数据库,SQL语句如下所示:
CREATEDATABASEitcast;
执行结果如下所示:
mysql>CREATEDATABASEitcast;
QueryOK,1rowaffected(0.08sec)
如果看到上述运行结果,说明SQL语句执行成功了。
为了验证数据库系统中是否创建了名称为itcast的数据库,需要查看数据库。
在MySQL中,查看数据库的SQL语句如下所示:
SHOWDATABASES;
【例2-2】使用SHOW语句查看已经存在的数据库,执行结果如下所示:
mysql>SHOWDATABASES;
+--------------------+
|Database|
+--------------------+
|information_schema|
|mysql|
|performance_schema|
|itcast|
|test|
+--------------------+
5rowsinset(0.08sec)
从上述执行结果可以看出,数据库系统中存在5个数据库。
其中,除了在例2-1中创建的itcast数据库外,其它的数据库都是在MySQL安装完成后自动创建的。
创建好数据库之后,要想查看某个已经创建的数据库信息,可以通过SHOWCREATEDATABASE语句查看,具体语法格式如下所示:
SHOWCREATEDATABASE数据库名称;
【例2-3】查看创建好的数据库itcast的信息,SQL语句如下所示:
SHOWCREATEDATABASEitcast;
执行结果如下所示:
mysql>SHOWCREATEDATABASEitcast;
+----------+-----------------------------------------------------------------+
|Database|CreateDatabase|
+----------+-----------------------------------------------------------------+
|itcast|CREATEDATABASE`itcast`/*!
40100DEFAULTCHARACTERSETutf8*/|
+----------+-----------------------------------------------------------------+
1rowinset(0.00sec)
上述执行结果显示出了数据库itcast的创建信息,例如,数据库itcast的编码方式为utf8。
2.1.2修改数据库
MySQL数据库一旦安装成功,创建的数据库编码也就确定了。
但如果想修改数据库的编码,可以使用ALTERDATABASE语句实现。
修改数据库编码的基本语法格式如下所示:
ALTERDATABASE数据库名称DEFAULTCHARACTERSET 编码方式COLLATE编码方式_bin
在上述格式中,“数据库名称”指的是要修改的数据库,“编码方式”指的是修改后的数据库编码。
【例2-4】将数据库itcast的编码修改为gbk,SQL语句如下所示:
ALTERDATABASEitcastDEFAULTCHARACTERSET gbkCOLLATEgbk_bin;
为了验证数据库的编码是否修改成功,接下来,使用SHOWCREATEDATABASE语句查看修改后的数据库,执行结果如下:
mysql>SHOWCREATEDATABASEitcast;
+----------+--------------------------------------------------------------------
------------+
|Database|CreateDatabase
|
+----------+--------------------------------------------------------------------
------------+
|itcast|CREATEDATABASE`itcast`/*!
40100DEFAULTCHARACTERSETgbkCOLLATE
gbk_bin*/|
+----------+--------------------------------------------------------------------
------------+
1rowinset(0.02sec)
从上述执行结果可以看出,数据库itcast的编码为gbk,说明itcast数据库的编码信息修改成功了。
2.1.3删除数据库
删除数据库是将数据库系统中已经存在的数据库删除。
成功删除数据库后,数据库中的所有数据都将被清除,原来分配的空间也将被回收。
在MySQL中,删除数据库的基本语法格式如下所示:
DROPDATABASE数据库名称;
在上述语法格式中,“DROPDATABASE”是删除数据库的SQL语句,“数据库名称”是要删除的数据库名称。
需要注意的是,如果要删除的数据库不存在,则删除会失败。
【例2-5】删除名称为itcast的数据库,SQL语句如下所示:
DROPDATABASEitcast;
为了验证删除数据库的操作是否成功,接下来,使用SHOWDATABASES语句查看已经存在的数据库,执行结果如下所示:
mysql>SHOWDATABASES;
+--------------------+
|Database|
+--------------------+
|information_schema|
|mysql|
|performance_schema|
|test|
+--------------------+
4rowsinset(0.05sec)
从上述执行结果可以看出,数据库系统中已经不存在名称为itcast的数据库了,说明itcast数据库被成功删除了。
数据类型
使用MySQL数据库存储数据时,不同的数据类型决定了MySQL存储数据方式的不同。
为此,MySQL数据库提供了多种数据类型,其中包括整数类型、浮点数类型、定点数类型、日期和时间类型、字符串类型和二进制类型。
接下来,本节将针对这些数据类型进行详细地讲解。
2.1.4整数类型
在MySQL数据库中,经常需要存储整数数值。
根据数值取值范围的不同,MySQL中的整数类型可分为5种,分别是TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT。
表2-1列举了MySQL不同整数类型所对应的字节大小和取值范围。
表2-1MySQL整数类型
数据类型
字节数
无符号数的取值范围
有符号数的取值范围
TINYINT
1
0~255
-128~127
SMALLINT
2
0~65535
-32768~32768
MEDIUMINT
3
0~16777215
-8388608~8388608
INT
4
0~4294967295
-2147483648~2147483648
BIGINT
8
0~184********709551615
-9223372036854775808~9223372036854775808
从表2-1中可以看出,不同整数类型所占用的字节数和取值范围都是不同的。
其中,占用字节数最小的是TINYINT,占用字节数最大的是BIGINT。
需要注意的是,不同整数类型的取值范围可以根据字节数计算出来,例如,TINYINT类型的整数占用1个字节,1个字节是8位,那么,TINYINT类型无符号数的最大值就是28-1,即255,TINYINT类型有符号数的最大值就是27-1,即127。
同理可以算出其它不同整数类型的取值范围。
2.1.5浮点数类型和定点数类型
在MySQL数据库中,存储的小数都是使用浮点数和定点数来表示的。
浮点数的类型有两种,分别是单精度浮点数类型(FLOAT)和双精度浮点类型(DOUBLE)。
而定点数类型只有DECIMAL类型。
表2-2列举了MySQL中浮点数和定点数类型所对应的字节大小及其取值范围。
表2-2MySQL浮点数和定点数类型
数据类型
字节数
有符号的取值范围
无符号的取值范围
FLOAT
4
-3.402823466E+38~
-1.175494351E-38
0和1.175494351E-38~
3.402823466E+38
DOUBLE
4
-1.7976931348623157E+308~
2.2250738585072014E-308
0和2.2250738585072014E-308~
1.7976931348623157E+308
DECIMAL(M,D)
M+2
-1.7976931348623157E+308~
2.2250738585072014E-308
0和2.2250738585072014E-308~
1.7976931348623157E+308
从表2-2中可以看出,DECIMAL类型的取值范围与DOUBLE类型相同。
需要注意的是,DECIMAL类型的有效取值范围是由M和D决定的,其中,M表示的是数据的长度,D表示的是小数点后的长度。
比如,将数据类型为DECIMAL(6,2)的数据3.1415插入数据库后,显示的结果为3.14。
2.1.6日期与时间类型
为了方便在数据库中存储日期和时间,MySQL提供了表示日期和时间的数据类型,分别是YEAR、DATE、TIME、DATETIME和TIMESTAMP。
表2-3列举了这些MySQL中日期和时间数据类型所对应的字节数、取值范围、日期格式以及零值。
表2-3MySQL日期和时间类型
数据类型
字节数
取值范围
日期格式
零值
YEAR
1
1901~2155
YYYY
0000
DATE
4
1000-01-01~9999-12-3
YYYY-MM-DD
0000-00-00
TIME
3
-838:
59:
59~838:
59:
59
HH:
MM:
SS
00:
00:
00
DATETIME
8
1000-01-0100:
00:
00~
9999-12-3123:
59:
59
YYYY-MM-DDHH:
MM:
SS
0000-00-0000:
00:
00
TIMESTAMP
4
1970-01-0100:
00:
01~
2038-01-1903:
14:
07
YYYY-MM-DDHH:
MM:
SS
0000-00-0000:
00:
00
从表2-3中可以看出,每种日期和时间类型的取值范围都是不同的。
需要注意的是,如果插入的数值不合法,系统会自动将对应的零值插入数据库中。
为了大家更好地学习日期和时间类型,接下来,将表2-3中的类型进行详细讲解,具体如下:
1、YEAR类型
YEAR类型用于表示年份,在MySQL中,可以使用以下三种格式指定YEAR类型的值:
(1)使用4位字符串或数字表示,范围为‘1901’~‘2155’或1901~2155。
例如,输入‘2014’或2014,插入到数据库的值均为2014。
(2)使用2位字符串表示,范围为‘00’~‘99’,其中,‘00’~‘69’范围的值会被转换为2000~2069范围的YEAR值,‘70’~‘99’范围的值会被转换为1970~1999范围的YEAR值。
例如,输入‘14’,插入到数据库的值为2014。
(3)使用2位数字表示,范围为1~99,其中,1~69范围的值会被转换为2001~2069范围的YEAR值,70~99范围的值会被转换为1970~1999范围的YEAR值。
例如,输入14,插入到数据库的值为2014。
需要注意的是,当使用YEAR类型时,一定要区分‘0’和0。
因为字符串格式的‘0’表示的是YEAR值是2000,而数字格式的0表示的YEAR值是0000。
2、DATE类型
DATE类型用于表示日期值,不包含时间部分。
在MySQL中,可以使用以下四种格式指定DATE类型的值:
(1)以‘YYYY-MM-DD’或者‘YYYYMMDD’字符串格式表示。
例如,输入‘2014-01-21’或‘20140121’,插入数据库的日期都为2014-01-21。
(2)以‘YY-MM-DD’或者‘YYMMDD’字符串格式表示。
YY表示的是年,范围为‘00’~‘99’,其中‘00’~‘69’范围的值会被转换为2000~2069范围的值,‘70’~‘99’范围的值会被转换为1970~1999范围的值。
例如,输入‘14-01-21’或‘140121’,插入数据库的日期都为2014-01-21。
(3)以YY-MM-DD或者YYMMDD数字格式表示。
例如,输入14-01-21或140121,插入数据库的日期都为2014-01-21。
(4)使用CURRENT_DATE或者NOW()表示当前系统日期。
3、TIME类型
TIME类型用于表示时间值,它的显示形式一般为HH:
MM:
SS,其中,HH表示小时,MM表示分,SS表示秒。
在MySQL中,可以使用以下三种格式指定TIME类型的值:
(1)以‘DHH:
MM:
SS’字符串格式表示。
其中,D表示日,可以取0~34之间的值,插入数据时,小时的值等于(D*24+HH)。
例如,输入‘211:
30:
50’,插入数据库的日期为59:
30:
50。
(2)以‘HHMMSS’字符串格式或者HHMMSS数字格式表示。
例如,输入‘345454’或345454,插入数据库的日期为34:
54:
54。
(3)使用CURRENT_TIME或NOW()输入当前系统时间。
4、DATETIME类型
DATETIME类型用于表示日期和时间,它的显示形式为‘YYYY-MM-DDHH:
MM:
SS’,其中,YYYY表示年,MM表示月,DD表示日,HH表示小时,MM表示分,SS表示秒。
在MySQL中,可以使用以下四种格式指定DATETIME类型的值:
(1)以‘YYYY-MM-DDHH:
MM:
SS’或者‘YYYYMMDDHHMMSS’字符串格式表示的日期和时间,取值范围为‘1000-01-0100:
00:
00’~‘9999-12-323:
59:
59’。
例如,输入‘2014-01-2209:
01:
23’或20140122090123,插入数据库的DATETIME值都为2014-01-2209:
01:
23。
(2)以‘YY-MM-DDHH:
MM:
SS’或者‘YYMMDDHHMMSS’字符串格式表示的日期和时间,其中YY表示年,取值范围为‘00’~‘99’。
与DATE类型中的YY相同,‘00’~‘69’范围的值会被转换为2000~2069范围的值,‘70’~‘99’范围的值会被转换为1970~1999范围的值。
(3)以YYYYMMDDHHMMSS或者YYMMDDHHMMSS数字格式表示的日期和时间。
例如,插入20140122090123或者140122090123,插入数据库的DATETIME值都为2014-01-2209:
01:
23。
(4)使用NOW来输入当前系统的日期和时间。
5、TIMESTAMP类型
TIMESTAMP类型用于表示日期和时间,它的显示形式同DATETIME相同,但取值范围比DATETIME小。
下面介绍几种TIMESTAMP类型与DATATIME类型不同的形式,具体如下:
(1)使用CURRENT_TIMESTAMP来输入系统当前日期和时间。
(2)输入NULL时,系统会输入系统当前日期和时间。
(3)无任何输入时,系统会输入系统当前日期和时间。
2.1.7字符串和二进制类型
为了存储字符串、图片和声音等数据,MySQL提供了字符串和二进制类型。
表2-4列举了MySQL中的字符串和二进制类型。
表2-4MySQL字符串和二进制类型
数据类型
类型说明
CHAR
用于表示固定长度的字符串
VARCHAR
用于表示可变长度的字符串
BINARY
用于表示固定长度的二进制数据
VARBINARY
用于表示可变长度的二进制数据
BOLB
用于表示二进制大数据
TEXT
用于表示大文本数据
ENUM
表示枚举类型,只能存储一个枚举字符串值
SET
表示字符串对象,可以有零或多个值
BIT
表示位字段类型
表2-4列举的字符串和二进制类型中,不同数据类型具有不同的特点,接下来,针对这些数据类型进行详细地讲解,具体如下:
1、CHAR和VARCHAR类型
CHAR和VARCHAR类型都用来表示字符串数据,不同的是,VARCHAR可以存储可变长度的字符串。
在MySQL中,定义CHAR和VARCHAR类型的方式如下所示:
CHAR(M)或VARCHAR(M)
在上述定义方式中,M指的是字符串的最大长度。
为了帮助大家更好地理解CHAR和VARCHAR之间的区别,接下来,以CHAR(4)和VARCHAR(4)为例进行说明,具体如表2-5所示。
表2-5CHAR(4)和VARCHAR(4)对比
插入值
CHAR(4)
存储需求
VARCHAR(4)
存储需求
‘’
‘’
4个字节
‘’
1个字节
‘ab’
‘ab’
4个字节
‘ab’
3个字节
‘abc’
‘abc’
4个字节
‘abc’
4个字节
‘abcd’
‘abcd’
4个字节
‘abcd’
5个字节
‘abcdef’
‘abcd’
4个字节
‘abcd’
5个字节
从表2-5中可以看出,当数据为CHAR(4)类型时,不管插入值的长度是多少,所占用的存储空间都是4个字节。
而VARCHAR(4)所对应的数据所占用的字节数为实际长度加1。
2、BINARY和VARBINARY类型
BINARY和VARBINARY类型类似于CHAR和VARCHAR,不同的是,它们所表示的是二进制数据。
定义BINARY和VARBINARY类型的方式如下所示:
BINARY(M)或VARBINARY(M)
在上述格式中,M指的是二进制数据的最大字节长度。
需要注意的是,BINARY类型的长度是固定的,如果数据的长度不足最大长度,将在数据的后面用“\0”补齐,最终达到指定长度。
例如,指定数据类型为BINARY(3),当插入a时,实际存储的数据为“a\0\0”,当插入ab时,实际存储的数据为“ab\0”。
3、TEXT类型
TEXT类型用于表示大文本数据,例如,文章内容、评论等,它的类型分为四种,具体如表2-6所示。
表2-6TEXT类型
数据类型
存储范围
TINYTEXT
0~255字节
TEXT
0~65535字节
MEDIUMTEXT
0~16777215字节
LONGTEXT
0~4294967295字节
4、BLOB类型
BLOB类型是一种特殊的二进制类型,它用于表示数据量很大的二进制数据,例如图片、PDF文档等。
BLOB类型分为四种,具体如表2-7所示。
表2-7BLOB类型
数据类型
存储范围
TINYBLOB
0~255字节
BLOB
0~65535字节
MEDIUMBLOB
0~16777215字节
LONGBLOB
0~4294967295字节
需要注意的是,BLOB类型与TEXT类型很相似,但BLOB类型数据是根据二进制编码进行比较和排序,而TEXT类型数据是根据文本模式进行比较和排序。
5、ENUM类型
ENUM类型又称为枚举类型,定义ENUM类型的数据格式如下所示:
ENUM('值1','值2','值3'……'值n')
在上述格式中,('值1','值2','值3'……'值n')称为枚举列表,ENUM类型的数据只能从枚举列表中取,并且只能取一个。
需要注意的是,枚举列举中的每个值都有一个顺序编号,MySQL中存入的就是这个顺序编号,而不是列表中的值。
6、SET类型
SET类型用于表示字符串对象,它的值可以有零个或多个,SET类型数据的定义格式与ENUM类型类似,具体语法格式如下所示:
SET('值1','值2','值3'……'值n')
与ENUM类型相同,('值1','值2','值3'……'值n')列表中的每个值都有一个顺序编号,MySQL中存入的也是这个顺序编号,而不是列表中的值。
7、BIT类型
BIT类型用于表示二进制数据。
定义BIT类型的基本语法格式如下所示:
BIT(M)
在上述格式中,M用于表示每个值的位数,范围为1~64。
需要注意的是,如果分配的BIT(M)类型的数据长度小于M,将在数据的左边用0补齐。
例如,为BIT(6)分配值b’101’的效果与分配b’000101’相同。
数据表的基本操作
2.1.8创建数据表
数据库创建成功后,就需要创建数据表。
所谓创建数据表指的是在已存在的数据库中建立新表。
需要注意的是,在操作数据表之前,应该使用“USE数据库名”指定操作是在哪个数据库中进行,否则会抛出“Nodatabaseselected”错误。
创建数据表的基本语法格式如下所示:
CREATETABLE表名
(
字段名1,数据类型[完整性约束条件],
字段名2,数据类型[完整性约束条件],
......
字段名n,数据类型[完整性约束条件],
)
在上述语法格式中,“表名”指的是创建的数据表名称,“字段名”指的是数据表的列名,“完整性约束条件”指的是字段的某些特殊约束条件,关于表的约束,将在下个小节进行详细讲解。
【例2-6】创建一个用于存储学生成绩的表tb_grade,如表2-8所示。
表2-8tb_grade表
字段名称
数据类型
备注说明
id
INT(11)
学生的编号
name
VARCHAR(20)
学生的姓名
grade
FLOAT
学生的成绩
要想创建表2-8所示的数据表,需要首先创建一个数据库,SQL语句如下:
CREA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第2章 数据库和表的基本操作 数据库 基本 操作