MySQL基础实战(一)
实验目的
(1) 掌握系统数据类型的特点和功能
(2) 掌握创建、修改表结构的方法
(3) 掌握数据添加的方法
实验预习与准备
(1) MYSQL中创建数据库的命令
(2) 表结构的创建、修改和删除
(3) MYSQL导入导出表数据的方式
(4) 添加数据的SQL命令
实验内容及步骤
(1) 利用SQL命令创建自己的的数据库 (smallfish)
create database smallfish;
(2) 使用命令行方式利用SQL语句在第一步创建的数据库中按下列要求创建数据表
- student 表
列名 | 类型 | 是否允许为空 | 字段说明 |
---|---|---|---|
sno | char(10) | not null | 学号 |
sname | char(10) | not null | 姓名 |
sex | enum(‘男’,‘女’) vnot | null | 性别 |
birth | date | not null | 出生日期 |
source | varchar(16) | null | 生源地 |
clno | char(10) | null | 班级号 |
phone | char(11) | null | 电话 |
credit | smallint | null | 学分 |
picture | varchar(30) | null | 照片(存放地址) |
remark | text | null | 字段说明 |
pwd | char(6) | not null | 密码 |
use smallfish; # 进入数据库
# 建立student表
mysql> create table student(
-> sno char(10) not null,
-> sname char(10) not null,
-> sex enum("男","女") not null,
-> birth date not null,
-> source varchar(16),
-> clno char(10),
-> phone char(11),
-> credit smallint,
-> picture varchar(30),
-> remark text,
-> pwd char(6) not null);
- course表(课程表)
列名 | 类型 | 是否允许为空 | 字段说明 |
---|---|---|---|
cno | char(6) | not null | 课程号 |
cname | varchar(16) | not null | 课程名 |
credit | tinyint | not null | 学分 |
hour | smallint | not null | 学时 |
term | tinyint | not null | 开课学期(取值范围1-8) |
mysql> create table course(
-> cno char(6) not null,
-> cname varchar(16) not null,
-> credit tinyint not null,
-> hour smallint not null,
-> term tinyint not null);
- score表(成绩表)
列名 | 类型 | 是否允许为空 | 字段说明 |
---|---|---|---|
sno | char(10) | not null | 学生编号 |
cno | char(6) | not null | 课程编号 |
score | decimal(4,1) | null | 期末成绩 |
mysql> create table score(
-> sno char(10) not null,
-> cno char(6) not null,
-> score decimal);
- teacher表(教师表)
列名 | 类型 | 是否允许为空 | 字段说明 |
---|---|---|---|
tno vchar(4) | not null | 教师号 | |
tname | char(10) | not null | 姓名 |
pwd | char(6) | not null | 密码 |
sex | enum(‘男’,‘女’) | not null | 性别 |
tel | char(11) | null | 电话 |
department | varchar(10) | not null | 院系名称 |
type | char(1) | not null | 身份(0:管理员;1:教师) |
remark | text | null | 字段说明 |
mysql> create table teacher(
-> tno char(6) not null,
-> tname char(10) not null,
-> pwd char(6) not null,
-> sex enum("男","女"),
-> tel char(11),
-> department varchar(10) not null,
-> type char(1) not null,
-> remark text);
- class表(班级表)
列名 | 类型 | 是否允许为空 | 字段说明 |
---|---|---|---|
clno | char(8) | not null | 班级编号 |
clname | varchar(16) | not null | 班级名称 |
department | varchar(12) | not null | 院系名称 |
mysql> create table class(
-> clno char(8) not null,
-> clname varchar(16) not null,
-> department varchar(12) not null);
- course_class表(教师授课表)
列名 | 类型 | 是否允许为空 | 字段说明 |
---|---|---|---|
列名 | 类型 | 是否允许为空 | 字段说明 |
tno | char(4) | not null | 教师编号 |
clno | char(8) | not null | 班级编号 |
cno | char(6) | not null | 课程编号 |
mysql> create table course_class(
-> tno char(4) not null,
-> clno char(8) not null,
-> cno char(6) not null);
(3) 利用SQL语句修改表的结构
a) 修改student表中clno属性的数据类型为varchar(8),并且不允许为空
alter table student modify clno varchar(8);
b) 将student表中的phone属性名修改为tel,类型不变
alter table student rename column phone to tel;
c) 为student表增加point属性(入学成绩),数据类型为smallint,允许为空,并将属性至于tel属性之后,credit属性之前
alter table student add point smallint null after tel;
d) 为student表增加email属性,数据类型为varchar(30),允许为空,并将属性至于picture属性之后,remark属性之前
alter table student add email varchar(30) null after picture;
e) 为score表增加usual属性(平时成绩),数据类型为decimal(4,1),允许为空
alter table score add usual decimal(4,1);
f) 删除student表中的pwd属性
alter table student drop column pwd;
(4) 利用MYSQL的数据导入/导出功能将jwgl数据库中的相应表中数据导入到自己创建的数据表中
load data infile 'D:/MySQL Data/class.txt' into table class;
load data infile 'D:/MySQL Data/course.txt' into table course;
load data infile 'D:/MySQL Data/course_class.txt' into table course_class;
load data infile 'D:/MySQL Data/score.txt' into table score;
load data infile 'D:/MySQL Data/teacher.txt' into table teacher;
load data infile 'D:/MySQL Data/student.txt' into table student;
(5)向表中插入新的信息
向student表中插入自己的个人信息
mysql> insert into student
-> (sno,sname,sex,birth,clno,tel,point,email)
-> values('202015741','小鱼干','男','2020-01-01','12920301','12345678999',600,'[email protected]');
向score表中插入一条记录,学生学号为:0922221326,课程编号为:010003,其余属性取空值
mysql> insert into score(sno,cno)
-> values('0922221326','010003');