MySQL命令大全
一.基礎查詢
1.查詢全部列
SELECT *FROM 表名;
2.查詢特定的列:
SELECT id, name FROM student;
3.起別名:
SELECT 列名1 AS "列1別名",列名2 AS "列2別名" FROM 表名;
或
SELECT 列名1 "列1別名",列名2 "列2別名" FROM 表名;
4.查詢去重
select distinct 字段名 from 表名;
5.+號的作用
select 數值+數值;
6.concat函數(拼接字符,相當于java中的"1"+"23"="123")
select concat(字符1,字符2,字符3,...);
7.ifnull函數
select ifnull(commission_pct,0) from employees;
8.isnull函數
功能:判斷某字段或表達式是否為null,如果是,則返回1,否則返回0
二.條件查詢
select 查詢列表 from 表名 where 篩選條件;
1.按條件表達式查詢
SELECT * FROM employees WHERE salary>12000;
2.按邏輯表達式篩選
SELECT last_name, salary, commission_pct FROM employees WHERE salary>=10000 AND salary<=20000;
3.模糊查詢
select last_name, salary FROM employees WHERE last_name LIKE '__e_a%';(查詢員工名中第三個字符為e,第五個字符為a的員工名和工資)
4.IN查詢
SELECT last_name, job_id FROM employees WHERE job_id IN( 'IT_PROT' ,'AD_VP','AD_PRES');
5.IS NULL語句
SELECT last_name, commission_pct FROM employees WHERE commission_pct IS NULL;
6.安全等于<=>
SELECT last_name, salary FROM employees WHERE salary <=> 12000;
三.排序查詢
ASC(ascend): 升序。DESC(descend): 降序
select 查詢列表 from 表名 【where 篩選條件】 order by 排序的字段或表達式;
1.單個字段查詢
SELECT * FROM employees WHERE department_id>=90 ORDER BY employee_id DESC;
2.按表達式排序
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) FROM employees ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;
3.按函數排序
SELECT LENGTH(last_name),last_name FROM employees ORDER BY LENGTH(last_name) DESC;
4.多個字段排序
SELECT * FROM employees ORDER BY salary DESC,employee_id ASC;
四.單行函數
字符函數:
1.length(s) 獲取字符長度
SELECT LENGTH('john'); SELECT LENGTH('張三豐hahaha');
2.concat(s1,s2...sn) 拼接字符串
SELECT CONCAT(last_name,'_',first_name) 姓名 FROM employees;
3.upper(s) 將字符串轉換為大寫
SELECT UPPER('john');
4.lower(s) 將字符串轉換為小寫
SELECT LOWER('joHn');
5.substr(s,start,length)、substring() SUBSTR(s, start, length):從字符串 s 的 start 位置截取長度為 length 的子字符串
SELECT SUBSTR('李莫愁愛上了陸展元',1,3) out_put;
6.instr(s,s) 返回子串第一次出現的索引,如果找不到返回0
SELECT INSTR('楊不殷六俠悔愛上了殷六俠','殷八俠') AS out_put;
7.trim(s) 去掉字符串開始和結尾處的空格
SELECT LENGTH(TRIM(' 張翠山 ')) AS out_put;
8.lpad(s1,len,s2) 在字符串 s1 的開始處填充字符串 s2,使字符串長度達到 len
SELECT LPAD('殷素素',5,'*') AS out_put; --> **殷素素
9.rpad(s1,len,s2) 在字符串 s1 的結尾處添加字符串 s2,使字符串的長度達到 len
SELECT RPAD('殷素素',5,'*') AS out_put; --> 殷素素**
10.replace(s,s1,s2) 用字符串 s2 替代字符串 s 中的字符串 s1
SELECT REPLACE('張無忌愛上了周芷若','周芷若','趙敏') AS out_put; -->張無忌愛上了趙敏
數學函數
1.round(x) ROUND(x,d):保留d位小數,四舍五入
SELECT ROUND(-1.55); --> -2
2.ceil(x) 向上取整
SELECT CEIL(-1.02); --> -1
3.floor(x) 向下取整
SELECT FLOOR(-1.58); --> -2
4.truncate(x,y) 返回數值 x 保留到小數點后 y 位的值(與 ROUND 最大的區別是不會進行四舍五入)
SELECT TRUNCATE(1.567,2); --> 1.56
5.mod(x,y) 返回 x 除以 y 以后的余數
SELECT MOD(10,-3); --> 1
日期函數
1.now() 返回當前系統時間(注:日期+時間)
SELECT NOW(); --> 2019-10-05 09:56:57
2.curdate() 返回當前系統日期,不包含時間
ELECT CURDATE(); --> 2019-10-05
3.curtime() 返回當前系統日期,不包含日期
SELECT CURTIME(); -->09:56:57
4.year(d) 返回年份
SELECT YEAR(NOW()); -->2019
5.month(d) 返回日期d中的月份值,1 到 12
SELECT MONTH(NOW()); --> 10
6.monthname(d) 返回日期當中的月份名稱,如 November
SELECT MONTHNAME(NOW()); --> October
7.str_to_date(s,f) 將字符通過指定的格式轉換成日期
SELECT STR_TO_DATE('1998-3-2','%Y-%c-%d') AS out_put; --> 1998-03-02
8.date_format(d,f) 將日期通過指定的格式轉換成字符
SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日') AS out_put; --> 2019年10月05日
其他函數
1.version() 返回當前數據庫名
2.user() 返回當前用戶
SELECT USER();
流程控制函數
1.if(expr,v1,v2) 如果表達式 expr 成立,返回結果 v1;否則,返回結果 v2。
SELECT IF(1 > 0,'正確','錯誤'); --> 正確
2.case CASE 表示函數開始,END 表示函數結束。如果 condition1 成立,則返回 result1, 如果 condition2 成立,則返回 result2,當全部不成立則返回 result,而當有一個成立之后,后面的就不執行了。
查詢員工的工資,要求
部門號=30,顯示的工資為1.1倍
部門號=40,顯示的工資為1.2倍
部門號=50,顯示的工資為1.3倍
其他部門,顯示的工資為原工資
SELECT salary 原始工資,department_id,
CASE department_id
WHEN 30 THEN salary*1.1
WHEN 40 THEN salary*1.2
WHEN 50 THEN salary*1.3
ELSE salary
END AS 新工資
FROM employees;
五.分組函數
1.sum(expression) ? 求和
SELECT SUM(salary) FROM employees;
2.avg(expression) ? 平均值
SELECT AVG(salary) FROM employees;
3.max(expression) ? 最大值
SELECT MAX(salary) FROM employees;
4.min(expression) ? 最小值
SELECT MIN(salary) FROM employees;
5.count(expression) 計算個數
SELECT COUNT(salary) FROM employees;
分組函數支持哪些類型:
字符:先試圖將字符轉換成數值,如果轉換成功,則繼續運算;否則轉換成0,再做運算
日期:SELECT SUM(hiredate) ,AVG(hiredate) FROM employees;
特點:
sum、avg一般用于處理數值型
max、min、count可以處理任何類型
以上分組函數都忽略null值
可以和distinct搭配實現去重的運算
一般使用count(*)用作統計行數
和分組函數一同查詢的字段要求是group by后的字段
六.分組查詢
語法:select 分組函數,分組后的字段 from 表 【where 篩選條件】 group by 分組的字段 【having 分組后的篩選】 【order by 排序列表】
特點:
和分組函數一同查詢的字段必須是group by后出現的字段
篩選分為兩類:分組前篩選和分組后篩選
1.簡單的分組
SELECT AVG(salary),job_id FROM employees GROUP BY job_id;
2.分組前篩選
例1:查詢郵箱中包含a字符的 每個部門的最高工資
SELECT MAX(salary),department_id FROM employees WHERE email LIKE '%a%' GROUP BY department_id;
3.分組后篩選
例1:查詢哪個部門的員工個數>5
SELECT COUNT(*),department_id FROM employees GROUP BY department_id HAVING COUNT(*)>5;
4.添加排序
例1:每個工種有獎金的員工的最高工資>6000的工種編號和最高工資,按最高工資升序
SELECT job_id 工種編號, MAX( salary ) 最高工資 FROM employees WHERE commission_pct IS NOT NULL GROUP BY job_id HAVING MAX( salary )> 6000 ORDER BY MAX( salary );
5.按多個字段分組
例1:查詢每個工種每個部門的最低工資,并按最低工資降序
SELECT MIN( salary ) 最低工資, department_id 部門, job_id 工種 FROM employees GROUP BY department_id, job_id ORDER BY MIN( salary ) DESC;
七.連接查詢
select 字段1,字段2 from 表1,表2,...;
1.笛卡爾積現象
當查詢多個表時,沒有添加有效的連接條件,導致多個表所有行實現完全連接
表1 有m行,表2有n行,結果=m*n行
發生原因:沒有有效的連接條件 如何避免:添加有效的連接條件
2.分類
按功能分類: 內連接: 等值連接 非等值連接 自連接 外連接: 左外連接 右外連接 全外連接(mysql不支持) 交叉連接
3.等值連接
多表等值連接的結果為多表的交集部分
n表連接,至少需要n-1個連接條件
表的順序沒有要求
一般需要為表起別名
可以搭配前面介紹的所有子句使用,比如排序、分組、篩選
例1:查詢女神名和對應的男神名
SELECT NAME,boyName FROM boys, beauty WHERE beauty.boyfriend_id = boys.id;
4.為表起別名
SELECT e.last_name, e.job_id, j.job_title FROM employees e, jobs j WHERE e.`job_id` = j.`job_id`;
5.加篩選條件
SELECT last_name, department_name, commission_pct FROM employees e, departments d WHERE e.`department_id` = d.`department_id` AND e.`commission_pct` IS NOT NULL;
6.加分組
例1:查詢每個城市的部門個數
SELECT COUNT(*) 個數, city FROM departments d, locations l WHERE d.`location_id` = l.`location_id` GROUP BY city;
7.非等值連接
語法:select 查詢列表 from 表1 別名,表2 別名 where 非等值的連接條件 【and 篩選條件】 【group by 分組字段】 【having 分組后的篩選】 【order by 排序字段】
例1:SELECT e.salary 工資, j.grade_level 工資級別 FROM employees e, job_grades j WHERE e.salary BETWEEN j.lowest_sal AND j.highest_sal;
8.自連接
語法:select 查詢列表 from 表 別名1,表 別名2 where 等值的連接條件 【and 篩選條件】 【group by 分組字段】 【having 分組后的篩選】 【order by 排序字段】
例1:查詢員工名和上級的名稱
SELECT e.last_name 員工名, m.last_name 上級名稱 FROM employees e, employees m WHERE e.manager_id = m.employee_id;
內連接
語法:select 查詢列表 from 表1 別名 【inner】 join 表2 別名 on 連接條件 where 篩選條件 group by 分組列表 having 分組后的篩選 order by 排序列表 limit 子句;
特點:
表的順序可以調換
內連接的結果=多表的交集
n表連接至少需要n-1個連接條件
添加排序、分組、篩選
inner可以省略
篩選條件放在where后面,連接條件放在on后面,提高分離性,便于閱讀
inner join連接和sql92語法中的等值連接效果是一樣的,都是查詢多表的交集
1.內連接-等值連接
例1:查詢員工名、部門名
SELECT last_name, department_name FROM departments d INNER JOIN employees e ON e.`department_id` = d.`department_id`;
2.內連接-非等值連接
例1:查詢員工的工資級別
SELECT e.last_name 員工名, e.salary 薪水, j.grade_level 工資級別 FROM employees e JOIN job_grades j ON e.salary BETWEEN j.lowest_sal AND j.highest_sal;
3.內連接-自連接
例1:查詢員工的名字、上級的名字
SELECT e.last_name 員工名, m.last_name 上級名 FROM employees e JOIN employees m ON e.manager_id = m.employee_id;
外連接
語法:select 查詢列表 from 表1 別名 left|right|full【outer】 join 表2 別名 on 連接條件 where 篩選條件 group by 分組列表 having 分組后的篩選 order by 排序列表 limit 子句;
應用場景:用于查詢一個表中有,另一個表沒有的記錄
特點:
外連接的查詢結果為主表中的所有記錄
如果從表中有和它匹配的,則顯示匹配的值
如果從表中沒有和它匹配的,則顯示null
外連接查詢結果=內連接結果+主表中有而從表沒有的記錄
左外連接,left join左邊的是主表
右外連接,right join右邊的是主表
左外和右外交換兩個表的順序,可以實現同樣的效果
全外連接=內連接的結果+表1中有但表2沒有的+表2中有但表1沒有的
1.左外連接
例1:查詢哪個部門沒有員工
SELECT d.* FROM departments d LEFT JOIN employees e ON d.department_id = e.department_id WHERE e.department_id IS NULL
2.右外連接
例1:查詢哪個部門沒有員工(調換位置使用RIGHT JOIN)
SELECT d.* FROM employees e RIGHT JOIN departments d ON d.department_id = e.department_id WHERE e.department_id IS NULL
3.全外連接(mysql不支持全外連接)
USE girls; SELECT b.*,bo.* FROM beauty b FULL OUTER JOIN boys bo ON b.`boyfriend_id` = bo.id;
4.交叉連接(交叉聯接返回左表中的所有行,左表中的每一行與右表中的所有行組合。交叉聯接也稱作笛卡爾積。)
SELECT b.*,bo.* FROM beauty b CROSS JOIN boys bo;
八.子查詢
1.標量子查詢
例1:誰的工資比 Abel 高?
SELECT * FROM employees WHERE salary>( SELECT salary FROM employees WHERE last_name = 'Abel' );
2.列子查詢
| 操作符 | 含義 |
|---|---|
| IN/NOT IN | 等于列表中的任意一個 |
| ANY|SOME | 和子查詢返回的某一個值比較 |
| ALL | 和子查詢返回的所有值比較 |
例1:返回location_id是1400或1700的部門中的所有員工姓名
SELECT last_name FROM employees WHERE department_id IN( SELECT DISTINCT department_id FROM departments WHERE location_id IN(1400,1700) );
3.行子查詢
例1:查詢員工編號最小并且工資最高的員工信息
SELECT * FROM employees WHERE (employee_id,salary)=( SELECT MIN(employee_id),MAX(salary) FROM employees );
4.select后面
例1:查詢每個部門的員工個數
SELECT d.*,( SELECT COUNT(*) FROM employees e WHERE e.department_id = d.`department_id` ) 個數 FROM departments d;
5.from后面
例1:查詢每個部門的平均工資的工資等級
SELECT ag_dep.*,g.`grade_level` FROM ( SELECT AVG(salary) ag,department_id FROM employees GROUP BY department_id ) ag_dep INNER JOIN job_grades g ON ag_dep.ag BETWEEN lowest_sal AND highest_sal;
6.exists(相關子查詢)
例1:查詢有員工的部門名
SELECT department_name FROM departments d WHERE EXISTS( SELECT * FROM employees e WHERE d.`department_id`=e.`department_id` );
九.分頁查詢
語法:select 查詢列表 from 表 【join type】 join 表2 on 連接條件 where 篩選條件 group by 分組字段 having 分組后的篩選 order by 排序的字段】 limit 【offset,】size;
例1:查詢前五條員工信息
SELECT * FROM employees LIMIT 0,5;
十.聯合查詢
語法:查詢語句1 union 【all】 查詢語句2 union 【all】 ...
特點:
要求多條查詢語句的查詢列數是一致的!
要求多條查詢語句的查詢的每一列的類型和順序最好一致
union關鍵字默認去重,如果使用union all 可以包含重復項
例1:查詢部門編號>90或郵箱包含a的員工信息
SELECT * FROM employees WHERE email LIKE '%a%' UNION SELECT * FROM employees WHERE department_id>90;
十一.DML數據處理之增刪改
1.INSERT
insert into 表名(字段名,...) values(值,...);
2.UPDATE
update 表名 set 字段=值,字段=值 【where 篩選條件】;
3.DELETE
delete from 表名 【where 篩選條件】【limit 條目數】
4.TRUNCATE(清空表)
truncate table 表名
十二.DDL數據庫定義語言
1.MySQL數據類型
| 分類 | 類型名稱 | 說明 |
|---|---|---|
| 整數類型 | tinyInt | 很小的整數 |
| smallint | 小的整數 | |
| mediumint | 中等大小的整數 | |
| int(integer) | 普通大小的整數 | |
| 小數類型 | float | 單精度浮點數 |
| double | 雙精度浮點數 | |
| decimal(m,d) | 壓縮嚴格的定點數 | |
| 日期類型 | year | YYYY 1901~2155 |
| time | HH : MM : SS -838:59 : 59~838 : 59 : 59 | |
| date | YYYY-MM-DD 1000-01-01~9999-12-3 | |
| datetime | YYYY-MM-DD HH : MM : SS 1000-01-01 00 : 00 : 00~ 9999-12-31 23 : 59 : 59 | |
| timestamp | YYYY-MM-DD HH : MM : SS 1970 |
|
| 文本、二進制類型 | CHAR(M) | M為0~255之間的整數 |
| VARCHAR(M) | M為0~65535之間的整數 | |
| TINYBLOB | 允許長度0~255字節 | |
| BLOB | 允許長度0~65535字節 | |
| MEDIUMBLOB | 允許長度0~167772150字節 | |
| LONGBLOB | 允許長度0~4294967295字節 | |
| TINYTEXT | 允許長度0~255字節 | |
| TEXT | 允許長度0~65535字節 | |
| MEDIUMTEXT | 允許長度0~167772150字節 | |
| LONGTEXT | 允許長度0~4294967295字節 | |
| VARBINARY(M) | 允許長度0~M個字節的變長字節字符串 | |
| BINARY(M) | 允許長度0~M個字節的定長字節字符串 |
十三.事務
事務由單獨單元的一個或多個SQL語句組成,在這個單元中,每個MySQL語句是相互依賴的。而整個單獨單元作為一個不可分割的整體,如果單元中某條SQL語句一旦執行失敗或產生錯誤,整個單元將會回滾。所有受到影響的數據將返回到事物開始以前的狀態;如果單元中的所有SQL語句均執行成功,則事物被順利執行。
事務的特性(ACID):
原子性(Atomicity)
原子性是指事務是一個不可分割的工作單位,事務中的操作要么都發生,要么都不發生。
一致性(Consistency)
事務必須使數據庫從一個一致性狀態變換到另外一個一致性狀態。
隔離性(Isolation)
事務的隔離性是指一個事務的執行不能被其他事務干擾,即一個事務內部的操作及使用的數據對并發的其他事務是隔離的,并發執行的各個事務之間不能互相干擾。
持久性(Durability)
持久性是指一個事務一旦被提交,它對數據庫中數據的改變就是永久性的,接下來的其他操作和數據庫故障不應該對其有任何影響
2.開啟事務
# 關閉自動提交 set autocommit=0; #開啟事物(可選) start transaction;
3.結束事務
commit;提交事務 # 或者 rollback;回滾事務 # 或者 rollback to 回滾點名;回滾到指定的地方
4.并發事務
事務的并發問題是如何發生的?
多個事務 同時 操作 同一個數據庫的相同數據時
并發問題都有哪些?
臟讀:對于兩個事務 T1, T2, T1 讀取了已經被 T2 更新但還沒有被提交的字段. 之后, 若 T2 回滾, T1讀取的內容就是臨時且無效的
不可重復讀:對于兩個事務T1, T2, T1 讀取了一個字段, 然后 T2 更新了該字段. 之后, T1再次讀取同一個字段, 值就不同了(在一個事物中不管讀多少次,讀取的數據應該都一樣)
幻讀:對于兩個事務T1, T2, T1 從一個表中讀取了一個字段, 然后 T2 在該表中插入了一些新的行. 之后, 如果 T1 再次讀取同一個表, 就會多出幾行
如何解決并發問題
通過設置隔離級別來解決并發問題
5.事務隔離級別
| 隔離級別 | 臟讀 | 不可重復讀 | 幻讀 |
|---|---|---|---|
| read uncommitted:讀未提交 | × | × | × |
| read committed:讀已提交 | √ | × | × |
| repeatable read:可重復讀 | √ | √ | × |
| serializable:串行化 | √ | √ | √ |
6.查看隔離級別
select @@tx_isolation;
7.設置隔離級別
# 設置當前 mySQL 連接的隔離級別: set transaction isolation level read committed; # 設置數據庫系統的全局的隔離級別: set global transaction isolation level read committed;
十四.視圖
MySQL從5.0.1版本開始提供視圖功能。一種虛擬存在的表,行和列的數據來自定義視圖的查詢中 使用的表,并且是在使用視圖時動態生成的,只保存了sql邏輯,不保存查詢結果
1.創建視圖
create view 視圖名 as 查詢語句;
例1:創建視圖emp_v2,要求查詢部門的最高工資高于12000的部門信息
# 創建視圖,查詢每個部門的最高工資,篩選出高于12000的 DROP VIEW emp_v2; CREATE VIEW emp_v2 AS SELECT department_id, MAX( salary ) max_salary FROM employees GROUP BY department_id HAVING max_salary > 12000;
# 根據創建的視圖連接departments表查詢部門信息 SELECT d.*, ev2.max_salary FROM departments d JOIN emp_v2 ev2 ON d.department_id = ev2.department_id;
2.修改視圖
create or replace view 視圖名 as 查詢語句;
3.刪除視圖
drop view 視圖名,視圖名,...
4.查看視圖
DESC 視圖名;
5.視圖的更新
視圖的可更新性和視圖中查詢的定義有關系,以下類型的視圖是不能更新的。
包含以下關鍵字的sql語句:分組函數、distinct、group by
having、union或者union all
常量視圖
Select中包含子查詢
join
from一個不能更新的視圖
where子句的子查詢引用了from子句中的表
十五.存儲過程
什么是存儲過程:事先經過編譯并存儲在數據庫中的一段sql語句的集合。類似于java中的方法
1.創建語法
CREATE PROCEDURE 存儲過程名(參數列表) BEGIN 存儲過程體(一組合法的SQL語句) END
例1:插入到admin表中五條記錄
USE girls; DELIMITER $ CREATE PROCEDURE myp1() BEGIN INSERT INTO admin(username,`password`) VALUES ('john1','0000'),('lily','0000'),('rose','0000'),('jack','0000'),('tom','0000'); END $
2.調用語法
CALL 存儲過程名(實參列表);
3.創建帶IN模式參數的存儲過程
例1:創建存儲過程實現 根據女神名,查詢對應的男神信息
DELIMITER $ CREATE PROCEDURE myp2(IN beautyName VARCHAR(20)) BEGIN SELECT bo.* FROM boys bo RIGHT JOIN beauty b ON bo.id = b.boyfriend_id WHERE b.name=beautyName; END $
CALL myp2('趙敏');
4.創建out模式參數的存儲過程
例1:根據輸入的女神名,返回對應的男神名
DELIMITER $ CREATE PROCEDURE myp4(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20)) BEGIN SELECT bo.boyname INTO boyname FROM boys bo RIGHT JOIN beauty b ON b.boyfriend_id = bo.id WHERE b.name=beautyName ; END $
# 調用 使用自定義變量接收 CALL myp4('趙敏',@name); SELECT @name;
5.創建帶inout模式參數的存儲過程
例1:傳入a和b兩個值,最終a和b都翻倍并返回
DROP PROCEDURE IF EXISTS myp5; DELIMITER $ CREATE PROCEDURE myp5(INOUT a INT,INOUT b INT) BEGIN SET a:=a*2; SET b:=b*2; END $
SET @m=10; SET @n=20; CALL myp5(@m,@n); SELECT @m,@n;
十六.存儲函數
存儲過程與存儲函數的區別:存儲過程:可以有0個返回,也可以有多個返回,適合做批量插入、批量更新,存儲函數:有且僅有1 個返回,適合做處理數據后返回一個結果
1.創建語法
CREATE FUNCTION 函數名(參數列表) RETURNS 返回類型 BEGIN 函數體 END
2.調用語法
SELECT 函數名(參數列表);
3.無參數返回
例1:返回公司的員工個數
USE myemployees; DELIMITER // CREATE FUNCTION myf1() RETURNS INT BEGIN DECLARE c INT DEFAULT 0; #定義局部變量 SELECT COUNT(*) INTO c #賦值 FROM employees; RETURN c; END //
SELECT myf1();
4.有參數返回
例1:根據員工名,返回它的工資
DELIMITER // CREATE FUNCTION myf2(empName VARCHAR(20)) RETURNS DOUBLE BEGIN SET @sal=0; #定義用戶變量 SELECT salary INTO @sal #賦值 FROM employees WHERE last_name = empName; RETURN @sal; END //
SELECT myf2('Kochhar'); SELECT @sal;
5.查看函數
SHOW CREATE FUNCTION myf3;
6.刪除函數
DROP FUNCTION myf3;
總結
- 上一篇: Debian系统常用配置
- 下一篇: python之字符串切割