MySQL數據庫常用命令和概念 (1)
一、數據庫的創建:
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)