sql语句备忘录
ALTER TABLE tblname ADD COLUMN csmid COUNTER (0, 1)CREATE TABLE tblname(id autoincrement, sname memo, ...)ALTER TABLE tblname DROP COLUMN csmidSELECT * 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(*) DESCSELECT *
FROM students
ORDER BY INSTR(name, 'abc') DESC;# 设置主键
ALTER TABLE tblname ADD CONSTRAINT PrimaryKey Primary Key(主键字段名)
# 去除主键
ALTER TABLE tblname DROP CONSTRAINT PrimaryKeySELECT * INTO tableB [IN 'D:\B.mdb'] FROM tableAINSERT INTO tableB(field1, field2) [IN 'D:\B.mdb'] SELECT field1, field2 FROM tableA
# 当表结构完全相同,合并表时可以这么写:
INSERT INTO tableB [IN 'D:\B.mdb'] SELECT * FROM tableASELECT 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文件里面里能执行,而代码里不能执行。
设置表的autoid字段从10开始自增,每次增1。ALTER TABLE tableName
ALTER COLUMN [autoid] COUNTER (10, 1)SELECT NAME FROM MSysObjects
WHERE TYPE=1 AND FLAGS=0UPDATE tblname
SET fieldname=FORMAT(fieldname, "00000");1)、无则插入,有则忽略。
/*某些版本的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)、无则插入,有则更新。
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);28、两表相减。(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
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!