常用的SQL语句

SQL(Structured Query Language)即结构化查询语言,是一种特殊目的的编程语言,也是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。以下是一些常用的SQL语句:

一、DDL(Data Definition Language)数据定义语言

DDL语句主要用于定义和管理数据库结构或模式。

  1. 创建数据库

    sql 复制代码
    	CREATE DATABASE dbname;

    或者,在创建数据库之前判断该数据库是否存在,如果存在则删除后再创建:

    sql 复制代码
    	IF EXISTS (SELECT * FROM sysdatabases WHERE name='dbname')
    
    	DROP DATABASE dbname;
    
    	CREATE DATABASE dbname;
  2. 删除数据库

    sql 复制代码
    	DROP DATABASE dbname;
  3. 创建表

    sql 复制代码
    	CREATE TABLE tablename (
    
    	    column1 datatype [constraint],
    
    	    column2 datatype [constraint],
    
    	    ...
    
    	);
  4. 删除表

    sql 复制代码
    	DROP TABLE tablename;
  5. 修改表结构

    • 添加列:

      sql 复制代码
      	ALTER TABLE tablename ADD column_name column_type [default 默认值];
    • 删除列:

      sql 复制代码
      	ALTER TABLE tablename DROP COLUMN column_name;
    • 修改列数据类型或约束(需要先删除原列再添加新列,或直接使用特定数据库的ALTER COLUMN语法):

      sql 复制代码
      	ALTER TABLE tablename ALTER COLUMN column_name new_datatype;
    • 添加主键:

      sql 复制代码
      	ALTER TABLE tablename ADD PRIMARY KEY (column_name);
    • 删除主键:

      sql 复制代码
      	ALTER TABLE tablename DROP PRIMARY KEY;
  6. 创建索引

    sql 复制代码
    	CREATE [UNIQUE] INDEX idxname ON tablename (column_name [...]);
  7. 删除索引

    sql 复制代码
    	DROP INDEX idxname ON tablename;
  8. 创建视图

    sql 复制代码
    	CREATE VIEW viewname AS SELECT statement;
  9. 删除视图

    sql 复制代码
    	DROP VIEW viewname;

二、DML(Data Manipulation Language)数据操作语言

DML语句用于对数据库中的数据进行增删改查操作。

  1. 插入数据

    sql 复制代码
    	INSERT INTO tablename (column1, column2, ...) VALUES (value1, value2, ...);

    或者,插入所有列的数据(列名和值需一一对应):

    sql 复制代码
    	INSERT INTO tablename VALUES (value1, value2, ...);
  2. 更新数据

    sql 复制代码
    	UPDATE tablename SET column1 = value1, column2 = value2, ... WHERE condition;
  3. 删除数据

    sql 复制代码
    	DELETE FROM tablename WHERE condition;

    或者,删除表中的所有数据(但保留表结构):

    sql 复制代码
    	DELETE FROM tablename;

    更高效的删除所有数据的方法是使用TRUNCATE TABLE语句,它会重置表并删除所有数据,但比DELETE更快,因为它不使用WHERE子句:

    sql 复制代码
    	TRUNCATE TABLE tablename;

三、DQL(Data Query Language)数据查询语言

DQL语句用于从数据库中检索数据。

  1. 基础查询

    sql 复制代码
    	SELECT column1, column2, ... FROM tablename WHERE condition ORDER BY column_name [ASC|DESC];
  2. 聚合函数:用于对一组值执行计算并返回单个值。

    • COUNT():计算行数。
    • SUM():计算总和。
    • AVG():计算平均值。
    • MAX():查找最大值。
    • MIN():查找最小值。
    sql 复制代码
    	SELECT COUNT(*), SUM(column_name), AVG(column_name), MAX(column_name), MIN(column_name) FROM tablename WHERE condition;
  3. 分组查询:使用GROUP BY子句将结果集按一个或多个列进行分组。

    sql 复制代码
    	SELECT column1, COUNT(*) FROM tablename GROUP BY column1 HAVING COUNT(*) > value;
  4. 分页查询:使用LIMIT子句(MySQL)或FETCH/OFFSET子句(SQL Server等)来限制返回的记录数。

    MySQL中的分页查询:

    sql 复制代码
    	SELECT * FROM tablename LIMIT offset, row_count;

    SQL Server中的分页查询:

    sql 复制代码
    	SELECT * FROM (
    
    	    SELECT ROW_NUMBER() OVER (ORDER BY column_name) AS row_num, *
    
    	    FROM tablename
    
    	) AS temp_table
    
    	WHERE row_num BETWEEN start_row AND end_row;

    或者使用OFFSET FETCH子句:

    sql 复制代码
    	SELECT * FROM tablename
    
    	ORDER BY column_name
    
    	OFFSET offset_row_count ROWS FETCH NEXT fetch_row_count ROWS ONLY;
  5. 模糊查询:使用LIKE操作符和通配符(%和_)来搜索列中的特定模式。

    sql 复制代码
    	SELECT * FROM tablename WHERE column_name LIKE 'pattern%';
  6. 内连接:返回两个表中满足连接条件的记录。

    sql 复制代码
    	SELECT a.*, b.* FROM table1 a INNER JOIN table2 b ON a.common_field = b.common_field;
  7. 外连接:返回左表(左外连接)或右表(右外连接)中的所有记录,以及满足连接条件的记录。

    • 左外连接:

      sql 复制代码
      	SELECT a.*, b.* FROM table1 a LEFT JOIN table2 b ON a.common_field = b.common_field;
    • 右外连接:

      sql 复制代码
      	SELECT a.*, b.* FROM table1 a RIGHT JOIN table2 b ON a.common_field = b.common_field;
  8. 子查询:在查询中嵌套另一个查询。

    sql 复制代码
    	SELECT * FROM tablename WHERE column_name = (SELECT column_name FROM another_table WHERE condition);

以上内容涵盖了SQL中最常用的一些语句和操作。需要注意的是,不同的数据库管理系统(如MySQL、SQL Server、Oracle等)可能在某些语法和函数上存在差异。因此,在实际使用中,建议参考所使用数据库的官方文档或相关资料。

相关推荐
润乾软件9 小时前
Trae+SQLazy 编写复杂 SQL 实践
数据库·sql
用户9385156350710 小时前
掘金风格后端数据库设计实战:从用户表到分布式架构,一文搞定
后端·sql
呆呆小孩10 小时前
零基础学 MySQL(上):从建库建表到增删改查,一篇搭好 SQL 基础
android·sql·mysql
夏之小星星19 小时前
【找回mysql被删除数据】
数据库·sql·mysql
AC赳赳老秦20 小时前
个保法下数据处理:OpenClaw 自动过滤公开数据中的个人信息,保障采集分析合规性
java·python·sqlite·json·php·deepseek·openclaw
刘婉晴20 小时前
【AI提效】利用 qwenwork 智能体平台(免费)实现 webgoat 靶场 SQL 注入速通
数据库·sql
mmsx1 天前
基于 Android 的本地商城订单 App:SQLite + 多角色架构的技术实践(有源码和文档)
android·架构·sqlite
自己的九又四分之三站台1 天前
RasterLite2 栅格数据处理函数全量参考:从 Coverage 创建到像元、金字塔与地图输出
sqlite·地理信息
Quincy_Freak1 天前
银河麒麟终端数据处理标准化实践:SQLiteGo 效能评估与落地路径
sqlite·数据库管理·大数据分析·银河麒麟·aarch64·sqlitego
lzhdim1 天前
提高 SQL 语句执行速度的方法
java·开发语言·数据库·sql·oracle