《3 数据库和数据表的基本操作ppt课件.pptx》由会员分享,可在线阅读,更多相关《3 数据库和数据表的基本操作ppt课件.pptx(78页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、学习目标掌握数据库的基本操作、数据表的基本操作、表的约束13了解数据类型2熟悉数据库的类型掌 握了解熟悉数据库的基础操作3.13.1数据类型3.23.23.33.3数据表的基本操作目录表的约束3 3.4 .4设置表的字段值自动增加3 3.5 .53 3.6 .6综合案例目录3.1 数据库的基本操作创建数据库就是在数据库系统中划分一块存储数据的空间,MySQL中,创建数据库的基本语法格式如下所示:【例3-1】创建一个名称为jwxt的数据库,SQL语句如下所示:CREATE DATABASE 数据库名称;CREATE DATABASE jwxt;3.1.1 人工管理阶段执行结果如下所示:3.1 数
2、据库的基本操作mysql CREATE DATABASE jwxt;Query OK, 1 row affected (0.01 sec)3.1 数据库的基本操作为了验证数据库系统中是否创建了名称为xxgc的数据库,需要查看数据库,在MySQL中,查看数据库的SQL语句如下所示:【例3-2】使用SHOW语句查看已经存在的数据库,执行结果如下所示:SHOW DATABASES;3.1.2 查看数据库3.1 数据库的基本操作【例3-2】使用SHOW语句查看已经存在的数据库,执行结果如下所示:mysql show databases;+-+| Database |+-+| information_s
3、chema | jwxt | mysql | mysqlexam | performance_schema | sys |+-+6 rows in set (0.00 sec)3.1 数据库的基本操作创建好数据库之后,要想查看某个已经创建的数据库信息,可以通过SHOW CREATE DATABASE语句查看,具体语法格式如下所示:SHOW CREATE DATABASE 数据库名称;3.1.2 查看数据库3.1 数据库的基本操作【例3-3】查看创建好的数据库jwxt的信息,SQL语句如下所示:执行结果如下所示:SHOW CREATE DATABASE jwxt;mysql SHOW CREAT
4、E DATABASE jwxt;+-+-+| Database | Create Database |+-+-+| jwxt | CREATE DATABASE jwxt /*!40100 DEFAULT CHARACTER SET utf8 */ |+-+-+1 row in set (0.02 sec)3.1.2 查看数据库3.1 数据库的基本操作MySQL数据库一旦安装成功,创建的数据库编码也就确定了。但如果想修改数据库的编码,可以使用ALTER DATABASE语句实现。修改数据库编码的基本语法格式如下所示:在上述格式中,“数据库名称”指的是要修改的数据库,“编码方式”指的是修改后的数
5、据库编码。ALTER DATABASE 数据库名称 DEFAULT CHARACTER SET 编码方式 COLLATE 编码方式_bin3.1.2 查看数据库3.1 数据库的基本操作【例3-4】将数据库jwxt的编码修改为utf8,SQL语句如下所示:为了验证数据库的编码是否修改成功,接下来,使用SHOW CREATE DATABASE语句查看修改后的数据库,执行结果如下:ALTER DATABASE jwxt DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;mysql show create database jwxt;+-+-+| D
6、atabase | Create Database |+-+-+| jwxt | CREATE DATABASE jwxt /*!40100 DEFAULT CHARACTER SET utf8 */ |+-+-+1 row in set (0.00 sec)3.1.3修改数据库删除数据库是将数据库系统中已经存在的数据库删除。成功删除数据库后,数据库中的所有数据都将被清除,原来分配的空间也将被回收。在MySQL中,删除数据库的基本语法格式如下所示:需要注意的是,如果要删除的数据库不存在,则系统会报错。如果不想系统报错是,可以使用如下删除数据库的基本语法:3.1 数据库的基本操作DROP DAT
7、ABASE 数据库名称;DROP DATABASE IF EXISTS 数据库名称;3.1.4 删除数据库3.1 数据库的基本操作【例3-5】删除名称为jwxt的数据库,SQL语句如下所示:为了验证删除数据库的操作是否成功,接下来,使用SHOW DATABASES语句查看已经存在的数据库。DROP DATABASE jwxt;3.1.4 删除数据库一.整数类型3.2 数据类型根据数值取值范围的不同,MySQL中的整数类型可分为5种,分别是TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT,表2-1列举了MySQL不同整数类型所对应的字节大小和取值范围(1byte=8bi
8、t,11111111b=255d)。从表3-1中可以看出,不同整数类型所占用的字节数和取值范围都是不同的。数据类型数据类型字节字节数数无符号数的取值范围无符号数的取值范围有符号数的取值范围有符号数的取值范围TINYINT10255-128127SMALLINT2065535-3276832768MEDIUMINT3016777215-83886088388608INT404294967295-21474836482147483648BIGINT8018446744073709551615-92233720368547758089223372036854775807二. 浮点数类型和定点数类型3
9、.2 数据类型在MySQL数据库中,存储的小数都是使用浮点数和定点数来表示的。浮点数的类型有两种,分别是单精度浮点数类型(FLOAT)和双精度浮点类型(DOUBLE)。而定点数类型只有DECIMAL类型。表3-2列举了MySQL中浮点数和定点数类型所对应的字节大小及其取值范围。表表3-2 MySQL浮点数和定点数类型浮点数和定点数类型三. 日期与时间类型3.2 数据类型为了方便在数据库中存储日期和时间,MySQL提供了表示日期和时间的数据类型,分别是YEAR、DATE、TIME、ATETIMDE和TIMESTAMP,表3-3列举了这些MySQL中日期和时间数据类型所对应的字节数、取值范围、日期
10、格式以及零值。表表3-3 MySQL日期和时间类型日期和时间类型三. 日期与时间类型3.2 数据类型如果插入的数值不合法,系统会自动将对应的零值插入数据库中。为了大家更好地学习日期和时间类型,接下来,将表2-3中的类型进行详细讲解,具体如下:1、YEAR类型YEAR类型用于表示年份,在MySQL中,可以使用以下三种格式指定YEAR类型的值:(1)使用4位字符串或数字表示,范围为19012155或19012155。3.2 数据类型(2)使用2位字符串表示,范围为0099(3)使用2位数字表示,范围为199需要注意的是,当使用YEAR类型时,一定要区分0和0。因为字符串格式的0表示的是YEAR值是
11、2000,而数字格式的0表示的YEAR值是0000。三. 日期与时间类型3.2 数据类型2、DATE类型DATE类型用于表示日期值,不包含时间部分。在MySQL中,可以使用以下四种格式指定DATE类型的值:(1)以YYYY-MM-DD或者YYYYMMDD字符串格式表示。(2)以YY-MM-DD或者YYMMDD字符串格式表示。(3)以YY-MM-DD或者YYMMDD数字格式表示。(4)使用CURRENT_DATE或者NOW()表示当前系统日期。三. 日期与时间类型3.2 数据类型3、TIME类型TIME类型用于表示时间值,它的显示形式一般为HH:MM:SS,其中,HH表示小时,MM表示分,SS表
12、示秒。在MySQL中,可以使用以下三种格式指定TIME类型的值:(1)以D HH:MM:SS字符串格式表示。(2)以HHMMSS字符串格式或者HHMMSS数字格式表示。(3)使用CURRENT_TIME或NOW()输入当前系统时间。三. 日期与时间类型3.2 数据类型4、DATETIME类型DATETIME类型用于表示日期和时间,它的显示形式为YYYY-MM-DD HH:MM:SS,其中,YYYY表示年,MM表示月,DD表示日,HH表示小时,MM表示分,SS表示秒。在MySQL中,可以使用以下四种格式指定DATETIME类型的值:(1)以YYYY-MM-DD HH:MM:SS或者YYYYMMD
13、DHHMMSS字符串格式表示的日期和时间,取值范围为1000-01-01 00:00:009999-12-3 23:59:59。三. 日期与时间类型3.2 数据类型(2)以YY-MM-DD HH:MM:SS或者YYMMDDHHMMSS字符串格式表示的日期和时间,其中YY表示年,取值范围为0099。(3)以YYYYMMDDHHMMSS或者YYMMDDHHMMSS数字格式表示的日期和时间。(4)使用NOW来输入当前系统的日期和时间。三. 日期与时间类型3.2 数据类型5、TIMESTAMP类型TIMESTAMP类型用于表示日期和时间,它的显示形式同DATETIME相同,但取值范围比DATETIME
14、小。下面介绍几种TIMESTAMP类型与DATATIME类型不同的形式,具体如下:(1)使用CURRENT_TIMESTAMP来输入系统当前日期和时间。(2)输入NULL时,系统会输入系统当前日期和时间。(3)无任何输入时,系统会输入系统当前日期和时间。三. 日期与时间类型3.2 数据类型为了存储字符串、图片和声音等数据,MySQL提供了字符串和二进制类型,表3-4列举了MySQL中的字符串和二进制类型。四.字符串和二进制类型3.2 数据类型表3-4列举的字符串和二进制类型中,不同数据类型具有不同的特点,接下来,针对这些数据类型进行详细地讲解,具体如下:1、CHAR和VARCHAR类型CHAR
15、和VARCHAR类型都用来表示字符串数据,不同的是,VARCHAR可以存储可变长度的字符串。在MySQL中,定义CHAR和VARCHAR类型的方式如下所示:在上述定义方式中,M指的是字符串的最大长度。CHAR(M) 或 VARCHAR(M)四.字符串和二进制类型3.2 数据类型为了帮助大家更好地理解CHAR和VARCHAR之间的区别,接下来,以CHAR(4)和VARCHAR(4)为例进行说明,具体如表3-5所示。从表3-5中可以看出,当数据为CHAR(4)类型时,不管插入值的长度是多少,所占用的存储空间都是4个字节,而VARCHAR(4)所对应的数据所占用的字节数为实际长度加1。表表3-5 C
16、HAR(4)和和VARCHAR(4)对比对比插入值插入值CHAR(4)存储需求存储需求VARCHAR(4)存储需求存储需求4个字节1个字节abab4个字节ab3个字节abcabc4个字节abc4个字节abcdabcd4个字节abcd5个字节abcdefabcd4个字节abcd5个字节四.字符串和二进制类型3.2 数据类型2、BINARY和VARBINARY类型BINARY和VARBINARY类型类似于CHAR和VARCHAR,不同的是,它们所表示的是二进制数据。定义BINARY和VARBINARY类型的方式如下所示:需要注意的是,BINARY类型的长度是固定的,如果数据的长度不足最大长度,将在
17、数据的后面用“0”补齐,最终达到指定长度。BINARY(M) 或 VARBINARY(M)四.字符串和二进制类型3.2 数据类型3、TEXT类型TEXT类型用于表示大文本数据,例如,文章内容、评论等,它的类型分为四种,具体如表3-6所示。表表3-6 TEXT类型类型数据类型数据类型存储范围存储范围TINYTEXT0255字节TEXT065535字节MEDIUMTEXT016777215字节LONGTEXT04294967295字节四.字符串和二进制类型3.2 数据类型4、BLOB类型(Binary Large OBjects)BLOB类型是一种特殊的二进制类型,它用于表示数据量很大的二进制数据
18、,例如图片、PDF文档等。BLOB类型分为四种,具体如表3-7所示。需要注意的是,BLOB类型与TEXT类型很相似,但BLOB类型数据是根据二进制编码进行比较和排序,而TEXT类型数据是根据文本模式进行比较和排序。表表3-7 BLOB类型类型数据类型数据类型存储范围存储范围TINYBLOB0255字节BLOB065535字节MEDIUMBLOB016777215字节LONGBLOB04294967295字节四.字符串和二进制类型3.2 数据类型5、ENUM类型ENUM类型又称为枚举类型。定义ENUM类型的数据格式如下所示:在上述格式中,(值1, 值2, 值3值n)称为枚举列表,ENUM类型的数
19、据只能从枚举列表中取,并且只能取一个。需要注意的是,枚举列举中的每个值都有一个顺序编号,MySQL中存入的就是这个顺序编号,而不是列表中的值。ENUM(值1, 值2, 值3值n)四.字符串和二进制类型1.4 数据类型6、SET类型SET类型用于表示字符串对象,它的值可以有零个或多个,SET类型数据的定义格式与ENUM类型类似,具体语法格式如下所示: 与ENUM类型相同,(值1, 值2, 值3值n)列表中的每个值都有一个顺序编号,MySQL中存入的也是这个顺序编号,而不是列表中的值。SET(值1, 值2, 值3值n)四.字符串和二进制类型3.2 数据类型7、BIT类型BIT类型用于表示二进制数据
20、。定义BIT类型的基本语法格式如下所示:在上述格式中,M用于表示每个值的位数,范围为164。需要注意的是,如果分配的BIT(M)类型的数据长度小于M,将在数据的左边用0补齐。BIT(M)四.字符串和二进制类型3.3 数据表的基本操作需要注意的是,在操作数据表之前,应该使用“USE 数据库名”指定操作是在哪个数据库中进行,否则会抛出“No database selected”错误。创建数据表的基本语法格式如下所示:CREATE TABLE 表名( 字段名1 数据类型 完整性约束条件, 字段名2 数据类型 完整性约束条件, 字段名n 数据类型 完整性约束条件) ; 3.3.1 创建数据表MySQL
21、对命名数据表有以下原则:名字可以由当前字符集中的任何字母、数字、字符组成,下划线和美元符号也可以;名字最长为64个字符。需要注意的是:因为数据库和表的名字对应于文件夹名和文件名,所以服务器运行的操作系统可以强加额外的限制;虽然MySQL允许数据库和表的名字最长到64个字符,但名字实际的长度可以6受限于所用操作系统限定的长度。3.3 数据表的基本操作【例3-6】数据表是创建在某一个数据库中的,要创建一个数据表,首先要创建或选择一个数据库。比如要创建一个用于存储教师信息的表tb_jsxxb,先选择已有的数据库jwxt,SQL语句如下:USE jwxt;3.3.1 创建数据表3.3 数据表的基本操作
22、创建数据表的SQL语句如下所示:USE jwxt;CREATE TABLE tb_jsxxb(GH CHAR(4), XM VARCHAR(30), XYDM CHAR(2);具体执行结果如下所示:Query OK, 0 rows affected (0.34 sec)3.3 数据表的基本操作3.3 数据表的基本操作1、使用SHOW CREATE TABLE查看数据表在MySQL中,SHOW CREATE TABLE语句不仅可以查看创建表时的定义语句,还可以查看表的字符编码。基本语法格式如下所示:在上述格式中,“表名”指的是要查询数据表的名称。SHOW CREATE TABLE 表名;3.3.
23、2 查看数据表3.3 数据表的基本操作【例3-7】使用SHOW CREATE TABLE语句查看tb_jsxxb表.SHOW CREATE TABLE tb_jsxxb;3.3.2 查看数据表3.3 数据表的基本操作执行结果如下所示:mysql show create table tb_jsxxb;+-+-+| Table | Create Table |+-+-+| tb_jsxxb | CREATE TABLE tb_jsxxb ( GH char(4) NOT NULL, XM varchar(30) NOT NULL, XYDM char(2) NOT NULL, PRIMARY KE
24、Y (GH) ENGINE=InnoDB DEFAULT CHARSET=utf8 |+-+-+1 row in set (0.00 sec)3.3 数据表的基本操作 可以在SHOW CREATE TABLE语句的表名之后加上参数“G”,使显示结果整齐美观,具体执行结果如下所示: mysql show create table tb_jsxxbG * 1. row * Table: tb_jsxxb Create Table: CREATE TABLE tb_jsxxb ( GH char(4) NOT NULL, XM varchar(30) NOT NULL, XYDM char(2) N
25、OT NULL, PRIMARY KEY (GH) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec)3.3.2 查看数据表2、使用DESCRIBE语句查看数据表 在MySQL中,使用DESCRIBE语句可以查看表的字段信息,其中包括字段名、字段类型等信息。DESCRIBE语句的基本语法格式如下所示: 或简写为:3.3.2 查看数据表DESCRIBE 表名;DESC 表名;3.3 数据表的基本操作3.3.2 查看数据表2、使用DESCRIBE语句查看数据表【例3-8】使用DESCRIBE语句查看tb_jsxxb表,SQL语句
26、如下所示:DESCRIBE tb_jsxxb;3.3 数据表的基本操作执行结果如下所示:mysql describe tb_jsxxb;+-+-+-+-+-+-+| Field | Type | Null | Key | Default | Extra |+-+-+-+-+-+-+| GH | char(4) | NO | PRI | NULL | | XM | varchar(30) | NO | | NULL | | XYDM | char(2) | NO | | NULL | |+-+-+-+-+-+-+3 rows in set (0.00 sec)3.3 数据表的基本操作3.3.2
27、查看数据表3.3 数据表的基本操作注意:对执行结果中的不同字段说明如下: NULL:表示该列是否可以存储NULL值。 Key:表示该列是否已经编制索引。 Default:表示该列是否有默认值。 Extra:表示获取到的与给定列相关的附加信息。3.3.3 修改数据表3.3 数据表的基本操作1、修改表名修改表名 在数据库中,不同的数据表是通过表名来区分的。在MySQL中,修改表名的基本语法格式如下所示: 在上述格式中,“旧表名”指的是修改前的表名,“新表名”指的是修改后的表名,关键字TO是可选的,其在SQL语句中是否出现不会影响语句的执行。ALTER TABLE 旧表名 RENAME TO 新表名
28、;3.3 数据表的基本操作【例3-9】将数据库jwxt的表tb_jsxxb表名改为tb_jsxxb2。 首先使用SHOW TABLES语句查看数据库中的所有表,执行结果如下: mysql show tables; +-+ | Tables_in_jwxt | +-+ | tb_jsxxb | +-+ 10 rows in set (0.00 sec) 上述语句执行完毕后,使用ALTER TABLE将tb_jsxxb表名改为tb_jsxxb2,SQL语句如下:ALTER TABLE tb_jsxxb RENAME TO tb_jsxxb2;3.3.3 修改数据表3.3.3 修改数据表3.3 数据
29、表的基本操作 为了检测表名是否修改正确,再次使用SHOW TABLES语句查看数据库中的所有表,执行结果如下所示: mysql SHOW TABLES; +-+ | Tables_in_jwxt | +-+ | tb_jsxxb2 | +-+ 10 row in set (0.01 sec) 从上述执行结果可以看出,数据库中的teacher表名被成功的改为tb_jsxxb2。2、修改字段名修改字段名 数据表中的字段是通过字段名来区分的。在MySQL中,修改字段名的基本语法格式如下所示: 在上述格式中,“旧字段名”指的是修改前的字段名,“新字段名”指的是修改后的字段名,“新数据类型”指的是修改后
30、的数据类型。需要注意的是,新数据类型不能为空,即使新字段与旧字段的数据类型相同,也必须将新数据类型设置为与原来一样的数据类型。ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;3.3.3 修改数据表3.3 数据表的基本操作2、修改字段名修改字段名【例3-10】将tb_jsxxb表中的GH字段改为JSGH,数据类型保持不变,SQL语句如下所示: ALTER TABLE tb_jsxxb CHANGE GH JSGH char(4);3.3.3 修改数据表3.3 数据表的基本操作通过DECS语句查看tb_jsxxb表的结构,执行结果如下所示:mysql describe
31、tb_jsxxb;+-+-+-+-+-+-+| Field | Type | Null | Key | Default | Extra |+-+-+-+-+-+-+| JSGH | char(4) | NO | PRI | NULL | | XM | varchar(30) | NO | | NULL | | XYDM | char(2) | NO | | NULL | |+-+-+-+-+-+-+3 rows in set (0.00 sec)3.3 数据表的基本操作3.3.3 修改数据表3.3 数据表的基本操作3、修改字段的数据类型修改字段的数据类型 修改字段的数据类型,就是将字段的数据类
32、型转为另外一种数据类型。在MySQL中修改字段数据类型的基本语法格式如下所示(任意一种): 在上述格式中,“表名”指的是要修改字段所在的表名,“字段名”指的是要修改的字段,“新数据类型”指的是修改后的字段的数据类型。ALTER TABLE 表名 MODIFY 字段名 新数据类型;ALTER TABLE 表名 CHANGE 字段名 字段名 新数据类型;3.3 数据表的基本操作3、修改字段的数据类型修改字段的数据类型 使用ALTER语句修改GH字段的数据类型为VARCHAR(4),SQL语句如下所示: 为了验证GH字段的数据类型是否修改成功,再次使用DECS查看tb_jsxxb数据表,执行结果如下
33、: mysql describe tb_jsxxb; +-+-+-+-+-+-+ | Field | Type | Null | Key | Default | Extra | +-+-+-+-+-+-+ | GH | varchar(4) | NO | PRI | NULL | | | XM | varchar(30) | NO | | NULL | | | XYDM | char(2) | NO | | NULL | | +-+-+-+-+-+-+ 3 rows in set (0.00 sec)3.3.3 修改数据表ALTER TABLE tb_jsxxb MODIFY GH VARCH
34、AR(4);3.3 数据表的基本操作4、添加字段添加字段 在MySQL中,添加字段的基本语法格式如下所示: 在上述格式中,“新字段名”为添加字段的名称,“FIRST”为可选参数,用于将新添加的字段设置为表的第一个字段,“AFTER 已存在的字段名”也为可选参数,用于将新添加的字段添加到指定的字段名的后面。ALTER TABLE 表名 ADD 新字段名 数据类型 约束条件FIRST|AFTER 已存在字段名 ;3.3.3 修改数据表4、添加字段添加字段【例3-12】在tb_jsxxb表中添加一个没有约束条件的CHAR类型的字段XB,SQL语句如下:ALTER TABLE tb_jsxxb ADD
35、 XB CHAR(4);3.3.3 修改数据表3.3 数据表的基本操作使用DESC语句查看数据表tb_jsxxb,执行结果如下:mysql describe tb_jsxxb;+-+-+-+-+-+-+| Field | Type | Null | Key | Default | Extra |+-+-+-+-+-+-+| GH | char(4) | NO | PRI | NULL | | XM | varchar(30) | NO | | NULL | | XYDM | char(2) | NO | | NULL | | XB | char(4) | YES | | NULL | |+-+
36、-+-+-+-+-+4 rows in set (0.00 sec)3.3 数据表的基本操作5、删除字段、删除字段-所谓删除字段指的是将某个字段从表中删除。在MySQL中,删除字段的基本语法格式如下所示:-在上述格式中,“字段名”指的是要删除的字段的名称。ALTER TABLE 表名 DROP 字段名;3.3.3 修改数据表3.3 数据表的基本操作 5、删除字段、删除字段-【例3-13】删除tb_jsxxb表中的XB字段,SQL语句如下:ALTER TABLE tb_jsxxb DROP XB;3.3.3 修改数据表3.3 数据表的基本操作6、修改字段的排列位置、修改字段的排列位置 在MySQ
37、L中,修改字段排列位置的基本语法格式如下: 在上述格式中,“字段名1”指的是修改位置的字段,“数据类型”指的是字段1的数据类型,“FIRST”为可选参数,指的是将字段1修改为表的第一个字段,“AFTER 字段名2”是将字段1插入到字段2的后面。ALTER TABLE 表名 MODIFY 字段名1 数据类型 FIRST | AFTER 字段名2;3.3.3 修改数据表3.3 数据表的基本操作6、修改字段的排列位置、修改字段的排列位置【例3-14】将tb_jsxxb表中的XYDM字段修改为表中的第一个字段,SQL语句如下: 使用DESC语句查看数据表tb_jsxxb ,执行结果如下: mysql
38、DESC tb_jsxxb; +-+-+-+-+-+-+ | Field | Type | Null | Key | Default | Extra | +-+-+-+-+-+-+ | XYDM | char(2) | YES | | NULL | | | GH | char(4) | NO | PRI | NULL | | | XM | varchar(30) | NO | | NULL | | +-+-+-+-+-+-+ 3 rows in set (0.00 sec)ALTER TABLE tb_jsxxb MODIFY XYDM CHAR(2) FIRST;3.3.3 修改数据表3.3
39、 数据表的基本操作6、修改字段的排列位置、修改字段的排列位置【例3-15】将tb_jsxxb表中的XYDM字段设置在GH字段之后,SQL语句如下: 使用DESC语句查看数据表tb_jsxxb ,执行结果如下: mysql DESC tb_jsxxb; +-+-+-+-+-+-+ | Field | Type | Null | Key | Default | Extra | +-+-+-+-+-+-+ | GH | char(4) | NO | PRI | NULL | | | XYDM | char(2) | YES | | NULL | | | XM | varchar(30) | NO |
40、 | NULL | | +-+-+-+-+-+-+ 3 rows in set (0.00 sec)ALTER TABLE tb_jsxxb MODIFY XYDM CHAR(2) AFTER GH;3.3.3 修改数据表3.3 数据表的基本操作 删除数据表是指删除数据库中已存在的表,在删除数据表的同时,数据表中存储的数据都将被删除。 在MySQL中,直接使用DROP TABLE语句就可以删除没有被其它表关联的数据表,其基本的语法格式如下所示: 在上述格式中,“表名”指的是要删除的数据表。DROP TABLE 表名;3.3.4 删除数据表3.3 数据表的基本操作【例3-16】删除tb_jsxx
41、b表,SQL语句如下: 使用DESC语句查看数据表,执行结果如下:DROP TABLE tb_jsxxb;mysql DESC tb_jsxxb;ERROR 1146 (42S02): Table tb_jsxxb doesnt exist3.3.4 删除数据表3.3 数据表的基本操作3.4 数据表的约束 为了防止数据表中插入错误的数据,在MySQL中,定义了一些维护数据库完整性的规则,即表的约束。表3-9列举了常见的表的约束。约束条件约束条件说明说明PRIMARY KEY主键约束,用于唯一标识对应的记录FOREIGN KEY外键约束NOT NULL非空约束UNIQUE唯一性约束 DEFAUL
42、T默认值约束,用于设置字段的默认值表3-9 表的约束 在MySQL中,为了快速查找表中的某条信息,可以通过设置主键来实现。 主键约束是通过PRIMARY KEY定义的,它可以唯一标识表中的记录,就好比身份证可以用来标识人的身份一样。 在MySQL中,主键约束分为两种,具体如下: 1、单字段主键(可做列级约束,也可做表级约束) 2、多字段主键(只可做表级约束)3.4 数据表的约束3.4.1 PRIMARY KEY CONSTRAINT (主键约束)3.4 数据表的约束1、单字段主键 单字段主键指的是由一个字段构成的主键,其基本的语法格式如下所示:【例3-17】创建一个tb_xbdmb表,设置XB
43、DM作为主键,SQL语句如下: 上述SQL语句执行后, tb_xbdmb表中创建了XBDM 和 XBMC二个字段,其中, XBDM字段是主键。字段名 数据类型 PRIMARY KEYCREATE TABLE tb_xbdmb ( XBDM CHAR(1) PRIMARY KEY, XBMC CHAR(2),); 3.4.1 PRIMARY KEY CONSTRAINT (主键约束)3.4.1 PRIMARY KEY CONSTRAINT (主键约束)3.4 数据表的约束2、复合主键 多字段主键指的是多个字段组合而成的主键,其基本的语法格式如下所示:【例3-20】创建一个tb_xscjb表,其中
44、XH,KCDM作为复合主键,SQL语句如下:PRIMARY KEY (字段名1,字段名2,字段名n)需要注意的是:每个数据表中最多只能有一个主键约束,定义为PRIMARY KEY的字段不能有重复值且不能为NULL值。CREATE TABLE tb_xscjb ( XH CHAR (12), KCDM CHAR(8), ZKCJ VARCHAR (10), PRIMARY KEY (XH,ZKCJ); 3.4 数据表的约束 外键用来在两个表的数据之间建立关联,它可以是一个列或者多个列。一个表可以有一个或者多个外键。【例3-22】创建学院代码表tb_xydmb和学生信息表tb_xsxxb,并在学生
45、信息表上创建外键(外键不属于表主键的称为从表,反之关联表为主表)。 Step1:先创建主表tb_xydmb Step2:再创建从表tb_xsxxbCREATE TABLE tb_xsxxb ( XH CHAR(12) PRIMARY KEY, XYDM CHAR(1) CONSTRAINT FK_XYDM FOREIGN KEY (XYDM) REFERENCES jwxt.tb_xydmb (XYDM) ON DELETE CASCADE ON UPDATE); create table tb_xydmb ( XYDM CHAR(1) PRIMARY KEY, XYMC VARCHAR(30
46、);3.4.2 FOREIGN KEY CONSTRAINT (外键约束)3.4.3 NOT NULL CONSTRAINT (非空约束)非空约束指的是字段的值不能为NULL,在MySQL中,非空约束是通过NOT NULL定义的,其基本的语法格式如下所示:【例3-25】创建一个学生照片表tb_xszpb,并设置XH作为主键,表中的XH字段设置为非空约束,SQL语句如下:需要注意的是,在同一个数据表中可以定义多个非空字段。字段名 数据类型 NOT NULL;CREATE TABLE tb_xszpb ( XH CHAR(12) NOT NULL PRIMARY KEYZP blob);3.4 数
47、据表的约束3.4.4UNIQUE CONSTRAINT (唯一约束)唯一约束用于保证数据表中字段的唯一性,即表中字段的值不能重复出现。唯一约束是通过UNIQUE定义的,其基本的语法格式如下所示:【例3-28】创建一个专业代码表tb_zydmb,并设置ZYDM作为主键,表中的ZYMC字段设置为非空约束且唯一约束,SQL语句如下:字段名 数据类型 UNIQUE;CREATE TABLE tb_zydmb ( ZYDM CHAR(2) PRIMARY KEY, ZYMC VARCHAR(30) NOT NULL UNIQUE); 3.4 数据表的约束默认约束用于给数据表中的字段指定默认值,即当在表中
48、插入一条新记录时,如果没有给这个字段赋值,那么,数据库系统会自动为这个字段插入默认值。默认值是通过DEFAULT关键字定义的。 默认约束基本的语法格式如下所示:【例3-31】创建一个班级代码表tb_bjdmb2,表中的BJRS字段,数据类型TINYINT,非空,默认值为0,SQL语句如下:字段名 数据类型 DEFAULT 默认值;CREATE TABLE tb_bjdmb2 (BJDM CHAR(2),BJRS TINYINT NOT NULL DEFAULT 0);3.4.5DEFAULT CONSTRAINT (默认约束)3.4 数据表的约束3.5 设置表的字段值自动增加在数据表中,若想为
49、表中插入的新记录自动生成唯一的ID,可以使用AUTO_INCREMENT约束来实现。 AUTO_INCREMENT约束的字段可以是任何整数类型。 默认情况下,该字段必须是主键,且值是从1开始自增的。 使用AUTO_INCREMENT设置表字段值自动增加的基本语法格式如下所示:【例3-34】创建一个学生信息表tb_xsxxb2表,并设置xsid作为主键,且其值自动增加,SQL语句如下:字段名 数据类型 AUTO_INCREMENT;CREATE TABLE tb_xsxxb2(XSID INT PRIMARY KEY AUTO_INCREMENT,XH CHAR(12),XM VARCHAR(3
50、0);3.6 综合案例-学生选课数据库 学生选课数据库创建语句如下: CREATE DATABASE 学生选课; 3.6.1创建学生选课数据库3.6 综合案例-学生选课数据库序号列名数据类型允许NULL值约束1学号snoCHAR(8)不能为空主键2姓名snameVARCHAR(10)不能为空3性别sgenderCHAR(2)4出生日期sbirthDATE5班级sclassVARCHAR(20)表3-10学生表结构studentInfoCREATE TABLE studentInfo ( sno CHAR(8) PRIMARY KEY NOT NULL, sname VARCHAR(10) NO