詳解MySQL數據庫、表與完整性約束的定義(Create)
第1關:創(chuàng)建數據庫
編程要求
創(chuàng)建用于2022年北京冬奧會信息系統(tǒng)的數據庫:beijing2022。
create database beijing2022;
第2關:創(chuàng)建表及表的主碼約束
編程要求
在右側“命令行”窗口中操作,或在“代碼文件”窗口中填寫語句,創(chuàng)建數據庫TestDb,在TestDb下創(chuàng)建表t_emp,表結構如下:

注意:
必須為表建主碼,但不用考慮主碼約束的命名;
備注欄僅用于說明列的含義及具體要求,并不要求用COMMENT短語給列作備注。
# 請在以下適當的空白處填寫SQL語句,完成任務書的要求。空白行可通過回車換行添加。
CREATE DATABASE TestDb;
USE TestDb;
CREATE TABLE t_emp (
id INT PRIMARY KEY,
name VARCHAR(32),
deptId INT,
salary FLOAT
);
/* *********** 結束 ************* */第3關:創(chuàng)建外碼約束(foreign key)
編程要求
設有以下兩張表:

請創(chuàng)建上述兩個表,為表定義主鍵,并給表staff創(chuàng)建外鍵,這個外鍵約束的名稱為FK_staff_deptNo。在創(chuàng)建表之前你可能需要先創(chuàng)建數據庫:MyDb,并且將兩張表創(chuàng)建在MyDb數據庫中。不需考慮關于性別的約束。(注意:如果你在實驗1之后接著作本實驗,數據庫MyDb可能已經存在)
# 請在以下空白處填寫完成任務的語句,空白行可通過回車換行添加。
# 你也可以在命令行窗口完成任務,不過,在命令行鍵入的語句不會被保存。
CREATE DATABASE IF NOT EXISTS MyDb;
USE MyDb;
DROP TABLE IF EXISTS staff;
DROP TABLE IF EXISTS dept;
CREATE TABLE dept (
deptNo INT PRIMARY KEY,
deptName VARCHAR(32)
);
CREATE TABLE staff (
staffNo INT PRIMARY KEY,
staffName VARCHAR(32),
gender CHAR(1),
dob DATE,
salary NUMERIC(8,2),
deptNo INT,
CONSTRAINT FK_staff_deptNo FOREIGN KEY (deptNo) REFERENCES dept(deptNo)
);
#結束第4關:CHECK約束
編程要求
表products的結構如下:
字段名稱 數據類型 備注
pid char(10) 產品戶ID,主碼
name varchar(32) 產品名稱
brand char(10) 品牌,只能是('A','B')中的某一個
price int 價格,必須>0
請在數據庫MyDb中創(chuàng)建表products,并分別實現(xiàn)對品牌和價格的約束,兩個CHECK約束的名稱分別為CK_products_brand和CK_products_price,主碼約束不要顯示命名。(提示:如果數據庫MyDb不存在,請首先創(chuàng)建它,并將它作為工作數據庫。)
# 請在以下空白處填寫完成任務的語句,空白行可通過回車換行添加。
# 你也可以在命令行窗口完成任務,不過,在命令行鍵入的語句不會被保存。
CREATE DATABASE IF NOT EXISTS MyDb;
USE MyDb;
DROP TABLE IF EXISTS products;
CREATE TABLE products (
pid CHAR(10) PRIMARY KEY,
name VARCHAR(32),
brand CHAR(10),
price INT,
CONSTRAINT CK_products_brand CHECK (brand IN ('A', 'B')),
CONSTRAINT CK_products_price CHECK (price > 0)
);
# 結束 第5關:DEFAULT約束
編程要求
表hr的結構如下:
字段名稱 數據類型 備注
id char(10) 工號,主碼
name varchar(32) 姓名,不允許為空值
mz char(16) 民族, 缺省值為“漢族”
請在數據庫MyDb中創(chuàng)建表hr,并實現(xiàn)name列的NOT NULL約束和mz列的Default約束(別忘了主碼約束)。
# 請在以下空白處填寫完成任務的語句,空白行可通過回車換行添加。
# 你也可以在命令行窗口完成任務,不過,在命令行鍵入的語句不會被保存。
CREATE DATABASE IF NOT EXISTS MyDb;
USE MyDb;
CREATE TABLE hr (
id CHAR(10) PRIMARY KEY,
name VARCHAR(32) NOT NULL,
mz CHAR(16) DEFAULT '漢族'
);
# 結束 第6關:UNIQUE約束
編程要求
表s的結構如下:
字段名稱 數據類型 備注
sno char(10) 學號,主碼
name varchar(32) 姓名,不允許為空值
ID char(18) 身份證號, 不允許有兩個相同的身份證號
請在數據庫MyDb中創(chuàng)建表s,并實現(xiàn)相關約束(主碼,NOT NULL和Unique約束)。
注意表名s是小寫的,列名ID是全大寫的。如果沒有數據庫MyDb,你需要創(chuàng)建它,并使其成為當前工作數據庫。
# 請在以下空白處填寫完成任務的語句,空白行可通過回車換行添加。
# 你也可以在命令行窗口完成任務,不過,在命令行鍵入的語句不會被保存。
CREATE DATABASE IF NOT EXISTS MyDb;
USE MyDb;
CREATE TABLE s (
sno CHAR(10) PRIMARY KEY,
name VARCHAR(32) NOT NULL,
ID CHAR(18) UNIQUE
);
# 結束 到此這篇關于MySQL數據庫、表與完整性約束的定義(Create)的文章就介紹到這了,更多相關mysql表與完整性約束的定義內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MySql command line client命令操作大全
這篇文章主要介紹了MySql command line client命令操作大全,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-01-01
關于MySql數據庫Update批量更新不同值的實現(xiàn)方法
這篇文章主要介紹了關于MySql數據庫Update批量更新不同值的實現(xiàn)方法,數據庫管理系統(tǒng)可以通過SQL管理數據庫,定義和操作數據,維護數據的完整性和安全性,需要的朋友可以參考下2023-05-05
MySQL存儲引擎中的MyISAM和InnoDB區(qū)別詳解
這篇文章主要介紹了MySQL存儲引擎中的MyISAM和InnoDB區(qū)別詳解,本文總結了MyISAM與InnoDB的11點區(qū)別,需要的朋友可以參考下2015-03-03

