希望你开心,希望你健康,希望你幸福,希望你点赞!
最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!!
喵喵喵,你对我真的很重要!
前言
本任务将学习创建和管理数据库、创建和管理表以及表数据操作的基本方法和技巧。在任务实施过程中,要特别注意表的规范化,要注意数据类型的正确选择,还要注意数据库和数据表字符集的统一问题。S学校要建立一个教学管理系统。根据需求分析,要求创建学生、课程、教师和系部等数据表来存储数据。接下来,要建立数据库,设计数据表的结构,并初始化相关表数据。
创建与管理数据库
创建库
使用CREATE DATABASE或CREATE SCHEMA命令可以创建数据库,其语法结构如下。
**CREATE {****DATABASE ****| SCHEMA} [IF NOT EXISTS] db_name。**
** [DEFAULT] ***CHARACTER SET charset_name。*
** | [DEFAULT] COLLATEcollation_name**。
注:SCHEMA 概要,计划,图表。数据库中的Schema,为数据库对象的集合,一个用户一般对应一个schema。
创建数据库。
**mysql****> ****CREATE DATABASE [IF NOT EXISTS] JXGL;**
•
** 创建数据库CPXS库,并指定字符集为utf8**。
mysql**> **CREATE DATABASE CPXS
** DEFAULT CHARACTER SET utf8 **
** COLLATE utf8_general_ci**。
DEFAULT CHARACTER SET:指定数据库的默认字符集(Charset),charset_name****为字符集名称。
COLLATE:指定字符集的校对规则,collation_name****为校对规则名称。
创建数据库时最好指定字符集。如果指定了,在其内部创建的表、表中的字段都将继承使用这个字符集。若没有指定,则会继承使用服务器级的字符集。
IF NOT EXISTS:如果指定了已有的数据库名,会出现错误信息。IF NOT EXISTS****可防止同名,且不报错。
查看与打开数据库
查看本服务器中的所有数据库
mysql**> **SHOW DATABASES;
打开或选定数据库
创建了数据库并不表示选定并使用它,必须明确地操作。为了使JXGL成为当前的数据库,使用如下命令。
mysql**> **USE JXGL;
查看当前正在使用的数据库名称。
mysql**> **select database();
修改数据库
数据库创建后,如果需要修改数据库的参数,可以使用ALTER DATABASE命令。语法类似创建:
ALTER** {DATABASE | SCHEMA} [db_name]**
** [DEFAULT] CHARACTER SET **charset_name
** | [DEFAULT] COLLATE **collation_name
将JXGL库修改字符集为utf8,校对原则为****utf8_general_ci
mysql**>**ALTER DATABASE JXGL DEFAULT
** CHARACTER SET utf8 **
** COLLATE utf8_general_ci**
删除数据库
已经创建的数据库,如果需要删除,可使用DROP DATABASE命令。语法格式:
DROP** DATABASE [IF EXISTS] **db_name
删除YGGL库。
mysql**> ****DROP DATABASE YGGL; **
注:删除了数据库,数据库里的所有表也同时被删除。因此,最好先对数据库做好备份,然后再执行删除操作。
创建与管理表
数据库创建之后,数据库是空的,是没有表的,可以打开数据库查看。
mysql**> **USE JXGL;
mysql> SHOW TABLES;
表决定了数据库的结构, 表是存放数据的地方,一个库需要什么表,各数据库表中有什么样的列,是要合理设计的。
创建表
创建表的语法如下:
**CREATE ****[TEMPORARY] TABLE [IF NOT EXISTS] **table_name
** [ ( [column_definition] , ... | [index_definition] ) ]**
** [table_option] [select_statement];**
其中:****column_definition
col_name** type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string'] [reference_definition]**
学生管理系统(JXGL),在这个库中要设计6张表。
students(学生信息表)
course****(课程表)
score****(成绩表)
departments****(院系单位表)
teachers****(教师表)
teach****(讲授表)
student
course
score
department
teacher
teach
//创建表teachers
mysql> CREATE TABLE IF NOT EXISTS teachers
(
T_NO char(8) NOT NULL COMMENT '教师编号',
T_NAME char(8) NOT NULL COMMENT'教师姓名',
D_NO char(8) NOT NULL COMMENT '院系编号',
PRIMARY KEY (T_NO)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
//创建表departments。
mysql> CREATE TABLE IF NOT EXISTS departments
(
D_NO char(8) NOT NULL COMMENT '院系编号',
D_NAME char(8) NOT NULL COMMENT '院系名称',
PRIMARY KEY (D_NO)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
//创建表STUDENTS。
mysql> CREATE TABLE IF NOT EXISTS STUDENTS
(
s_no char(4) NOT NULL COMMEN'学号',
s_name char(4) NOT NULL COMMENT'姓名',
sex ENUM('男', '女') DEFAULT '男' COMMENT '性别',
birthday date NOT NULL COMMENT'出生日期',
d_no varchar (4) NOT NULL COMMENT'所在系部',
address varchar(20) NOT NULL COMMENT'家庭地址',
phone varchar(12) NOT NULL COMMENT'联系电话',
photo blob COMMENT'照片',
PRIMARY KEY (s_no)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
关于设置主键。PRIMARY KEY表示设置该字段为主键。如在STUDENTS表中,PRIMARY KEY (s_no)表示将s_no字段定义为主键。 在score表中,PRIMARY KEY (s_no,c_no)表示把s_no、c_no两个字段一起作为复合主键。
添加注释。COMMENT'学号'表示对“s_no”字段增加注释为“学号”。
字段类型的选择。SEX ENUM('男' ,'女')表示sex字段的字段类型是ENUM,取值范围为'男'和 '女'。
默认值的设置。DEFAULT‘男’表示默认值为“男”。
设置精度。Score表中的report float(5,1)表示精度为6 ,小数位1位。
“ENGINE=InnoDB”表示采用的存储引擎是InnoDB,InnoDB是MySQL在Windows平台默认的存储引擎,所以“ENGINE=InnoDB”可以省略。
DEFAULT CHARSET=utf8表示表的字符集是utf8。
如果没有指定是NULL或是NOT NULL,则列在创建时假定为NULL。
设置自动增量。一个整数列可以拥有一个附加属性AUTO_INCREMENT。AUTO_INCREMENT序列从一般1开始,也可以自定义(通过修改表语句实现)开始值。一般只用于主键字段。
在CPXS库中,创建进货单表,进货ID是自动增量,将进货单价列的精度设置为8 ,小数位设置为2位,进货时间默认为当前时间。
查看表
创建了数据表后,现在再用SHOW TABLES查询已创建的表的情况。
mysql> SHOW TABLES;
修改表
ALTER TABLE****用于更改原有表的结构。
可以增加或删减列、重新命名列或表,还可以修改默认字符集。
语法格式:
ALTER [IGNORE] TABLE tbl_name //主句,指定要修改在表名
alter_specification [, alter_specification] ... //子句,指定要作的修改操作
其中:
** IGNORE**:
*是MySQL对*ANSI SQL92 的一个扩充,如果在表中的唯一键上有重复,它控制ALTER TABLE*如何工作。*
如果IGNORE没被指定,副本被放弃并且恢复原状。
如果IGNORE被指定,那么对唯一键有重复的行,只有使用第一行;其余被删除。
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 //删除列
| 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]
//修改表的默认字符集
在STUDENTS表的department列后面增加一列speciality。
mysql> ALTER TABLE STUDENTS
** ADD speciality VARCHAR(5 ) NOT NULL AFTER department;**
给STUDENTS表的birthday列后增加一列“入学日期”,并定义其默认值为**'2014-9-1'**。
mysql**>ALTER TABLE STUDENTS **
** ADD ****入学日期 ****date NOT NULL DEFAULT **
'2014-9-1' AFTER birthday;
修改表STUDENTS的sex列的默认值为女。
mysql**> ALTER TABLE STUDENTS CHANGE 性别 *性别 char(*2) NOT NULL DEFAULT '女';**
删除STUDENTS表的入学日期列的默认值。
mysql**>ALTER TABLE STUDENTS ALTER ****入学日期 **DROP DEFAULT;
将表STUDENTS重名为学生表。
mysql> ALTER TABLE STUDENTS rename to**学生表;**
修改course表的字符集为utf8。
ALTER TABLE course DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
复制表
*可以通过***CREATE TABLE **命令复制表的结构和数据。
语法格式:
** CREATE [TEMPORARY] TABLE [IF NOT EXISTS] **tbl_name
** [LIKE old_tbl_name | (LIKE old_tbl_name )] //**复制表结构
** | [AS (select_statement)] ; //**复制表结构和数据
创建一个表STUDENTS的附表STUDENTS1。
mysql> CREATE TABLE STUDENTS1 LIKE STUDENTS;
用命令查看STUDENTS1的结构。
mysql> DESC STUDENTS1;
复制表Students的结构和数据,名为students_copy。
mysql> CREATE TABLE STUDENTS_COPY AS SELECT * FROM STUDENTS
总结
本任务将学习创建和管理数据库、创建和管理表以及表数据操作的基本方法和技巧。
在任务实施过程中,要特别注意表的规范化,要注意数据类型的正确选择,还要注意数据库和数据表字符集的统一问题。
希望你开心,希望你健康,希望你幸福,希望你点赞!
最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!!
喵喵喵,你对我真的很重要!
版权归原作者 猫佛佛 所有, 如有侵权,请联系我们删除。