結構化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係數據庫系統。
ALTER TABLE tblname ADD COLUMN csmid COUNTER (0, 1)
CREATE TABLE tblname(id autoincrement, sname memo, ...)
ALTER TABLE tblname DROP COLUMN csmid
SELECT * FROM tblname where fieldname!='' # OR SELECT * FROM tblname where fieldname<>''
SELECT MAX(fieldname) from tblname;
SELECT DISTINCT fieldname From tblname;
SELECT COUNT(DISTINCT fieldname) FROM tblname;
SELECT fieldname, COUNT(*) FROM tblname GROUP BY fieldname ORDER BY COUNT(*) DESC;
SELECT sno, COUNT(*) FROM ( SELECT sno, sclass FROM students GROUP BY sno, sclass ) GROUP BY SNO ORDER BY COUNT(*) DESC
SELECT * FROM students ORDER BY INSTR(name, 'abc') DESC;
# 設置主鍵 ALTER TABLE tblname ADD CONSTRAINT PrimaryKey Primary Key(主鍵字段名) # 去除主鍵 ALTER TABLE tblname DROP CONSTRAINT PrimaryKey
SELECT * INTO tableB [IN 'D:\B.mdb'] FROM tableA
INSERT INTO tableB(field1, field2) [IN 'D:\B.mdb'] SELECT field1, field2 FROM tableA # 當表結構徹底相同,合併表時能夠這麼寫: INSERT INTO tableB [IN 'D:\B.mdb'] SELECT * FROM tableA
SELECT DATE_ADD(datefiled, INTERVAL 8 HOUR ) FROM tbl;
# 添加自增ID select identity(int,1,1) as autoID, * into tmpTable from tableName # 選出重複記錄中值最小的自增ID select min(autoID) as autoID into tmpTable2 from tmpTable group by keyField1, keyField2 # 獲得最終結果 select * from tmpTable where autoID in(select autoID from tmpTable2)
num = rs->GetCollect(_variant_t((long)0))
vField.vt ?= VT_NULL
# date爲保留字,應該加中括號 SELECT date FROM tableName # 這個中括號按說不該該影響的 SELECT COUNT(*) FROM tableName WHERE field<>'[D2037'
另外注意,字符串中如有nul字符,也會插入失敗,這種狀況比較難以排查。由於看起來的情況是,拷貝到access文件裏面裏能執行,而代碼裏不能執行。html
ALTER TABLE tableName ALTER COLUMN [autoid] COUNTER (10, 1)
SELECT NAME FROM MSysObjects WHERE TYPE=1 AND FLAGS=0
UPDATE tblname SET fieldname=FORMAT(fieldname, "00000");
1)、無則插入,有則忽略。mysql
/*某些版本的mysql會有一個警告*/ INSERT IGNORE INTO tblname(a,b,c) VALUES (1,2,3); /*不會有警告*/ INSERT INTO tblname(a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c;
2)、無則插入,有則更新。sql
INSERT INTO tblname(a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;
INSERT INTO tableName(keyA, keyB) SELECT valA, valB WHERE NOT EXISTS (SELECT TOP 1 1 FROM tableName WHERE keyA=valA AND keyB=valB);
2八、兩表相減。(in、not in、exists、not exists)
1)、單字段。數據庫
SELECT field FROM tableA WHERE field NOT IN ( SELECT field FROM tableB )
2)、多字段。編程
SELECT * FROM tableA WHERE NOT EXISTS ( SELECT * FROM tableB WHERE tableA.field1=tableB.field1 AND tableA.field2=tableB.field2 )
SELECT * FROM [;database=d:\A.mdb].tblA,[;database=d:\B.mdb].tblB WHERE tblA.fieldA=tblB.fieldB; SELECT * FROM tblA,[;database=d:\B.mdb].tblB WHERE tblA.fieldA=tblB.fieldB;
INSERT INTO destTable SELECT * FROM OPENROWSET ('Microsoft.Jet.OLEDB.4.0', 'D:\test\test.mdb';'admin';'', srcTable); INSERT INTO destTable SELECT * FROM OPENROWSET ('Microsoft.ACE.OLEDB.12.0', 'D:\test\test.mdb';'admin';'', srcTable);
SELECT * FROM tableName WHERE fieldName REGEXP '^[0-9]' LIMIT 100;
USE dbname; DELIMITER $$ # 定義結束符爲$$ DROP PROCEDURE IF EXISTS test_insert; # 刪除已有存儲過程 CREATE PROCEDURE test_insert() # 建立新的存儲過程 BEGIN DECLARE i INT DEFAULT 1; WHILE i<10 DO INSERT INTO tableName(idx) VALUES (i); SET i=i+1; END WHILE; END $$ # 結束定義語句 DELIMITER ; # 恢復結束符爲; CALL test_insert(); # 調用存儲過程
本文出自 walker snapshot