MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细

目录

练习一:创建数据库company,在库中创建两个表offices和employees表

1. 创建数据库company,在库中创建两个表offices和employees表

2. 查看该库下几个表以及查看两张表结构。

3. 将表employees的mobile字段修改到officeCode字段后面。

4. 将表employees的birth字段改名为employee_birth。

5. 修改sex字段,数据类型为CHAR(1),非空约束。

6. 删除字段note。

7. 增加字段名favoriate_activity,数据类型为VARCHAR(100)。

8. 删除表offices。

9. 将表employees名称修改为employees_info。

练习二:创建数据库Market,在Market中创建数据表customers

1. 创建数据表customers,在c_num字段上添加主键约束和自增约束,在c_birth字段上添加非空约束。

2. 将c_contact字段插入c_birth字段后面。

3. 将c_name字段数据类型改为VARCHAR(70)。

4. 将c_contact字段改名为c_phone。

5. 增加c_gender字段,数据类型为CHAR(1)。

6. 将表名修改为customers_info。

7. 删除字段c_city。

8. 修改数据表的存储引擎为MyISAM。

9. 在Market中创建数据表orders。

10. 创建数据表orders,在o_num字段上添加主键约束和自增约束,在 c_id字段上添加外键约束,关联customers表中的主键c_num。

11. 删除orders表的外键约束,然后删除表customers。

练习三:创建数据库MySchool

1. 创建数据库MySchool

2. 创建以下数据表。    注意:标识列,都是主键自增的。


练习一:创建数据库company,在库中创建两个表offices和employees表

1. 创建数据库company,在库中创建两个表offices和employees表

offices表结构:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第1张图片

employees表结构:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第2张图片

-- 1. 创建数据库company,在库中创建两个表offices和employees表
create database company;
use company;

create table offices(
	officeCode int(10) primary key,
	city varchar(50) not null,
	address varchar(50),
	country varchar(50) not null,
	postalCode varchar(15) unique
);

-- 方法一建库时直接添加主键和外键约束
create table employees(
	employeeNumber int(11) primary key auto_increment,
	lastName varchar(50) not null,
	firstName varchar(50) not null,
	mobile varchar(25) unique,
	officeCode int(10) not null,
	jobTitle varchar(50) not null,
	birth datetime not null,
	note varchar(255),
	sex varchar(5),
	foreign key(officeCode) references offices(officecode)
);

-- 方法2:先建库后添加主键,外键约束
-- drop table employees;
-- create table employees(
-- 	employeeNumber int(11),
-- 	lastName varchar(50) not null,
-- 	firstName varchar(50) not null,
-- 	mobile varchar(25) unique,
-- 	officeCode int(10) not null,
-- 	jobTitle varchar(50) not null,
-- 	birth datetime not null,
-- 	note varchar(255),
-- 	sex varchar(5)
-- );
-- 设置主键/外键
-- alter table 表名 add constraint 主键名 primary key(字段名)
-- alter table 表名 modify 字段名 int primary key;
-- alter table employees add constraint pk_en primary key(employeeNumber);
-- alter table employees modify employeeNumber int(11) primary key auto_increment;
-- alter table 表名 add constraint 外键名 foreign key(字段名) references 外键连接的表名(外键连接的字段名);
-- alter table employees add constraint fk_eo foreign key(officeCode) references offices(officeCode);

2. 查看该库下几个表以及查看两张表结构。

-- 2. 查看该库下几个表以及查看两张表结构。
show tables; -- 查看当前数据库中的所以数据表
desc employees; -- desc 表名:查看该表结构
desc offices;

employees表结构:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第3张图片

offices表结构:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第4张图片

3. 将表employees的mobile字段修改到officeCode字段后面。

修改字段位置语法:alter table 表名 modify 字段名 字段类型 after 其他字段名;

-- 3. 将表employees的mobile字段修改到officeCode字段后面。
alter table employees modify mobile varchar(25) after officeCode;
desc employees;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第5张图片

4. 将表employees的birth字段改名为employee_birth。

修改字段名语法:alter table 表名 change 旧字段名 新字段名 新字段类型;

-- 4. 将表employees的birth字段改名为employee_birth。
alter table employees change birth employee_birth datetime;
desc employees;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第6张图片

5. 修改sex字段,数据类型为CHAR(1),非空约束。

修改字段数据类型、约束语法:alter table 表名 modify 字段名 字段类型 约束;

非空约束:not null

-- 5. 修改sex字段,数据类型为CHAR(1),非空约束。
alter table employees modify sex char(1) not null;
desc employees;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第7张图片

6. 删除字段note。

删除字段语法:alter table 表名 drop 字段名;

-- 6. 删除字段note。
alter table employees drop note;
desc employees;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第8张图片

7. 增加字段名favoriate_activity,数据类型为VARCHAR(100)。

增加字段语法:alter table 表名 add 字段名 字段数据类型;

-- 7. 增加字段名favoriate_activity,数据类型为VARCHAR(100)。
alter table employees add favoriate_activity varchar(100);
desc employees;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第9张图片

8. 删除表offices。

删除数据表语法:drop table 表名;

        注意:若有外键关联,删除会报错,需先删除外键,或直接先删除有外键关联的表

删除外键约束语法:alter table 表名 drop foreign key 外键名;

-- 8. 删除表offices。
-- 先删除外键关联
alter table employees drop foreign key employees_ibfk_1;
-- 再删除表
drop table offices;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第10张图片

9. 将表employees名称修改为employees_info。

修改数据表名语法:alter table 旧表名 rename to 新表名;

-- 9. 将表employees名称修改为employees_info。
alter table employees rename to employees_info;
show tables;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第11张图片

练习二:创建数据库Market,在Market中创建数据表customers

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第12张图片

1. 创建数据表customers,在c_num字段上添加主键约束和自增约束,在c_birth字段上添加非空约束。

create database Market;
use Market;

-- 1. 创建数据表customers,在c_num字段上添加主键约束和自增约 束,在c_birth字段上添加非空约束。
create table customers(
	c_num int(11) primary key auto_increment,
	c_name varchar(50),
	c_contact varchar(50),
	c_city varchar(50),
	c_birth datetime not null
);
desc customers;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第13张图片

2. 将c_contact字段插入c_birth字段后面。

修改字段位置语法:alter table 表名 modify 字段名 字段类型 after 其他字段名;

-- 2. 将c_contact字段插入c_birth字段后面。
alter table customers modify c_contact varchar(50) after c_birth;
desc customers;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第14张图片

3. 将c_name字段数据类型改为VARCHAR(70)。

修改字段数据类型语法:alter table 表名 modify 字段名 字段类型;

-- 3. 将c_name字段数据类型改为VARCHAR(70)。
alter table customers modify c_name varchar(70);
desc customers;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第15张图片

4. 将c_contact字段改名为c_phone。

修改字段名语法:alter table 表名 change 旧字段名 新字段名 新字段数据类型;

-- 4. 将c_contact字段改名为c_phone。
alter table customers change c_contact c_phone varchar(50);
desc customers;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第16张图片

5. 增加c_gender字段,数据类型为CHAR(1)。

增加字段语法:alter table 表名 add 字段名 字段数据类型;

-- 5. 增加c_gender字段,数据类型为CHAR(1)。
alter table customers add c_gender char(1);
desc customers;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第17张图片

6. 将表名修改为customers_info。

修改数据表名语法:alter table 旧表名 rename to 新表名;

-- 6. 将表名修改为customers_info。
alter table customers rename to customers_info;
show tables;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第18张图片

7. 删除字段c_city。

删除字段语法:alter table 表名 drop 字段名;

-- 7. 删除字段c_city。
alter table customers_info drop c_city;
desc customers_info;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第19张图片

8. 修改数据表的存储引擎为MyISAM。

修改数据表的存储引擎语法:alter table 表名 engine=MyISAM;

查看存储引擎:show create table 表名;

-- 8. 修改数据表的存储引擎为MyISAM。
alter table customers_info engine=MyISAM;
show create table customers_info;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第20张图片

9. 在Market中创建数据表orders。

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第21张图片

10. 创建数据表orders,在o_num字段上添加主键约束和自增约束,在 c_id字段上添加外键约束,关联customers表中的主键c_num。

添加外键语法:alter table 表名 add constraint 外键名 foreign key(字段名) references 外键连接的表名(外键连接的字段名);

注意:在mysql中,建立外键关联,关联表必须是使用innodb,将engine修改为innodb即可

-- 9. 在Market中创建数据表orders。
create table orders(
	o_num int(11) primary key auto_increment,
	o_date date,
	c_id int(11)
);
-- 10.创建数据表orders,在o_num字段上添加主键约束和自增约束,在 c_id字段上添加外键约束,关联customers表中的主键c_num。
alter table customers_info engine=InnoDB;
-- alter table 表名 add constraint 外键名 foreign key(字段名) references 外键连接的表名(外键连接的字段名);
alter table orders add constraint fk_order_id foreign key(c_id) references customers_info(c_num);
desc orders;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第22张图片

11. 删除orders表的外键约束,然后删除表customers。

删除外键约束语法:alter table 表名 drop foreign key 外键名;

删除表:删除数据表语法:drop table 表名;

-- 11.删除orders表的外键约束,然后删除表customers。
alter table orders drop foreign key fk_order_id;
drop table customers_info;
show tables;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第23张图片

练习三:创建数据库MySchool

1. 创建数据库MySchool

-- 1. 创建数据库MySchool
create database MySchool;
use MySchool;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第24张图片

2. 创建以下数据表。    注意:标识列,都是主键自增的。

1> 年级表:Grade表

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第25张图片

-- 1> 年级表:Grade表
create table Grade(
	GradeId int primary key auto_increment,
	GradeName varchar(50) not null
);
desc Grade;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第26张图片

2> 学生表: Student表

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第27张图片

-- 2> 学生表: Student表
create table Student(
	StudentNo varchar(50),
	LoginPwd varchar(50),
	StudentName varchar(50),
	Sex char(2),
	GradeId int,
	Phone varchar(255),
	Address varchar(255),
	BornDate datetime,
	Email varchar(50)
);
desc Student;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第28张图片

3> 科目表:Subjects表

-- 3> 科目表:Subjects表
create table Subjects(
	SubjectId int primary key auto_increment,
	SubjectName varchar(20) not null,
	ClassHour int not null,
	GradeId int not null
);
desc Subjects;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第29张图片

4> 成绩表:Result表

-- 4> 成绩表:Result表
create table Result(
	Id int primary key auto_increment,
	StudentNo varchar(50) not null,
	SubjectId int not null,
	StudentResult int,
	ExamDate datetime not null
);
desc Result;

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第30张图片

5> 表关系

分析

        Student中依赖于Grade,Subjects也依赖于Grade,Result依赖于Student、Subjects

添加外键语法:alter table 表名 add constraint 外键名 foreign key(字段名) references 外键连接的表名(外键连接的字段名);

注意

MySQL数据库外键的创建,需要满足以下四个条件,否则会被MySQL数据库拒绝:
1、创建外键的表和列存在
2、组成外键的列存在索引
3、必须指定数据表的引擎为InnoDB
4、外键字段和关联字段,数据类型必须一致

-- 5> 表关系
-- alter table 表名 add constraint 外键名 foreign key(字段名) references 外键连接的表名(外键连接的字段名);
alter table Student add constraint fk_stu_gid foreign key(GradeId) references Grade(GradeId);
alter table Subjects add constraint fk_sub_gid foreign key(GradeId) references Grade(GradeId);
alter table Student add constraint pk_stuno primary key(StudentNo); -- 为StudentNo列添加索引
alter table Result add constraint fk_res_stuno foreign key(StudentNo) references Student(StudentNo);
alter table Result add constraint fk_res_subid foreign key(SubjectId) references Subjects(SubjectId);

结果:

MySQL基础练习,涉及建库、见表、约束、修改表结构等,超详细_第31张图片

你可能感兴趣的:(MySQL,mysql,数据库,sql)