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

注意:
必須為表建主碼,但不用考慮主碼約束的命名;
備注欄僅用于說(shuō)明列的含義及具體要求,并不要求用COMMENT短語(yǔ)給列作備注。
# 請(qǐng)?jiān)谝韵逻m當(dāng)?shù)目瞻滋幪顚慡QL語(yǔ)句,完成任務(wù)書的要求??瞻仔锌赏ㄟ^(guò)回車換行添加。
CREATE DATABASE TestDb;
USE TestDb;
CREATE TABLE t_emp (
id INT PRIMARY KEY,
name VARCHAR(32),
deptId INT,
salary FLOAT
);
/* *********** 結(jié)束 ************* */第3關(guān):創(chuàng)建外碼約束(foreign key)
編程要求
設(shè)有以下兩張表:

請(qǐng)創(chuàng)建上述兩個(gè)表,為表定義主鍵,并給表staff創(chuàng)建外鍵,這個(gè)外鍵約束的名稱為FK_staff_deptNo。在創(chuàng)建表之前你可能需要先創(chuàng)建數(shù)據(jù)庫(kù):MyDb,并且將兩張表創(chuàng)建在MyDb數(shù)據(jù)庫(kù)中。不需考慮關(guān)于性別的約束。(注意:如果你在實(shí)驗(yàn)1之后接著作本實(shí)驗(yàn),數(shù)據(jù)庫(kù)MyDb可能已經(jīng)存在)
# 請(qǐng)?jiān)谝韵驴瞻滋幪顚懲瓿扇蝿?wù)的語(yǔ)句,空白行可通過(guò)回車換行添加。
# 你也可以在命令行窗口完成任務(wù),不過(guò),在命令行鍵入的語(yǔ)句不會(huì)被保存。
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)
);
#結(jié)束第4關(guān):CHECK約束
編程要求
表products的結(jié)構(gòu)如下:
字段名稱 數(shù)據(jù)類型 備注
pid char(10) 產(chǎn)品戶ID,主碼
name varchar(32) 產(chǎn)品名稱
brand char(10) 品牌,只能是('A','B')中的某一個(gè)
price int 價(jià)格,必須>0
請(qǐng)?jiān)跀?shù)據(jù)庫(kù)MyDb中創(chuàng)建表products,并分別實(shí)現(xiàn)對(duì)品牌和價(jià)格的約束,兩個(gè)CHECK約束的名稱分別為CK_products_brand和CK_products_price,主碼約束不要顯示命名。(提示:如果數(shù)據(jù)庫(kù)MyDb不存在,請(qǐng)首先創(chuàng)建它,并將它作為工作數(shù)據(jù)庫(kù)。)
# 請(qǐng)?jiān)谝韵驴瞻滋幪顚懲瓿扇蝿?wù)的語(yǔ)句,空白行可通過(guò)回車換行添加。
# 你也可以在命令行窗口完成任務(wù),不過(guò),在命令行鍵入的語(yǔ)句不會(huì)被保存。
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)
);
# 結(jié)束 第5關(guān):DEFAULT約束
編程要求
表hr的結(jié)構(gòu)如下:
字段名稱 數(shù)據(jù)類型 備注
id char(10) 工號(hào),主碼
name varchar(32) 姓名,不允許為空值
mz char(16) 民族, 缺省值為“漢族”
請(qǐng)?jiān)跀?shù)據(jù)庫(kù)MyDb中創(chuàng)建表hr,并實(shí)現(xiàn)name列的NOT NULL約束和mz列的Default約束(別忘了主碼約束)。
# 請(qǐng)?jiān)谝韵驴瞻滋幪顚懲瓿扇蝿?wù)的語(yǔ)句,空白行可通過(guò)回車換行添加。
# 你也可以在命令行窗口完成任務(wù),不過(guò),在命令行鍵入的語(yǔ)句不會(huì)被保存。
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 '漢族'
);
# 結(jié)束 第6關(guān):UNIQUE約束
編程要求
表s的結(jié)構(gòu)如下:
字段名稱 數(shù)據(jù)類型 備注
sno char(10) 學(xué)號(hào),主碼
name varchar(32) 姓名,不允許為空值
ID char(18) 身份證號(hào), 不允許有兩個(gè)相同的身份證號(hào)
請(qǐng)?jiān)跀?shù)據(jù)庫(kù)MyDb中創(chuàng)建表s,并實(shí)現(xiàn)相關(guān)約束(主碼,NOT NULL和Unique約束)。
注意表名s是小寫的,列名ID是全大寫的。如果沒有數(shù)據(jù)庫(kù)MyDb,你需要?jiǎng)?chuàng)建它,并使其成為當(dāng)前工作數(shù)據(jù)庫(kù)。
# 請(qǐng)?jiān)谝韵驴瞻滋幪顚懲瓿扇蝿?wù)的語(yǔ)句,空白行可通過(guò)回車換行添加。
# 你也可以在命令行窗口完成任務(wù),不過(guò),在命令行鍵入的語(yǔ)句不會(huì)被保存。
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
);
# 結(jié)束 到此這篇關(guān)于MySQL數(shù)據(jù)庫(kù)、表與完整性約束的定義(Create)的文章就介紹到這了,更多相關(guān)mysql表與完整性約束的定義內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySql command line client命令操作大全
這篇文章主要介紹了MySql command line client命令操作大全,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01
關(guān)于MySql數(shù)據(jù)庫(kù)Update批量更新不同值的實(shí)現(xiàn)方法
這篇文章主要介紹了關(guān)于MySql數(shù)據(jù)庫(kù)Update批量更新不同值的實(shí)現(xiàn)方法,數(shù)據(jù)庫(kù)管理系統(tǒng)可以通過(guò)SQL管理數(shù)據(jù)庫(kù),定義和操作數(shù)據(jù),維護(hù)數(shù)據(jù)的完整性和安全性,需要的朋友可以參考下2023-05-05
MySQL存儲(chǔ)引擎中的MyISAM和InnoDB區(qū)別詳解
這篇文章主要介紹了MySQL存儲(chǔ)引擎中的MyISAM和InnoDB區(qū)別詳解,本文總結(jié)了MyISAM與InnoDB的11點(diǎn)區(qū)別,需要的朋友可以參考下2015-03-03
當(dāng)Mysql行鎖遇到復(fù)合主鍵與多列索引詳解
這篇文章主要給大家介紹了關(guān)于當(dāng)Mysql行鎖遇到復(fù)合主鍵與多列索引的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
mysql實(shí)現(xiàn)隨機(jī)查詢經(jīng)驗(yàn)談
官方文檔中進(jìn)行說(shuō)明:Order By和RAND()連用,會(huì)多次掃描表,導(dǎo)致速度變慢,下面看下一些測(cè)試詳解2013-10-10

