教案-MySQL数据库管理与应用.docx
编制日期:教学主题(章节、单元、知识点)第1章数据库概述授课时间第1周课时安排4学时授课方式(J)J理论课口实践课口讨论课口习题课其他:学习目的和要求1 .掌握数据库、数据库管理系统和数据库系统的基本概念2 . 了解数据管理技术的发展历程3 .掌握概念模型和数据模型的基本概念和重要作用4 . 了解数据库系统的三级模式结构及其两级映像功能和数据独立性 之间的关系教学重点及难点重点:数据库和数据库管理系统的基本概念,数据库系统和文件系 统的区别和联系,概念模型的重要作用,数据模型的三要素,数据 库系统的三级模式结构及其两级映像功能难点:数据库系统和文件系统的区别和联系,数据库系统的两级映 像功能和数据独立性之间的关系教学内容教学方法 及手段作为开篇,首先1 统、图书管理系统等, 能检索、大数据等): 要性和目前的发展态: DB2、 SQL Server、 M) 并介绍该课程的特点 用,以及同学们在学:其次,介绍本课, 容和在本课程中的地/1.1数据库系统,1. 1. 1数据库系:数据(Data)是, 被识别的物理符号。, 们组成的一条记录都一数据库(Databa! 的、按照一定结构组;数据库管理系统通过例子(电商平台、共享经济、12306、教务管理系 以及数据挖掘与商务智能如个性化营销、商品推荐、智介绍数据库技术在国计民生和当今计算机应用系统中的重 势(可以以流调数据库为例讲解)、主流产品(Oracle、 SQL、MongoDB、Redis、KingBase、OceanBase)等; (理论加实践)和在计算机专业人才培养中的地位和作 习数据库过程中的注意事项。程应该掌握的重点内容和重要技能,以及第一章的主要内 位和作用。既述兖的基本概念信息的具体表示形式(即载体),原则上可以采用任何能 广义地讲,数字、文本、图像、音频、视频等,甚至由它 可以称之为数据。se, DB)是长期存储在计算机内的、可供不同用户共享只在一起的相关数据的集合。(Database Management System, DBMS)是负责对数据举例、多媒 体、讲解+ 讨论编制日期:教学主题(章节、单元、知识点)第3讲MySQ概述和数据库管理授课时间第3周课时安排4学时授课方式(J)J理论课 J实践课口讨论课口习题课其他:学习目的和要求1 . 了解MySQL的特点和新特性2 .掌握MySQL的安装和配置方法3 .掌握启动和停止MySQL服务的方法4 .掌握连接和断开MySQL服务器的方法5 .掌握数据库的创建、修改和删除等基本操作6 .理解MySQL存储引擎的概念教学重点及难点重点:连接和断开MySQL服务器的方法,启动和停止MySQL服务的 方法,数据库的创建、修改和删除等基本操作。难点:安装疑难问题的解决方法,各存储引擎的优缺点。教学内容教学方法 及手段第3章MySQL概述3.1 MySQL 简介MySQL是目前最流行的关系数据库管理系统之一,由瑞典的MySQL AB公 司于1995年开发。2008年1月MySQL被美国的Sun公司收购,2009年4月 Sun公司被Oracle公司收购,成为Oracle旗下的一款数据库产品。3. 1. 1 MySQL 的特点跨平台支持性能卓越功能强大存储容量大简单易用成本低廉开源3. 1.2 MySQL 8. 0 的新特性默认字符集默认存储引擎原子DDL举例、多媒 体、讲解+ 讨论3.2 MySQL安装与配置3. 2. 1 下载 MySQL3.2.2 MySQL 的安装3. 2.3 配置 MySQL3.3 MySQL服务的启动和停止3. 3. 1启动MySQL服务1. Windows操作系统下,如果已经将MySQL服务注册为Windows操作系 统的一个系统服务,则可以利用操作系统的服务管理工具或net start命令启 动MySQL服务。打开Windows的服务管理工具在服务管理工具窗口的右侧找到MySQL服务,单击鼠标右键,在弹出的菜 单中单击“启动”2. 利用net start启动MySQL服务在开始菜单中找到“Windows系统”下的“命令提示符”,单击鼠标右 键,在弹出的菜单中单击“更多”,然后单击“以管理员身份运行”,打开 Windows的命令提示符工具。输入命令:net start mysql80,启动MySQL服务。这里的mysql80为 MySQL服务在Windows操作系统中注册的服务名。3. 3.2停止MySQL服务1 .利用服务管理工具停止MySQL服务打开Windows的服务管理工具。在服务管理工具窗口的右侧找到MySQL服务,单击鼠标右键,在弹出的菜 单中单击“停止”。2 .利用net start停止MySQL服务在开始菜单中找到“Windows系统”下的“命令提示符”,单击鼠标右 键,在弹出的菜单中单击“更多”,然后单击“以管理员身份运行”,打开 Windows的命令提示符工具。输入命令:net stop mysql80,启动MySQL服务。这里的mysql80为 MySQL服务在Windows操作系统中注册的服务名。3 .4连接和断开MySQL服务器4 . 4. 1利用Windows命令提示符工具单击开始菜单中的“Windows系统”下的“命令提示符”,或者在开始菜 单的搜索框中输入cmd,打开Windows的命令提示符工具。在命令提示符工具下可以通过命令连接MySQL服务器,具体的命令格式 为: mysql -h hostname -u username -P port - p连接成功后,即可对数据库进行访问输入exit,即可断开与MySQL服务器的连接。1. 4.2配置环境变量连接MySQL服务器使用的mysql其实是MySQL的客户端程序,位于C: Program FilesMySQLMySQL Server 8.0bin 路径下,如果当前路径不是 C: Program FilesMySQLMySQL Server 8. Obin 并且没有配置环境变量,则 在使用mysql客户端程序连接MySQL服务器的时候会出现错误,这时需要输入“C:Program FilesMySQLMySQL Server 8. Obinmysql. exe " -u root 一 p才可以连接MySQL服务器。为了避免每次使用mysql连接服务器都需要包含路径C: Program FilesMySQLMySQL Server 8.0bin的麻烦,我们可以对系统柜环境变量 Path进行配置。3. 4. 3 利用 MySQL Command Line Client单击开始菜单中的“MySQL”下的 uMySQL 8. 0 Command Line Client” 菜 单,打开 MySQL 8. 0 Command Line Client 窗口。输入root账户的密码,回车,如果密码正确,出现“mysql>”提示符, 表不已经成功连接MySQL服务器。4. 4. 4 利用 MySQL Workbench 连接安装MySQL时如果选择了安装MySQL Workbench,则安装完成后可以在开 始菜单找到对应的MySQL Workbench 8.0 CE菜单。单击该菜单,打开MySQL Workbench欢迎界面。单击“MySQL Connectionsv 下的 “localhost_3306” 连接,打开uConnect to MySQL Serverv 对话框。输入密码,单击“OK”按钮,如果密码正确则成功连接MySQL服务器,如 图所示,接下来可以以图形化方式对数据库进行管理和操作。g MySQL Workbench为 local host_3306 xFile Edi t View 电 ery Database Server Tools Scripting Help团劭制i的厘1国压1回园i察© lUSQL Additionsf 9艮 O I 眼 I 画Lmtto 1000 rows '111 I SI I Jump toAutomatic context help idisabled. Use the toolbar imanually get help for thecurrent caret position or ttoggle automatic help.Navigator ::<Query 1 xSCHEMASQ. Fiter objectsAebuy jol jwgl jxglAsakila salesAstoreexpm stuexpm stusys - sys v/orldAdministration SchemasInformation :No object selectedContext Help SnippetsActionMessageDuration / FtObject Info Session第4章MySQL数据库管理4.1 MySQL系统数据库安装MySQL时自动创建了几个系统数据库,存储MySQL运行和管理需要用 到的系统信息。可以使用SHOW DATABASES命令查看MySQL服务器当前已有的数据库。【例4.1查看MySQL服务器所有的数据库。SHOW DATABASES;4个系统数据库的主要内容如下:information_schema:元数据,保存了 MySQL服务器所有数据库的信息, 比如数据库名、数据库的表、访问权限、数据库表的数据类型,数据库索引的 信息等。mysql:主要存储数据库的用户、权限设置、关键字等MySQL自己需要使 用的控制和管理信息。performance_schema:存储数据库服务器的性能参数,可用于监控服务器 在运行过程中的资源消耗、资源等待等情况。sys:库中所有的数据源来自performance_schema,目标是把 performance_schema的把复杂度降低,让DBA能更好的阅读这个库里的内 容,让DBA更快的了解DB的运行情况。4.2 创建数据库5. 2. 1使用命令创建数据库语法格式:CREATE DATABASE | SCHEMA IF NOT EXISTS db_nameDEFAULT CHARACTER SET 匚charset_nameDEFAULT COLLATE = collationnameDEFAULT ENCRYPTION = 'Y' | 'N'【例4. 2创建jwgl数据库。CREATE DATABASE jwgl;【例4.3创建xsgl数据库,指定字符集为gbk。CREATE DATABASE xsgl DEFAULT CHARACTER SET gbk;1 .2.2使用图形化工具创建数据库打开WorkBench工具,连接到MySQL服务器。在左侧的“SCHEMAS”导航栏单击鼠标右键,在弹出的菜单中选择uCreate Schema-v 。在中间的“schema”区域,输入要创建的数据库的名称jwgll,选择数据 库的字符集和校对规则。jwgll - Schema x4 . 3选择数据库使用USE语句选择数据库使其成为当前数据库,然后在数据库中对数据库 对象进行操作。语法格式:USE db_name【例4. 4选择jwgl数据库。USE jwgl4.4 查看数据库使用SHOW DATABASES语句查看MySQL服务器中所有的数据库的名称。使用SHOW CREATE DATABASE语句查看一个数据的创建语句语法格式:SHOW CREATE DATABASE db_name【例4. 5查看jwgl数据库的定义。SHOW CREATE DATABASE jwgl G4.5 修改数据库4.6 5. 1使用命令修改数据库语法格式:ALTER DATABASE | SCHEMA db_nameDEFAULT CHARACTER SET = charset_nameDEFAULT COLLATE = collationnameDEFAULT ENCRYPTION = 'Y' | 'N'【例4. 6修改jwgl数据库的字符集为gbk,校对规则为 gbk_chinese_ci。ALTER DATABASE jwglDEFAULT CHARACTER SET gbkDEFAULT COLLATE gbk_chinese_ci;5.2使用图形化工具修改数据库打开WorkBench工具,连接到MySQL服务器。在左侧的“SCHEMAS”导航栏中选中要修改的数据库名称,单击鼠标右 键,在弹出的菜单中选择"Alter Schema”。在中间的“schema”区域,选择数据库的字符集和校对规则。单击右下角的“Apply”按钮,完成修改。4.6 删除数据库. 1使用命令删除数据库语法格式:DROP DATABASE | SCHEMA IF EXISTS db_name【例4.7删除xsgl数据库。DROP DATABASE xsgl;6.2使用图形化工具删除数据库打开WorkBench工具,连接到MySQL服务器。在左侧的“SCHEMAS”导航栏中选中要删除的数据库名称,单击鼠标右 键,在弹出的菜单中选择"Drop Schema”。在弹出的窗口中,选择“Review SQL”可以查看对应的SQL语句,如图 4. 12所示,或者选择“Drop Now”直接删除数据库。单击右下角的“Execute”按钮,完成删除。4.7 MySQL的存储引的7. 1 MySQL支持的存储引擎可以使用SHOW ENGINES查看MySQL支持的存储引擎。【例4. 8】查看 MySQL的存储引擎。SHOW ENGINES;09 超令提示符-mysql -uroot -p- Xnysql> SHOW ENGINES:I Engine1 Support II Comment卜q1 Transactions IXA卜十1 Savepoints |MEMORYYESHash based, stored in memory, useful for temporary tablesNONONOMRG.MYISAMYESCol lection of identical My ISAM tablesNONONOCSVYESCSV storage engineNONONOFEDERATEDNOFederated MySQL storage eng i neNULLNULLNULLPERFORMANCE_SCHEMAYESPerformance SchemaNONONOMy ISAMYESMy ISAM storage engineNONONOInnoOBDEFAULTSupports transactions, row-level 1ocking. and foreign keysYESYESYESBLACKHOLEYES/dev/nul1 storage engine (anything you write to it disappears)NONONOARCHIVEYESArchive storage engineNONONOrows in set (0.06 sec)常用的存储引擎:InnoDB存储引擎MylSAM存储引擎Memory存储引擎csv存储引擎4. 7.2选择存储引擎InnoDB存储引擎支持事务处理、外键、崩溃恢复和并发控制,因此对于 需要事务处理的业务场景、数据更新、删除比较频繁的应用场景、对数据一致 性要求较高的应用场景以及)对并发控制要求较高的应用场景可以选择 InnoDB存储引擎。MylSAM存储引擎不支持事务处理、不支持外键、仅支持表级锁,但是空 间和内存占用低、处理速度快,因此对于不需要事务处理的业务场景、数据更 新比较少的应用场景、对数据一致性要求不高的应用场景、并发访问相对较少 的应用场景、单方面读取或写入数据比较多的业务可以选择MylSAM存储引 擎。MEMORY存储引擎将所有数据保存在RAM中,访问速度快,但是对表的大 小有限制,太大的表无法缓存在内存中,另外服务器关闭或重启时会丢失数 据,要确保表的数据可以恢复的。因此MEMORY存储引擎通常用于对数据安全 性要求较低、需要快速访问的小表。课后作业 及预习课后总结*课程教案编制日期:教学主题(章节、单元、知识点)第4讲 表结构管理和数据操作授课时间第4、5、6周课时安排10学时授课方式(J)J理论课 J实践课口讨论课口习题课其他:学习目的和要求1 .理解MySQL的数据类型2 .熟练掌握创建、修改和删除表的方法3 .掌握约束的定义方法4 .熟练掌握添加、修改和删除数据的方法5 .理解约束对表数据操作的影响教学重点及难点重点:表的创建以及数据的添加、删除和修改 难点:约束及数据完整性教学内容教学方法 及手段第5章MySQL表结构管理5.1 表的概念表(Table)是关系数据库中最重要的数据库对象,用来存储数据库中的 数据。一个数据库包含一个或多个表,表由行(Row)和列(Column)组成。表中的一行称为一个记录(Record),每个表包含若干行数据。列又称为 字段(Field),由数据类型、长度、是否允许空值、默认值等组成,每个列 表示记录的一个属性。一个完整的表包含表结构和表数据两部分内容,表的结构主要包括表的列 名、数据类型、长度、是否允许空值、默认值以及约束等,表数据就是表中的 记录。5.2 MySQL的数据类型MySQL中的数据类型主要包括数值类型、字符串类型、日期和时间类型、 空间类型和JSON类型。5.3 . 1数值类型1 .整数类型整数类型包括 TINYINT、INTEGER (或 INT) 、 SMALLINT. MEDIUMINT 和 BIGINTo2 .定点数类型定点数类型包括DECIMAL和NUMERIC,用于存储精确的数值数据。在举例、多媒 体、讲解+ 讨论MySQL 中,NUMERIC 被实现为 DECIMALo定点数类型的定义语法为DECIMAL(M,D)或NUMERIC(M,D),其中M是最大 位数(精度),范围是1到65, D是小数点后的位数(小数位数),它的范围 是0到30,并且不能大于M。如果D省略,则默认为0,如果M省略,则默 认为10o例如,定义salary列的数据类型为DECIMAL(5,2),则该列能够存储具有 五位数字和两位小数的任何值,因此salary列的取值范围从-999.99到 999. 99 o3.浮点数类型浮点数类型包括单精度FLOAT类型和双精度DOUBLE类型,代表近似的数 据值。MySQL对单精度值使用四个字节存储,对双精度值使用八个字节存储。对于FLOAT, MySQL支持在关键字FLOAT之后指定可选的精度,但是 FLOAT (p)中的精度值仅用于确定存储大小,0到23之间的精度将产生一个4 字节的单精度浮点列。从24到53的精度将产生一个8字节的双精度浮点列。4. 2.2字符串类型字符串数据类型包括 CHAR、VARCHAR. BINARY. VARBINARY. BLOB、 TEXT、ENUM 和 SET 类型。数据类型存储字节CHAR(M)MX w字节,0<=M<= 255,其中w是字符集中最大长度字符所需 的字节数。BINARY(M)M字节,0<=M<=255VARCHAR(M), VARBINARY(M)如果列值需要0 - 255个字节,则L+ 1个字节,如果值可能需要超 过255个字节,则L+2个字节TINYBLOB, TINYTEXTL+ 1个字节,其中L<28BLOB, TEXTL+2个字节,其中L<2 *MEDIUMBLOB, MEDIUMTEXTL+3个字节,其中L<224LONGBLOB, LONGTEXTL+4个字节,其中L<2 32ENUM('value I'/value21,.)1或2个字节,取决于枚举值的数量(最多65,535个值)SETfvaluer,'value?',.)1、2、3、4或8个字节,取决于集合成员的数量(最多64个成员2.3日期和时间类型日期和时间数据类型包括DATE、TIME、DATETIME. TIMESTAMP和YEAR类型。数据类型存储字节格式取值范围YEARYYYY19012155DATE3”TYYYY-MM-DD,1000-01-01rr9999-12-3rTIME3字节+小数秒部分 存储1hh:mm:ss,'-838:59:592838:59:59rDATETIM E5字节+小数秒部分 存储YYYY-MM-DD hh:mm:ss,lOOO-Ol-Ol 00:00:00、 9999-12-31 23:59:59rTIMESTA MP4字节+小数秒部分 存储YYYY-MM-DD hh:mm:ss'r1970-01-01 00:00:01TJTC2038-0149 03:14:07TJTC5.3创建表5. 3. 1使用CREATE TABLE语句创建表 语法格式:CREATE TEMPORARY TABLE IF NOT EXISTS tbl_name(col_name datatype(n,m) NOT NULL | NULL DEFAULT literal | (expr) AUTO_INCREMENT COMMENT 'string', ,index_definition,constraint_definition)table_options./说明: TEMPORARY:如果使用该关键字,则创建的表为临时表。临时表 只在当前连接可见,当关闭连接时,MySQL会自动删除表并释放 所有空间。 IF NOT EXISTS:该选项用于防止表存在时发生错误。 tbl_name:要创建的表的名称,可以使用dbjname. tbl_name的 方式在指定的数据库中创建表。如果只有表的名称,则在当前数 据库中创建表。 col_name:列的名称。 data_type:列的数据类型,参见5.2节中的内容。 NOT NULL | NULL:指定该列是否允许空值,默认为NULL。 DEFAULT literal | (expr):指定列的默认值,默认值可以是 常量,也可以是表达式。 AUTO_INCREMENT:用于定义自增列,每个表只能有一个自增列, 该列的数据类型必须是整型或浮点型,并且必须被索引,不能有 默认值。自增序列从1开始。在自增列中插入NULL (建议)或0 值时,该列的值将设置为当前列的最大值+1。 COMMENT ! string1:该选项指定列的注释,最长可达1024个字 符。 index_definition:定义索引。 constraint_definition:定义约束。 table_options:表的选项,常用的选项有: AUTO_INCREMENT = value:表的初始自动增量值;DEFAULT CHARACTER SET = charset_name:指定表的 默认字符集; ENGINE = engine_name:指定表的存储引擎; ENCRYPTION = 'Y' | 'N':启用或禁用IrmoDB表的页面级 数据加密。【例5.例 在jwgl数据库中创建student表,表结构见表5-1。库进行统一管理和统一控制的一个系统软件,用户对数据库的任何操作都是通 过它来完成的。它的主要功能包括:1)数据定义功能2)数据操纵功能3)数据库的运行管理4)数据库的建立和维护功能数据库系统(Database System, DBS)是在计算机系统中引入数据库后 的一个人-机系统,一般由数据库、计算机硬件系统、操作系统、数据库管理 系统(及其开发工具)、应用系统、数据库设计开发人员、数据库管理员和用 户构成。数据库系统的工作过程:数据管理技术的发展三阶段:人工管理、文件系统、数据库系统。以学生信息(选课信息、个人信息、参加社团信息)管理为例。用文件系统进行数据管理存在以下问题:1)数据是分离的,缺乏整体结构2)数据冗余度大,共享性差,难以扩充3)数据独立性差和文件系统相比,数据库系统主要有以下特点:1)数据的整体结构化2)数据的统一管理和统一控制数据库管理系统除了能定义和操纵数据之外,主要还提供了以下几方面的 数据控制功能:(1)数据的安全保护(2)数据的完整性控制(3)并发控制(4)数据库的恢复3)数据的共享性高,冗余度低,易扩充4)数据的独立性高综上所述,数据库是长期存储在计算机内的、可供不同用户共享的、按 照一定结构组织在一起的相关数据的集合,它具有最低的数据冗余度和较高 的数据独立性,由数据库管理系统负责统一管理和统一控制,可以保证数据 的安全性和完整性,在多用户同时使用数据库时进行并发控制,并在发生故在MySQL命令行客户端输入命令(本例先不考虑约束): USE jwgl;CREATE TABLE student(sno CHAR(11) NOT NULL,sname VARCHAR(IO) NOT NULL,ssex CHAR(l) NOT NULL DEFAULT '男',sbirthday DATE NOT NULL, snation VARCHAR(IO) NOT NULL, mno CHAR (4)【例5. 2】在jwgl数据库中创建course表。 CREATE TABLE course (eno CHAR(3) NOT NULL,cname VARCHAR(IO) NOT NULL,ctype VARCHAR(5),cclasshour TINYINT,ccredit DECIMAL(2,1), cterm TINYINT);5. 3.2通过复制创建表L 使用 CREATE TABLE LIKE 语句 语法格式为:CREATE TABLE new_tbl LIKE orig_tbl;【例5. 3 在jwgl数据库中通过复制student表结构的方式创建表student_bakoCREATE TABLE student_bak LIKE student; 2.使用 CREATE TABLE SELECT 语句 语法格式为:CREATE TABLE new_tbl (column_def i n i t i on, index definition, constraint_definition )table_options AS SELECT * FROM orig_tbl;【例5. 4在jwgl数据库中通过复制student表中"0101”专业的学生 数据创建表 student_computer0CREATE TABLE student_computerASSELECT * FROM student where mno='0101';5.4定义约束. 4. 1数据完整性与约束数据完整性是指数据库中数据的正确性、有效性和一致性。数据完整性是为了防止错误信息的输入使得数据库中存储不符合语义规则 的数据而造成的无效操作或者产生错误的输出,因此维护数据库的完整性是非 常重要的。数据完整性一般包括实体完整性、参照完整性和用户定义的完整性。 约束是实现数据完整性的一种重要手段。5 .4.2主键约束主键约束可以用来实现实体完整性。主键可以是表中的一列,也可以是多 个列的组合。由多个列组成的主键称为复合主键。1 .创建表时定义主键约束(1)定义为列级完整性约束在CREATE TABLE语句中,在要定义为主键的列的属性定义中加上 PRIMARY KEY,语法格式为:col_name data_type(n,m) DEFAULT literal | (expr)PRIMARY KEY【例5. 5创建student表,将sno列定义为主键,以列级完整性约束定 义。CREATE TABLE student(sno CHAR(11) PRIMARY KEY, sname VARCHAR(IO) NOT NULL, ssex CHAR(l) NOT NULL DEFAULT '男', sbirthday DATE NOT NULL, snation VARCHAR(IO) NOT NULL, mno CHAR(4);(2)定义为表级完整性约束在CREATE TABLE语句中,在表中所有列的定义之后,加上主键约束的定 义,其语法格式为:CONSTRAINT constraintname PRIMARY KEY(col_name, col_name)【例5.6创建dept表,将dno列定义为主键,以表级完整性约束定CREATE TABLE deptdno CHAR(2) NOT NULL,dname VARCHAR(20) NOT NULL,dloc VARCHAR(20),dphone CHAR (8), CONSTRAINT pk_dno PRIMARY KEY (dno)【例5. 7创建score表,score表的结构如表5. 7所示,sno列和eno 列的组合为主键,以表级完整性约束定义。CREATE TABLE score(sno CHAR (11),eno CHAR(3),grade TINYINT,CONSTRAINT pk_sno_cno PRIMARY KEY(sno,eno)2 .修改表时定义主键约束如果表已经存在并且需要创建主键约束,可以用ALTER TABLE语句对表结 构进行修改增加主键约束,语法格式如下:ALTER TABLE tbl_nameADD CONSTRAINT constraint_name PRIMARYKEY(col_name,col_name*ee);【例5.8】修改course表,将eno设置为主键。ALTER TABLE courseADD CONSTRAINT pk_cno PRIMARY KEY (eno);3 .4.3唯一性约束如果表中某一列或者一些列的组合不允许有重复值,可以定义唯一性约 唯一性约束和主键约束的区别是:一个表只能定义一个主键约束,但是可以定义多个唯一性约束设置为主键的列不允许空值,即使列的定义中没有NOT NULL,而定义唯 一性约束的列如果没有NOT NULL,则可以有空值。1 .创建表时定义唯一性约束(1)定义为列级完整性约束在CREATE TABLE语句中,在要定义为主键的列的属性定义中加上 UNIQUE,语法格式为:col_name datatype (n,m) NULL|NOT NULL DEFAULT literal (expr) UNIQUE【例5.9创建dept表,为dname列设置唯一性约束,以列级完整性约 束定义。CREATE TABLE dept(dno CHAR(2) NOT NULL,dname VARCHAR(20) NOT NULL UNIQUE,dloc VARCHAR(20),dphone CHAR(8),CONSTRAINT pk_dno PRIMARY KEY (dno);(2)定义为表级完整性约束在CREATE TABLE语句中,在表中所有列的定义之后,加上唯一性约束的 定义,其语法格式为:CONSTRAINT constraint_name UNIQUE(col_name, col_name*,e)【例5. 10创建dept表,为dname设置唯一性约束,以表级完整性约束 定义。CREATE TABLE dept(dno CHAR(2) NOT NULL,dname VARCHAR(20) NOT NULL,dloc VARCHAR(20),dphone CHAR(8),CONSTRAINT pk_dno PRIMARY KEY (dno),CONSTRAINT un_dname UNIQUE(dname);.修改表时定义唯一性约束如果表已经存在并且需要创建唯一性约束,可以用ALTER TABLE语句对表 结构进行修改增加唯一性约束,语法格式如下:ALTER TABLE tbl_nameADD CONSTRAINT constraint_name UNIQUE(col name, col_name*)【例5. 11修改course表,为cname设置唯一性约束。ALTER TABLE courseADD CONSTRAINT un_cname UNIQUE (cname);5. 4. 4 CHECK 约束CHECK约束用于对某一列或者多个列的值设置检查条件,限制输入的数据 必须满足检查条件。CHECK约束一般用于实现用户定义的完整性。1 .创建表时定义CHECK约束(1)定义为列级完整性约束在CREATE TABLE语句中,在要定义CHECK约束的列的属性定义中加上 CHECK约束的定义,语法格式为:col_name data_type(n,m) NULL|NOT NULLDEFAULT literal (expr) CHECK (expr)【例5. 12创建student表,定义检查约束限制ssex列的值只能取'男' 或女,以列级完整性约束定义。CREATE TABLE student(sno CHAR(11) PRIMARY KEY,sname VARCHAR(IO) UNIQUE,ssex CHAR(1) DEF