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

相关推荐
言之。7 小时前
Django中的软删除
数据库·django·sqlite
阿里嘎多哈基米8 小时前
SQL 层面行转列
数据库·sql·状态模式·mapper·行转列
雨落Liy9 小时前
SQL 函数从入门到精通:原理、类型、窗口函数与实战指南
数据库·sql
三毛200412 小时前
玳瑁的嵌入式日记D33-0908(SQL数据库)
jvm·数据库·sql
Mr_Xuhhh12 小时前
sqlite3的使用
jvm·oracle·sqlite
TDengine (老段)13 小时前
TDengine 选择函数 Last() 用户手册
大数据·数据库·sql·物联网·时序数据库·tdengine·涛思数据
dreams_dream15 小时前
企业级 Django 日志配置示例
数据库·django·sqlite
心 一15 小时前
Web安全基石:深入理解与防御SQL注入漏洞
sql·安全·web安全
林熙蕾LXL16 小时前
SQL Server——基本操作
数据库·sql
FLS16818 小时前
Kali搭建sqli-labs靶场
linux·sql·安全·网络安全