一、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...