mysql知識點總結

2021-07-26 16:57:15 字數 4403 閱讀 8380

一、mysql基礎

- 1)mysql儲存結構:資料庫->表->資料 sql語句

- 2)管理資料庫

增加:create database 資料庫 default character utf8;

刪除:drop database 資料庫;

修改:alter database 資料庫 default character gbk;

查詢:show databases / show create database 資料庫;

- 3)管理表

選擇資料庫:use 資料庫

增加:create table 表 (欄位名1 字段型別,欄位名2 字段型別......);

刪除:drop table 表;

修改:新增字段:alter table 表 add[column]欄位名 字段型別;

刪除字段:alter table 表 drop[column]欄位名;

修改字段型別:alter table 表 modify 欄位名 新的字段型別;

修改欄位名稱:alter table 表 change 舊欄位名 新欄位名 字段型別

修改表名稱:alter table 表 rename[to] 新錶名;

查詢:show tables / desc tablename;

- 4)管理資料:

增加:insert into 表(欄位1,欄位2,。。。)values(值1,值2…..);

刪除:delete from 表 where 條件;

修改:update 表 set 字段 1 = 值 1,字段 2=值 2…..where 條件;

查詢:

4.1)所有字段:select * from 表;

4.2)指定字段:select 欄位1,欄位2…..from 表;

4.3)指定別名:select 欄位1 as 別名 from 表;

4.4)合併列:select(欄位1+欄位2)from 表;

4.5)去重:select distinct 字段 from 表;`

4.6)條件查詢:

--宣告乙個外來鍵約束

constraint 外鍵名 foreign key(外來鍵) references 參考表(參考字段)on upodate cascade on delete

cascade;

級聯修改: on update

cascade

級聯刪除: on

delete

cascade

四、關聯查詢(多表查詢)

多表查詢規則:1)確定查詢哪些表 2)確定哪些字段 3)表與表之間連線條件(規律:連線條件數量是表數量-1)

- 4.1交叉連線查詢(不推薦,產生笛卡爾積現象)

- 4.2內連線查詢:只有滿足條件的結果才會顯示

- 4.3左外連線查詢:使用左邊表的資料去匹配右邊表的資料,如果符合連線條件的結果則顯示,如果不符合連線條件則顯示null

注意:左外連線:左表的資料一定會完成顯示

五、資料庫設計

設計原則:建議設計的表盡量遵守三大正規化

--帶有條件判斷的儲存過程

--需求:輸入乙個整數,如果1,則返回「星期一」,如果2,返回「星期二」。其他數字返回「錯誤輸入」

delimiter $

create

procedure pro_testif(in num int,out str varchar(20))

begin

if num=1

then

set str='星期一';

elseif num=2

then

set str='星期二';

else

set str='輸入錯誤';

endif;

end $

call pro_testif(4,@str);

select @str;

--帶有迴圈功能的儲存過程

--需求:輸入乙個整數,求和。例如,輸入100,統計1-100的和

delimiter $

create

procedure

pro_testwhile

(in num int,out

result int)

begin

--定義乙個區域性變數

declare

iint

default 1;

declare vsum int default

0; while i<=num do

set vsum=vsum+i;

set i=i+1;

endwhile;

setresult=vsum;

end $

dorp procedure

pro_testwhile;

call pro_testwhile(100,@result);

select @result;

--使用查詢的結果賦值給變數(into)

delimiter $

create

procedure

pro_findbyid2

(in eid int,out vname varchar(20))

begin

select

empname

into

vname

from

employee

where

id=eid;

end $

call pro_findbyid2(1,@name);

select @name;

七、觸發器

作用:當操作了某張表時,希望同時觸發一些動作/行為,可以使用觸發器完成

--需求:當向員工表插入一條記錄時,希望mysql自動同時往日誌表插入資料

--建立觸發器(新增)

create

trigger tri_empadd after

insert

on employee for

each

row --當往員工表插入一條記錄時

insert

into test_log(content)values('員工表插入了一條記錄');

--插入資料

insert

into employee(id,empname,deptid)values(7,'張三',1);

insert

into employee(id,empname,deptid)values(8,'張三2',1);

--建立觸發器(修改)

create

trigger tri_empupd after

update

on emplyee for

each

row --當在員工表修改一條記錄時

insert

into test_log(content)values('員工表修改了一條記錄');

--建立觸發器(刪除)

create

trigger tri_empdel after

delete

on employee for

each

row --當在員工表刪除一條記錄時

insert

into test_log(content)values('員工表刪除了一條記錄');

八、mysql許可權問題

root:擁有所有許可權

--修改密碼

update

user

set password=password('123456') where

user='root';

--分配許可權賬戶

grant

select

on day16.employee to

'eric'@'localhost'identified by

'123456';

grant

delete

on day16.employee to

'eric'@'localhost'identified by

'123456';

MySQL知識點 總結

1 truncate和delete trop之間有什麼區別?truncate table 在功能上與不帶 where 子句的 delete 語句相同 二者均刪除表中的全部行。但 truncate table 比 delete 速度快,且使用的系統和事務日誌資源少。delete 語句每次刪除一行,並在...

MySQL知識點總結

然後摁win r鍵開啟執行,輸入cmd開啟命令視窗,輸入mysql uroot p進入mysql中,輸入當時安裝mysql建立的密碼,進入mysql命令列模式。關於庫的使用方法 1.建立庫 輸入 create database 庫名 charset 字符集 例 create database db1...

mysql 知識點總結

商業聯盟 qq群538250800 技術搞事 qq群599020441 解決方案 qq群152889761 加入我們 qq群649347320 共享學習 qq群674240731 紀年科技aming 網路安全 深度學習,嵌入式,機器強化,生物智慧型,生命科學。本文為廣告系統自動投放廣告 與varch...