10 mysql其它常用

2022-05-02 12:00:09 字數 3543 閱讀 4775

1、檢視:開發中不常用

給某個常用的查詢語句設定別名,方便使用

建立:create  view  檢視名稱 as  sql

修改:alter view  檢視名稱  as  sql

刪除:drop  view  檢視名稱

檢視是虛擬的而非物理表。

2、觸發器:開發中不常用

執行增刪改語句,自動執行設定的關聯語句

觸發器中類:insert,delete,update

觸發時機:before,after

關鍵字:new:insert,update中;old:delete,update中

例:before  insert觸發

delimiter //        更改語句結束符為//create trigger t1 before insert on 

class

for each row begin insert into student values(0,'

sdf',12,3);

end//t1是觸發器名稱,在插入語句執行之前執行begin和end間語句,注意:each row 表示每插入一條記錄,就執行一次觸發器

delimiter ; 語句結束符改回 ;

new關鍵字:在將插入到class中的name,也插入到student中

create trigger wwww before insert on class

for each row begin insert into student values(0,new.name,12,3); end//

刪除觸發器:

drop trigger t1;

3、函式

(1)內建函式:

select curdate();   yyyy-mm-dd

select char_length(

'sdf

'); 字串長度

mysql> select concat('

asdf

','123');

+----------------------+

| concat('

asdf

','123

') |

+----------------------+

| asdf123 |

+----------------------+時間格式化:

mysql> select date_format(curdate(),'

%y-%m

');select curdate();

+--------------------------------+

| date_format(curdate(),'

%y-%m

') |

+--------------------------------+

| 2018-03 |

+--------------------------------+

1 row in

set+------------+

| curdate() |

+------------+

| 2018-03-14 |

+------------+

1 row in set

時間格式化:

(2)自定義函式:

delimiter //create function f1(i1 int,i2 int) returns int

begin declare num int default 0;set num = i1 + i2;return num;end //mysql> select f1(1,45);

+----------+

| f1(1,45) |

+----------+

| 46 |

+----------+

注意:1、函式有返回值;2、函式內不能寫如select等語句

4、儲存過程

儲存過程是指儲存在mysql上的乙個別名,它代指的是事先寫好的,實現一定功能的一堆sql語句。以後通過該別名執行。

檢視也是別名,但是是把檢視當作一張表(臨時結果集)來呼叫的,檢視只能查詢;儲存過程直接通過別名來呼叫,別名代表一系列操作(查,改等)

儲存過程是為了減少直接寫sql語句

可通過遠端傳入儲存過程名執行資料庫操作

a、簡單儲存過程

delimiter //create procedure f1()

begin

select * from

student;  #查

insert into

class(name) values('

yiban

');  #插入

end //delimiter ;

mysql中使用:call f1();

pymysql使用:cursor.callproc('f1

')

傳引數:in,out,inout關鍵字

b、in

delimiter //create procedure f2(

inn1 int,

inn2 int

)begin

select * from student where id >n1;

end //delimiter ;

mysql中使用:call f2(4,6);  #n2沒有利用,也要傳入

pymysql使用:cursor.callproc('f1

',(4,6))

c、in,out  #儲存過程沒有return,可以用out返回值

delimiter //create procedure f3(

inn1 int,

out n2 int  #變數

)begin

set n2 = 123456select * from student where id >n1;

end //delimiter ;

set @v1 = 0; #

session級別的全域性變數

mysql中使用:call f3(4,@v1); #

n2必須是變數

檢視:select @v1; #

輸出 123456

pymysql使用:cursor.callproc('

f3',(4,2))

cursor.excute(

'select @_f3_0,@_f3_1

')

d、inout

e、事務(原子性操作),要不全部執行,要不全部不執行

f、游標

g、動態執行sql(防sql注入)

特性:1、可傳引數 in,out,inout

2、pymysql結合

3、沒有return;out 可用於標識儲存過程的執行結果 

5、索引

6、orm操作

10 MySQL入門小結

1.連線操作和集合操作 續 由於mysql不支援full join,我麼可以這樣實現 select from a left join b on a.id b.id union select from a right join b on a.id b.id a.先查出左聯接 b.查出右聯接 c.用un...

10 mysql選錯索引

在mysql表中可以支援多個索引,有的 sql不指定使用哪個索引,由 mysql 自己來決定,但是有時候 mysql 選錯了索引,導致執行很慢。例子create table t10 id int 11 not null a int 11 default null b int 11 default n...

MySQL學習筆記(10)MySQL變數

變數由系統提供,不是使用者定義,屬於伺服器層面 使用語法 1 檢視所有的系統變數 show global variables 參看所有全域性變數 show session variables 檢視所有會話變數,可以不寫session2 檢視滿足條件的部分系統變數 show global variab...