總結一下常用的sql語句,測試版本:5.1
1.創建表
CREATE TABLE t_test
(
id_ VARCHAR(32),
title_ VARCHAR(255),
content_ VARCHAR(2000),
create_time_ VARCHAR(25),
state_ VARCHAR(10)
)
2.插入語句
INSERT INTO t_test VALUES ('1', '標題','內容','2013-01-30','1')
INSERT INTO t_test (id_,title_,state_) VALUES ('2', '標題2','0')
3.刪除語句
DELETE FROM t_test WHERE id_='2'
4.修改語句
UPDATE t_test SET title_ = '標題改',content_='內容改' WHERE id_='1'
5.查詢語句
SELECT * FROM t_test WHERE id_='1'
SELECT title_ AS 標題,content_ AS 內容 FROM t_test WHERE id_='1'
SELECT * FROM t_test LIMIT 2,3 //從序號2開始,查3條記錄,做翻頁最簡單
6.表增加字段
ALTER TABLE t_test ADD click_num_ VARCHAR(10)
7.類型轉換+求和
SELECT SUM(CAST(id_ AS DECIMAL)) FROM t_test
8.判空 IFNULL(column,value)
SELECT IFNULL(SUM(CAST(click_num_ AS DECIMAL)),0) FROM t_test
9.IF NOT EXISTS+NOT NULL(不爲空)+UNIQUE(唯一)
CREATE TABLE IF NOT EXISTS t_test
(
id_ VARCHAR(32) NOT NULL UNIQUE,
title_ VARCHAR(255),
content_ VARCHAR(2000),
create_time_ VARCHAR(25),
state_ VARCHAR(10)
)
10.去掉重複數據 DISTINCT
SELECT DISTINCT title_,content_ FROM t_test1
11.表信息查詢
SELECT * FROM information_schema.columns WHERE table_schema='cxy' AND table_name='t_test' AND column_name='title_';
12.刪除表
DROP TABLE t_test
13.字符串連接
SELECT CONCAT(title_,':',content_) AS 標題文章 FROM t_test
14.截取字符串 LEFT(str,len)、RIGHT(str,len)、SUBSTRING(str,pos,len)
SELECT LEFT(content_,2) FROM t_test
SELECT RIGHT(content_,2) FROM t_test
SELECT SUBSTRING(content_,2,1) FROM t_test
15.數據庫信息語句
SELECT VERSION(),USER(),DATABASE();
16.字段表達式
SELECT id_ AS id,'正常' AS 狀態,(id_*1.1) AS 主鍵轉換 FROM t_test;
#會出現異常數據,類似:3.3000000000000003
SELECT id_ AS id,'正常' AS 狀態,CONVERT((id_*1.1),DECIMAL(10,2)) AS 主鍵轉換 FROM t_test;
17.類型轉換
#CAST(xxx AS 類型) , CONVERT(xxx,類型) SIGNED:整數
SELECT CONVERT('23.1',SIGNED); #結果:23
SELECT CONVERT('23.9',SIGNED); #結果:23
SELECT CONVERT('23.1',DECIMAL(4,2)); #DECIMAL(2+2,2),第一個參數是小數點前和小數點後的和值,第二個參數是小數點後的值
SELECT LEFT(CONVERT(100.1,CHAR),2);
SELECT CAST('23.911' AS DECIMAL(4,2)); #結果:23.91
18.注意:distinct 會先排序,對於大的結果集來說是相當耗時的
19.表 廣泛的定義有:永久表(create table)、臨時表(子查詢所返回的表)、虛擬表(create view)
SELECT t_temp.標題,t_temp.內容 FROM
(SELECT id_, title_ AS 標題,content_ AS 內容 FROM t_test) AS t_temp; #t_temp 就是臨時表
視圖:
#創建試圖不能包含子查詢
CREATE VIEW t_simple_test AS
SELECT SUM(id_) FROM t_test;
SELECT * FROM t_simple_test;
DROP VIEW t_simple_test;
20.簡化表名
#可以使用表別名 來簡化長表明 可以直接寫別名,也可以 使用as
SELECT t.id_,t.title_ FROM t_test t;
SELECT t.id_,t.title_ FROM t_test AS t;
21.and、or、not、between and/is null
# where 中的 and、or、not、between and/is null
SELECT * FROM t_test WHERE NOT(id_='1');
SELECT * FROM t_test WHERE title_ IS NOT NULL AND id_='2' OR id_='3';
SELECT * FROM t_test WHERE create_time_ BETWEEN '2012-12-01' AND '2013-01-31'
22.group by 和having
#having 能對分組後的數據進行篩選,尤其在使用聚集函數的時候
SELECT create_time_,SUM(click_num_) AS num FROM t_test
WHERE SUM(click_num_) > 2
GROUP BY create_time_ ; #這個查詢是會報錯的
SELECT create_time_,SUM(click_num_) AS num FROM t_test
GROUP BY create_time_ HAVING num > 2;
23.排序
#ORDER BY
SELECT * FROM t_test ORDER BY click_num_; #從小到大
SELECT * FROM t_test ORDER BY click_num_ DESC; #從大到小
SELECT * FROM t_test ORDER BY click_num_ ,id_; #多排序
24.不等於
SELECT * FROM t_test WHERE id_ != '1';
SELECT * FROM t_test WHERE id_ <> '1';
25.in 和 not in
SELECT * FROM t_test WHERE title_ IN('標題1','標題2');
SELECT * FROM t_test WHERE id_ IN(SELECT id_ FROM t_test WHERE click_num_ >3);
SELECT * FROM t_test WHERE id_ NOT IN(SELECT id_ FROM t_test WHERE click_num_ >3);
26.like 和 通配符
SELECT * FROM t_test WHERE title_ LIKE '標題_';
SELECT * FROM t_test WHERE title_ LIKE '%題%';
未完 待續。。。
聲明:
1.原創文章,轉載請標明並加本文連接。
2.文章反映個人愚見,如有異議歡迎討論指正