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

相关推荐
2的n次方_26 分钟前
MyBatis——#{} 和 ${} 的区别和动态 SQL
数据库·sql·mybatis
名字不要太长 像我这样就好1 小时前
【iOS】iOS的轻量级数据库——FMDB
数据库·ios·sqlite·objective-c
旧故新长2 小时前
注解用于从 HTTP 请求中提取数据
数据库·sql
jokerest1235 小时前
web——sqliabs靶场——第十二关——(基于错误的双引号 POST 型字符型变形的注入)
数据库·sql·mybatis
qq_q9922502776 小时前
django基于Django的二手电子设备交易平台设计与开发
数据库·django·sqlite
码上一元6 小时前
Wireshark 分析SQL 批量插入慢的问题
sql·测试工具·wireshark
highfish9207 小时前
Django实现智能问答助手-基础配置
数据库·django·sqlite
夜魔0099 小时前
sqlite-vec一个SQLite3高效向量搜索扩展--JDBC环境使用
数据库·sqlite·sqlite-vec·向量库扩展·rag应用
将登太行雪满山_12 小时前
自存 sql常见语句和实际应用
数据库·sql