MySQL 学习笔记(13)— 创建表、修改表、删除表、清空表
1. 創建表
在 SQL 中,使用 CREATE TABLE 語句創建一個表:
CREATE TABLE table_name
(column1 data_type column_constraint,column2 data_type,...,table_constraint
);
其中,各字段含義如下
- table_name 指定了表的名稱。
- 括號內是字段的定義;columnN 是字段的名稱,data_type__ 是它的數據類型;column_constraint 是可選的字段約束;多個字段使用逗號進行分隔。
- table_constraint 是可選的表級約束。
其中,常見的約束包括主鍵、外鍵、唯一、非空、檢查約束以及默認值。
CREATE TABLE product
(
product_id CHAR(4) NOT NULL,
product_name VARCHAR(100) NOT NULL,
product_type VARCHAR(32) NOT NULL,
sale_price INTEGER ,
purchase_price INTEGER ,
regist_date DATE ,
PRIMARY KEY (product_id)
);CREATE TABLE addressbook
(
regist_no INTEGER NOT NULL,
name VARCHAR(128) NOT NULL,
address VARCHAR(259) NOT NULL,
tel_no CHAR(10) ,
mail_address CHAR(20) ,
PRIMARY KEY (regist_no)
);
如果想要創建一個自定義名稱的主鍵約束,可以使用表級約束:
CREATE TABLE dept( dept_id INTEGER NOT NULL, dept_name VARCHAR(50) NOT NULL,CONSTRAINT pk_dept PRIMARY KEY (dept_id)) ;
其中,pk_dept 是自定義的主鍵名稱。
1.1 標識列
標識列( identity column ),也稱為自增長列( auto increment ),可以自動生成一個唯一的數字;它的主要用途就是為主鍵提供默認的數據。首先來看一下 SQL 標準中的定義:
column_name data_type GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY;
其中,**data_type **必須是數字類型(INTEGER、NUMERIC 等);GENERATED ALWAYS 表示總是由系統自動生成數據值,不接受用戶提供的值;GENERATED BY DEFAULT 表示如果用戶提供了輸入值就使用該值,否則系統會自動生成一個數據值。
以下語句為表 emp_identity 創建了一個標識列 emp_id ,它也是該表的主鍵:
-- Oracle 以及 PostgreSQL 實現
CREATE TABLE emp_identity(emp_id INT GENERATED ALWAYS AS IDENTITY, emp_name VARCHAR(50) NOT NULL,PRIMARY KEY (emp_id)
);
除了標準 SQL 語法之外,其他數據庫通過專有的語法實現了類似的功能:
-- MySQL
CREATE TABLE emp_identity(emp_id INT AUTO_INCREMENT,emp_name VARCHAR(50) NOT NULL,PRIMARY KEY (emp_id)
);-- SQL Server
CREATE TABLE emp_identity(emp_id INT IDENTITY,emp_name VARCHAR(50) NOT NULL,PRIMARY KEY (emp_id)
);-- PostgreSQL
CREATE TABLE emp_identity(emp_id INT SERIAL,emp_name VARCHAR(50) NOT NULL,PRIMARY KEY (emp_id)
);
其中, AUTO_INCREMENT 、 IDENTITY 和 SERIAL 都是表示自動增長的整數。
2. 修改表
對于已經存在的表,可能會由于業務變更或者代碼重構需要修改它的結構。因此, SQL 定義了修改表的語句:
ALTER TABLE table_name action;
其中的 action 表示執行的操作,常見的操作包括增加列,修改列,刪除列;增加約束,修改約束,刪除約束等。以下語句用于增加一個新的字段:
ALTER TABLE table_name ADD [COLUMN] column_name data_type column_constraint;
添加字段的內容和創建表時類似,包括字段名、數據類型以及可選的列約束。 Oracle 和 SQL Server 不支持 COLUMN 關鍵字,省略即可。
以下語句為表 emp_identity 新增一個字段 commission_pct:
ALTER TABLE emp_identityADD bonus NUMERIC(8,2);
如果某個字段不再需要,可以使用 DROP COLUMN 操作刪除:
ALTER TABLE emp_identityDROP COLUMN bonus;
3. 刪除表
DROP TABLE 語句用于刪除一個表。以下語句用于刪除名稱為 table_name 的表。
DROP TABLE table_name
4. 截斷表
截斷表( TRUNCATE ),可以用于快速刪除表中的所有數據。以下語句將會刪除 emp_devp 中的所有數據。
TRUNCATE TABLE emp_devp;
TRUNCATE 用于快速刪除數據,回收表占用的空間,但會保留表的結構。MySQL 和 PostgreSQL 可以省略 TABLE 關鍵字。
總結
以上是生活随笔為你收集整理的MySQL 学习笔记(13)— 创建表、修改表、删除表、清空表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL 学习笔记(12)— 数据类型
- 下一篇: MySQL 学习笔记(14)— 数据库设