常用的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等)可能在某些语法和函数上存在差异。因此,在实际使用中,建议参考所使用数据库的官方文档或相关资料。

相关推荐
wangqiaowq35 分钟前
SQL server C盘空间占满的处理
数据库·sql
文人sec1 小时前
SQL基础入门笔记 | 从零基础到掌握核心查询语句
数据库·笔记·sql
YangYang9YangYan3 小时前
2027供应链计划校招:数学与应用数学专业如何把预测模型讲成业务决策?
人工智能·sql·算法
171320330计算机毕设编程4 小时前
计算机毕业设计 基于YOLO改进算法的车辆特征识别系统设计与实现--lw
java·大数据·python·sql·算法
倔强的小石头_8 小时前
从Go+SQLite编译到浏览器开局:landlord部署、AI对局与固定地址实战
人工智能·golang·sqlite
oradh9 小时前
Oracle SQL性能优化案例----数据入库和更新任务
sql·oracle·性能优化
tryxr9 小时前
如何分析一个慢sql
数据库·sql·mysql·慢sql
cc57250265311 小时前
2027校招:大数据管理与应用转财务数字化,会计业务、SQL与BI学习路线
数据库·sql·学习
ggabb12 小时前
古时代:汉语蒙学与英语少儿启蒙,内核之别
sqlite
j7~15 小时前
【仿 RabbitMQ 项目】发布订阅消息队列 (篇九):队列数据管理,内存镜像 + SQLite 持久化实现
数据库·c++·分布式·sqlite·rabbitmq·队列数据管理