瞭解MySQL的第一步

Jarvis_You發表於2018-11-21

MySQL基本概念:

操作語句

瞭解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中定義了一些維護資料庫完整性的規則,這個規則就是表的約束,通過這些約束我們可以保證資料的正確性。

主鍵約束: 當我們的資料庫中儲存了成千上萬條資料時,如何能找到你需要的那條資料呢? 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));
********
#垂直分表:
當一個表的欄位太多,常用欄位不多時,可以採取垂直分表的方式來提高效率
複製程式碼

相關文章