MySQL特有的SQL語句 第一彈
首先MySQL裡面的SQL標準可以參考下面的表格,我們今天想總結的是MySQL特有的SQL語句。
我們可以化繁為簡,把所有的SQL都按照增刪改查的四個維度來對待,只是有些語法的含義更廣一些,比如增,建立表我們也算增的範疇,改,修改欄位也算是改的範疇。
增
create語句
如果要複製表結構資訊,下面的語句真是簡潔有力,會把表test1的結構複製出來。
create table test like test1;
select into語句
select into語句可以很快的從表裡取出資料,快速構造出一個表來。
SELECT vale1, value2 into Table2 from Table1
這裡會要求目標表Table2不存在,因為在插入時會自動建立表Table2
insert語句中的表示式
MySQL裡的insert語句還是很豐富的。比如下面的動態值,設定表示式的方式,MySQL就有自己的口味。
INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);
--ok
INSERT INTO tbl_name (col1,col2) VALUES(col2*2,15);
--wrong
insert語句
MySQL支援的特有的insert語句,下面的第一種是mysqldump匯出的語句格式,這種方式比較清晰,相比多條SQL語句效果要好太多。
INSERT INTO table (a, b, c) VALUES (1,2,3) ,(2,3,4);
下面的語句看起來比較特別,解析MySQL binlog會發現,裡面的insert語句是這個樣子的。
INSERT INTO table SET a=1, b=2, c=3;
刪
drop語句
MySQL裡面的drop語句還是蠻有特點,它不會像Oracle那樣可以單獨刪除索引,刪除是始終要和表關聯起來,這樣想來和IOT的特點還是蠻對味的。
如果你直接刪除一個索引,就會丟擲如下的錯誤。
?Drop index ind_account_id2;
?ERROR 1064 (42000):
可以使用如下的方式:
drop index ind_account_id2 on t_user_login_record;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
或者是用比較經典的寫法:
alter table t_user_login_record drop index account;
級聯刪除
MySQL裡面支援級聯刪除,下面的語句會級聯刪除資料,這一點Oracle目前還是不支援這種方式的。
delete A, B from A, B where A.id = B.aid
改
級聯更新
update A, B set A.a = a1, B.b = b1 where A.id = B.aid
change modify
change,modify用法有些相似,但是細究起來還是有自己適合的使用場景,比如與修改欄位b的型別或者屬性,change還更適合於修改欄位名稱,修改資料型別modify更加直接一些。
ALTER TABLE t1 MODIFY b BIGINT NOT NULL;
replace語句
MySQL裡面的replace語句還是很有特色的,和Oracle裡面的merge有一拼,它支援兩種模式,資料值和子查詢的方式
replace into x values(...)
或者
replace into x select * from y
renmae語句
這個功能很可能被大家忽略,但是實際上這個功能很實用,比如要把一個表清理表,如果你把它歸檔到一個歷史資料庫中而暫時不清理資料,這種方式就很快捷。
rename table testsync.t_fund_info to test.t_user_login_record;
Query OK, 0 rows affected (0.05 sec)
查
limit語法
limit的使用算是MySQL中很經典的使用方法了,它也支援多種模式。
比如只返回第2條結果
select * from x
limit 2
返回第2條到第12條的結果
or limit 2, 10
order by的妙用
如果下面的資料需要排序,
select *from test order by name;
+------+------+
| id | name |
+------+------+
| 1 | aa1 |
| 3 | aa10 |
| 4 | aa11 |
| 2 | aa2 |
+------+------+
我們希望是按照aa1,aa2,aa10,aa11的順序來顯示,直接這樣寫就可以了。
select *from test order by name+0;
+------+------+
| id | name |
+------+------+
| 1 | aa1 |
| 2 | aa2 |
| 3 | aa10 |
| 4 | aa11 |
+------+------+
特有的函式
如果需要擷取一下字串,比如擷取出數字,就有很多種實現方式。
比如下面的方式就可行。
mysql> select replace('123456G', right('123456G',1), '');
+--------------------------------------------+
| replace('123456G', right('123456G',1), '')
|+--------------------------------------------+
| 123456
|+--------------------------------------------+
或者是使用cast來過濾
> select cast('123124aabc' as unsigned);
+--------------------------------+
| cast('123124aabc' as unsigned) |
+--------------------------------+
| 123124 |
+--------------------------------+
1 row in set, 1 warning (0.01 sec)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2142375/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySql 常用Sql語句MySql
- MYSQL SQL語句優化MySql優化
- mysql捕捉所有SQL語句MySql
- sql 語句練習 In MySQLMySql
- MySQL中特別實用的幾種SQL語句送給大家MySql
- MySQL基本sql語句總結MySql
- mysql 常用sql語句 簡介MySql
- MySQL之SQL語句優化MySql優化
- MySQL中常用的SQL語句MySql
- MySql與Sql Server Update語句MySqlServer
- MYSQL 常用sql語句小結MySql
- mysql sql語句學習(一)MySql
- sql 語句練習(3) In MySQLMySql
- MySQL指南之SQL語句基礎MySql
- MySql常用操作SQL語句彙總MySql
- mysql執行sql語句過程MySql
- mysql的sql語句執行流程MySql
- mysql空間大小的SQL語句MySql
- mysql 查詢建表語句sqlMySql
- MySQL管理之SQL語句例項MySql
- jsp tomcat mysql *SQL*語句JSTomcatMySql
- MySql和簡單的sql語句MySql
- MySQL cron定時執行SQL語句MySql
- mysql查詢效率慢的SQL語句MySql
- MySQL中常用SQL語句的編寫MySql
- mysql查表空間大小的SQL語句MySql
- MySQL入門---(一)SQL的DDL語句MySql
- 1.4 資料庫和常用SQL語句(正文)——MySQL資料庫命令和SQL語句資料庫MySql
- 【MySQL】經典資料庫SQL語句編寫練習題——SQL語句掃盲MySql資料庫
- SQL語句SQL
- Java中如何解析SQL語句、格式化SQL語句、生成SQL語句?JavaSQL
- mysql如何處理億級資料,第一個階段——優化SQL語句MySql優化
- MySQL原始碼:從SQL語句到MySQL內部物件MySql原始碼物件
- 50個SQL語句(MySQL版) 問題十四MySql
- MySQL 記錄所有執行了的 sql 語句MySql
- 在mysql查詢效率慢的SQL語句MySql
- MYSQL---SQL語句的資料快取MySql快取
- mysql sql語句執行超時設定MySql