MySQL数据库任务驱动式教程(第3版)项目四.pptx
《MySQL数据库任务驱动式教程(第3版)项目四.pptx》由会员分享,可在线阅读,更多相关《MySQL数据库任务驱动式教程(第3版)项目四.pptx(69页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 项目四 建库、建表与数据表管理项目四建库、建表与数据表管理MySQL数据库任务驱动式教程(第3版)(微课版)人民邮电出版社北京2 项目四 建库、建表与数据表管理任务7 创建数据库和表【任务背景】S学校要建立一个教学管理系统。根据需求分析,要求创建学生信息、课程、成绩、院系单位、教师和讲授等数据表来存储数据。接下来,要创建数据库,设计数据表的结构,并初始化相关表数据。【任务要求】本任务将学习创建和管理数据库、创建和管理表、表数据操作,以及对JSON数据类型的使用的基本方法和技巧。在任务实施过程中,要特别注意表的规范化,要注意数据类型的正确选择,还要注意数据库和数据表字符集的统一问题3 项目四
2、 建库、建表与数据表管理创建与管理数据库使用CREATE DATABASE或CREATE SCHEMA命令可以创建数据库。其语法结构如下。创建库nCREATE DATABASE|SCHEMA IF NOT EXISTS DB_NAME DEFAULT CHARACTER SET charset_name|DEFAULT COLLATE collation_name【任务7.1】创建数据库JXGL。mysqlCREATE DATABASE JXGL;【任务7.2】创建数据库CPXS,并指定字符集为GB 2312。mysqlCREATE DATABASE CPXS DEFAULT CHARACTE
3、R SET gb2312 COLLATE gb2312_chinese_ci;4 项目四 建库、建表与数据表管理创建与管理数据库n用SHOW DATABASES命令查看库,运行结果如图7.1所示。n创建数据库并不表示选定并使用它,要选定或使用所创建的库,必须执行明确的操作。为了使JXGL成为当前的数据库,使用如下命令。nmysqlUse JXGL;查看库图7.1查看库运行结果5 项目四 建库、建表与数据表管理创建与管理数据库n数据库创建后,如果需要修改数据库的参数,可以使用ALTER DATABASE命令。n语法格式如下。nALTER DATABASE|SCHEMA db_name DEFAU
4、LT CHARACTER SET charset_name|DEFAULT COLLATE collation_name修改库【任务7.3】将JXGL数据库的字符集修改为GB 2312,校对原则修改为gb2312_chinese_ci。mysqlALTER DATABASE JXGL DEFAULT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci6 项目四 建库、建表与数据表管理创建与管理数据库n已经创建的数据库,如果需要删除,可使用DROP DATABASE命令。n语法格式如下。nDROP DATABASE IF EXISTS db_name删除
5、库【任务7.4】删除JXGL库。mysql DROP DATABASE JXGL;特别要注意的是,删除了数据库,数据库里的所有表也同时被删除。最好先对数据库做好备份,再执行删除操作。7 项目四 建库、建表与数据表管理创建与管理表表决定了数据库的结构,是用来存放数据的。一个库需要什么表,各数据库表中有什么样的列,是要合理设计的。创建表的语法格式如下。CREATE TEMPORARY TABLE IF NOT EXISTS table_name(column_definition,.|index_definition)table_option select_statement;创建表8 项目四 建
6、库、建表与数据表管理创建与管理表与本书配套的教学示例数据库为学生管理系统(JXGL),在这个库中要设计6张表:students(学生信息表)、course(课程表)、score(成绩表)、departments(院系单位表)、teachers(教师表)和teach(讲授表)。各表的结构见表7.17.6。字段名数据类型长度是否空值是否主键/外键默认值备注s_no定长字符型CHAR6否主键学号s_name定长字符型CHAR6否姓名sexENUM(男,女)2是男性别birthday日期型DATE否出生日期d_no定长字符型Char6否外键系别address变长字符型VARCHAR20否家庭地址pho
7、ne变长字符型VARCHAR20否联系电话photo二进制BLOB是照片表7.1students9 项目四 建库、建表与数据表管理创建与管理表表7.2course字段名数据类型长度是否空值是否主键/外键默认值备注c_no定长字符型CHAR4否主键课程号c_name定长字符型CHAR10否课程名hours小整数型TINYINT3否学时credit小整数型TINYINT3否学分type变长字符型VARCHAR5否必修类型表7.3score字段名数据类型长度是否空值是否主键/外键默认值备注s_no定长字符型CHAR8否主键、外键学号c_no定长字符型CHAR4否主键、外键课程号report浮点数FL
8、OAT3,1否0成绩10 项目四 建库、建表与数据表管理创建与管理表表7.4departments表7.5teachers字段名数据类型长度是否空值是否主键/外键默认值备注d_no定长字符型CHAR8否主键系别d_name定长字符型CHAR4否院系名称字段名数据类型长度是否空值是否主键/外键默认值备注t_no定长字符型CHAR8否主键教师编号t_name定长字符型CHAR4否教师姓名d_no定长字符型CHAR4否外键系别表7.6teach字段名数据类型长度是否空值是否主键/外键默认值备注t_no定长字符型CHAR8否主键、外键教师编号c_no定长字符型CHAR4否主键、外键课程编号11 项目四
9、 建库、建表与数据表管理创建与管理表【任务7.5】创建表students。mysql CREATE TABLE IF NOT EXISTS students(s_no CHAR(6)NOT NULL COMMENT学号,s_name CHAR(6)NOT NULL COMMENT姓名,sex ENUM(男,女)DEFAULT 男 COMMENT 性别,birthday DATE NOT NULL COMMENT出生日期,d_no VARCHAR(6)NOT NULL COMMENT系别,address VARCHAR(20)NOT NULL COMMENT家庭地址,phone VARCHAR(
10、20)NOT NULL COMMENT联系电话,photo BLOB COMMENT照片,PRIMARY KEY(s_no)ENGINE=InnoDB DEFAULT CHARSET=gb2312;【任务7.6】创建表course。mysql CREATE TABLE IF NOT EXISTS course(c_no CHAR(4)NOT NULL,c_name CHAR(10)NOT NULL,hours INT(3)NOT NULL,credit INT(3)NOT NULL,type EMUN(必修课,选修)DEFAULT必修,PRIMARY KEY(c_no)ENGINE=InnoD
11、B DEFAULT CHARSET=gb2312;12 项目四 建库、建表与数据表管理创建与管理表【任务7.7】创建表score。mysql CREATE TABLE IF NOT EXISTS score(s_no CHAR(8)NOT NULL,c_no CHAR(4)NOT NULL,report FLOAT(3,1)DEFAULT 0,PRIMARY KEY(s_no,c_no)ENGINE=InnoDB DEFAULT CHARSET=gb2312;【任务7.8】创建表departments。mysql CREATE TABLE IF NOT EXISTS departments(d
12、_no CHAR(8)NOT NULL COMMENT 系别,d_name CHAR(4)NOT NULL COMMENT 院系名称,PRIMARY KEY(d_no)ENGINE=InnoDB DEFAULT CHARSET=gb2312;【任务7.9】创建表teachers。mysql CREATE TABLE IF NOT EXISTS teachers(t_no CHAR(8)NOT NULL COMMENT 教师编号,t_name CHAR(4)NOT NULL COMMENT教师姓名,d_no CHAR(4)NOT NULL COMMENT 系别,PRIMARY KEY(t_no)
13、ENGINE=InnoDB DEFAULT CHARSET=gb2312;13 项目四 建库、建表与数据表管理创建与管理表【任务7.10】创建表teach。mysql CREATE TABLE IF NOT EXISTS teach(t_no VARCHAR(8)NOT NULL,c_no VARCHAR(4)NOT NULL,KEY t_no(t_no),KEY c_no(c_no)ENGINE=InnoDB DEFAULT CHARSET=gb2312;【任务7.11】在CPXS库中,创建进货单表,进货ID是自动增量,将进货单价字段的精度设置为8,小数位设置为2位,进货时间默认为当前时间。
14、mysqlUSE CPXSmysqlCREATE TABLE进货单(进货ID TINYINT NOT NULL AUTO_INCREMENT,商品ID VARCHAR(10)NOT NULL,进货单价FLOAT(8,2)NOT NULL,数量 INT NOT NULL,进货时间DATE TIME NOT NULL DEFAULT NOW(),进货员工ID CHAR(6)NOT NULL,PRIMARY KEY(进货ID);14 项目四 建库、建表与数据表管理创建与管理表进货单表结构见表7.7。字段名数据类型长度AUTO_INCREMENT是否空值是否主键进货IDTINYINT5是否是商品IDV
15、ARCHAR10否进货单价FLOAT8,2否数量INT否进货时间TIMESTAMP否进货员工IDCHAR6否15 项目四 建库、建表与数据表管理创建与管理表创建数据表后,可用SHOW TABLES查询已创建的表的情况。mysql SHOW TABLES;运行结果如图7.2所示。查看表图7.2运行结果16 项目四 建库、建表与数据表管理创建与管理表ALTER TABLE用于更改原有表的结构,例如,增加或删减列、重新命名列或表,以及修改默认字符集。语法格式如下。修改表ALTER IGNORE TABLE tbl_namealter_specification,alter_specification
16、.alter_specification:ADD COLUMN column_definition FIRST|AFTER col_name /添加字段|ALTER COLUMN col_name SET DEFAULT literal|DROP DEFAULT/修改字段默认值|CHANGE COLUMN old_col_name column_definition /重命名字段FIRST|AFTER col_name|MODIFY COLUMN column_definition FIRST|AFTER col_name /修改字段数据类型|DROP COLUMN col_name/删除列|
17、RENAME TO new_tbl_name/对表重命名|ORDER BY col_name/按字段排序|CONVERT TO CHARACTER SET charset_name COLLATE collation_name/将字符集转换为二进制|DEFAULT CHARACTER SET charset_name COLLATE collation_name /修改表的默认字符集17 项目四 建库、建表与数据表管理创建与管理表mysql ALTER TABLE studentsADD speciality VARCHAR(5)NOT NULL AFTER department;【任务7.1
18、2】在students表的d_no列后面增加一列speciality。mysqlALTER TABLE studentsADD入学日期DATE NOT NULL DEFAULT 2014-9-1 AFTER birthday;【任务7.13】在students表的birthday列后增加一列“入学日期”,并定义其默认值为2014-9-1。mysql ALTER TABLE students CHANGE sexchar(2)NOT NULL DEFAULT 女;【任务7.14】修改students表的sex列的默认值为“女”。mysqlALTER TABLE students ALTER 入学
19、日期DROP DEFAULT;【任务7.15】删除students表的入学日期列的默认值。mysql ALTER TABLE students rename to学生表;【任务7.16】将students表重命名为学生表。ALTER TABLE course DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;【任务7.17】修改course表的字符集为UTF-8。18 项目四 建库、建表与数据表管理创建与管理表可以通过CREATE TABLE命令复制表的结构和数据。语法格式如下。复制表CREATE TEMPORARY TABLE IF NOT
20、 EXISTS tbl_name()LIKE old_tbl_name|AS(select_statement);mysql CREATE TABLE students1 LIKE students;【任务7.18】创建students表的附表students1。mysql DESC students1;【任务7.19】用命令查看students1表的结构。运行结果如图7.3所示。图7.3【任务7.19】运行结果mysql CREATE TABLE students_COPY AS SELECT *FROM students;可用SELECT *FROM students_COPY查看stud
21、ents_COPY是否与表students的数据一致。【任务7.20】复制students表的结构和数据,名为students_copy。19 项目四 建库、建表与数据表管理创建与管理表如果已存在的表不合适或不需要了,可以用DROP TABLE命令删除。语法格式如下。删除表mysql DROP TEMPORARY TABLE IF EXISTS tbl_name,tbl_name.mysql DROP TABLE students1;【任务7.21】删除students1表。ntb1_name:要被删除的表名。nIF EXISTS:避免要删除的表不存在时出现错误信息。20 项目四 建库、建表与
22、数据表管理表数据操作使用INSERT INTO、REPLACE INTO语句。语法格式如下。插入数据01OPTIONINSERTREPLACE INTO tbl_name(col_name,.)VALUES(expr|DEFAULT,.),(.),.|SET col_name=expr|DEFAULT,.【任务7.22】向students表中插入两行数据(132001,李平,男,1992-02-01,D001,上海市南京路1234号,021-345478,NULL)、(132002,张三峰,男,1992-04-01,D001,广州市沿江路58号,020-345498,NULL)。mysql I
23、NSERT INTO students VALUES(132001,李平,男,1992-02-01,D001,上海市南京路1234号,021-345478,NULL),(132002,张三峰,男,1992-04-01,D001,广州市沿江路58号,020-345498,NULL);21 项目四 建库、建表与数据表管理表数据操作【任务7.23】用INSERT INTO语句向students表中插入数据。mysql INSERT INTO STUDENTS(s_no,s_name,sex)VALUES(132001,李小平,男);由于students表中已经有132001学生的记录,因此将出现主键
24、冲突错误,如下图所示。【任务7.24】假设有一课程表与course表的结构相同,现将course表的数据插入课程表中。mysql INSERT INTO 课程表SELECT*FROM course;查看课程表的数据。mysql SELECT*FROM课程表;运行结果如右图所示。用REPLACE INTO语句则可以直接插入新数据,而不会出现错误信息。mysql REPLACE INTO students(s_no,s_name,sex)VALUES(132001,李小平,男);22 项目四 建库、建表与数据表管理表数据操作用LOAD DATA语句将数据插入数据库表02OPTION【任务7.25】
25、创建一个名为“课程表”的表,假设课程表的数据已放在“D:course.txt”中,现将course.txt的数据插入课程表。mysql LOAD DATA LOCAL INFILED:course.txtINTO TABLE课程表CHARACTER SET gb2312;图片数据的插入03OPTIONMySQL支持图片的存储,图片一般可以以路径的形式来存储,因此插入图片采用直接插入图片的存储路径的方式。当然,也可以直接插入图片本身,使用LOAD_FILE()函数即可。【任务7.26】向students表中插入一行数据:122110,程明,男,1991-02-01,D001,北京路123号,02
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL 数据库 任务 驱动 教程 项目
限制150内