版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目三
数据库的建立与使用2023年2月创建数据库和表目录Content1创建和管理索引2数据约束和参照完整性2项目导言零在互联网行业兴起的今天,数据不断被信息化,运行程序时必将产生大量的数据,所以各行各业都开始使用数据库来管理数据,向无纸化存储过渡。同时这些数据还需要在以后持久化的维护。因此,合理使用数据库可以高效、有组织地存储数据,并使人们能够更快地从大量信息中提取自己需要的东西。让我们一起跟随本项目,一起来了解一下吧。学习目标零知识目标了解创建数据库与表的方法;熟悉索引的创建与管理;了解约束的概念;掌握主键约束、唯一约束、外键约束和check约束;技能目标具备独立创建数据库和表的能力;具备独立创建和管理索引的能力。素养目标具备精益求精、坚持不懈的精神;具备团队协作能力;具备灵活的思维和处理分析问题的能力;具备责任心。任务3-1:创建数据库和表壹创建与管理数据库任务技能创建数据库、查看数据库、修改数据库、删除数据库创建与管理表创建数据表、查看数据表、修改数据表、复制表、删除数据表表数据操作插入数据、修改数据、删除数据JSON数据类型的使用JSON数据类型任务3-1:创建数据库和表壹1创建与管理数据库(1)创建数据库在使用数据库之前,第一步就是要创建数据库,创建完数据库才可以对其进行相关内容的查询,在MySQL中,使用CREATEDATABASE或CREATESCHEMA命令可以创建数据库。语法格式:CREATE{DATABASE|SCHEMA}[IFNOTEXISTS]DB_NAME[DEFAULT]CHARACTERSETcharset_name|[DEFAULT]COLLATEcollation_name任务3-1:创建数据库和表壹创建myStudent数据库。示例:createdatabasemyStudent;任务3-1:创建数据库和表壹创建数据库score,并指定字符集为GB2312。示例:CREATEDATABASEscoreDEFAULTCHARACTERSETgb2312COLLATEgb2312_chinese_ci;任务3-1:创建数据库和表壹(2)查看数据库数据库创建成功后,需要查看当前系统中存在哪些数据库。语法格式:showdatabases;创建数据库并不表示选定并使用它,要选定或使用所创建的库,必须执行明确的操作。为了使score成为当前的数据库。语法格式:usescore;任务3-1:创建数据库和表壹(3)修改数据库数据库创建后,系统会自动采用默认字符编码。若要修改数据库的参数,可使用ALTERDATABASE语句。语法格式:ALTER{DATABASE|SCHEMA}[db_name][DEFAULT]CHARACTERSETcharset_name|[DEFAULT]COLLATEcollation_name任务3-1:创建数据库和表壹修改myStudent数据库编码方式为“utf8”。示例:alterdatabasemyStudentdefaultcharactersetutf8collateutf8_bin;任务3-1:创建数据库和表壹(4)删除数据库数据库创建后,若要删除某个数据库,可使用dropdatabase语句。语法格式:DROPDATABASE[IFEXISTS]db_name任务3-1:创建数据库和表壹2创建与管理表(1)创建数据表表决定了数据库的结构,是用来存放数据的。一个库需要什么表,各数据库表中有什么样的列,是要合理设计的,在建立了数据库之后,需按照分类进行数据库表的创建以及数据的存储。语法格式:createtable数据表名(
字段1数据类型,
字段2数据类型,……字段n数据类型);任务3-1:创建数据库和表壹创建students数据表。示例:CREATETABLEstudents(s_noCHAR(6)NOTNULLCOMMENT'学号',s_nameCHAR(6)NOTNULLCOMMENT'姓名',sexENUM('男','女')DEFAULT'男'COMMENT'性别',birthdayDATENOTNULLCOMMENT'出生日期',d_noVARCHAR(6)NOTNULLCOMMENT'系别',addressVARCHAR(20)NOTNULLCOMMENT'家庭地址',phoneVARCHAR(20)NOTNULLCOMMENT'联系电话',photoBLOBCOMMENT'照片',PRIMARYKEY(s_no))ENGINE=InnoDBDEFAULTCHARSET=gb2312;任务3-1:创建数据库和表壹(2)查看数据表①查看所有表创建完数据表之后,如果需要查看该表是否已经成功创建,可以在指定的数据库中使用查看表的SQL命令。语法格式:showtables;任务3-1:创建数据库和表壹②查看指定表的结构信息拥有了数据表之后,如果需要查看数据表的结构信息,可以在指定的数据库中使用查看指定表表结构信息的SQL命令。语法格式:describe表名;或desc表名;任务3-1:创建数据库和表壹(3)修改数据表数据表创建之后,用户可以对表的结构信息进行修改,如修改表名、修改字段名、修改字段类型、添加字段、删除字段等。语法格式:ALTER[IGNORE]TABLEtbl_namealter_specification[,alter_specification]...alter_specification:ADD[COLUMN]column_definition[FIRST|AFTERcol_name] //添加字段//修改字段默认值ALTER[COLUMN]col_name{SETDEFAULTliteral|DROPDEFAULT}CHANGE[COLUMN]old_col_namecolumn_definition//重命名字段[FIRST|AFTERcol_name] MODIFY[COLUMN]column_definition[FIRST|AFTERcol_name]//修改字段数据类型DROP[COLUMN]col_name //删除列RENAME[TO]new_tbl_name //对表重命名ORDERBYcol_name //按字段排序//将字符集转换为二进制CONVERTTOCHARACTERSETcharset_name[COLLATEcollation_name]//修改表的默认字符集
[DEFAULT]CHARACTERSETcharset_name[COLLATEcollation_name]任务3-1:创建数据库和表壹①在students表的d_no列后面增加一列speciality示例:ALTERTABLEstudentsADDspecialityVARCHAR(5)NOTNULLAFTERd_no;任务3-1:创建数据库和表壹②在students表的birthday列后增加一列“入学日期”,并定义其默认值为'2014-9-1'ALTERTABLEstudentsADD入学日期DATENOTNULLDEFAULT'2014-9-1'AFTERbirthday;任务3-1:创建数据库和表壹③删除students表的入学日期列的默认值ALTERTABLEstudentsALTER入学日期DROPDEFAULT;任务3-1:创建数据库和表壹④将students表重命名为学生表。ALTERTABLEstudentsrenameto学生表;任务3-1:创建数据库和表壹(4)复制表在修改数据表之前,如果对没有把握的数据进行修改或删除时,可以选择先将表进行复制,可以通过CREATETABLE命令复制表的结构和数据。语法格式:CREATE[TEMPORARY]TABLE[IFNOTEXISTS]tbl_name[()LIKEold_tbl_name[]]|[AS(select_statement)] ;任务3-1:创建数据库和表壹在学生成绩管理数据库myStudent中,创建students表的附表students1。示例:CREATETABLEstudents1LIKEstudents;任务3-1:创建数据库和表壹(5)删除数据表删除数据表是指删除数据库中已存在的表,同时,如果该表中已经有记录,那么该表中的记录也会一并被删除。语法格式:DROP[TEMPORARY]TABLE[IFEXISTS]tbl_name[,tbl_name]...任务3-1:创建数据库和表壹在学生成绩管理数据库myStudent中,删除students1表。示例:DROPTABLEstudents1;任务3-1:创建数据库和表壹3表数据操作(1)插入数据利用insert语句插入单条记录分为四种情况:插入完整的一条记录、插入不完整的一条记录、插入带有字段默认值的记录以及插入已存在主键值的记录。语法格式:insertinto<表名>[(字段名列表)]values(值列表);任务3-1:创建数据库和表壹利用insert语句为学生成绩管理数据库myStudent中的students表中插入两行数据('132001','李平','男','1992-02-01','D001','上海市南京路1234号','021-345478',NULL)、('132002','张三峰','男','1992-04-01','D001','广州市沿江路58号','020-345498',NULL)示例:INSERTINTOstudentsVALUES('132001','李平','男','1992-02-01','D001','上海市南京路1234号','021-345478',NULL),('132002','张三峰','男','1992-04-01','D001','广州市沿江路58号','020-345498',NULL);任务3-1:创建数据库和表壹(2)修改数据在MySQL中,数据库中的表拥有记录集之后,可针对数据库表中的数据进行修改、更新操作。其修改的语句用update表示。update可以用来修改单个表,也可以用来修改多个表。语法格式:UPDATEtbl_nameSETcol_name1=[,col_name2=expr2...][WHERE子句][ORDERBY子句][LIMIT子句]任务3-1:创建数据库和表壹将学号为122001的学生的A001课程成绩修改为80分。示例:UPDATESCORESETREPORT=80WHERES_NO='122001';任务3-1:创建数据库和表壹(3)删除数据①使用delete语句删除表记录语法格式:deletefrom<表名>where条件;任务3-1:创建数据库和表壹将学生成绩管理数据库myStudent的students表删除女生记录。示例:DELETEFROMstudentsWHERESEX='女';任务3-1:创建数据库和表壹②使用truncate语句删除表记录语法格式:truncatetable<表名>;任务3-1:创建数据库和表壹将学生成绩管理数据库myStudent的newstudent表中的记录全部删除。示例:truncatetablenewstudent;任务3-1:创建数据库和表壹4JSON数据类型的使用从MySQL5.7开始,MySQL支持对JSON数据类型的使用。JSON是一种轻量级的数据交换格式,易于阅读和编写。对象在JavaScript中是使用花括号{}包裹起来的内容,数据结构为{key1:value1,key2:value2,...}的键值对结构。在面向对象的语言中,key为对象的属性,value为对应的值。键名可以使用整数和字符串来表示。值的类型可以是任意类型。任务3-1:创建数据库和表壹①创建json字段的表。示例:CREATETABLEtable_json(idINT(20)NOTNULLAUTO_INCREMENT,DATAJSONDEFAULTNULL,PRIMARYKEY(id));②向表中插入数据。insertintotable_json(data)values('{"Tel":"132223232444","name":"david","address":"Beijing"}');insertintotable_json(data)values('{"Tel":,"name":"Mike","address":"Guangzhou"}');任务3-1:创建数据库和表壹③查看数据。select*fromtable_json;3-1:任务实施壹创建表打开myStudent数据库,根据course(课程表)结构创建course表根据score(成绩表)结构创建score表创建departments(院系单位表)表创建teachers(教师表)表创建teach(讲授表)表查看创建的表任务3-2:创建和管理索引贰索引的分类、索引的设计原则认识索引任务技能索引的分类、索引的设计原则索引的创建创建表的同时创建索引、创建索引、查看索引索引删除dropindex删除索引、ALTERTABLE删除索引任务3-2:创建和管理索引贰1认识索引可以加快数据的检索速度可以加快表与表之间的连接在使用ORDERBY和GROUPBY子句进行数据检索时,可以显著减少查询中分组和排序的时间唯一性索引可以保证数据记录的唯一性任务3-2:创建和管理索引贰(1)索引的分类普通索引(INDEX)普通索引是最基本的索引类型,允许在定义索引的字段中插入重复值或空值。创建普通索引的关键字是INDEX。1全文索引(FULLTEXT)全文索引指在定义索引的字段上支持值的全文查找。该索引类型允许在索引字段上插入重复值和空值,它只能在CHAR、VARCHAR或TEXT类型的字段上创建。3多列索引多列索引指在表中多个字段上创建的索引。只有在查询条件中使用了这些字段中的第一个字段时,该索引才会被使用。4唯一索引(UNIQUE)唯一索引指索引字段的值必须唯一,但允许有空值。如果在多个字段上建立的组合索引,则字段的组合必须唯一。创建唯一索引的关键字是UNIQUE。2任务3-2:创建和管理索引贰(2)索引的设计原则
索引并非越多越好1数据量小的表最好不要建立索引3为经常需要进行排序、分组和连接查询的字段建立索引5避免对经常更新的表建立太多索引2在不同值较少的字段上不要建立索引4任务3-2:创建和管理索引贰2索引的创建(1)创建表的同时创建索引用createtable命令创建表的时候就创建索引,此方式简单、方便。语法格式:createtable表名(字段名数据类型[约束条件],字段名数据类型[约束条件],……[unique][fulltext]index|key[别名](字段名[长度][asc|desc]));任务3-2:创建和管理索引贰创建表时建立普通索引。在学生成绩管理数据库myStudent中,创建表tb_student(该表的结构与students表一致),同时设置s_no为主键索引,s_name为唯一性索引。在address列上前5位字符创建索引。示例:CREATETABLEIFNOTEXISTStb_student(s_noCHAR(4)NOTNULLCOMMENT'学号',s_nameCHAR(4)DEFAULTNULLCOMMENT'姓名',sexCHAR(2)DEFAULT'男'COMMENT'性别',birthdayDATEDEFAULTNULLCOMMENT'出生日期',d_noCHAR(4)DEFAULTNULLCOMMENT'所在系部',addressVARCHAR(20)DEFAULTNULLCOMMENT'家庭地址',phoneVARCHAR(12)DEFAULTNULLCOMMENT'联系电话',photoBLOBCOMMENT'照片',PRIMARYKEY(s_no),UNIQUEindexname_index(s_name),INDEXad_index(address(5)))ENGINE=InnoDBDEFAULTCHARSET=gb2312;任务3-2:创建和管理索引贰(2)创建索引如果表已建好,可以使用CREATEINDEX语句创建索引。语法格式:CREATE<索引名>ON<表名>(<列名>[<长度>][ASC|DESC])任务3-2:创建和管理索引贰对students表创建如下索引。①为便于按地址进行查询,为students表的address列上的前6个字符创建一个升序索引address_index。示例:CREATEINDEXaddress_indexONstudents(address(6)ASC);②为经常作为查询条件的字段创建索引。CREATEINDEXd_no_indexONstudents(d_no);任务3-2:创建和管理索引贰③为course表的c_name字段创建一个唯一性索引c_name_index。CREATEUNIQUEindexc_name_indexONcourse(c_name);④为teachers表的t_name字段创建一个唯一性索引t_name_index。CREATEUNIQUEindext_name_indexONteachers(t_name);⑤为score表的s_no和c_no列创建一个复合索引score_index。CREATEINDEXscore_indexONscore(s_no,c_no);任务3-2:创建和管理索引贰(3)查看索引如果想要查看表中创建的索引的情况,可以使用以下命令查看索引。语法格式:SHOWINDEXFROMtbl_name任务3-2:创建和管理索引贰查看course和score的索引。示例:SHOWINDEXFROMcourse;SHOWINDEXFROMscore;任务3-2:创建和管理索引贰3索引删除(1)dropindex删除索引在MySQL中,如果某些索引降低了数据库的性能,或者根本没有必要继续使用该索引,可以将索引删除。语法格式:dropindex索引名on表名;任务3-2:创建和管理索引贰(2)ALTERTABLE删除索引
删除索引除了使用dropindex删除之外,还可以使用ALTERTABLE进行索引删除。语法格式:ALTER[IGNORE]TABLEtb1_name|DROPPRIMARYKEY|DROPINDEXindex_name |DROPFOREIGNKEYfk_symbol3-2:任务实施贰创建索引用CREATEINDEX语句为birthday字段创建名为index_birth的索引用CREATEINDEX语句为s_name、birthday字段创建名为index_bir的多列索引删除index_birth索引任务3-3:数据约束和参数完整性叁索引的分类、索引的设计原则任务技能主键约束主键、复合主键唯一约束创建表时添加唯一约束、删除唯一约束、为已经存在的表添加唯一约束外键约束创建表时添加外键约束、删除外键约束、为已存在的表添加外键约束check约束CHECK约束任务3-3:数据约束和参数完整性叁1主键约束(1)主键①创建表时指定主键在创建数据表时,可以为数据表指定单字段主键。语法格式:字段名数据类型primarykey;任务3-3:数据约束和参数完整性叁在学生成绩管理数据库myStudent中创建student表,并设置stuNo字段为主键。示例:createtablestudent(stuNochar(10)primarykey,namevarchar(50),sexchar(2),birthdaydate,specvarchar(30),phonevarchar(11),addressvarchar(255));任务3-3:数据约束和参数完整性叁②删除主键语法格式:altertable表名dropprimarykey;任务3-3:数据约束和参数完整性叁在学生成绩管理数据库myStudent中,将student表的stuNo字段的主键删除。示例:altertablestudentdropprimarykey;任务3-3:数据约束和参数完整性叁③为已经存在的表添加主键语法格式:altertable表名modify字段名数据类型primarykey;任务3-3:数据约束和参数完整性叁在学生成绩管理数据库myStudent中,将为已存在的student表的stuNo字段设置为主键。示例:altertablestudentdropprimarykey;任务3-3:数据约束和参数完整性叁(2)复合主键①创建表时指定复合主键语法格式:primarykey(字段名1,字段名2,……,字段名n);任务3-3:数据约束和参数完整性叁在学生成绩管理数据库myStudent中,创建一个score表,设置stuNo和couNo字段为复合主键。示例:createtablescore(stuNochar(10),couNochar(10),resultint,primarykey(stuNo,couNo));任务3-3:数据约束和参数完整性叁②删除复合主键语法格式:altertable表名dropprimarykey;任务3-3:数据约束和参数完整性叁在学生成绩管理数据库myStudent中,若要将score表的复合主键删除。示例:altertablescoredropprimarykey;任务3-3:数据约束和参数完整性叁2唯一约束(1)创建表时添加唯一约束语法格式:字段名数据类型unique;任务3-3:数据约束和参数完整性叁在学生成绩管理数据库myStudent中,创建课程表course,并将课程编号couNo字段设置为主键,将课程名称couName字段设置为唯一约束。示例:createtablecourse(couNochar(10)primarykey,couNamevarchar(50)unique,teachervarchar(50));任务3-3:数据约束和参数完整性叁(2)删除唯一约束语法格式:altertable表名dropindex字段名;任务3-3:数据约束和参数完整性叁在学生成绩管理数据库myStudent中,将course表的couName唯一约束删除。示例:altertablecoursedropindexcouName;任务3-3:数据约束和参数完整性叁(3)为已存在的表添加唯一约束语法格式:altertable表名modify字段名数据类型unique;任务3-3:数据约束和参数完整性叁在学生成绩管理数据库myStudent中,将课程表course中授课教师couName字段添加唯一约束。示例:altertablecoursemodifycouNamevarchar(50)unique;任务3-1:创建数据库和表叁3外键约束(1)创建表时添加外键约束语法格式:constraint外键名foreignkey(外键字段)references关联表名(关联字段);任务3-3:数据约束和参数完整性叁在学生成绩管理数据库myStudent中,对于学生表student和成绩表score,学生表student的主键为stuNo,成绩表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河南省驻马店市泌阳县第一初级中学2025-2026学年九年级上学期第二次评估数学试题(无答案)
- 2026年甘肃交通职业技术学院单招职业适应性考试模拟试题及答案解析
- 2026年连云港师范高等专科学校单招职业适应性测试模拟试题及答案解析
- 2026年湄洲湾职业技术学院单招职业适应性考试模拟试题及答案解析
- 2026年福建工程学院单招职业适应性测试模拟试题及答案解析
- 2026年郑州体育职业学院单招职业适应性测试模拟试题及答案解析
- 儿科重症监护与护理创新
- 2026年教师资格证(小学-英语)考试题及答案
- 2026年教师资格证(小学 综合素质)自测试题及答案
- 2026江苏徐州市口腔医院招聘非在编医务人员(第一批)38人模拟笔试试题及答案解析
- 国家开放大学期末机考理工英语3
- 《贪污贿赂罪新》课件
- 《斯大林格勒保卫战》课件
- 清华大学《工程伦理》网课习题及期末考试答案
- 个人借款合同个人借款协议
- 2023年运动康复期末复习-体适能理论与训练(运动康复专业)考试上岸题库历年考点含答案
- 中国纪录片发展历程
- 2023年德语专业四级考试真题
- 班组工程进度款申请表
- 四年级阅读训练概括文章主要内容(完美)
- JJG 1033-2007电磁流量计
评论
0/150
提交评论