SQL 数据库常用语句速查
本文整理了 Access、MySQL 及 SQL Server 等常见数据库的常用操作语句,涵盖基础管理、查询优化、系统维护及函数应用,适用于开发者日常参考。
基础操作
创建与删除数据库
创建数据库
DATABASE databasename;
涵盖 Access、MySQL 及 SQL Server 数据库基础操作,包括建库建表、索引视图、增删改查、分组聚合、外连接、分页、存储过程及系统维护命令。整理字符串函数、加密方法、跨库操作及常见查询场景解决方案,提供最佳实践建议,适用于开发者日常开发与运维参考。
本文整理了 Access、MySQL 及 SQL Server 等常见数据库的常用操作语句,涵盖基础管理、查询优化、系统维护及函数应用,适用于开发者日常参考。
创建数据库
DATABASE databasename;

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online
解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online
CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
删除数据库
DROP DATABASE dbname;
创建备份设备
USE master;
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat';
执行备份
BACKUP DATABASE pubs TO testBack;
创建新表
CREATE TABLE tabname(col1 type1 [NOT NULL] [PRIMARY KEY], col2 type2 [NOT NULL], ...);
基于已有表创建新表
CREATE TABLE tab_new LIKE tab_old;CREATE TABLE tab_new AS SELECT col1, col2... FROM tab_old;删除表
DROP TABLE tabname;
添加列
ALTER TABLE tabname ADD column col type;
*注:列增加后通常不能直接删除。DB2 中列类型变更受限,仅支持扩展 varchar 长度。
主键管理
ALTER TABLE tabname ADD PRIMARY KEY (col);ALTER TABLE tabname DROP PRIMARY KEY (col);索引管理
CREATE [UNIQUE] INDEX idxname ON tabname(col...);DROP INDEX idxname;
*注:索引不可更改,需删除重建。视图管理
CREATE VIEW viewname AS SELECT statement;DROP VIEW viewname;SELECT * FROM table1 WHERE 范围;INSERT INTO table1(field1, field2) VALUES(value1, value2);DELETE FROM table1 WHERE 范围;UPDATE table1 SET field1=value1 WHERE 范围;SELECT * FROM table1 WHERE field1 LIKE '%value1%';SELECT * FROM table1 ORDER BY field1, field2 [DESC];SELECT COUNT(*) AS totalcount FROM table1;SELECT SUM(field1) AS sumvalue FROM table1;SELECT AVG(field1) AS avgvalue FROM table1;SELECT MAX(field1) AS maxvalue FROM table1;SELECT MIN(field1) AS minvalue FROM table1;UNION ALL 可保留重复行。EXCEPT ALL 保留重复。INTERSECT ALL 保留重复。
*注:参与运算的结果行列数必须一致。SELECT a.a, a.b, b.c FROM a LEFT OUTER JOIN b ON a.a = b.c;
使用 GROUP BY 进行分组聚合。注意:
sp_detach_db;sp_attach_db (需完整路径)sp_renamedb 'old_name', 'new_name';SELECT * INTO b FROM a WHERE 1<>1;SELECT TOP 0 * INTO b FROM a;INSERT INTO b(a, b, c) SELECT d, e, f FROM a;
INSERT INTO b(a, b, c) SELECT d, e, f FROM b IN '具体数据库' WHERE 条件;
SELECT a, b, c FROM a WHERE a IN (SELECT d FROM b);
SELECT a.title, a.username, b.adddate
FROM table a, (SELECT MAX(adddate) adddate FROM table WHERE table.title=a.title) b;
SELECT TOP 10 b.*
FROM (SELECT TOP 20 主键字段 FROM 表名 ORDER BY 排序字段 DESC) a, 表名 b
WHERE b.主键字段 = a.主键字段 ORDER BY a.排序字段;
SELECT TOP 10 * FROM tablename ORDER BY NEWID();
DELETE FROM tablename WHERE id NOT IN (SELECT MAX(id) FROM tablename GROUP BY col1, col2...);
SELECT * FROM table1 WHERE time BETWEEN time1 AND time2;
SELECT * FROM table1 WHERE a IN ('值 1', '值 2');
WHERE 1=1 简化条件拼接逻辑。DBCC REINDEX;
DBCC SHRINKDB;
ALTER DATABASE [dvbbs] SET SINGLE_USER;
DBCC CHECKDB('dvbbs', repair_allow_data_loss) WITH TABLOCK;
ALTER DATABASE [dvbbs] SET MULTI_USER;
BACKUP LOG WITH TRUNCATE_ONLY 及循环写入临时表以释放空间。SELECT pwdencrypt('原始密码');
SELECT pwdcompare('原始密码', '加密后密码') = 1; -- 验证是否相同
SELECT Name FROM sysobjects WHERE xtype='u' AND status>=0;
SELECT name FROM syscolumns WHERE id=object_id('表名');
sp_addlinkedserver, sp_addlinkedsrvloginSELECT * FROM openrowset('SQLOLEDB', '用户名;密码', '数据库.dbo.表名');
TOP N 嵌套过深,考虑游标或偏移量优化。nvarchar 占用双倍空间,根据需求选择 varchar。SELECT *,明确指定字段以减少网络传输。以上内容整理自常见数据库文档,实际使用时请根据具体版本调整语法。