您的位置:首页 > 数据库 > MySQL

MySQL实验二——练习题

2020-06-21 04:41 846 查看

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: