MySQL数据库应用项目教程 课件 项目4 实现数据库_第1页
MySQL数据库应用项目教程 课件 项目4 实现数据库_第2页
MySQL数据库应用项目教程 课件 项目4 实现数据库_第3页
MySQL数据库应用项目教程 课件 项目4 实现数据库_第4页
MySQL数据库应用项目教程 课件 项目4 实现数据库_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MySQL数据库应用

项目教程项目四实现数据库4.1数据库操作

4.2数据表操

4.3数据操作

4.1数据库操作

4.1.1走进MariaDB1.初识MariaDB(1)MariaDB的主要特点(2)MariaDB的体系结构。MariaDB的体系结构封装了SQL接口、查询解析器、查询优化器、查询执行引擎、缓存/缓冲机制以及一个插件式存储引擎。4.1数据库操作4.1.1走进MariaDB1.初识MariaDB(3)MariaDB的逻辑结构。MariaDB的逻辑结构如图4.1数据库操作4.1.1走进MariaDB1.初识MariaDB(4)MariaDBEnterprise的发行版中包含的工具和实用程序4.1数据库操作4.1.1走进MariaDB1.初识MariaDB4.1数据库操作MariaDB的工作模式(5)MariaDB的连接。终端连接MariaDB服务器。图形工具连接MariaDB服务器。4.1.1走进MariaDB2.存储引擎(1)存储引擎的任务。存储引擎在物理层管控数据,负责数据文件、数据、索引和高速缓冲存储器等管理,使得管理和读取数据变得更高效。(2)常见的存储引擎。①XtraDB,②InnoDB,③Aria,④MyISAM,⑤PERFORMANCE_SCHEMA,⑥TokuDB,⑦Spider,⑧ColumnStore等。4.1数据库操作4.1.1走进MariaDB2.存储引擎(3)MariaDB的存储引擎。在MariaDB中,存储引擎是插件式的,每种存储引擎都有自己的特性,适用于不同的场景。①InnoDB存储引擎支持表级锁、行级锁,支持事务处理,支持外键,但不支持全文索引,表空间文件相对较大。②ISAM存储引擎是一个定义明确且历经时间考验的数据表格管理方法,在设计之时就考虑到数据库被查询的次数要远大于更新的次数。③MyISAM存储引擎是MariaDB的ISAM存储引擎扩展形式。④Memory存储引擎将数据存储在内存中,没有磁盘I/O的等待,所以使用Memory存储引擎的表拥有极高的插入、更新和查询效率。4.1数据库操作4.1.1走进MariaDB2.存储引擎(4)存储引擎的选择。如果要提供提交、回滚、崩溃恢复能力的事务安全(ACID兼容)能力,并要求实现并发控制,可选择InnoDB存储引擎;如果数据表主要用来插入和查询记录,则MyISAM存储引擎能提供较高的处理效率;如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory存储引擎中,MariaDB中使用该存储引擎作为临时表,存放查询的中间结果;如果只有查询和创建操作,可以选择Archive,Archive支持高并发的插入操作,但是本身不是事务安全的。4.1数据库操作4.1.1走进MariaDB2.存储引擎【例1】操作MariaDB存储引擎。查看MariaDB的存储引擎相关信息和当前默认的存储引擎。SHOWENGINES;SELECTEngine,Support,Comment,Transactions,XA,SavepointsFROMinformation_schema.engines;SELECT@@global.storage_engine;4.1数据库操作4.1.1走进MariaDB3.数据文件不同的MariaDB存储引擎有各自不同的数据文件,存放位置也有区别,多数存储引擎的数据文件都存放在和MyISAM存储引擎数据文件位置相同的目录下,但是每个数据文件的扩展名却各不相同。.frm文件。.MYD文件。.MYI文件。.ibd文件和ibdata文件。4.1数据库操作4.1.2操作数据库1.认识SQLSQL是StructuredQueryLanguage(结构化查询语言)的简称,SQL的结构简洁、功能强大、简单易学,在主流数据库中得到了广泛的应用。(1)SQL的特点。(2)SQL的体系结构。SQL支持关系数据库体系结构,即外模式、模式和内模式,利用SQL可以实现对三级模式结构的定义、修改和数据的操作功能,在此基础上形成了SQL体系结构。4.1数据库操作4.1.2操作数据库1.认识SQL(3)SQL语句的分类。SQL语句依据操作对象和类型的不同,通常分为以下几类。①数据查询语言,用于对数据进行查询,如SELECT。②数据操纵语言,可进行增加、修改、查询、删除,如NSERT,UPDATE,DELETE。③数据定义语言,进行数据库,表的管理等,如CREATE,ALTER,DROP等。④数据控制语言,设置访问权限等,如GRANT,REVOKE等。⑤事务处理语言对事务进行处理,如BEGIN,TRANSACTION,COMMIT,ROLLBACK等。⑥指针控制语言,通过控制指针完成表的操作,如DE-CLARECURSOR等。(4)SQL语句的编写规则。4.1数据库操作4.1.2操作数据库2.操作数据库(1)创建数据库。数据库是用于存放数据和数据库对象的容器。①通过CREATEDATABASE命令创建数据库。CREATEDATABASEIFNOTEXISTS<db_name>[[DEFAULT]CHARACTERSET[=]charset_name|[DEFAULT]COLLATE[=]collation_name|COMMENT[=]‘comment’];【例2】使用CREATEDATABASE语句创建名为teaching_management的数据库SHOWDATABASES;CREATEDATABASEIFNOTEXISTSteaching_managementCOMMENT=‘教学管理数据库’;SHOWDATABASES;4.1数据库操作4.1.2操作数据库2.操作数据库(1)创建数据库。②使用图形界面创建数据库。4.1数据库操作4.1.2操作数据库2.操作数据库(2)查看数据库。成功创建数据库后,使用SHOWDATABASES语句查看MariaDB服务器中的所有数据库信息。语法格式:SHOWDATABASES[LIKE‘pattern’|WHEREexpr];(3)选择数据库。使用USE语句选择将要操作的数据库,语法格式:USE<db_name>;4.1数据库操作4.1.2操作数据库2.操作数据库(4)修改数据库。数据库创建后,如果需要修改数据库的参数,可以使用ALTERDATA-BASE语句。语法格式:ALTERDATABASE[db_name]{[DEFAULT]CHARACTERSET[=]charset_name|[DEFAULT]COLLATE[=]collation_name|COMMENT[=]‘comment’};【例3】将book_management数据库所用的字符集修改成gbk。ALTERDATABASEbook_managementCHARACTERSETgbk;4.1数据库操作4.1.2操作数据库2.操作数据库(5)删除数据库。删除数据库的操作可以使用DROPDATABASE语句,语法格式:DROPDATABASE<db_name>;【例4】通过DROPDATABASE语句删除test数据库和book_management数据库。DROPDATABASEtest;DROPDATABASEbook_management;SHOWDATABASES;4.1数据库操作4.2数据表操作

4.2.1创建数据表1.数据类型MariaDB常用的数据类型如下:(1)数值类型。整数类型。小数类型。浮点类型。(2)字符串类型。(3)日期和时间类型。(4)ENUM类型和SET类型。(5)TEXT类型和BLOB类型。4.2数据表操作4.2.1创建数据表2.创建数据表数据表(DataTable)是数据库最重要的对象。数据表是用来实际存储和操作数据的逻辑结构,对数据库的各种操作就是对数据库中数据表的操作。(1)列的其他属性。给列定义数据类型的同时,也定义了列中存储的内容。①默认值。②自动增长值。③NULL与NOTNULL。4.2数据表操作4.2.1创建数据表2.创建数据表(2)设计表结构。设计数据库时,应先确定需要哪些数据表,数据表中将存储什么类型的数据,数据表之间的关系和数据的存取权限等。设计数据表时应考虑以下内容:数据表的名称。数据表中每一列的名称、数据类型及其长度。数据表中的列是否允许为空值,是否唯一,是否要进行默认设置或添加完整性约束条件。数据表间的关系,即确定哪些列是主码,哪些列是外码。列名是用来访问表中具体域的标识符,列名必须遵循一定的规则。4.2数据表操作4.2.1创建数据表2.创建数据表根据绘制的教学管理系统E-R图,student_info(学生信息)表结构为4.2数据表操作4.2.1创建数据表2.创建数据表(3)完整性约束条件。列级完整性约束条件如下:①PRIMARYKEY:指定该属性为主码。②NULL/NOTNULL:指定的属性允许为空/不允许为空,如果没有完整性约束条件,则默认为NULL。③UNIQUE:指定属性取值唯一,即每条记录的指定属性的值不能重复。如果某个属性指定了NOTNULL和UNIQUE,这相当于指定该属性为PRIMARYKEY。④DEFAULT<默认值>:设置指定属性的默认值。⑤AUTO_INCREMENT:设置指定属性的值自动增长,一般为自动加1。⑥CHECK(条件表达式):用于检验输入值,拒绝接受不满足条件的值。4.2数据表操作4.2.1创建数据表2.创建数据表(3)完整性约束条件。表级完整性约束条件如下:①PRIMARYKEY用于定义表级完整性约束条件,如定义属性组合为数据表的主码时,语法格式:CONSTRAINT<约束名>PRIMARYKEY[CLUSTERED](属性1,属性2,...,属性n)②FOREIGNKEY用于指定参照完整性,即指定某属性为外码,语法格式:CONSTRAINT<约束名>FOREIGNKEY<属性>REFERENCES<被参照表(主码)>③UNIQUE既可以用于定义列级完整性约束条件,也可以用于定义表级完整性约束条件,语法格式:CONSTRAINT<约束名>UNIQUE<属性>4.2数据表操作4.2.1创建数据表2.创建数据表(4)使用CREATETABLE语句创建数据表。CREATETABLE语句用于在选定的数据库中创建数据表,如在使用CREATETABLE语句创建名称为tb_name的数据表时,必须具有数据表或数据库的CREATE权限,语法格式:CREATETABLEIFNOTEXISTS<tb_name>(<属性1><数据类型>[<列级完整性约束条件1>][COMMENT<注释1>][,<属性2><数据类型>[<列级完整性约束条件2>][COMMENT<注释2>]][,...][,[<表级完整性约束条件1>][,<表级完整性约束条件2>][,...]])[COMMENT<注释>];4.2数据表操作4.2.1创建数据表2.创建数据表【例5】使用CREATETABLE语句创建数据表。在teaching_management数据库中创建student_info数据表。USEteaching_management;CREATETABLEIFNOTEXISTSstudent_info(noCHAR(3)NOTNULLCOMMENT‘学生学号’,nameVARCHAR(20)DEFAULTNULLCOMMENT‘学生姓名’,genderENUM(‘M’,‘F’)NOTNULLDEFAULT‘M’COMMENT‘学生性别’,birthdayDATENOTNULLDEFAULT‘2003-01-01’COMMENT‘出生日期’,class_noCHAR(3)DEFAULTNULLCOMMENT‘班级号’,PRIMARYKEY(`no`),CONSTRAINTfk_cFOREIGNKEY(`class_no`)REFERENCES`class_info`(`no`))COMMENT=‘学生信息表’;4.2数据表操作4.2.2维护数据表1.查看数据表(1)查看表结构可以使用DESCRIBE/DESC或SHOWCREATETABLE语句;(2)查看数据库中的数据表可以使用SHOWTABLES语句。【例6】查看teaching_management数据库中的student_info数据表、course_info数据表和teacher_info数据表。DESCRIBEteaching_management.student_info;DESCteaching_management.course_info;SHOWCREATETABLEteaching_management.teacher_info\G(3)使用SHOWTABLES语句查看数据库中的数据表,语法格式:SHOWTABLES;4.2数据表操作4.2.2维护数据表2.修改数据表数据表创建后,难免要对其结构进行修改。可以使用HeidiSQL图形界面或ALTERTABLE语句进行表结构的修改。使用HeidiSQL图形界面修改表的结构与创建数据表时的操作基本相同;MariaDB中可以使用ALTERTABLE语句修改表结构。4.2数据表操作4.2.2维护数据表2.修改数据表【例7】利用ALTERTABLE语句修改数据表。在teaching_management数据库中创建一个test数据表。

USEteaching_management;

CREATETABLEtest(first_colINT,color_colENUM(‘red’,‘green’));在test数据表中添加一个字段second_col,数据类型为INT。

ALTERTABLEtestADDsecond_colINT;修改test数据表中second_col字段的数据类型为无符号的BIGINT。

ALTERTABLEtestMODIFYsecond_colBIGINTUNSIGNED;4.2数据表操作4.2.2维护数据表2.修改数据表将test数据表中新增的second_col字段删除。

ALTERTABLEtestDROPsecond_col;修改test数据表中first_col字段的名称为one_col,数据类型为无符号的SMALLINT且自动递增。

ALTERTABLEtestCHANGEfirst_colone_colSMALLINTUNSIGNEDAUTO_IN-CREMENT;整合多个子句到单个ALTERTABLE语句中,使用逗号分隔。

ALTERTABLEtestDROPcolor_col,ADDsecond_colINT,CHANGEone_colfirst_colINT;4.2数据表操作4.2.2维护数据表3.复制数据表复制数据表的方法有两种,可以使用HeidiSQL图形界面或SQL语句。(1)使用HeidiSQL图形界面复制数据表。4.2数据表操作4.2.2维护数据表4.2数据表操作3.复制数据表(2)使用SQL语句复制数据表。复制数据表的结构和数据到新表中,可以使用如下语句:

CREATETABLE[IFNOTEXISTS]<新表名>SELECT<字段1[,字段2,...]>FROM<旧表名>[WHERE<表达式>];【例8】使用SQL语句复制数据表。将teaching_management数据库中的test数据表的first_col和second_col字段及对应的数据复制到book_management数据库中,表名为test_one。CREATETABLEIFNOTEXISTSbook_management.test_oneSELECTfirst_col,second_colFROMteaching_management.test;4.2.2维护数据表4.2数据表操作4.修改表名使用SQL语句修改表名。修改表名可使用ALTERTABLE语句,还可以直接用RENAMETABLE语句,语法格式:ALTERTABLE[IFEXISTS]<旧表名>RENAME[TO]<新表名>;RENAMETABLE[IFEXISTS]<旧表名>TO<新表名>;【例9】数据表的更名操作。将teaching_management数据库中的test数据表重命名为test_new。ALTERTABLEIFEXISTSteaching_management.testRENAMETOteaching_management.test_new;4.2.2维护数据表4.2数据表操作5.删除数据表使用SQL语句删除数据表。使用DROPTABLE语句删除数据表时,不仅会删除数据表中的数据,还将删除数据表的结构,语法格式:DROPTABLE[IFEXISTS]<表名1>[,[表名2],...];【例10】使用SQL语句删除数据表。将teaching_management数据库中的test数据表删除。DROPTABLEIFEXISTSteaching_management.test;4.3数据操作

4.3.1记录更新记录的更新主要包括记录的插入、修改和删除。1.插入记录(1)插入一条记录。语法格式:INSERTINTO<表名>[(<字段清单>)]VALUES(<常量清单>);(2)插入多条记录。INSERT语句可以同时向数据表中插入多条记录,插入时指定多个常量清单,每个常量清单之间用逗号分隔开。语法格式:INSERTINTO<表名>[(<字段清单>)]

VALUES(<常量清单1>),(<常量清单2>),...,(<常量清单n>);4.3数据操作4.3.1记录更新1.插入记录【例11】记录的插入操作。在teaching_management.student_info数据表中插入一个学生记录。INSERTINTOteaching_management.student_info(no,name,gender,birthday,class_no)VALUES(‘S01’,‘赵一’,‘M’,‘2002-05-20’,‘L02’);(3)从其他数据表查询插入。将SELECT语句嵌套在INSERT语句中,可以将SELECT语句查询的结果作为INSERT语句的常量清单,向指定的数据表中插入数据。语法格式:INSERTINTO<表名>[(<字段清单>)]SELECT[(<字段清单>)]FROM<表名>[WHERE<表达式>];4.3数据操作4.3.1记录更新2.修改记录修改记录是指修改数据表中已经存在的记录,如修改学生的姓名或出生日期等,可以通过UPDATE语句来修改。语法格式:UPDATE

<表名>SET<字段名1=表达式1>,[<字段名2=表达式2>,...][WHERE<条件表达式>];4.3数据操作4.3.1记录更新3.删除记录在SQL中,通过DELETE语句删除数据。语法格式:DELETEFROM<表名>[WHERE<条件表达式>];【例12】数据表中记录的修改和删除。将学生赵一的性别修改为F,出生日期修改为2001-05-05。UPDATEteaching_management.student_infoSETgender=‘F’,birthday=‘2001-05-05’WHEREname=‘赵一’;删除学号为S02的学生记录。DELETEFROMteaching_management.student_infoWHEREno=‘S02’;4.3数据操作4.3.2记录查询查询是数据库中最常见的操作,SQL是通过SELECT语句实现查询的,语法格式:SELECT<子句1>FROM<子句2>[WHERE<表达式1>][GROUPBY<子句3>][HAVING<表达式2>][ORDERBY<子句4>][UNION<运算符>][INTOOUTFILE<文件名>][LIMIT<[M,]N>];4.3数据操作4.3.2记录查询1.单表查询(1)简单查询。①查询所有的数据记录和字段。例如,查询所有学生详细信息。SELECT∗FROMteaching_management.student_info;②查询部分字段。例如,查询所有学生的姓名和出生日期。SELECTname,birthdayFROMteaching_management.student_info;③查询计算字段。例如,查询学生姓名和年龄。SELECTname,YEAR(CURDATE())-YEAR(birthday)FROMteaching_man-agement.student_info;4.3数据操作4.3.2记录查询1.单表查询(2)条件查询。①按简单条件查询。例如,查询出生日期在2002-01-01之前的学生姓名。SELECTname姓名FROMteaching_management.student_infoWHEREbirthday<=‘2002-01-01’;②复合条件查询。例如,查询性别为M,出生日期在2002-01-01之后的学生姓名。SELECTname姓名FROMteaching_management.student_infoWHEREgender=‘M’ANDbirthday>‘2002-01-01’;③指定范围查询。例如,查询出生日期在2000-01-01到2002-12-31之间的学生姓名。SELECTname姓名FROMteaching_management.student_infoWHEREbirthdayBETWEEN‘2000-01-01’AND‘2002-12-31’;4.3数据操作4.3.2记录查询1.单表查询(2)条件查询。④指定集合查询。例如,查询出生日期是2001-01-01或2002-01-01或2003-01-01的学生姓名。SELECTname姓名FROMteaching_management.student_infoWHEREbirthdayIN(‘2001-01-01’,‘2002-01-01’,‘2003-01-01’);⑤查询值为空的行。例如,查询没有班级号的学生信息。SELECTno,name,gender,birthday,class_noFROMteaching_management.student_infoWHEREclass_noISNULL;4.3数据操作4.3.2记录查询1.单表查询(3)查询排序。例如,查询所有学生的姓名、出生日期,并按出生日期降序排列。SELECTname姓名,birthday出生日期FROMteaching_management.student_infoORDERBYbirthdayDESC;(4)限制查询结果范围。例如,查询学生信息表中从第3条记录开始的5个学生的姓名和出生日期。SELECTname姓名,birthday出生日期FROMteaching_management.student_infoLIMIT2,5;4.3数据操作4.3.2记录查询1.单表查询(5)使用聚合函数查询。聚合函数对一组值执行计算,并返回单个值。在访问数据库时,若需要对数据表中的数据进行统计分析(如求最大值、最小值、平均值等),SQL提供的聚合函数能快速实现数据的统计分析。(6)使用GROUPBY子句分组查询。使用聚合函数返回的是所有记录数据的统计结果。如果需要按某一字段的值进行分类,在分类的基础上再进行查询,就要使用GROUPBY子句进行分组查询。4.3数据操作4.3.2记录查询2.多表连接查询(1)内连接内连接是最典型、最常用的连接查询,它根据数据表中共同的列进行匹配,特别是两个数据表存在主码、外码关系时通常会用到内连接查询。①使用FROM子句实现多表查询。

例如,查询课程名及选修课程的学号信息。SELECTcourse_,student_course.student_noFROMteaching_management.course_info,teaching_management.student_course;4.3数据操作4.3.2记录查询2.多表连接查询(1)内连接②在WHERE子句中指定连接条件。例如,查询课程名及选修课程的学号信息,只显示被选修的课程名和选修课程的学号的记录。SELECTcourse_,student_course.studnet_noFROMteaching_management.course_info,teaching_management.student_courseWHEREteaching_management.course_info.no=teaching_management.student_course.course_no;4.3数据操作4.3.2记录查询2.多表连接查询(1)内连接③使用JOIN关键字实现连接。以上的查询也可以通过JOIN...ON子句实现。SELECTcourse_,student_course.student_noFROMteaching_man-agement.course_infoJOINteaching_management.student_courseONcourse_info.no=student_course.course_no;④使用别名作为表名的简写。⑤三个数据表的连接查询。4.3数据操作4.3.2记录查询2.多表连接查询(2)外连接①左外连接。左外连接使用LEFTJOIN关键字,左外连接的结果集中包括“左表”(JOIN关键字左边的表)中的所有行,在“右表”(JOIN关键字右边的表)中没有匹配的行显示为NULL。例如,查询课程名及选修课程的学号信息,不管课程是否被选修都显示所有课程的课程名。SELECTci.name,sc.student_noFROMteaching_management.course_infoASciLEFTJOINteaching_management.student_courseASscONci.no=sc.course_no;4.3数据操作4.3.2记录查询2.多表连接查询(2)外连接

②右外连接。右外连接使用RIGHTJOIN关键字,右外连接的结果集中包括“右表”(JOIN关键字右边的表)中的所有行,在“左表”(JOIN关键字左边的表)中没有匹配的行显示为NULL。例如,查询学生选修课程信息表中的课程号以及所有学生姓名信息,不管学生是否选修课程。SELECTsc.course_no,FROMteaching_management.student_courseASscRIGHTJOINteaching_management.student_infoASsiONsc.student_no=si.no;4.3数据操作4.3.2记录查询2.多表连接查询(2)外连接③交叉连接。交叉连接采用CROSSJOIN关键字,没有ON子句的交叉连接将产生连接所涉及的数据表的笛卡儿积。例如,查询课程名及选修课程的学号信息,只显示被选修的课程名和选修课程的学号的记录。SELECTci.name,sc.student_noFROMteaching_management.course_infoASciCROSSJOINteaching_management.student_courseASscONci.no=sc.course_no;4.3数据操作4.3.2记录查询2.多表连接查询(2)外连接

④自连接。在信息查询时,有时需要将数据表与其自身进行连接,即自连接,这就需要用到别名。例如,查询与学生“吴六”同班的学生姓名。SELECTFROMteaching_management.student_infoASsi1,teaching_management.student_infoASsi2WHERE=‘吴六’ANDsi1.class_no=si2.class_no;4.3数据操作4.3.2记录查询2.多表连接查询(2)外连接

⑤联合查询。UNION关键字可以将两个或两个以上的SELECT语句的查询结果集合合并成一个结果集合,即执行联合查询。例如,查询学生姓名包含“仁”字以及出生日期在2002-01-01之后的学生姓名。SELECTname姓名FROMteaching_management.student_infoWHEREnameLIKE‘%仁%’UNIONSELECTname姓名FROMteaching_management.student_infoWHEREbirthday>‘2002-01-01’;4.3数据操作4.3.2记录查询3.子查询操作(1)使用比较运算符的子查询。它是指父查询与子查询之间用比较运算符进行连接。当子查询返回的值是单值时,可以用>、<、=、>=、<=、!=、<>等比较运算符连接。(2)[NOT]IN子查询。使用比较运算符时,要求子查询只能返回一条或空的记录。如果子查询返回多条记录,则要用IN关键字,它会判断某个属性列是否在子查询的结果中。(3)ANY子查询。ANY关键字表示主查询的条件为满足子查询返回查询结果中任意一条数据记录,有三种匹配方式。①=ANY,②>ANY(或>=ANY),③<ANY(或<=ANY)(4)ALL子查询。ALL关键字表示主查询的条件为满足子查询返回查询结果中所有数据记录,有两种匹配方式。①>ALL(或>=ALL),②<ALL(或<=ALL)(5)[NOT]EXISTS子查询。4.3数据操作4.3.3索引和视图1.索引(1)索引概述。索引是一种特殊的文件(InnoDB数据表上的索引是表空间的组成部分),它们包含着对数据表中所有记录的引用指针。(2)索引的分类。普通索引。唯一索引。主码索引。全文索引。空间索引。4.3数据操作4.3.3索引和视图1.索引(3)创建索引。创建数据表时可以直接创建索引,这种方式最简单、方便。其基本语法格式:CREATETABLE<tb_name>(<字段名1>字段1类型[字段1完整性约束条件][,<字段名2>字段2类型[字段2完整性约束条件]][,...][,<表级约束条件1>][,<表级约束条件2>][,...][UNIQUE|FULLTEXT|SPATIAL][INDEX|KEY][索引名](字段名[字段长度])[ASCIDESC][,...]);4.3数据操作4.3.3索引和视图1.索引【例13】在建立数据表时创建索引。删除教学管理系统teaching_management中的已存在的student_info数据表和student_course数据表。USEteaching_management;DROPTABLEIFEXISTSstudent_info;DROPTABLEIFEXISTSstudent_course;4.3数据操作4.3.3索引和视图1.索引参照书中表4-3,再创建学生信息表student_info,并在学号no字段上创建唯一索引s_no,索引排序为降序。CREATETABLEIFNOTEXISTSstudent_info(noCHAR(3)NOTNULLPRIMARYKEYCOMMENT‘学生学号’,nameVARCHAR(20)DEFAULTNULLCOMMENT‘学生姓名’,genderENUM(‘M’,‘F’)NOTNULLDEFAULT‘M’COMMENT‘学生性别’,birthdayDATENOTNULLDEFAULT‘2003-01-01’COMMENT‘出生日期’,class_noCHAR(3)DEFAULTNULLCOMMENT‘班级号’,CONSTRAINTfk_cFOREIGNKEY(`class_no`)REFERENCES`class_info`(`no`),UNIQUEINDEXs_no(no)DESC)COMMENT=‘学生信息表’;4.3数据操作4.3.3索引和视图1.索引(4)删除索引。在用户不需要该数据表的索引时,可以通过DROP语句手动删除指定索引,语法格式: DROPINDEX<索引名>ON<表名>;【例14】在已建立的数据表中创建索引和删除索引。使用CREATE语句在学生信息表student_info的出生日期字段birthday上创建普通索引id_birthday。CREATEINDEXid_birthdayONstudent_info(birthday);使用ALTERTABLE语句在学生信息表student_info的班级

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论