-
添加主鍵約束:
ALTER TABLE?tb_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index-col_name,...)
添加、刪除默認約束:
ALTER TABLE tb_name ALTER [COLUMN] co_name {SET DEFAULT literal | DROP DEFAULT}
查看全部 -
添加單列:
ALTER TABLE?tb_name ADD [COLUMN] co_name column_definition [FIRST | AFTER co_name]
刪除列:
ALTER TABLE?tb_name DROP [COLUMN] co_name
查看全部 -
表級約束與列級約束
對一個數據列建立的約束,稱為列級約束
對多個數據列建立的約束,稱為表級約束
列級約束既可以在列定義時聲明,也可以在列定義后聲明
表級約束只能在列定義后聲明
查看全部 -
外鍵約束的參照操作
CASCADE:從父表刪除或更新且自動刪除或更新子表中匹配的行
SET NULL:從父表刪除或更新行,并設置子表中的外鍵列為 NULL。如果使用該選項,必須保證子表列沒有指定 NOT NULL
RESTRICT:拒絕對父表的刪除或更新操作。
NO ACTION:標準 SQL 的關鍵字,在 MySQL 中與 RESTRICT 相同
查看全部 -
創建外鍵約束:
FOREIGN? KEY (pid) REFERENCES provinces (id)
查看全部 -
FREIGN KEY(外鍵約束):
功能:
保持數據一致性、完整性
實現一對一或一對多關系(稱為“關系型數據庫”的根本原因)
要求:
父表和子表必須使用相同的存儲引擎,而且禁止使用臨時表
數據表的存儲引擎只能為InnoDB
外鍵列的參照列必須具有相似的數據類型。其中數字的長度或是否有符號位必須相同;而字符的長度則可以不同
外鍵列和參照列必須創建索引。如果參照列不存在索引的話,MySQL將自動創建索引(創建主鍵時自動添加索引)
子表:具有外鍵列的表
父表:子表所參照的表
查看全部 -
約束保證數據的完整性和一致性
約束分為表級約束和列級約束
約束類型包括:
NOT NULL(非空約束)
PRIMARY KEY(主鍵約束)
UNIQUE KEY(唯一約束)
DEFAULT(默認約束)
FOREIGN KEY(外鍵約束)
查看全部 -
一、數據表
1. 概述
數據表(或稱表)是數據庫最重要的組成部分之一,是其他對象的基礎。
實質就是一張二維表,其中行稱為記錄,列稱為字段。
數據類型
描述
integer(size)
int(size)
smallint(size)
tinyint(size)
僅容納整數。在括號內規定數字的最大位數。
decimal(size,d)
numeric(size,d)
容納帶有小數的數字。
"d" 規定小數點右側的最大位數。
char(size) 容納固定長度的字符串(可容納字母、數字以及特殊字符)。
在括號中規定字符串的長度。
varchar(size)
容納可變長度的字符串(可容納字母、數字以及特殊的字符)。
在括號中規定字符串的最大長度。
date(yyyymmdd)
容納日期。
二、 創建數據表
1. 創建數據表
CREATE?TABLE?[IF?NOT?EXISTS]?table_name( column_name?data_type, .... );
Demo: 創建一張名為 tb1 的表,包含 usename ,age 和 salary 三個字段
CREATE?TABLE?tb1( username?VARCHAR(20), age?TINYINT?UNSIGNED, salary?FLOAT(8,2)?UNSIGNED );
2. 查看數據表列表
SHOW?TABLES?[FROM?db_name]?[LIKE?'patten'?|?WHERE?expr]?;
Demo:
SHOW?TABLES;
3. 查看數據表結構
SHOW?COLUMNS?FROM?tbl_name;
或
DESC?tbl_name;
4. 插入記錄
INSERT?[INTO]?tbl_name[(col_name,...)]?VALUES(val,..);
Demo: 為之前創建的 tb1 插入一條記錄
INSERT?tb1(username,age,salary)?VALUES("John",27,4999.60);
5. 查找記錄
SELECT?expr,...?FROM?tbl_name;
Demo: 查找之前為 tb1 插入的記錄
SELECT?*?FROM?tb1;
三、 字段屬性
1. 空值與非空
NULL,字段值可以為空
NOT NULL,字段值禁止為空
Demo: 為 t2 表的 name 字段設置非空
CREATE?TABLE?t2( name?NOT?NULL );
2. 自動編號
AUTO_INCREMENT
自動編號,且必須與主鍵組合使用
默認情況下,起始值為 1,每次增量為 1
該子段一定為數值型,如果為浮點數小數位數為 0
3. ?主鍵
PRIMARY KEY
主鍵不一定必須和自動編號使用
主鍵自動為 NOT NULL
主鍵保證記錄的唯一性
每張表只能存在一個主鍵
4. 唯一約束
UNIQUE KEY
唯一約束可以保證記錄的唯一性
唯一約束的字段可以為空值(NULL)
每張數據表可以存在多個唯一約束
5. 默認約束
DEFAULT
當插入記錄時,如果沒有明確為字段賦值,則自動賦予默認值
查看全部 -
order by 排序
select * from user order by age;? 默認升序排序
select * from user order by age,id desc;
asc? 升序
desc? 降序
查看全部 -
分組條件? ?having
select sex,age? from user? group by sex having age>10;
select sex from user group by 1 having count(id) >=2;
查看全部 -
asc? 升序
desc? 降序
group by 分組
查看全部 -
where 表達式中可以使用MySQL支持的函數和運算符。
查看全部 -
select 列名,列名 from 表名; * 表示所有列
別名:(建議不用空格,用as關鍵詞 )
select id as userid,username as uname? from users;
查看全部 -
delete from 表名 where 條件;
刪除后再添加的時候索引不會補在刪除的位置,會繼續向下索引
查看全部 -
更新記錄
update 表名 set? 列名=? ? where? 條件
查看全部
舉報