1. 程式人生 > >MySQL數據庫常用命令和概念 (1)

MySQL數據庫常用命令和概念 (1)

完成 ash 函數 gen 創建表 規則 ren 數值類型 mysql

一、數據庫的創建:

1、創建一個名稱為mydb1的數據庫

create database mydb1;

2、創建一個使用utf8字符集的mydb2數據庫。

create database mydb2 character set utf8;

3、創建一個使用utf8字符集,並帶比較規則的mydb3數據庫。

create database mydb3 character set utf8 collate utf8_general_ci;

二、數據庫的修改:

修改mydb2字符集為gbk;

alter database mydb2 character set gbk;

三、數據庫的刪除:

刪除數據庫mydb3。

drop database mydb3;

四、數據庫查看:

查看所有數據庫。

show databases;

查看數據庫mydb1的字符集

show create database mydb1;

-----------------------------------------------

數據庫中表操作

一、創建表

1、創建一張員工表employee

字段 類型

id 整形

name 字符型

gender 字符型

birthday 日期型

entry_date 日期型

job 字符型

salary 小數型

resume 文本

2、創建一張員工表employee2

字段 類型

id 整形

name 字符型

gender 字符型

birthday 日期型

entry_date 日期型

job 字符型

salary 小數型

resume 文本

要求:把id 設置成主鍵,並且自動增長。name不允許為空。

create table employee (id int primary key auto_increment,

name varchar(20) not null,

gender varchar(10),

birthday date,

entry_date date,

job varchar(30),

salary double,

resume text

);

二、刪除表

1、刪除employee2表

drop table employee;

三、數據表的結構的修改:

1、在上面員工表的基本上增加一個image列。

alter table employee add image varchr(20);

2、修改job列,使其長度為60。

alter table employee modify job varchar(60);

3、刪除gender列。

alter table employee drop gender;

4、表名改為user。

rename table employee to user;

5、修改表的字符集為utf8

alter table user character set utf8;

6、列名name修改為username

alter table user change name username varchar(20) not null;

四、查看表結構

1、查看數據庫內的所有表

show tables;

2、查看employee的建表語句

show create table employee;

3、查看employee的表結構

desc employee;

#約束

概念:對表中的數據進行限定,保證數據的正確性,有限性和完整性。、

分類:

1. 主鍵約束:primary key

主鍵就是表中記錄的唯一標識

  自動增長:如果某一列是數值類型的,使用auto_increment 可以來完成值的自動增長

a. 在創建表時,添加主鍵約束

create table stu(

 id int primary key,--給id添加主鍵約束

 name varchar(20)

 );

b. 刪除主鍵

ALTER TABLE stu DROP PRIMARY KEY;

c. 創建表後,添加主鍵

ALTER TABLE stu MODIFY id INT PRIMARY KEY;

2. 非空約束:not null

a.創建表時添加約束

CREATE TABLE stu(

Id INT,

NAME VARCHAR(20)NOT NULL --name為非空

);

b.創建表完後,添加非空約束

ALTER TABLE stu MODIFY NAME VARCHAR(20)NOT NULL;

c.刪除name的非空約束

ALTER TABLE stu MODIFY NAME VARCHAR(20)

3.唯一約束:uniqe

a.創建表時,添加唯一約束

CREATE TABLE stu(

  Id INT,

  phone_number VARCHAR(20)UNIQUE --添加了唯一約束

);

b.刪除唯一約束

ALTER TABLE stu DROP INDEX phone_number;

c.再創建表之後,添加唯一約束

ALTER TABLE stu MODIFY phone_number VARCHAR(20)UNIQUE;

4.外鍵約束:foreign key,讓表於表產生關系,從而保證數據的正確性

  a.創建表時,添加外鍵

   create table 表名(

  ...

  外鍵列

Constraint 外鍵名稱 foreign key(外鍵列名稱)references 主表名稱(主表列名稱);

b.刪除外鍵

ALTER TABLE 表名 DRDP FOREIGN KEY 外鍵名稱;

c.創建表之後,增加外鍵

ALTER TABLE 表名 ADD CONSTRAINT 外鍵名稱 FOEIGN KEY(外鍵字段)REFERNCES 主表名稱

5.級聯操作

a.添加級聯操作

語法:ALTER TABLE 表名 ADD CONSTRAINT外鍵名稱

FOREIGN KEY(外鍵字段名稱)REFERENCES(主表列名稱)ON UPDATE CASCADE ON DELETE CASCADE

b.級聯更新 :ON UPDATE CASCDE

c.級聯刪除:ON DELETE CASCDE(慎用)

#數據庫的設計

1多表之間的關系

1. 分類

A.一對一:

*比如人和身份證。一個身份證只能對應一個人

B.一對多(多對一)

*比如部門和員工。一個部門有多個員工,一個員工只能對應一個部門

C.多對多

比如學生與課程。一個學生可以選擇很多課程,一個課程也可以被很多學生選擇

2.實現關系:

A.一對一的實現方法:一對一關系的實現,可以在任意一方添加唯一指向另一方的主鍵。

B.一對多的實現方法:在多的一方建立外鍵,指向一的一方主鍵。

C.多對多的實現方法:多對多關系實現需要借助第三方中間表。中間表至少包含2個字段。這2個字段作為第三張表的外鍵,分別指向2張表。

2.數據庫設計的範式

概念:設計數據庫時,需要遵循的一些規範。要遵循後面的範式要求,必須前邊的所有範式要求。

設計關系數據庫時,遵從不同的規範要求,設計出合理的關系數據庫,這些不同的規範要求被稱為不同的範式,各種範式呈遞次規範,越高的範式數據庫冗余越小。

目前關系數據庫有六種範式:第一範式(1NF),第二範式(2NF),第三範式(3NF),巴斯-科德範式(BCNF),第五範式

分類:

第一範式(1NF):每一列都是不可分割的原子數據項

第二範式(2NF):在1NF的基礎上,非碼屬性必須完全依賴於候選嗎(在1NF基礎上消除主屬性的對主嗎的部分函數依賴)

1. 函數依賴:A—>B,如果通過A屬性(屬性組)的值,可以確定唯一B屬性的值,則稱B依賴於A

2. 完全函數依賴:A—>B,如果A是一個屬性組,則B屬性值確定需要依賴於A屬性組中所有屬性值

3. 部分函數依賴:A—>B,如果A是一個屬性組,則B屬性值確定只需要依賴於A屬性組中某一些值即可

4. 傳遞函數依賴:A—>B,B->C,如果通過A屬性(屬性組)的值,可以確定B屬性的值,在通過B屬性(屬性組)的值可以確定唯一C屬性的值,則C傳遞函數依賴於A

5. 碼:如果在一張表中:一個屬性或者屬性組,被其他所有屬性完全依賴,則這個屬性(屬性組)為該表的碼

第三範式(3NF):在2NF基礎上,任何非主屬性不依賴於其他非主屬性(在2NF基礎上傳遞依賴)

#數據庫的備份和還原

語法:

*備份:mysqldump –u用戶名 –p密碼 數據庫的名稱 > 保存的路徑

*還原:

登錄數據庫

創建數據庫

使用數據庫

執行文件 source 文件路徑

MySQL數據庫常用命令和概念 (1)