USE vain;
CREATE TABLE copy LIKE stu;#僅僅只能複製表的結構
CREATE TABLE copy2 (SELECT * FROM stu);#複製表的結構+數據
CREATE TABLE copy3 (SELECT sno,sname FROM stu WHERE 1=0);#只複製部分結構不復制數據
ALTER TABLE copy3 DROP COLUMN sname;
/*
數值型:
整形
浮點型
定點型
字符型:
較短的
*/
/*日期型
date只保存日期
time 只保存時間
year 只保存年
datetime 保存日期+時間
timestamp保存日期+時間
特點:
字節 範圍 時區等影響
datetime 8 1000-9999 不受
timestamp 4 1970-2038 受
*/
CREATE TABLE tab_data(
t1 DATETIME,
t2 TIMESTAMP
);
INSERT INTO tab_data VALUES(NOW(),NOW());
SELECT * FROM tab_data;
#常見約束
/*
含義:一種限制,用於限制表中的數據,爲了最終保證表中的數據的準確性
分類:六大約束
NOT NULL: 非空,用於包裝
比如姓名,學號等
default:默認,用於保證該字段有默認值
比如性別
primary key:主鍵約束,用於保證該字段值具有唯一性,並且非空
比如學號,員工編號等
unique:唯一,用於保證該字段的值具有唯一性,可以爲空
比如座位號
check:檢查約束【mysql中不支持】
比如年齡性別
foreign key外鍵:用於限制兩個表的關係,用於保證該字段的值必須來自於主表的關聯列的值
在從表加個外鍵約束,用於引用主表中某列的值
比如學生表的專業編號,員工表的部門編號
*/
#創建表時添加約束
#1.添加列級約束
USE vain;
CREATE TABLE stuinfo (
id INT PRIMARY KEY,
#主鍵
stuName VARCHAR (20) NOT NULL,
#非空
gender CHAR(2) CHECK (gender = '男'
OR gender = '女'),
#檢查約束
seat INT UNIQUE,
#唯一
age INT DEFAULT 18
#默認約束
) ;
#2.添加表級約束
/*
語法:在各個字段的最下面
【constraint 約束名(約束名可以不起)】 + 約束類型 (約束字段)
*/
DROP TABLE IF EXISTS `stuinfo`;
CREATE TABLE major
(
id INT PRIMARY KEY,
majorName VARCHAR(20)
);
CREATE TABLE IF NOT EXISTS stuinfo (
id INT,
stuname VARCHAR (20),
gender CHAR(2),
seat INT,
age INT,
majorid INT,
CONSTRAINT pk PRIMARY KEY (id),
#主鍵
CONSTRAINT uq UNIQUE (seat),
#唯一
CONSTRAINT ck CHECK (gender = '男'
OR gender = '女'),
#檢查
CONSTRAINT fk FOREIGN KEY (majorid) REFERENCES major (id) #外鍵
) ;
SHOW INDEX FROM stuinfo;
#主鍵和唯一的區別
/* 保證唯一性 是否爲空 一個表中可以有多少個 是否運行組合
主鍵 1 0 至多有一個 可以,但不推薦
唯一 1 1 可以有多個 可以,但不推薦
*/
MySQL 基礎+高級篇- 數據庫 -sql -尚硅谷 111-128章
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.