本質上是一個虛擬的表,即看得見可是不實際存在java
目的
:簡化sql語句python
增mysql
create view 視圖名稱 as select語句sql
刪數據庫
drop view 視圖名稱函數
改命令行
alter view 視圖名稱 as 新的select語句unix
查code
desc view_nameorm
show create view 視圖名稱
當表格內發生,增,刪,改對立面數據有變更時,咱們能夠給他特定的變更內容,除法某些select語句,以及邏輯判斷
增
create trigger 觸發器名稱 時間 事件 on 表名稱 for each row
begin
sql語句。。。。。;
end
刪
drop trigger 觸發器名稱
查
show triggers;查看全部觸發器
show create trigger 觸發器名稱
改
建議刪了後再添加
python # 將結束符設置爲| delimiter | create trigger cmd_insert after insert on cmd for each row begin if new.success = "no" then insert into errlog values(null,new.cmd,new.sub_time); end if; end| # 在還原以前的結束符 delimiter ;
事務就是一系列sql語句的組合,是一個總體
原子性,指的是這個事務中的sql語句是一個總體,不能拆分,要麼都執行,要麼全都失敗
一致性, 事務執行結束後,表的關聯關係必定是正確的,不會發送數據錯亂
隔離性,事務之間相互隔離,數據不會互相影響,即便操做了同一個表 , 本質就是加鎖,根據鎖的粒度不一樣分爲幾個隔離級別
持久性,事務執行成功後數據將永久保存,沒法恢復
mysql #開啓事務 start transaction #sql 語句...... #sql 語句...... #sql 語句...... commit #提交事務 一旦提交就持久化了
設置歸檔的存點sql 語句savepoint 檔案名稱
注意:若是一個事件提交了,將無法返回歸檔點
是任意的sql語句的組合,被放到某一個存儲過程當中,相似於一個函數,有一個函數,有參數,仍是函數體
create procedure p_name(p_type p_name p_date_type)
begin
sql.......
end
call add1(參數);
其中in對於的是傳入的有具體值參數,out對於數據庫中的變量名
drop procedure 名稱;
set @變量名 = 值
函數 | 介紹 |
---|---|
abs(x) | 返回x的絕對值 |
bin(x) | 返回x的二進制(oct返回八進制,hex返回十六進制) |
ceiling(x) | 返回大於x的最小整數值 |
exp(x) | 返回值e(天然對數的底)的x次方 |
floor(x) | 返回小於x的最大整數值 |
greatest(x1,x2,...,xn) | 返回集合中最大的值 |
least(x1,x2,...,xn) | 返回集合中最小的值 |
ln(x) | 返回x的天然對數 |
log(x)y) | 返回x的以y爲底的對數 |
mod(x)y) | 返回x/y的模(餘數) |
pi() | 返回pi的值(圓周率) |
rand() | 返回0到1內的隨機值,能夠經過提供一個參數(種子)使rand()隨機數生成器生成一個指定的值。 |
round(x,y) | 返回參數x的四捨五入的有y位小數的值 |
sign(x) | 返回表明數字x的符號的值 |
sqrt(x) | 返回一個數的平方根 |
truncate(x,y) | 返回數字x截短爲y位小數的結果 |
函數 | 介紹 |
---|---|
avg(col) | 返回指定列的平均值 |
count(col) | 返回指定列中非null值的個數 |
min(col) | 返回指定列的最小值 |
max(col) | 返回指定列的最大值 |
sum(col) | 返回指定列的全部值之和 |
group_concat(col) | 返回由屬於一組的列值鏈接組合而成的結果 |
函數 | 介紹 |
---|---|
ascii(char) | 返回字符的ascii碼值 |
bit_length(str) | 返回字符串的比特長度 |
concat(s1,s2...,sn) | 將s1,s2...,sn鏈接成字符串 |
concat_ws(sep,s1,s2...,sn) | 將s1,s2...,sn鏈接成字符串,並用sep字符間隔 |
insert(str,x,y,instr) | 將字符串str從第x位置開始,y個字符長的子串替換爲字符串instr,返回結果 |
find_in_set(str,list) | 分析逗號分隔的list列表,若是發現str,返回str在list中的位置 |
lcase(str)或lower(str) | 返回將字符串str中全部字符改變爲小寫後的結果 |
left(str,x) | 返回字符串str中最左邊的x個字符 |
length(s) | 返回字符串str中的字符數 |
ltrim(str) | 從字符串str中切掉開頭的空格 |
position(substr in str) | 返回子串substr在字符串str中第一次出現的位置 |
quote(str) | 用反斜槓轉義str中的單引號 |
repeat(str,srchstr,rplcstr) | 返回字符串str重複x次的結果 |
reverse(str) | 返回顛倒字符串str的結果 |
right(str,x) | 返回字符串str中最右邊的x個字符 |
rtrim(str) | 返回字符串str尾部的空格 |
strcmp(s1,s2) | 比較字符串s1和s2 |
trim(str) | 去除字符串首部和尾部的全部空格 |
ucase(str)或upper(str) | 返回將字符串str中全部字符轉變爲大寫後的結果 |
函數 | 介紹 |
---|---|
curdate()或current_date() | 返回當前的日期 |
curtime()或current_time() | 返回當前的時間 |
date_add(date,interval int keyword) | 返回日期date加上間隔時間int的結果(int必須按照關鍵字進行格式化),如:selectdate_add(current_date,interval 6 month); |
date_format(date,fmt) | 依照指定的fmt格式格式化日期date值 |
date_sub(date,interval int keyword) | 返回日期date加上間隔時間int的結果(int必須按照關鍵字進行格式化),如:selectdate_sub(current_date,interval 6 month); |
dayofweek(date) | 返回date所表明的一星期中的第幾天(1~7) |
dayofmonth(date) | 返回date是一個月的第幾天(1~31) |
dayofyear(date) | 返回date是一年的第幾天(1~366) |
dayname(date) | 返回date的星期名,如:select dayname(current_date); |
from_unixtime(ts,fmt) | 根據指定的fmt格式,格式化unix時間戳ts |
hour(time) | 返回time的小時值(0~23) |
minute(time) | 返回time的分鐘值(0~59) |
month(date) | 返回date的月份值(1~12) |
monthname(date) | 返回date的月份名,如:select monthname(current_date); |
now() | 返回當前的日期和時間 |
quarter(date) | 返回date在一年中的季度(1~4),如select quarter(current_date); |
week(date) | 返回日期date爲一年中第幾周(0~53) |
year(date) | 返回日期date的年份(1000~9999) |
語法
CREATE FUNCTION f_name(paramters)
returns dataType;
return value;
說明:
paramters 只能是in 輸入參數 參數名 類型
必須有返回值
不能呢加begin 和end
returns 後面是返回值的類型 這裏不加分號
return 後面是要返回的值
注意
函數只能返回一個值
函數通常不涉及數據的增刪改查 就是一個通用的功能
調用自定義的函數 與調用系統的一致 不須要call 使用select 可得到返回值
函數中不能使用sql語句
就像在java中不能識別sql語句同樣
案例
delimiter |
create function addfuntion(a int,b int)
returns int return a + b;
delimiter ;
select addfuntion(1,1);
delimiter改變命令行語言執行的方法
/
如默認是;進行運行
而delimiter | 表示末尾輸入|表示執行