版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章数据库和表的基本操作数据表的约束设置表的字段值自动增加数据库的基本操作数据类型数据表的基础操作学习目标掌握数据库的基本操作、数据表的基本操作、表的约束13了解数据类型2熟悉数据库的类型掌握了解熟悉数据库的基础操作3.1数据类型3.23.3数据表的基本操作目录表的约束3.4设置表的字段值自动增加3.53.6综合案例目录3.1数据库的基本操作创建数据库就是在数据库系统中划分一块存储数据的空间,MySQL中,创建数据库的基本语法格式如下所示:【例3-1】创建一个名称为xxgc的数据库,SQL语句如下所示:CREATEDATABASE数据库名称;CREATEDATABASExxgc;1.3.1创建数据库执行结果如下所示:3.1数据库的基本操作mysql>CREATEDATABASExxgc;QueryOK,1rowaffected(0.01sec)3.1数据库的基本操作为了验证数据库系统中是否创建了名称为xxgc的数据库,需要查看数据库,在MySQL中,查看数据库的SQL语句如下所示:【例3-2】使用SHOW语句查看已经存在的数据库,执行结果如下所示:SHOWDATABASES;3.1.2查看数据库3.1数据库的基本操作【例3-2】使用SHOW语句查看已经存在的数据库,执行结果如下所示:mysql>SHOWDATABASES;+--------------------+|Database|+--------------------+|information_schema||mysql||performance_schema||test||xxgc|+--------------------+5rowsinset(0.00sec)3.1数据库的基本操作创建好数据库之后,要想查看某个已经创建的数据库信息,可以通过SHOWCREATEDATABASE语句查看,具体语法格式如下所示:SHOWCREATEDATABASE数据库名称;3.1.2查看数据库3.1数据库的基本操作【例3-3】查看创建好的数据库xxgc的信息,SQL语句如下所示:执行结果如下所示:SHOWCREATEDATABASExxgc;mysql>SHOWCREATEDATABASExxgc;+----------+---------------------------------------------------------------+|Database|CreateDatabase|+----------+---------------------------------------------------------------+|xxgc|CREATEDATABASE`xxgc`/*!40100DEFAULTCHARACTERSETutf8*/|+----------+---------------------------------------------------------------+1rowinset(0.02sec)3.1.2查看数据库
3.1数据库的基本操作MySQL数据库一旦安装成功,创建的数据库编码也就确定了。但如果想修改数据库的编码,可以使用ALTERDATABASE语句实现。修改数据库编码的基本语法格式如下所示:在上述格式中,“数据库名称”指的是要修改的数据库,“编码方式”指的是修改后的数据库编码。ALTERDATABASE数据库名称DEFAULTCHARACTERSET
编码方式
COLLATE编码方式_bin3.1.2查看数据库3.1数据库的基本操作【例3-4】将数据库xxgc的编码修改为gbk,SQL语句如下所示:为了验证数据库的编码是否修改成功,接下来,使用SHOWCREATEDATABASE语句查看修改后的数据库,执行结果如下:ALTERDATABASExxgcDEFAULTCHARACTERSET
gbkCOLLATEgbk_bin;mysql>SHOWCREATEDATABASExxgc;+----------+------------------------------------------------------------------+|Database|CreateDatabase|+----------+------------------------------------------------------------------+|xxgc|CREATEDATABASE`xxgc`/*!40100DEFAULTCHARACTERSETgbkCOLLATEgbk_bin*/|+----------+------------------------------------------------------------------+1rowinset(0.00sec)3.1.3修改数据库删除数据库是将数据库系统中已经存在的数据库删除。成功删除数据库后,数据库中的所有数据都将被清除,原来分配的空间也将被回收。在MySQL中,删除数据库的基本语法格式如下所示:需要注意的是,如果要删除的数据库不存在,则系统会报错。如果不想系统报错是,可以使用如下删除数据库的基本语法:3.1数据库的基本操作DROPDATABASE数据库名称;DROPDATABASEIFEXISTS数据库名称;3.1.4删除数据库
3.1数据库的基本操作【例3-5】删除名称为xxgc的数据库,SQL语句如下所示:为了验证删除数据库的操作是否成功,接下来,使用SHOWDATABASES语句查看已经存在的数据库,执行结果如下所示:DROPDATABASExxgc;mysql>SHOWDATABASES;+--------------------+|Database|+--------------------+|information_schema||mysql||performance_schema||test|+--------------------+4rowsinset(0.13sec)3.1.4删除数据库一.整数类型3.2数据类型根据数值取值范围的不同,MySQL中的整数类型可分为5种,分别是TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT,表2-1列举了MySQL不同整数类型所对应的字节大小和取值范围。从表3-1中可以看出,不同整数类型所占用的字节数和取值范围都是不同的。数据类型字节数无符号数的取值范围有符号数的取值范围TINYINT10~255-128~127SMALLINT20~65535-32768~32768MEDIUMINT30~16777215-8388608~8388608INT40~4294967295-2147483648~2147483648BIGINT80~18446744073709551615-9223372036854775808~9223372036854775808二.浮点数类型和定点数类型3.2数据类型在MySQL数据库中,存储的小数都是使用浮点数和定点数来表示的。浮点数的类型有两种,分别是单精度浮点数类型(FLOAT)和双精度浮点类型(DOUBLE)。而定点数类型只有DECIMAL类型。表3-2列举了MySQL中浮点数和定点数类型所对应的字节大小及其取值范围。表3-2MySQL浮点数和定点数类型三.日期与时间类型3.2数据类型为了方便在数据库中存储日期和时间,MySQL提供了表示日期和时间的数据类型,分别是YEAR、DATE、TIME、ATETIMDE和TIMESTAMP,表3-3列举了这些MySQL中日期和时间数据类型所对应的字节数、取值范围、日期格式以及零值。表3-3MySQL日期和时间类型三.日期与时间类型3.2数据类型如果插入的数值不合法,系统会自动将对应的零值插入数据库中。为了大家更好地学习日期和时间类型,接下来,将表2-3中的类型进行详细讲解,具体如下:1、YEAR类型YEAR类型用于表示年份,在MySQL中,可以使用以下三种格式指定YEAR类型的值:(1)使用4位字符串或数字表示,范围为‘1901’~‘2155’或1901~2155。3.2数据类型(2)使用2位字符串表示,范围为‘00’~‘99’(3)使用2位数字表示,范围为1~99需要注意的是,当使用YEAR类型时,一定要区分'0'和0。因为字符串格式的'0'表示的是YEAR值是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表示秒。在MySQL中,可以使用以下三种格式指定TIME类型的值:(1)以‘DHH:MM:SS’字符串格式表示。(2)以‘HHMMSS’字符串格式或者HHMMSS数字格式表示。(3)使用CURRENT_TIME或NOW()输入当前系统时间。三.日期与时间类型3.2数据类型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’。三.日期与时间类型3.2数据类型(2)以‘YY-MM-DDHH:MM:SS’或者‘YYMMDDHHMMSS’字符串格式表示的日期和时间,其中YY表示年,取值范围为‘00’~‘99’。(3)以YYYYMMDDHHMMSS或者YYMMDDHHMMSS数字格式表示的日期和时间。(4)使用NOW来输入当前系统的日期和时间。三.日期与时间类型3.2数据类型5、TIMESTAMP类型TIMESTAMP类型用于表示日期和时间,它的显示形式同DATETIME相同,但取值范围比DATETIME小。下面介绍几种TIMESTAMP类型与DATATIME类型不同的形式,具体如下:(1)使用CURRENT_TIMESTAMP来输入系统当前日期和时间。(2)输入NULL时,系统会输入系统当前日期和时间。(3)无任何输入时,系统会输入系统当前日期和时间。三.日期与时间类型3.2数据类型为了存储字符串、图片和声音等数据,MySQL提供了字符串和二进制类型,表3-4列举了MySQL中的字符串和二进制类型。四.字符串和二进制类型3.2数据类型表3-4列举的字符串和二进制类型中,不同数据类型具有不同的特点,接下来,针对这些数据类型进行详细地讲解,具体如下:1、CHAR和VARCHAR类型CHAR和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-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个字节四.字符串和二进制类型3.2数据类型2、BINARY和VARBINARY类型BINARY和VARBINARY类型类似于CHAR和VARCHAR,不同的是,它们所表示的是二进制数据。定义BINARY和VARBINARY类型的方式如下所示:需要注意的是,BINARY类型的长度是固定的,如果数据的长度不足最大长度,将在数据的后面用“\0”补齐,最终达到指定长度。BINARY(M)或VARBINARY(M)四.字符串和二进制类型3.2数据类型3、TEXT类型TEXT类型用于表示大文本数据,例如,文章内容、评论等,它的类型分为四种,具体如表3-6所示。表3-6TEXT类型数据类型存储范围TINYTEXT0~255字节TEXT0~65535字节MEDIUMTEXT0~16777215字节LONGTEXT0~4294967295字节四.字符串和二进制类型
3.2数据类型4、BLOB类型BLOB类型是一种特殊的二进制类型,它用于表示数据量很大的二进制数据,例如图片、PDF文档等。BLOB类型分为四种,具体如表3-7所示。需要注意的是,BLOB类型与TEXT类型很相似,但BLOB类型数据是根据二进制编码进行比较和排序,而TEXT类型数据是根据文本模式进行比较和排序。表3-7BLOB类型数据类型存储范围TINYBLOB0~255字节BLOB0~65535字节MEDIUMBLOB0~16777215字节LONGBLOB0~4294967295字节四.字符串和二进制类型3.2数据类型5、ENUM类型ENUM类型又称为枚举类型。定义ENUM类型的数据格式如下所示:在上述格式中,('值1','值2','值3'……'值n')称为枚举列表,ENUM类型的数据只能从枚举列表中取,并且只能取一个。需要注意的是,枚举列举中的每个值都有一个顺序编号,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类型用于表示二进制数据。定义BIT类型的基本语法格式如下所示:在上述格式中,M用于表示每个值的位数,范围为1~64。需要注意的是,如果分配的BIT(M)类型的数据长度小于M,将在数据的左边用0补齐。BIT(M)四.字符串和二进制类型3.3数据表的基本操作需要注意的是,在操作数据表之前,应该使用“USE数据库名”指定操作是在哪个数据库中进行,否则会抛出“Nodatabaseselected”错误。创建数据表的基本语法格式如下所示:CREATETABLE表名(
字段名1数据类型[完整性约束条件],
字段名2数据类型[完整性约束条件],
......
字段名n数据类型[完整性约束条件]);3.3.1创建数据表MySQL对命名数据表有以下原则:名字可以由当前字符集中的任何字母、数字、字符组成,下划线和美元符号也可以;名字最长为64个字符。需要注意的是:因为数据库和表的名字对应于文件夹名和文件名,所以服务器运行的操作系统可以强加额外的限制;虽然MySQL允许数据库和表的名字最长到64个字符,但名字实际的长度可以6受限于所用操作系统限定的长度。3.3数据表的基本操作【例3-6】创建一个用于存储教师信息的表teacher,如表3-8所示。要想创建表3-8所示的数据表,需要首先创建一个数据库,SQL语句如下:选择创建表的数据库,SQL语句如下:CREATEDATABASEXXGC;USEXXGC;3.3.1创建数据表3.3数据表的基本操作创建数据表的SQL语句如下所示:USExxgc;CREATETABLEteacher(idINT(5),nameVARCHAR(10),emailVARCHAR(30);具体执行结果如下所示:QueryOK,0rowsaffected(0.34sec)3.3数据表的基本操作3.3数据表的基本操作1、使用SHOWCREATETABLE查看数据表在MySQL中,SHOWCREATETABLE语句不仅可以查看创建表时的定义语句,还可以查看表的字符编码。基本语法格式如下所示:在上述格式中,“表名”指的是要查询数据表的名称。SHOWCREATETABLE表名;3.3.2查看数据表3.3数据表的基本操作【例3-7】使用SHOWCREATETABLE语句查看teacher表.SHOWCREATETABLEteacher;3.3.2查看数据表3.3数据表的基本操作执行结果如下所示:mysql>SHOWCREATETABLEteacher;+---------+---------------------------------------------------------------+|Table|CreateTable|+---------+---------------------------------------------------------------+|teacher|CREATETABLE`teacher`(`id`int(5)DEFAULTNULL,`name`varchar(10)DEFAULTNULL,`email`varchar(30)DEFAULTNULL)ENGINE=InnoDBDEFAULTCHARSET=utf8|+---------+---------------------------------------------------------------+1rowinset(0.00sec)3.3数据表的基本操作可以在SHOWCREATETABLE语句的表名之后加上参数“\G”,使显示结果整齐美观,具体执行结果如下所示:mysql>SHOWCREATETABLEteacher\G***************************1.row***************************Table:teacherCreateTable:CREATETABLE`teacher`(`id`int(5)DEFAULTNULL,`name`varchar(10)DEFAULTNULL,`email`varchar(30)DEFAULTNULL)ENGINE=InnoDBDEFAULTCHARSET=utf81rowinset(0.00sec)3.3.2查看数据表2、使用DESCRIBE语句查看数据表在MySQL中,使用DESCRIBE语句可以查看表的字段信息,其中包括字段名、字段类型等信息。DESCRIBE语句的基本语法格式如下所示:或简写为:3.3.2查看数据表DESCRIBE表名;DESC表名;3.3数据表的基本操作3.3.2查看数据表2、使用DESCRIBE语句查看数据表【例3-8】使用DESCRIBE语句查看teacher表,SQL语句如下所示:DESCRIBEteacher;3.3数据表的基本操作执行结果如下所示:mysql>DESCRIBEteacher;+-------+-------------+------+-----+---------+-------+|Field|Type|Null|Key|Default|Extra|+-------+-------------+------+-----+---------+-------+|id|int(5)|YES||NULL|||name|varchar(10)|YES||NULL|||email|varchar(30)|YES||NULL||+-------+--------------+------+-----+---------+-------+3rowsinset(0.02sec)3.3数据表的基本操作3.3.2查看数据表3.3数据表的基本操作注意:对执行结果中的不同字段说明如下:NULL:表示该列是否可以存储NULL值。Key:表示该列是否已经编制索引。Default:表示该列是否有默认值。Extra:表示获取到的与给定列相关的附加信息。3.3.3修改数据表3.3数据表的基本操作1、修改表名在数据库中,不同的数据表是通过表名来区分的。在MySQL中,修改表名的基本语法格式如下所示:在上述格式中,“旧表名”指的是修改前的表名,“新表名”指的是修改后的表名,关键字TO是可选的,其在SQL语句中是否出现不会影响语句的执行。ALTERTABLE旧表名RENAME[TO]新表名;3.3数据表的基本操作【例3-9】将数据库xxgc的表teacher表名改为xxgc_teacher。首先使用SHOWTABLES语句查看数据库中的所有表,执行结果如下:mysql>SHOWTABLES;+----------------+|Tables_in_xxgc|+----------------+|teacher|+----------------+1rowinset(0.00sec)上述语句执行完毕后,使用ALTERTABLE将teacher表名改为xxgc_teacher,SQL语句如下:ALTERTABLEtb_gradeRENAMETOxxgc_teacher;3.3.3修改数据表3.3.3修改数据表3.3数据表的基本操作为了检测表名是否修改正确,再次使用SHOWTABLES语句查看数据库中的所有表,执行结果如下所示:mysql>SHOWTABLES;+----------------+|Tables_in_xxgc|+----------------+|xxgc_teacher|+----------------+1rowinset(0.01sec)从上述执行结果可以看出,数据库中的teacher表名被成功的改为xxgc_teacher。
2、修改字段名数据表中的字段是通过字段名来区分的。在MySQL中,修改字段名的基本语法格式如下所示:在上述格式中,“旧字段名”指的是修改前的字段名,“新字段名”指的是修改后的字段名,“新数据类型”指的是修改后的数据类型。需要注意的是,新数据类型不能为空,即使新字段与旧字段的数据类型相同,也必须将新数据类型设置为与原来一样的数据类型。ALTERTABLEtb_gradeRENAMETOxxgc_teacher;3.3.3修改数据表3.3数据表的基本操作2、修改字段名【例3-10】将xxgc_teacher表中的id字段改为wordid,数据类型保持不变,SQL语句如下所示:ALTERTABLExxgc_teacherCHANGEidworkidINT(5);3.3.3修改数据表3.3数据表的基本操作通过DECS语句查看xxgc_teacher表的结构,执行结果如下所示:mysql>DESCxxgc_teacher;+-------+-------------+------+-----+---------+-------+|Field|Type|Null|Key|Default|Extra|+-------+-------------+------+-----+---------+-------+|id|int(5)|YES||NULL|||email|varchar(30)|YES||NULL|||name|varchar(10)|YES||NULL||+-------+-------------+------+-----+---------+-------+3rowsinset(0.02sec)3.3数据表的基本操作2.3.3修改数据表2.3数据表的基本操作3、修改字段的数据类型修改字段的数据类型,就是将字段的数据类型转为另外一种数据类型。在MySQL中修改字段数据类型的基本语法格式如下所示:在上述格式中,“表名”指的是要修改字段所在的表名,“字段名”指的是要修改的字段,“新数据类型”指的是修改后的字段的数据类型。ALTERTABLE表名MODIFY字段名
新数据类型;3.3数据表的基本操作3、修改字段的数据类型使用ALTER语句修改workid字段的数据类型,SQL语句如下所示:为了验证workid字段的数据类型是否修改成功,再次使用DECS查看xxgc_teacher数据表,执行结果如下:mysql>DESCxxgc_teacher;+--------+-------------+------+-----+---------+-------+|Field|Type|Null|Key|Default|Extra|+--------+-------------+------+-----+---------+-------+|workid|int(8)|YES||NULL|||email|varchar(30)|YES||NULL|||name|varchar(10)|YES||NULL||+--------+-------------+------+-----+---------+-------+3rowsinset(0.10sec)3.3.3修改数据表ALTERTABLExxgc_teacherDROPemail;
3.3.3修改数据表3、修改字段的数据类型使用ALTER语句修改workid字段的数据类型,SQL语句如下所示:为了验证workid字段的数据类型是否修改成功,再次使用DECS查看xxgc_teacher数据表,执行结果如下:mysql>DESCxxgc_teacher;+--------+-------------+------+-----+---------+-------+|Field|Type|Null|Key|Default|Extra|+--------+-------------+------+-----+---------+-------+|workid|int(8)|YES||NULL|||email|varchar(30)|YES||NULL|||name|varchar(10)|YES||NULL||+--------+-------------+------+-----+---------+-------+3rowsinset(0.10sec)ALTERTABLExxgc_teacherMODIFYworkidINT(8);3.3数据表的基本操作3.3数据表的基本操作4、添加字段在MySQL中,添加字段的基本语法格式如下所示:在上述格式中,“新字段名”为添加字段的名称,“FIRST”为可选参数,用于将新添加的字段设置为表的第一个字段,“AFTER已存在的字段名”也为可选参数,用于将新添加的字段添加到指定的字段名的后面。ALTERTABLE表名
ADD新字段名
数据类型[约束条件][FIRST|AFTER已存在字段名];3.3.3修改数据表4、添加字段【例3-12】在xxgc_teacher表中添加一个没有约束条件的INT类型的字段age,SQL语句如下:
ALTERTABLExxgc_teacherADDageINT(4);3.3.3修改数据表3.3数据表的基本操作使用DESC语句查看数据表xxgc_teacher,执行结果如下:mysql>DESCxxgc_teacher;+--------+-------------+------+-----+---------+-------+|Field|Type|Null|Key|Default|Extra|+--------+-------------+------+-----+---------+-------+|workid|int(8)|YES||NULL|||email|varchar(30)|YES||NULL|||name|varchar(10)|YES||NULL|||age|int(4)|YES||NULL||+--------+-------------+------+-----+---------+-------+4rowsinset(0.01sec)3.3数据表的基本操作5、删除字段-所谓删除字段指的是将某个字段从表中删除。在MySQL中,删除字段的基本语法格式如下所示:-在上述格式中,“字段名”指的是要删除的字段的名称。ALTERTABLE表名DROP字段名;3.3.3修改数据表3.3数据表的基本操作5、删除字段-【例3-13】删除xxgc_teacher表中的email字段,SQL语句如下:ALTERTABLExxgc_teacherDROPemail;3.3.3修改数据表3.3数据表的基本操作3.3数据表的基本操作使用DESC语句查看xxgc_teacher表,执行结果如下:mysql>DESCxxgc_teacher;+--------+-------------+------+-----+---------+-------+|Field|Type|Null|Key|Default|Extra|+--------+-------------+------+-----+---------+-------+|workid|int(8)|YES||NULL|||name|varchar(10)|YES||NULL|||age|int(4)|YES||NULL||+--------+-------------+------+-----+---------+-------+3rowsinset(0.01sec)6、修改字段的排列位置在MySQL中,修改字段排列位置的基本语法格式如下:在上述格式中,“字段名1”指的是修改位置的字段,“数据类型”指的是字段1的数据类型,“FIRST”为可选参数,指的是将字段1修改为表的第一个字段,“AFTER字段名2”是将字段1插入到字段2的后面。ALTERTABLE表名MODIFY字段名1数据类型FIRST|AFTER字段名2;3.3.3修改数据表3.3数据表的基本操作6、修改字段的排列位置【例3-14】将xxgc_teacher表中的name字段修改为表中的第一个字段,SQL语句如下:使用DESC语句查看数据表xxgc_teacher,执行结果如下:mysql>DESCxxgc_teacher;+--------+-------------+------+-----+---------+-------+|Field|Type|Null|Key|Default|Extra|+--------+-------------+------+-----+---------+-------+|name|varchar(10)|YES||NULL|||workid|int(8)|YES||NULL|||age|int(4)|YES||NULL||+--------+-------------+------+-----+---------+-------+3rowsinset(0.03sec)ALTERTABLExxgc_teacherMODIFYnameVARCHAR(10)FIRST;3.3.3修改数据表3.3数据表的基本操作6、修改字段的排列位置【例3-15】将xxgc_teacher表中的workid字段设置在age字段之后,SQL语句如下:使用DESC语句查看数据表xxgc_teacher,执行结果如下:mysql>DESCxxgc_teacher;+--------+-------------+------+-----+---------+-------+|Field|Type|Null|Key|Default|Extra|+--------+-------------+------+-----+---------+-------+|name|varchar(10)|YES||NULL|||age|int(4)|YES||NULL|||workid|int(8)|YES||NULL||+--------+-------------+------+-----+---------+-------+3rowsinset(0.02sec)ALTERTABLExxgc_teacherMODIFYworkidINT(8)AFTERage;3.3.3修改数据表3.3数据表的基本操作
删除数据表是指删除数据库中已存在的表,在删除数据表的同时,数据表中存储的数据都将被删除。在MySQL中,直接使用DROPTABLE语句就可以删除没有被其它表关联的数据表,其基本的语法格式如下所示:
在上述格式中,“表名”指的是要删除的数据表。DROPTABLE表名;3.3.4删除数据表3.3数据表的基本操作【例3-16】删除xxgc_teacher表,SQL语句如下:使用DESC语句查看数据表,执行结果如下:DROPTABLExxgc_teacher;mysql>DESCxxgc_teacher;ERROR1146(42S02):Table'xxgc.xxgc_teacher'doesn'texist3.3.4删除数据表3.3数据表的基本操作3.4数据表的约束为了防止数据表中插入错误的数据,在MySQL中,定义了一些维护数据库完整性的规则,即表的约束。表3-9列举了常见的表的约束。约束条件说明PRIMARYKEY主键约束,用于唯一标识对应的记录FOREIGNKEY外键约束NOTNULL非空约束UNIQUE唯一性约束
DEFAULT默认值约束,用于设置字段的默认值表3-9表的约束
在MySQL中,为了快速查找表中的某条信息,可以通过设置主键来实现。主键约束是通过PRIMARYKEY定义的,它可以唯一标识表中的记录,就好比身份证可以用来标识人的身份一样。在MySQL中,主键约束分为两种,具体如下:1、单字段主键(可做列级约束,也可做表级约束)2、多字段主键(只可做表级约束)3.4数据表的约束3.4.1PRIMARYKEYCONSTRAINT(主键约束)3.4数据表的约束1、单字段主键单字段主键指的是由一个字段构成的主键,其基本的语法格式如下所示:
【例3-17】创建一个company表,设置company_id作为主键,SQL语句如下:
上述SQL语句执行后,company表中创建了id、name和address三个字段,其中,id字段是主键。字段名数据类型PRIMARYKEYCREATETABLEcompany(company_idINT(11)PRIMARYKEY,company_nameVARCHAR(50),company_addressVARCHAR(200));3.4.1PRIMARYKEYCONSTRAINT(主键约束)3.4.1PRIMARYKEYCONSTRAINT(主键约束)1.4数据模型2、复合主键多字段主键指的是多个字段组合而成的主键,其基本的语法格式如下所示:【例3-20】创建一个sales表,其中product_id,region_code作为复合主键,SQL语句如下:PRIMARYKEY(字段名1,字段名2,……字段名n)需要注意的是:每个数据表中最多只能有一个主键约束,定义为PRIMARYKEY的字段不能有重复值且不能为NULL值。CREATETABLEsales(product_idINT(11),region_codeVARCHAR(10),quantityINT(11),priceFLOAT,PRIMARYKEY(product_id,region_code));返回3.4数据表的约束外键用来在两个表的数据之间建立关联,它可以是一个列或者多个列。一个表可以有一个或者多个外键。【例3-22】创建部门表dept和员工表emp,并在员工表上创建外键。Step1:先创建主表deptStep2:再创建从表empCREATETABLEdept(idINT(11)PRIMARYKEY,nameVARCHAR(22),locationVARCHAR(50),descriptionVARCHAR(200));createtableemp(idINT(11)PRIMARYKEY,nameVARCHAR),dept_idINT(11),salaryFLOAT,CONSTRAINTfk_emp_deptFOREIGNKEY(dept_id)REFERENCESdept(id));3.4.2FOREIGNKEYCONSTRAINT(外键约束)3.4.3NOTNULLCONSTRAINT(非空约束)非空约束指的是字段的值不能为NULL,在MySQL中,非空约束是通过NOTNULL定义的,其基本的语法格式如下所示:【例3-25】创建一个company表,并设置company_id作为主键,表中的company_address字段设置为非空约束,SQL语句如下:需要注意的是,在同一个数据表中可以定义多个非空字段。字段名数据类型NOTNULL;DROPTABLEcompany;CREATETABLEcompany(company_idINT(11)PRIMARYKEY,company_nameVARCHAR(50),company_addressVARCHAR(200)NOTNULL);3.4数据表的约束返回3.4.4UNIQUECONSTRAINT(唯一约束)唯一约束用于保证数据表中字段的唯一性,即表中字段的值不能重复出现。唯一约束是通过UNIQUE定义的,其基本的语法格式如下所示:【例3-28】创建一个company表,并设置company_id作为主键,表中的company_address字段设置为非空约束,表中的company_name字段设置为唯一约束,SQL语句如下:字段名数据类型UNIQUE;DROPTABLEcompany;CREATETABLEcompany(company_idINT(11)PRIMARYKEY,company_nameVARCHAR(50)UNIQUE,company_addressVARCHAR(200)NOTNULL);3.4数据表的约束默认约束用于给数据表中的字段指定默认值,即当在表中插入一条新记录时,如果没有给这个字段赋值,那么,数据库系统会自动为这个字段插入默认值。默认值是通过DEFAULT关键字定义的。默认约束基本的语法格式如下所示:【例3-31】创建一个company表,表中的company_tel的默认值为“0371-”,SQL语句如下:字段名数据类型DEFAULT默认值;DROPTABLEcompany;CREATETABLEcompany(company_idINT(11)PRIMARYKEY,company_nameVARCHAR(50)UNIQUE,company_addressVARCHAR(200)NOTNULL,company_telVARCHAR(20)DEFAULT'0371-');3.4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生物山西初中试题及答案
- 三类特种考试题库及答案
- 2025~2026学年济南市天桥区八年级物理第一学期期末考试试题以及答案
- 护理护理疼痛管理学课件资源
- 2026年深圳中考英语一模仿真模拟试卷(附答案可下载)
- 《GA 2309-2024警服 移民管理警察长款多功能服》专题研究报告
- 2026年深圳中考生物生物的多样性及其保护试卷(附答案可下载)
- 2026年深圳中考生物答题技巧特训试卷(附答案可下载)
- 创新性营销思维培训课件
- 行政执业常识题库及答案
- 民法典关于物业管理的规定课件
- 辞工欠薪协议书
- 危货运输企业安全生产责任书范文二零二五年
- 2025年安徽粮食工程职业学院单招综合素质考试题库完整
- 2025年土地代持租赁协议
- 影视项目策划与后期制作流程
- 相信我支持我作文3篇
- (完整版)韩国商法
- 《既有工业区改造环境提升技术导则》
- 湖北省荆州市八县市2023-2024学年高二上学期期末考试物理试卷
- 五年级上册道德与法治期末测试卷推荐
评论
0/150
提交评论