版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、传智播客专注于Java、.Net和Php、网页平面设计工程师的培训第2章 数据库和表的基本操作学习目标u 掌握数据库的基本操作,会对数据库进行增删改查操作u 掌握数据表的基本操作,会对数据表进行增删改查操作u 了解数据类型,学会SQL语句中不同类型数据的表示方式u 掌握表的约束,学会使用不同的约束来操作表u 掌握索引的作用,会创建和删除索引在软件开发中,必不可少会使用到数据库和数据表。学会数据库和数据表的基本操作,可以轻松实现数据的管理。本章将针对数据库和数据表的基本操作进行详细地讲解。2.1 数据库基础知识2.1.1 创建和查看数据库MySQL安装完成后,要想将数据存储到数据库的表中,首先得
2、创建一个数据库。创建数据库就是在数据库系统中划分一块存储数据的空间。在MySQL中,创建数据库的基本语法格式如下所示:CREATE DATABASE 数据库名称;在上述语法格式中,“CREATE DATABASE”是固定的SQL语句,专门用来创建数据库。“数据库名称”是唯一的,不可重复出现。【例2-1】创建一个名称为itcast的数据库,SQL语句如下所示:CREATE DATABASE itcast;执行结果如下所示:mysql> CREATE DATABASE itcast;Query OK, 1 row affected (0.08 sec)如果看到上述运行结果,说明SQL语句执行
3、成功了。为了验证数据库系统中是否创建了名称为itcast的数据库,需要查看数据库。在MySQL中,查看数据库的SQL语句如下所示:SHOW DATABASES;【例2-2】使用SHOW语句查看已经存在的数据库,执行结果如下所示:mysql> SHOW DATABASES;+-+| Database |+-+| information_schema | mysql | performance_schema | itcast | test |+-+5 rows in set (0.08 sec)从上述执行结果可以看出,数据库系统中存在5个数据库。其中,除了在例2-1中创建的itcast数据库
4、外,其它的数据库都是在MySQL安装完成后自动创建的。创建好数据库之后,要想查看某个已经创建的数据库信息,可以通过SHOW CREATE DATABASE语句查看,具体语法格式如下所示:SHOW CREATE DATABASE 数据库名称;【例2-3】查看创建好的数据库itcast的信息,SQL语句如下所示:SHOW CREATE DATABASE itcast;执行结果如下所示:mysql> SHOW CREATE DATABASE itcast;+-+-+| Database | Create Database |+-+-+| itcast | CREATE DATABASE itc
5、ast /*!40100 DEFAULT CHARACTER SET utf8 */ |+-+-+1 row in set (0.00 sec)上述执行结果显示出了数据库itcast的创建信息,例如,数据库itcast的编码方式为utf8。2.1.2 修改数据库MySQL数据库一旦安装成功,创建的数据库编码也就确定了。但如果想修改数据库的编码,可以使用ALTER DATABASE语句实现。修改数据库编码的基本语法格式如下所示:ALTER DATABASE 数据库名称 DEFAULT CHARACTER SET 编码方式 COLLATE 编码方式_bin在上述格式中,“数据库名称”指的
6、是要修改的数据库,“编码方式”指的是修改后的数据库编码。【例2-4】将数据库itcast的编码修改为gbk,SQL语句如下所示:ALTER DATABASE itcast DEFAULT CHARACTER SET gbk COLLATE gbk_bin;为了验证数据库的编码是否修改成功,接下来,使用SHOW CREATE DATABASE语句查看修改后的数据库,执行结果如下:mysql> SHOW CREATE DATABASE itcast;+-+-+| Database | Create Database |+-+-+| itcast | CREATE DATABASE
7、itcast /*!40100 DEFAULT CHARACTER SET gbk COLLATE gbk_bin */ |+-+-+1 row in set (0.02 sec)从上述执行结果可以看出,数据库itcast的编码为gbk,说明itcast数据库的编码信息修改成功了。2.1.3 删除数据库删除数据库是将数据库系统中已经存在的数据库删除。成功删除数据库后,数据库中的所有数据都将被清除,原来分配的空间也将被回收。在MySQL中,删除数据库的基本语法格式如下所示:DROP DATABASE 数据库名称;在上述语法格式中,“DROP DATABASE”是删除数据库的SQL语句,“数据库名
8、称”是要删除的数据库名称。需要注意的是,如果要删除的数据库不存在,则删除会失败。【例2-5】删除名称为itcast的数据库,SQL语句如下所示:DROP DATABASE itcast;为了验证删除数据库的操作是否成功,接下来,使用SHOW DATABASES语句查看已经存在的数据库,执行结果如下所示:mysql> SHOW DATABASES;+-+| Database |+-+| information_schema | mysql | performance_schema | test |+-+4 rows in set (0.05 sec)从上述执行结果可以看出,数据库系统中已经
9、不存在名称为itcast的数据库了,说明itcast数据库被成功删除了。2.2 数据类型使用MySQL数据库存储数据时,不同的数据类型决定了MySQL存储数据方式的不同。为此,MySQL数据库提供了多种数据类型,其中包括整数类型、浮点数类型、定点数类型、日期和时间类型、字符串类型和二进制类型。接下来,本节将针对这些数据类型进行详细地讲解。2.2.1 整数类型在MySQL数据库中,经常需要存储整数数值。根据数值取值范围的不同,MySQL中的整数类型可分为5种,分别是TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT。表2-1列举了MySQL不同整数类型所对应的字节大小和取
10、值范围。表2-1 MySQL整数类型 数据类型字节数无符号数的取值范围有符号数的取值范围TINYINT10255-128127SMALLINT2065535-3276832768MEDIUMINT3016777215-83886088388608INT404294967295-21474836482147483648BIGINT8018446744073709551615-92233720368547758089223372036854775808从表2-1中可以看出,不同整数类型所占用的字节数和取值范围都是不同的。其中,占用字节数最小的是TINYINT,占用字节数最大的是BIGINT。需要注
11、意的是,不同整数类型的取值范围可以根据字节数计算出来,例如,TINYINT类型的整数占用1个字节,1个字节是8位,那么,TINYINT类型无符号数的最大值就是28-1,即255,TINYINT类型有符号数的最大值就是27-1,即127。同理可以算出其它不同整数类型的取值范围。2.2.2 浮点数类型和定点数类型在MySQL数据库中,存储的小数都是使用浮点数和定点数来表示的。浮点数的类型有两种,分别是单精度浮点数类型(FLOAT)和双精度浮点类型(DOUBLE)。而定点数类型只有DECIMAL类型。表2-2列举了MySQL中浮点数和定点数类型所对应的字节大小及其取值范围。表2-2 MySQL浮点数
12、和定点数类型数据类型字节数有符号的取值范围无符号的取值范围FLOAT4-3.402823466E+38-1.175494351E-380和1.175494351E-383.402823466E+38DOUBLE4-1.7976931348623157E+3082.2250738585072014E-3080和2.2250738585072014E-3081.7976931348623157E+308DECIMAL(M,D) M+2-1.7976931348623157E+3082.2250738585072014E-3080和2.2250738585072014E-3081.797693134
13、8623157E+308从表2-2中可以看出,DECIMAL类型的取值范围与DOUBLE类型相同。需要注意的是,DECIMAL类型的有效取值范围是由M和D决定的,其中,M表示的是数据的长度,D表示的是小数点后的长度。比如,将数据类型为DECIMAL(6,2) 的数据3.1415插入数据库后,显示的结果为3.14。2.2.3 日期与时间类型为了方便在数据库中存储日期和时间,MySQL提供了表示日期和时间的数据类型,分别是YEAR、DATE、TIME、DATETIME和TIMESTAMP。表2-3列举了这些MySQL中日期和时间数据类型所对应的字节数、取值范围、日期格式以及零值。表2-3 MySQ
14、L日期和时间类型数据类型字节数取值范围日期格式零值YEAR119012155YYYY0000DATE41000-01-019999-12-3YYYY-MM-DD0000-00-00TIME3-838:59:59838:59:59HH:MM:SS00:00:00DATETIME81000-01-01 00:00:009999-12-31 23:59:59YYYY-MM-DD HH:MM:SS0000-00-00 00:00:00TIMESTAMP41970-01-01 00:00:012038-01-19 03:14:07YYYY-MM-DD HH:MM:SS0000-00-00 00:00:0
15、0从表2-3中可以看出,每种日期和时间类型的取值范围都是不同的。需要注意的是,如果插入的数值不合法,系统会自动将对应的零值插入数据库中。为了大家更好地学习日期和时间类型,接下来,将表2-3中的类型进行详细讲解,具体如下:1、YEAR类型YEAR类型用于表示年份,在MySQL中,可以使用以下三种格式指定YEAR类型的值:(1)使用4位字符串或数字表示,范围为19012155或19012155。例如,输入2014或2014,插入到数据库的值均为2014。(2)使用2位字符串表示,范围为0099,其中,0069范围的值会被转换为20002069范围的YEAR值,7099范围的值会被转换为197019
16、99范围的YEAR值。例如,输入14,插入到数据库的值为2014。(3)使用2位数字表示,范围为199,其中,169范围的值会被转换为20012069范围的YEAR值,7099范围的值会被转换为19701999范围的YEAR值。例如,输入14,插入到数据库的值为2014。需要注意的是,当使用YEAR类型时,一定要区分0和0。因为字符串格式的0表示的是YEAR值是2000,而数字格式的0表示的YEAR值是0000。2、DATE类型DATE类型用于表示日期值,不包含时间部分。在MySQL中,可以使用以下四种格式指定DATE类型的值:(1)以YYYY-MM-DD或者YYYYMMDD字符串格式表示。例
17、如,输入2014-01-21或20140121,插入数据库的日期都为2014-01-21。(2)以YY-MM-DD或者YYMMDD字符串格式表示。YY表示的是年,范围为0099,其中0069范围的值会被转换为20002069范围的值,7099范围的值会被转换为19701999范围的值。例如,输入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
18、类型用于表示时间值,它的显示形式一般为HH:MM:SS,其中,HH表示小时,MM表示分,SS表示秒。在MySQL中,可以使用以下三种格式指定TIME类型的值:(1)以D HH:MM:SS字符串格式表示。其中,D表示日,可以取034之间的值,插入数据时,小时的值等于(D*24+HH)。例如,输入2 11:30:50,插入数据库的日期为59:30:50。(2)以HHMMSS字符串格式或者HHMMSS数字格式表示。例如,输入345454或345454,插入数据库的日期为34:54:54。(3)使用CURRENT_TIME或NOW()输入当前系统时间。4、DATETIME类型DATETIME类型用于表
19、示日期和时间,它的显示形式为YYYY-MM-DD HH:MM:SS,其中,YYYY表示年,MM表示月,DD表示日,HH表示小时,MM表示分,SS表示秒。在MySQL中,可以使用以下四种格式指定DATETIME类型的值:(1)以YYYY-MM-DD HH:MM:SS或者YYYYMMDDHHMMSS字符串格式表示的日期和时间,取值范围为1000-01-01 00:00:009999-12-3 23:59:59。例如,输入2014-01-22 09:01:23或20140122090123,插入数据库的DATETIME值都为2014-01-22 09:01:23。(2)以YY-MM-DD HH:MM
20、:SS或者YYMMDDHHMMSS字符串格式表示的日期和时间,其中YY表示年,取值范围为0099。与DATE类型中的YY相同,0069范围的值会被转换为20002069范围的值,7099范围的值会被转换为19701999范围的值。(3)以YYYYMMDDHHMMSS或者YYMMDDHHMMSS数字格式表示的日期和时间。例如,插入20140122090123或者140122090123,插入数据库的DATETIME值都为2014-01-22 09:01:23。(4)使用NOW来输入当前系统的日期和时间。5、TIMESTAMP类型TIMESTAMP类型用于表示日期和时间,它的显示形式同DATETI
21、ME相同,但取值范围比DATETIME小。下面介绍几种TIMESTAMP类型与DATATIME类型不同的形式,具体如下:(1)使用CURRENT_TIMESTAMP来输入系统当前日期和时间。(2)输入NULL时,系统会输入系统当前日期和时间。(3)无任何输入时,系统会输入系统当前日期和时间。2.2.4 字符串和二进制类型为了存储字符串、图片和声音等数据,MySQL提供了字符串和二进制类型。表2-4列举了MySQL中的字符串和二进制类型。表2-4 MySQL字符串和二进制类型 数据类型类型说明CHAR用于表示固定长度的字符串 VARCHAR用于表示可变长度的字符串BINARY用于表示固定长度的二
22、进制数据VARBINARY用于表示可变长度的二进制数据BOLB用于表示二进制大数据TEXT用于表示大文本数据ENUM表示枚举类型,只能存储一个枚举字符串值SET表示字符串对象,可以有零或多个值BIT表示位字段类型表2-4列举的字符串和二进制类型中,不同数据类型具有不同的特点,接下来,针对这些数据类型进行详细地讲解,具体如下: 1、 CHAR和VARCHAR类型CHAR和VARCHAR类型都用来表示字符串数据,不同的是,VARCHAR可以存储可变长度的字符串。在MySQL中,定义CHAR和VARCHAR类型的方式如下所示:CHAR(M) 或 VARCHAR(M)在上述定义方式中,M指的是字符串的
23、最大长度。为了帮助大家更好地理解CHAR和VARCHAR之间的区别,接下来,以CHAR(4)和VARCHAR(4)为例进行说明,具体如表2-5所示。表2-5 CHAR(4)和VARCHAR(4)对比插入值CHAR(4)存储需求VARCHAR(4)存储需求4个字节1个字节abab4个字节ab3个字节abcabc4个字节abc4个字节abcdabcd4个字节abcd5个字节abcdefabcd4个字节abcd5个字节从表2-5中可以看出,当数据为CHAR(4)类型时,不管插入值的长度是多少,所占用的存储空间都是4个字节。而VARCHAR(4)所对应的数据所占用的字节数为实际长度加1。2、 BINA
24、RY和VARBINARY类型BINARY和VARBINARY类型类似于CHAR和VARCHAR,不同的是,它们所表示的是二进制数据。定义BINARY和VARBINARY类型的方式如下所示:BINARY(M) 或 VARBINARY(M)在上述格式中,M指的是二进制数据的最大字节长度。需要注意的是,BINARY类型的长度是固定的,如果数据的长度不足最大长度,将在数据的后面用“0”补齐,最终达到指定长度。例如,指定数据类型为BINARY(3),当插入a时,实际存储的数据为“a00”,当插入ab时,实际存储的数据为“ab0”。3、 TEXT类型TEXT类型用于表示大文本数据,例如,文章内容、评论等,
25、它的类型分为四种,具体如表2-6所示。表2-6 TEXT类型数据类型存储范围TINYTEXT0255字节TEXT065535字节MEDIUMTEXT016777215字节LONGTEXT04294967295字节4、 BLOB类型BLOB类型是一种特殊的二进制类型,它用于表示数据量很大的二进制数据,例如图片、PDF文档等。BLOB类型分为四种,具体如表2-7所示。表2-7 BLOB类型数据类型存储范围TINYBLOB0255字节BLOB065535字节MEDIUMBLOB016777215字节LONGBLOB04294967295字节需要注意的是,BLOB类型与TEXT类型很相似,但BLOB类
26、型数据是根据二进制编码进行比较和排序,而TEXT类型数据是根据文本模式进行比较和排序。5、 ENUM类型ENUM类型又称为枚举类型,定义ENUM类型的数据格式如下所示:ENUM('值1', '值2', '值3''值n')在上述格式中,('值1', '值2', '值3''值n')称为枚举列表,ENUM类型的数据只能从枚举列表中取,并且只能取一个。需要注意的是,枚举列举中的每个值都有一个顺序编号,MySQL中存入的就是这个顺序编号,而不是列表中的值。6、 SET类型SET
27、类型用于表示字符串对象,它的值可以有零个或多个,SET类型数据的定义格式与ENUM类型类似,具体语法格式如下所示: SET('值1', '值2', '值3''值n')与ENUM类型相同,('值1', '值2', '值3''值n')列表中的每个值都有一个顺序编号,MySQL中存入的也是这个顺序编号,而不是列表中的值。7、 BIT类型BIT类型用于表示二进制数据。定义BIT类型的基本语法格式如下所示:BIT(M)在上述格式中,M用于表示每个值的位数,范围为164。需要注意
28、的是,如果分配的BIT(M)类型的数据长度小于M,将在数据的左边用0补齐。例如,为BIT(6)分配值b101的效果与分配b000101相同。2.3 数据表的基本操作2.3.1 创建数据表数据库创建成功后,就需要创建数据表。所谓创建数据表指的是在已存在的数据库中建立新表。需要注意的是,在操作数据表之前,应该使用“USE 数据库名”指定操作是在哪个数据库中进行,否则会抛出“No database selected”错误。创建数据表的基本语法格式如下所示:CREATE TABLE 表名( 字段名1,数据类型完整性约束条件,字段名2,数据类型完整性约束条件,字段名n,数据类型完整性约束条件,) 在上述
29、语法格式中,“表名”指的是创建的数据表名称,“字段名”指的是数据表的列名,“完整性约束条件”指的是字段的某些特殊约束条件,关于表的约束,将在下个小节进行详细讲解。【例2-6】创建一个用于存储学生成绩的表tb_grade,如表2-8所示。表2-8 tb_grade表字段名称数据类型备注说明idINT(11)学生的编号nameVARCHAR(20)学生的姓名gradeFLOAT学生的成绩要想创建表2-8所示的数据表,需要首先创建一个数据库,SQL语句如下:CREATE DATABASE itcast;选择创建表的数据库,SQL语句如下:USE itcast;创建数据表的SQL语句如下所示:CREA
30、TE TABLE tb_grade( id INT(11), name VARCHAR(20), grade FLOAT);为了验证数据表是否创建成功,需要使用SHOW TABLES语句进行查看,具体执行结果如下所示:mysql> SHOW TABLES;+-+| Tables_in_itcast |+-+| tb_grade |+-+1 row in set (0.03 sec)从上述执行结果可以看出,itcast数据库中已经存在了数据表tb_grade,说明数据表创建成功了。2.3.2 查看数据表使用SQL语句创建好数据表后,可以通过查看数据表结构的定义,以确认数据表的定义是否正确。
31、在MySQL中,查看数据表的方式有两种,具体如下:1、 使用SHOW CREATE TABLE查看数据表在MySQL中,SHOW CREATE TABLE语句不仅可以查看创建表时的定义语句,还可以查看表的字符编码。SHOW CREATE TABLE语句的基本语法格式如下所示:SHOW CREATE TABLE 表名;在上述格式中,“表名”指的是要查询数据表的名称。【例2-7】使用SHOW CREATE TABLE语句查看tb_grade表,SQL语句如下所示:SHOW CREATE TABLE tb_grade;执行结果如下所示: mysql> SHOW CREATE TABLE tb_
32、grade;+-+-+| Table | Create Table |+-+-+| tb_grade | CREATE TABLE 'tb_grade' ( 'id' int(11) DEFAULT NULL, 'name' varchar(20) COLLATE utf8_bin DEFAULT NULL, 'grade' float DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin |+-+-+1 row in set (0.06 sec)从上述
33、执行结果可以看出,tb_grade数据表的定义信息显示了出来,但是显示的结果非常混乱,这时,我们可以在SHOW CREATE TABLE语句的表名之后加上参数“G”,使显示结果整齐美观,具体执行结果如下所示:mysql> SHOW CREATE TABLE tb_gradeG* 1. row * Table: tb_gradeCreate Table: CREATE TABLE 'tb_grade' ( 'id' int(11) DEFAULT NULL, 'name' varchar(20) COLLATE utf8_bin DEFAUL
34、T NULL, 'grade' float DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin1 row in set (0.00 sec)2、使用DESCRIBE语句查看数据表在MySQL中,使用DESCRIBE语句可以查看表的字段信息,其中包括字段名、字段类型等信息。DESCRIBE语句的基本语法格式如下所示:DESCRIBE 表名;或简写为:DESC 表名;【例2-8】使用DESCRIBE语句查看tb_grade表,SQL语句如下所示:DESCRIBE tb_grade;执行结果如下所示: m
35、ysql> DESCRIBE tb_grade;+-+-+-+-+-+-+| Field | Type | Null | Key | Default | Extra |+-+-+-+-+-+-+| id | int(11) | YES | | NULL | | name | varchar(20) | YES | | NULL | | grade | float | YES | | NULL | |+-+-+-+-+-+-+3 rows in set (0.06 sec)上述执行结果显示出了tb_grade表的字段信息,接下来,针对执行结果中的不同字段进行详细讲解,具体如下:l NULL
36、:表示该列是否可以存储NULL值。l Key:表示该列是否已经编制索引。l Default:表示该列是否有默认值。l Extra:表示获取到的与给定列相关的附加信息。2.3.3 修改数据表有时候,希望对表中的某些信息进行修改,这时就需要修改数据表。所谓修改数据表指的是修改数据库中已经存在的数据表结构,比如,修改表名、修改字段名、修改字段的数据类型等等。在MySQL中,修改数据表的操作都是使用ALTER TABLE语句,接下来,本节将针对修改数据表的相关操作进行详细地讲解,具体如下: 1、 修改表名在数据库中,不同的数据表是通过表名来区分的。在MySQL中,修改表名的基本语法格式如下所示:ALT
37、ER TABLE 旧表名 RENAME TO 新表名;在上述格式中,“旧表名”指的是修改前的表名,“新表名”指的是修改后的表名,关键字TO是可选的,其在SQL语句中是否出现不会影响语句的执行。【例2-9】将数据库itcast中的tb_grade表名改为grade表。在修改数据库表名之前,首先使用SHOW TABLES语句查看数据库中的所有表,执行结果如下:mysql> SHOW TABLES;+-+| Tables_in_itcast |+-+| tb_grade |+-+1 row in set (0.00 sec)上述语句执行完毕后,使用ALTER TABLE将表名tb_grade修
38、改为grade,SQL语句如下:ALTER TABLE tb_grade RENAME TO grade;为了检测表名是否修改正确,再次使用SHOW TABLES语句查看数据库中的所有表,执行结果如下所示:mysql> SHOW TABLES;+-+| Tables_in_itcast |+-+| grade |+-+1 row in set (0.00 sec)从上述执行结果可以看出,数据库中的tb_grade表名成功被修改为grade了。2、 修改字段名数据表中的字段是通过字段名来区分的。在MySQL中,修改字段名的基本语法格式如下所示:ALTER TABLE 表名 CHANGE 旧
39、字段名 新字段名 新数据类型;在上述格式中,“旧字段名”指的是修改前的字段名,“新字段名”指的是修改后的字段名,“新数据类型”指的是修改后的数据类型。需要注意的是,新数据类型不能为空,即使新字段与旧字段的数据类型相同,也必须将新数据类型设置为与原来一样的数据类型。【例2-10】将数据表grade中的name字段改为username,数据类型保持不变,SQL语句如下所示:ALTER TABLE grade CHANGE name username VARCHAR(20);为了验证字段名是否修改成功,通过DECS语句查看grade表的结构,执行结果如下所示:mysql> DESC grade
40、;+-+-+-+-+-+-+| Field | Type | Null | Key | Default | Extra |+-+-+-+-+-+-+| id | int(11) | YES | | NULL | | username | varchar(20)| YES | | NULL | | grade | float | YES | | NULL | |+-+-+-+-+-+-+3 rows in set (0.17 sec)从上述执行结果可以看出,数据表grade中的字段名name成功修改成了username。3、 修改字段的数据类型修改字段的数据类型,就是将字段的数据类型转为另外一种
41、数据类型。在MySQL中修改字段数据类型的基本语法格式如下所示:ALTER TABLE 表名 MODIFY 字段名 数据类型;在上述格式中,“表名”指的是要修改字段所在的表名,“字段名”指的是要修改的字段,“数据类型”指的是修改后的字段的数据类型。【例2-11】将数据表grade中的id字段的数据类型由INT(11)修改为INT(20)。在执行修改字段的数据类型之前,首先使用DESC查看grade表的结构,如下所示:mysql> DESC grade;+-+-+-+-+-+-+| Field | Type | Null | Key | Default | Extra |+-+-+-+-+
42、-+-+| id | int(11) | YES | | NULL | | username | varchar(20) | YES | | NULL | | grade | float | YES | | NULL | |+-+-+-+-+-+-+3 rows in set (0.00 sec)从上述执行结果可以看出,id字段的数据类型为INT(11)。接下来,使用ALTER语句修改id字段的数据类型,SQL语句如下所示:ALTER TABLE grade MODIFY id INT(20);为了验证id字段的数据类型是否修改成功,再次使用DECS查看grade数据表,执行结果如下:mysq
43、l> DESC grade;+-+-+-+-+-+-+| Field | Type | Null | Key | Default | Extra |+-+-+-+-+-+-+| id | int(20) | YES | | NULL | | username | varchar(20) | YES | | NULL | | grade | float | YES | | NULL | |+-+-+-+-+-+-+3 rows in set (0.00 sec)从上述结果可以看出,grade表中的id字段的数据类型成功被修改成了INT(20)。4、 添加字段在创建数据表时,表中的字段就已经
44、定义好了。但是,如果想在创建好的数据表中添加字段,则需要通过ALTER TABLE语句进行增加。在MySQL中,添加字段的基本语法格式如下所示:ALTER TABLE 表名 ADD 新字段名 数据类型 约束条件FIRST|AFTER 已存在字段名在上述格式中,“新字段名”为添加字段的名称,“FIRST”为可选参数,用于将新添加的字段设置为表的第一个字段,“AFTER”也为可选参数,用于将新添加的字段添加到指定的“已存在字段名”的后面。【例2-12】在数据表grade中添加一个没有约束条件的INT类型的字段age,SQL语句如下:ALTER TABLE grade ADD age INT(10)
45、;为了验证字段age是否添加成功,接下来,使用DESC语句查看数据表grade,执行结果如下:mysql> DESC grade;+-+-+-+-+-+-+| Field | Type | Null | Key | Default | Extra |+-+-+-+-+-+-+| id | int(20) | YES | | NULL | | username | varchar(20) | YES | | NULL | | grade | float | YES | | NULL | | age | int(10) | YES | | NULL | |+-+-+-+-+-+-+4 row
46、s in set (0.11 sec)从上述执行结果可以看出,grade表中添加了一个age字段,并且字段的数据类型为INT(10)。5、删除字段数据表创建成功后,不仅可以修改字段,还可以删除字段。所谓删除字段指的是将某个字段从表中删除。在MySQL中,删除字段的基本语法格式如下所示:ALTER TABLE 表名 DROP 字段名;在上述格式中,“字段名”指的是要删除的字段的名称。【例2-13】删除grade表中的age字段,SQL语句如下:ALTER TABLE grade DROP age;为了验证age字段是否删除,接下来,使用DESC语句查看grade表,执行结果如下:mysql> DESC grade;+-+-+-+-+-+-+| Field | Type | Null | Key | Default | Extra |+-+-+-+-+-+-+| id | int(20) | YES | | NULL | | username
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论