MySQL基礎~~編程語法


常量

  數值

  字符串:單引號或者雙引號括起來。包括普通字符串或者日期格式的字符串。

  布爾值:false(FALSE)對應數字值為0、true(TRUE)對應數字值為1。

  NULL:可以參考http://www.cnblogs.com/-beyond/p/8554483.html

 

變量

定義用戶變量

  mysql中變量分為用戶變量和系統變量。

  用戶變量要先定義和初始化賦值,否則變量的值為NULL。

  用戶變量只在本次連接階段有效,其他用戶的連接不能使用另外一個用戶定義的變量,並且當連接釋放后,變量就會銷毀。

  聲明變量格式:set @key = value,可以一次性聲明多個。

  如果變量名中有特殊符號,那么可以用引號將變量名括起來,比如 set @'abc def' = 123;

 

訪問用戶變量

  select @name;

 

系統變量

  系統變量是以2個@@開頭。

mysql> select @@version;

 

獲得系統變量列表  

mysql> show variables;
mysql> show variables like '%test%';

 

 

算數運算符

   + - * / %  

   +和-還可以用來計算日期;  

mysql> select now(),now() + interval 22 day;
+---------------------+-------------------------+
| now()               | now() + interval 22 day |
+---------------------+-------------------------+
| 2018-06-19 22:55:02 | 2018-07-11 22:55:02     |
+---------------------+-------------------------+
1 row in set (0.00 sec)  

  

比較運算符

  在mysql里面,判斷等於只用一個等號=,不像其他編程語言一樣使用雙等或者三等。判斷不等使用!=和<>。

  其他比較運算符和其他編程語言一樣使用。

 

邏輯運算符和位運算符

  和其他語言一樣。注意or比and的優先級低,所以在where子句中進行判斷時,為了保證准確性,盡量使用()保證順序。

 

選擇判斷

  mysql的選擇判斷一般是使用case,格式如下:

case 
    when 條件1 then 表達式1
    when 條件2 then 表達式2
    else 表達式n
end

  示例:

mysql> select id,name,
    -> case
    ->     when price>10 then "expensive"
    ->     when price>0 then "cheap"
    ->     else "free"
    -> end as level
    -> from cate;

  

 

循環結構

  while

delimiter $$
create procedure test_while()
begin
	declare sum int default 0;
	declare t int default 5;
	while t>0 do
		set sum=sum+1;
		set t=t-1;
	end while;
	select sum;
end $$
delimiter ;

  

  repeat

delimiter $$
create procedure _repeat()
begin
	declare a int default 10;
	repeat
		set a=a-1;
		until a<5
	end repeat;
	select a;
end $$
delimiter ;

  注意使用repeat的時候,在判斷條件(until 條件)的那一行句末不加分號,這個很容易出錯! 

 

  loop

delimiter $$
create procedure test_loop()
begin
	declare t int default 0;
	label:loop
		set t=t+1;
		if t>10 then leave label;
		end if;
	end loop label;
	select t;
end $$
delimiter ;

注意 loop 一般要和一個標簽(此處為label,名稱可以自定義,不過要保證前后一致)一起使用,且在 loop 循環中一定要有一個判斷條件,能夠滿足在一定的條件下跳出 loop 循環(即 leave )!

 

存儲過程

  創建和使用存儲過程

mysql> create procedure insert_into_two_table(in id int, in name char(30), out res char(10))
    -> begin
    ->     insert into user values (id,name);
    ->     insert into person values (id, name);
    ->     set res = "success";
    ->     select res;
    -> end $$
Query OK, 0 rows affected (0.00 sec)

mysql> call insert_into_two_table(1,"aaaaa",@res);
+---------+
| res     |
+---------+
| success |
+---------+
1 row in set (0.03 sec)

mysql> select @res;
+---------+
| @res    |
+---------+
| success |
+---------+
1 row in set (0.00 sec)

  刪除存儲過程

mysql> drop procedure if exists insert_into_two_table;

  

  

存儲函數

  存儲過程不能有輸出參數;不用call調用,而是使用select來調用 ;必須包含return語句,存儲過程不能有return。

delimiter $$
create function find_stu(s_id int)
	returns boolean
begin
	declare cnt int;
	select id into cnt from user where id=s_id;
	if cnt > 0 then
		return true;
	else 
		return false;
	end if;
end $$
delimiter ;

  測試:

mysql> select * from user;
+----+-------+
| id | name  |
+----+-------+
|  1 | aaaaa |
+----+-------+
1 row in set (0.00 sec)

mysql> select find_stu(1);
+-------------+
| find_stu(1) |
+-------------+
|           1 |
+-------------+
1 row in set (0.00 sec)

mysql> select find_stu(2);
+-------------+
| find_stu(2) |
+-------------+
|           0 |
+-------------+
1 row in set (0.00 sec)

  刪除函數

mysql> drop function if exists find_stu;

  

 

觸發器

 

 

事件

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM