MySQL基本概念:
操作語句
1. 運算元據庫: 建立資料庫: create database 資料庫名 charset utf8;
檢視資料庫: show databases;
選擇資料庫: use 資料庫名;
刪除資料庫: drop 資料庫名;
修改資料庫: alter database 資料庫名 charset utf8;
複製程式碼
2. 操作表:
先切換到資料庫下:
建立:create table 表名(欄位名1 型別(寬度) 約束條件,欄位名1 型別(寬度) 約束條件);
檢視:show tables;
修改:alter table 表名 modify 欄位名 型別(寬度);
alter table 表名 change 舊欄位名 新欄位名 型別(寬度);
刪除:drop table 表名;
複製程式碼
3. 操作表中的記錄:
插入:insert into 表名 values(值1,值2.....);
查詢:select * from 表名;
修改:update 表名 set 欄位名=值 where 條件;
刪除:delete from 表名 where 條件;
複製程式碼
約束
為了防止在資料表中插入錯誤的資料,在Mysql中定義了一些維護資料庫完整性的規則,這個規則就是表的約束,通過這些約束我們可以保證資料的正確性。
主鍵約束: 當我們的資料庫中儲存了成千上萬條資料時,如何能找到你需要的那條資料呢? MySQL提供的主鍵約束即可幫助我們快速的查詢到我們想要的資料。 主鍵是唯一標識一條記錄的,可以把它比喻為身份證號,儘管全世界有那麼多人, 但只要知道了身份證號就可以很快的查詢一個人的資訊。
外來鍵約束: 表的外來鍵是另一表的主鍵, 外來鍵可以有重複的, 可以是NULL,用來和其他表建立聯絡用的,一個表可以有多個外來鍵。
非空約束: 非空約束所對應的列在插入資料時不允許為空,也就是必須為該欄位賦值,MySQL中使用NOT NULL來表時非空約束其語法為:
create table money(time datatime,money int NOT NULL);
複製程式碼
唯一約束: 唯一約束用於保證資料表中欄位的唯一性,即表中欄位不可以出現重複的值, 唯一約束通過UNIQUE來指定,其語法格式為:
create table person(id int UNIQUE,age int);
複製程式碼
預設值約束: 在一些應用場景下,我們會希望對每一條資料中的某個欄位賦予一個預設值, 例如:在一些遊戲中,每個賬號預設會贈送給使用者一定數量的金幣,此時金幣這個資料就可以使用預設值約束了,MySQL中使用DEFALUT為欄位指定預設值其語格式為:
create table user(account char(20),password char(6),money int DEFALUT 1000);
複製程式碼
基本資料型別:
整數
tinyint() 1位元組
smallint() 2位元組
mediumint() 3位元組
int() 4位元組
bigint() 8位元組
對於整型而言,寬度用於控制顯示的長度
例如 int(10) 則表示顯示的時候,如果不足10位則補足到10位,預設用空格填充
ZEROFILL 設定以0填充
複製程式碼
浮點
float(m,d) 4位元組
double(m,d) 8位元組
decimal(m,d) 不固定
在浮點型別中,後面的m表示整體長度,d表示小數長度
注意:是長度和位元組數無關
複製程式碼
字串
char
定長字串,超出範圍會報錯,速度快
varchar
可變長字串,節省空間,速度慢
複製程式碼
時間
year
date
time
datetime
timestamp 自動更新
複製程式碼
建立表之間的關係
一對多關係:
1.建立表
建立主表(department)
create table department(id int primary key auto_increment,
department_name char(20) unique,
job char(50) not null);
建立從表(employee)
create table employee(id int primary key auto_increment,
employee_name char(20) not null,
gender char(20),
age int,
foreign key(id) references department(id));
2.插入表
插入主表
insert into department values(1,'市場部','宣傳'),(2,'銷售部','銷售');
插入從表
insert into employee values(1,'jarvis','male',28),(2,'jasion','male',25);
*******
刪除要先刪除從表再刪除主表
刪除記錄也一樣,要先刪從表再刪主表
*******
級聯:
on delete cascade 當主表刪除記錄時 從表相關聯的記錄同步刪除
on update cascade 當主表id更新時 從表相關聯的記錄同步更新
主表變化操作從表,從表變化不會操作主表
#例項語句
create table employee(id int primary key auto_increment,
employee_name char(20) not null,
gender char(20),
age int,
foreign key(id) references department(id) on delete cascade);
複製程式碼
多對多關係:
多對多需要有一箇中間表來存貯表的關聯關係
1.建立表
建立主表(teacher)
create table teacher(id int primary key auto_increment,name char(25));
建立主表(student)
create table student(id int primary key auto_increment,name char(25));
建立從表(relation 關係表)
create table relation(id int primary key auto_increment,
t_id int,s_id int,
foreign key(t_id) references teacher(id),
foreign key(s_id) references student(id)
);
2.輸入值
insert into teacher values
(1,"egon"),
(2,"jack");
insert into student values
(1,"uu"),
(2,"yy");
3.插入對應關係
insert into relation values
(null,1,1),
(null,1,2),
(null,2,2);
複製程式碼
一對一關係:
使用外來鍵來關聯,但是需要給外來鍵加上唯一約束,也就是說兩個一對一是有主從關係的
create table t1(id int primary key auto_increment,name char(20));
create table t2(id int primary key auto_increment,name char(20),
t1_id int UNIQUE,
foreign key(t1_id) references t1(id));
********
#垂直分表:
當一個表的欄位太多,常用欄位不多時,可以採取垂直分表的方式來提高效率
複製程式碼