mysql資料庫 建立、檢視、重新命名、複製和刪除的基本操作
阿新 • • 發佈:2020-07-06
在資料庫中,表是最重要、最基本的物件,是儲存資料的基本單位。資料表從哪裡來呢?資料表由關係模式轉換而來。但不是簡單的轉換。
在設計表結構時要考慮下面幾個方面:
- 欄位名要通俗易懂且具有代表性,欄位名不允許重複,為了程式設計序方便,儘量使用英文名字。
- 欄位型別選擇的原則是:根據需求選擇合適的欄位型別,在滿足需求的情況下欄位型別儘可能小。不參加數學計算的數字定義為字串型,如學號、電話號碼等。
- 欄位長度是指能容納該欄位值的最大數量,如學號為12位數字,長度設定為12;課程名可能包含10個漢字,長度就要設定為10。
- 字符集編碼選擇:含有中文字元時統一採用utf8或gbk型別,以避免亂碼情況的發生。
SQL語句中關鍵字做一些說明:
- PRIMARY KEY用於定義主鍵。也可以使用多欄位來定義主鍵。
- COMMENT註釋該欄位的含義。
- NOT NULL是非空約束。
- DEFAULT為該欄位加預設值,可以減少輸入次數。
- AUTO_INCREMENT為自增型屬性,一般用作主鍵,數值會自動加1。
- 當表中有外來鍵欄位時用CONSTRAINT設定外來鍵。
- ENGINE=InnoDB是設定該表的儲存引擎,DEFAULTCHARSET=utf8是設定該表的預設字符集。
teacher | ||||
Teacher_id |
Teacher_name |
age | Enter_time | professional |
10101 | 潘多拉 | 18 | 2018-2-1 | 講師 |
10102 | 普羅米修斯 | 27 | 2018-3-5 | 教授 |
10103 | 波塞冬 | 29 | 2015-9-10 | 副教授 |
Department | ||||||
欄位名 | 資料型別 | 長度 |
是否空值 |
是否主鍵外來鍵 |
預設值 | 備註 |
Department_id | char | 3 | NOT NULL | 主鍵 | 學校編號 | |
Department_name | varchar | 10 | NOT NULL | 學校名稱 |
use course;
create table department(
Department_id char(3) NOT NULL PRIMARY KEY COMMENT '學院編號',
Department_name varchar(10) NOT NULL COMMENT '學院名稱')ENGINE=InnoDB DEFAULT CHARSET=utf8;
teacher | ||||||
欄位名 | 資料型別 | 長度 |
是否空值 |
是否主鍵外來鍵 |
預設值 | 備註 |
Teacher_id | char | 5 | NOT NULL | 主鍵 | 教師編號 | |
teacher_name | varchar | 4 | NOT NULL | 教師姓名 | ||
Department_id | char | 3 | NOT NULL | 外來鍵 | 學校編號 | |
gender | char | 1 | NOT NULL | 男 | 性別 |
CREATE TABLE teacher(
Teacher_id char(5) NOT NULL PRIMARY KEY COMMENT '教師編號',
Teacher_Name varchar(4) NOT NULL COMMENT '教師姓名',
Department_id char(3) NOT NULL COMMENT '學院編號',
Gender char(1) NOT NULL DEFAULT '男' COMMENT '性別',
CONSTRAINT teacher_department FOREIGN KEY (Department_id)
REFERENCES department(Department_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
course | ||||||
欄位名 | 資料型別 | 長度 |
是否空值 |
是否主鍵外來鍵 |
預設值 | 備註 |
Course_id | char | 4 | NOT NULL | 主鍵 | 課程號 | |
course_name | varchar | 10 | NOT NULL | 課程名 | ||
capacity | tinyint | 4 | NOT NULL | 60 | 人數上限 | |
Teacher_id | char | 5 | NOT NULL | 外來鍵 | 教師編號 |
CREATE TABLE course(
Course_id char(4) NOT NULL PRIMARY KEY COMMENT '課程號',
Course_name varchar(10) NOT NULL COMMENT '課程名',
Capacity tinyint(4) NOT NULL DEFAULT 60 COMMENT '人數上限',
Teacher_id char(5) NOT NULL COMMENT '教師編號',
CONSTRAINT course_teacher FOREIGN KEY (Teacher_id)
REFERENCES teacher (Teacher_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Classes | ||||||
欄位名 | 資料型別 | 長度 |
是否空值 |
是否主鍵外來鍵 |
預設值 | 備註 |
class_id | char | 8 | NOT NULL | 主鍵 | 班級編號 | |
class_name | varchar | 8 | NOT NULL | 班級名 | ||
Year | smallint | 4 | NOT NULL | 年度 | ||
Department_id | char | 3 | NOT NULL | 外來鍵 | 學院編號 |
CREATE TABLE classes(
Classe_id char(8) NOT NULL PRIMARY KEY COMMENT '班級編號',
Class_name varchar(8) NOT NULL COMMENT '班級名',
Year smallint(4) NOT NULL COMMENT '年度',
Department_id char(3) NOT NULL COMMENT '學院編號',
CONSTRAINT class_department FOREIGN KEY (Department_id)
REFERENCES department (Department_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
students | ||||||
欄位名 | 資料型別 | 長度 |
是否空值 |
是否主鍵外來鍵 |
預設值 | 備註 |
students_id | char | 12 | NOT NULL | 主鍵 | 學號 | |
students_name | varchar | 4 | NOT NULL | 姓名 | ||
class_id | char | 4 | NOT NULL | 外來鍵 | 班級編號 | |
phone | varchar | 18 | NOT NULL | 電話 |
CREATE TABLE students(
Student_id char(12) NOT NULL PRIMARY KEY COMMENT '學號',
Student_name varchar(4) NOT NULL COMMENT '姓名',
Class_id char(4) NOT NULL COMMENT '班級編號',
Phone varchar(18) NOT NULL COMMENT '電話',
CONSTRAINT student_class FOREIGN KEY (Class_id) REFERENCES
classes (Classe_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
choose |
||||||
欄位名 | 資料型別 | 長度 |
是否空值 |
是否主鍵外來鍵 |
預設值 | 備註 |
Choose_id | char | 11 | NOT NULL | 主鍵 | auto_increment | |
student_id | varchar | 12 | NOT NULL | 學號 | ||
Course_id | char | 4 | NOT NULL | 外來鍵 | 課程號 | |
choose_time | datetime | NOT NULL | 選課時間 | |||
report | int | 0 | 成績 |
CREATE TABLE choose(
Choose_id int(11) NOT NULL PRIMARY KEY
AUTO_INCREMENT,
Student_id char(12) NOT NULL COMMENT '學號',
Course_id char(4) NOT NULL COMMENT '課程號',
Choose_time datetime NOT NULL COMMENT '選課時間',
report int DEFAULT 0 COMMENT '成績',
CONSTRAINT choose_course FOREIGN KEY (Course_id)
REFERENCES course (Course_id),
CONSTRAINT choose_student FOREIGN KEY (Student_id)
REFERENCES students (Student_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
顯示錶結構的命令,兩種方式:
- DESCRIBE/DESC 表名SHOW CREATE TABLE 表名 檢視錶的詳細資訊
- 使用DESCRIBE table_name可顯示指定表的結構
- DESCRIBE也可用DESC替代
檢視資料列表命令:
show tables;
複製一個表結構有兩種實現方法:
create table 新表名 like 源表
create table 新表名 select * from 源表
修改表名語法格式如下:
rename table 舊錶名 to 新表名
或者:
alter table 舊錶名 rename 新表名
刪除表的SQL語法格式為:
drop table 表名;
注意:如果表之間存在外來鍵約束關係,應先刪除外來鍵約束條件,再刪除表,或者先刪子表,再刪父表。