【CXY】常用sql語句 -- mysql

總結一下常用的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.文章反映個人愚見,如有異議歡迎討論指正


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章