天天看點

MySQL 實驗三 建立資料庫、管理表結構和表資料

一.實驗目的

  • 1.掌握資料庫的建立;
  • 2.掌握表結構的建立、修改、檢視、删除操作;

二.實驗環境

  • win10
  • MySQL Server8.0
  • MySQL Workbench

三.實驗内容和要求

1.建立資料庫

  • (1) 使用 workbench 或者 MySQL 指令行建立一個名字為 db_test_學号(每個學生的完整學号)的資料庫;
-- 建立資料庫
create database db_test_學号;
-- 使用資料庫
use db_test_學号;

           
  • (2) 檢視上面資料庫的建立資訊,如果資料庫的字元集不是 gbk,把資料庫字元集改成 gbk,字元序使用預設方式即可;
-- 修改資料庫預設字元集
alter database db_test_學号 character set gbk;
           
  • (3) 把 db_test_學号設定為目前資料庫,下面的表都在該資料庫下建立;

2.建立表結構

  • (1) 使用 workbench 或者 MySQL 指令行建立下列各表,表結構如附錄員工醫

    療保險系統表 1-表 7 所示。

CREATE TABLE IF NOT EXISTS `bussiness`(
   `bno` char(10) primary key COMMENT '企業編号',
   `bname` CHAR(50) NOT NULL COMMENT '企業名稱',
   `btype` enum ('企業','事業','私有') COMMENT '企業類型',
   `baddress` char(20) COMMENT '企業位址',
   `btel` char(13) COMMENT '聯系電話'
);

CREATE TABLE IF NOT EXISTS `hospital`(
   `hno` char(5) primary key COMMENT '醫院編号',
   `hname` CHAR(40) NOT NULL COMMENT '醫院名稱',
   `haddress` char(60) COMMENT '醫院名稱'
);

CREATE TABLE IF NOT EXISTS `card`(
   `cno` char(15) primary key COMMENT '醫保卡号',
   `ctype` enum ('企業','事業','靈活就業') COMMENT '醫保類型',
   `haddress` decimal(7,2) not null COMMENT '醫保餘額'
);

CREATE TABLE IF NOT EXISTS `staff` (
    `sno` CHAR(5) PRIMARY KEY COMMENT '員工編号',
    `sname` CHAR(20) not null COMMENT '員工姓名',
	`ssex` enum ('男','女') COMMENT '員工性别',
    `sbirthday` date COMMENT '出生日期',
    `sadress` CHAR(20) COMMENT '員工住址',
    `stel` CHAR(15) unique COMMENT '聯系電話',
    `cno` CHAR(15) COMMENT '醫保卡号',
    `bno` CHAR(10) COMMENT '企業編号',
    FOREIGN KEY (cno) REFERENCES card(cno),
    FOREIGN KEY (bno) REFERENCES bussiness(bno)
);

CREATE TABLE IF NOT EXISTS `see`(
   `sno` char(5) COMMENT '員工編号',
   `hno` char(5) COMMENT '醫院編号',
   `sdate`date COMMENT '就診日期',
	PRIMARY KEY (`sno`,`hno`,`sdate`),
    FOREIGN KEY (hno) REFERENCES hospital(hno),
    FOREIGN KEY (sno) REFERENCES staff(sno) on delete cascade
);

CREATE TABLE IF NOT EXISTS `consume`(
   `cno` char(15) COMMENT '醫保卡号',
   `hno` char(5) COMMENT '醫院編号',
   `csdate` date not null COMMENT '消費日期',
	`mname` char(20) COMMENT '藥品名稱',
    `mnum` int not null COMMENT '藥品數量',
    `csmoney` decimal(7,2) COMMENT '消費金額',
    PRIMARY KEY (`cno`,`hno`,`csdate`),
    FOREIGN KEY (cno) REFERENCES card(cno) on delete cascade
);

CREATE TABLE IF NOT EXISTS `insurance`(
   `idate` date COMMENT '存款日期',
   `cno` char(15) COMMENT '醫保卡号',
   `imone` decimal(5,2) not null COMMENT '存款金額',
   `bno` char(10) COMMENT '企業編号',
	PRIMARY KEY (`idate`,`cno`),
    FOREIGN KEY (cno) REFERENCES card(cno),
    FOREIGN KEY (bno) REFERENCES bussiness(bno)
);

           

3.檢視表結構

  • (1) 使用 workbench 或者 MySQL 指令行檢視員工醫療保險系統所有表的字段

    資訊和限制資訊。

4.修改表結構

  • (1) 使用 workbench 或者 MySQL 指令行根據表“staff”重新生成一個新表

    “staff_sql”,表結構和表“staff”完全一緻。

  • (2) 使用 workbench 或者 MySQL 指令行為“staff_sql”表添加“age INT”字段,

    利用 DESC 指令檢視“staff_sql”表的字段資訊。

    (3) 使用 workbench 或者 MySQL 指令行為“staff_sql”表添加“salary

    decimal(5,2)”、“salary_add decimal (3,1)”兩個字段,利用DESC指令檢視“staff_sql”

    MySQL 資料庫教學資料

    北京理工大學珠海學院張申勇 2

    表的字段資訊。

  • (4) 使用 workbench 或者 MySQL 指令行向“staff_sql”表添加“sname”字段惟一

    性限制,從資料字典 information_schema.table_constraints 檢視“staff_sql”表的限制

    資訊。

  • (5) 使用 workbench 或者 MySQL 指令行删除“staff_sql”表上“sname”字段惟一

    性限制,從資料字典 information_schema.table_constraints 檢視“staff_sql”表的限制

    資訊。

  • (6) 使用 workbench 或者 MySQL 指令行從“staff_sql”表删除“age”字段,利用

    DESC 指令檢視“staff_sql”表的字段資訊。

  • (7) 使用 workbench 或者 MySQL 指令行從“staff_sql”表删除“salary”、

    “salary_add”兩個字段,利用 DESC 指令檢視“staff_sql”表的字段資訊。

  • (8) 使用 workbench 或者 MySQL 指令行将“staff_sql”表“sname”字段長度修改

    為 30,利用 DESC 指令檢視“staff_sql”表的字段資訊。

5.删除表結構

  • (1) 使用 workbench 或者 MySQL 指令行删除員工表,看能否成功。從原理上

    解釋原因,同時記錄外鍵限制表删除順序的影響

-- 查詢表結構和限制
select * from information_schema.table_constraints
where table_name='staff';

-- 複制表
CREATE TABLE staff_sql LIKE staff;

-- 添加字段
alter table staff_sql add age int;

-- 利用DESC指令檢視staff_sql表的字段資訊
select * from information_schema.columns
where table_schema = 'db_test_學号'  #表所在資料庫
and table_name = 'staff_sql' ; #你要查的表

-- 添加字段
alter table staff_sql add salary decimal(5,2);
alter table staff_sql add salary_add decimal(3,1);

-- 4
-- 添加限制
ALTER TABLE staff_sql ADD UNIQUE(sname);
-- 查詢限制
select * from information_schema.table_constraints
where table_name='staff_sql';

-- 5
-- 删除限制
ALTER TABLE staff_sql drop index sname;
-- 查詢限制
select * from information_schema.table_constraints
where table_name='staff_sql';

-- 6
-- 删除字段
ALTER TABLE staff_sql DROP age;
-- 利用DESC指令檢視staff_sql表的字段資訊
select * from information_schema.columns
where table_schema = 'db_test_學号'  #表所在資料庫
and table_name = 'staff_sql' ; #你要查的表

-- 7
-- 删除字段
ALTER TABLE staff_sql DROP salary;
ALTER TABLE staff_sql DROP salary_add;
-- 利用DESC指令檢視staff_sql表的字段資訊
select * from information_schema.columns
where table_schema = 'db_test_學号'  #表所在資料庫
and table_name = 'staff_sql' ; #你要查的表

-- 8
-- 修改字段長度
alter table staff_sql modify column sname char(30);
-- 利用DESC指令檢視staff_sql表的字段資訊
select * from information_schema.columns
where table_schema = 'db_test_學号'  #表所在資料庫
and table_name = 'staff_sql' ; #你要查的表


-- 删除資料表
DROP TABLE staff; 

           
MySQL 實驗三 建立資料庫、管理表結構和表資料
MySQL 實驗三 建立資料庫、管理表結構和表資料
MySQL 實驗三 建立資料庫、管理表結構和表資料
MySQL 實驗三 建立資料庫、管理表結構和表資料
MySQL 實驗三 建立資料庫、管理表結構和表資料
MySQL 實驗三 建立資料庫、管理表結構和表資料
MySQL 實驗三 建立資料庫、管理表結構和表資料
MySQL 實驗三 建立資料庫、管理表結構和表資料
MySQL 實驗三 建立資料庫、管理表結構和表資料
MySQL 實驗三 建立資料庫、管理表結構和表資料
MySQL 實驗三 建立資料庫、管理表結構和表資料
MySQL 實驗三 建立資料庫、管理表結構和表資料
MySQL 實驗三 建立資料庫、管理表結構和表資料
MySQL 實驗三 建立資料庫、管理表結構和表資料
MySQL 實驗三 建立資料庫、管理表結構和表資料
MySQL 實驗三 建立資料庫、管理表結構和表資料
MySQL 實驗三 建立資料庫、管理表結構和表資料