MySQL实验二——练习题

1、分别用以下几种语句查看数据库“mysql”中任意表的结构或数据(先输入:“USE mysql;”):

①SHOW COLUMNS FROM 表名;

②DESCRIBE 表名;

③DESC 表名

④SELECT * FROM 表名

USE mysql;

SHOW COLUMNS FROM servers;

在这里插入图片描述

DESCRIBE servers;

在这里插入图片描述

DESC servers;

在这里插入图片描述

SELECT * FROM servers;

在这里插入图片描述

2、思考以下问题:

1)mysql中utf8编码的utf8_bin,utf8_general_cs,utf8_general_ci三者的区别。

2)不同编码方式的数据库之间进行转储和导入会不会出现错误。

utf8_bin

将字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容

utf8_general_cs

区分大小写

utf8_general_ci

不区分大小写

不同编码方式的数据库之间进行转储和导入会出现错误

3.数据库的模式

1) 利用select@@sql_mode命令查看数据库的模式;

2) 利用set session sql_mode=’模式名’命令修改当前数据库的模式

select@@sql_mode;

在这里插入图片描述

set SESSION sql_mode = NO_AUTO_VALUE_ON_ZERO;
SELECT @@sql_mode;

在这里插入图片描述

4.表的存储引擎

1) 查看当前默认存储引擎:Show variables like ‘storage_engine’;

2) 查看当前数据库支持的存储引擎:Show engines;或Show variables like ‘have%’;

Show variables like 'innodb%';

在这里插入图片描述

Show engines;

在这里插入图片描述

5、创建数据表

1)创建数据库 stm及表

学生表:Student(Sno,Sname,Ssex,Sage,Sdept,Shobby)
课程表:Course(Cno,Cname,Ccredit)
学生选课表:SC(Sno,Cno,Grade)

要求1:sno、sname、Cno为Char(10);Sdept 、Cname 为varchar(20);Sage、Ccredit、Grade为int;Ssex为enum(“男”,”女”);Shobby为set(“旅游”,”音乐”,”读书”,”绘画”,”体育”)。

要求2:利用check子句在sage上建立约束,只能输入18~40之间的整数。

要求3:建立从sc表到student、course表上的外键,实现级联更新和删除

要求4:向每个表中输入数据。
2)利用Desc tablename;或 Describe tablename;或 Show create table tablename;
或 show columns from 表名; 查看表的结构。

建表

CREATE TABLE Student(
	Sno CHAR(10) PRIMARY KEY,
	Sname CHAR(10) NOT NULL,
	Ssex ENUM('男','女') NOT NULL,
	Sage INT NOT NULL CHECK(Sage BETWEEN 18 AND 40),
	Sdept VARCHAR(20) NOT NULL,
	Shobby SET('旅游', '音乐', '读书', '绘画', '体育') 
) COMMENT'创建学生表';

CREATE TABLE Course(
	Cno CHAR(10) PRIMARY KEY,
	Cname VARCHAR(20) NOT NULL,
	Ccredit INT NOT NULL COMMENT '学分'
)	COMMENT '创建课程表';

CREATE TABLE SC(
	Sno CHAR(10) NOT NULL,
	Cno CHAR(10) NOT NULL,
	Grade DECIMAL(7,2) NOT NULL,
	CONSTRAINT sc_stu_fk FOREIGN KEY (Sno) REFERENCES Student(Sno),
	CONSTRAINT sc_c_fk FOREIGN KEY (Cno) REFERENCES Course(Cno)
) COMMENT '创建选课表';

插入数据

INSERT INTO 
	Student 
VALUES
	('0000000001', '张三', '男', '19', '经管院', '旅游')
	('0000000002', '李四', '男', '19', '经管院', '音乐'),
	('0000000003', '王五', '男', '19', '经管院', '读书'),
	('0000000004', '赵六', '男', '19', '经管院', '绘画'),
	('0000000005', '田七', '男', '19', '经管院', '体育'),
	('0000000006', '田七', '男', '19', '经管院', '体育'),
	('0000000007', '李八', '男', '19', '电信院', '绘画'),
	('0000000008', '李婉', '女', '19', '美院', '音乐'),
	('0000000009', '黄玉', '女', '19', '美院', '读书'),
	('0000000010', '孙尚香', '女', '19', '音舞院', '旅游');

INSERT INTO 
	Course 
VALUES
	('C000000001', 'Java', 2),
	('C000000002', 'PHP', 1),
	('C000000003', 'MySQL', 3),
	('C000000004', 'JavaScript', 2),
	('C000000005', '摄影', 1),
	('C000000006', '动画制作', 1),
	('C000000007', 'Logo设计', 1),
	('C000000008', '投资', 1),
	('C000000009', '数学文化与赏析', 2);

INSERT INTO
	SC
VALUES
	('0000000001', 'C000000001', '85'),
	('0000000002', 'C000000001', '70'),
	('0000000003', 'C000000002', '65'),
	('0000000004', 'C000000002', '83'),
	('0000000005', 'C000000003', '83'),
	('0000000006', 'C000000004', '86.5'),
	('0000000007', 'C000000005', '76.5'),
	('0000000008', 'C000000005', '83.5'),
	('0000000009', 'C000000006', '73.5'),
	('0000000010', 'C000000006', '63.5');

查看表结构

DESC Student;

在这里插入图片描述

DESC Course;

在这里插入图片描述

DESC SC;

在这里插入图片描述

6、修改表的结构

利用CREATE TABLE newtable LIKE mytbl,创建一个跟Student结构相同的新表stud。

然后利用Alter tbale语句实现下面操作:

①修改表名为stud1、修改字段名sdept为dept
②修改字段数据类型dept 字段改为varchar(15)
③修改字段排列位置 把shobby调整到最前面的字段
④增加字段Sclassroom char(4)、删除该字段
⑤更改表的存储引擎为MyISAM

1) 添加、删除表的外键约束及主键约束

复制表结构

CREATE TABLE NewStudent LIKE Student;

修改表名为stud1

ALTER TABLE NewStudent RENAME stud1;

修改字段名sdept为dept

ALTER TABLE stud1 CHANGE sdept dept VARCHAR(20);

修改dept的数据类型

ALTER TABLE stud1 MODIFY COLUMN dept VARCHAR(15) NOT NULL;

将Shobby移动到最前面

ALTER TABLE stud1 MODIFY Shobby SET('旅游', '音乐', '读书', '绘画', '体育') FIRST;

增加Sclassroom字段

ALTER TABLE stud1 ADD COLUMN Sclassroom char(4) NOT NULL;

修改表的存储引擎为 ‘MyISAM’ 并查看

ALTER TABLE stud1 ENGINE = MyISAM;
SHOW TABLE STATUS LIKE 'stud1';

在这里插入图片描述

添加 / 删除,主 / 外键

ALTER TABLE stud1 DROP PRIMARY KEY;
ALTER TABLE stud1 ADD CONSTRAINT pk_stu1_sno PRIMARY KEY(Sno);

ALTER TABLE stud1 
ADD CONSTRAINT sc_fk_st1 
FOREIGN KEY(sno)
REFERENCES stud1(Sno);

ALTER TABLE stud1
DROP FOREIGN KEY sc_fk_st1;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值