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

相关推荐
拾光Ծ39 分钟前
【MySQL】对表数据的操作:增删查改(CRUD)
android·数据库·sql·mysql
迷枫7122 小时前
SQL 优化排查记录:补充索引,利用 OR 展开消除大表重复扫描
sql
九皇叔叔1 天前
《MySQL 体系架构详解:Server 层、SQL 执行流程与 InnoDB、MyISAM、MEMORY 存储引擎》
sql·mysql·架构
这个DBA有点耶2 天前
SQL:2023新特性详解:JSON_TABLE、GREATEST/LEAST、QUALIFY 到底怎么用?
数据库·sql·mysql
小小龙学IT2 天前
Qt 数据库编程(Qt SQL 模块)深度解析
数据库·sql·qt
我的xiaodoujiao2 天前
Django 基础知识详细图文教程 4-Django 视图定义与使用
开发语言·数据库·后端·测试工具·django·sqlite
疯狂打码的少年2 天前
【数据库技术】SQL概述与数据定义(DDL:CREATE/DROP/ALTER)
数据库·笔记·sql·oracle
Blockchina2 天前
Codex安全盲区:我用4组本地测试复盘SQLi、XSS、越权与路径穿越
sql·安全·xss
2601_962066492 天前
【玩转全栈】----Django模板的继承
数据库·django·sqlite
山峰哥3 天前
数据库工程与查询优化案例深度复盘‌
数据库·sql·oracle·编辑器·深度优先·宽度优先