1. 程式人生 > 實用技巧 >mysql資料庫 建立、檢視、重新命名、複製和刪除的基本操作

mysql資料庫 建立、檢視、重新命名、複製和刪除的基本操作

在資料庫中,表是最重要、最基本的物件,是儲存資料的基本單位。資料表從哪裡來呢?資料表由關係模式轉換而來。但不是簡單的轉換。

在設計表結構時要考慮下面幾個方面:

  • 欄位名要通俗易懂且具有代表性,欄位名不允許重複,為了程式設計序方便,儘量使用英文名字。
  • 欄位型別選擇的原則是:根據需求選擇合適的欄位型別,在滿足需求的情況下欄位型別儘可能小。不參加數學計算的數字定義為字串型,如學號、電話號碼等。
  • 欄位長度是指能容納該欄位值的最大數量,如學號為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;

顯示錶結構的命令,兩種方式:

  1. 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 表名;

注意:如果表之間存在外來鍵約束關係,應先刪除外來鍵約束條件,再刪除表,或者先刪子表,再刪父表。