【数据库】SQL语句简单运用

以下是常见SQL知识点的总结,以及从自然语言翻译为SQL语句的通用方法。


SQL知识点大全

1. 数据库操作

  • 创建数据库

    复制代码
    CREATE DATABASE DatabaseName;
  • 切换数据库

    复制代码
    USE DatabaseName;
  • 删除数据库

    复制代码
    DROP DATABASE DatabaseName;

2. 表操作

  • 创建表

    复制代码
    CREATE TABLE TableName (
        Column1 DataType Constraints,
        Column2 DataType Constraints,
        ...
    );

    示例:

    复制代码
    CREATE TABLE Employees (
        EmployeeID INT PRIMARY KEY,
        Name VARCHAR(50) NOT NULL,
        Birthday DATE,
        DepartmentID INT
    );
  • 修改表结构

    • 添加列:

      复制代码
      ALTER TABLE TableName ADD ColumnName DataType;
    • 删除列:

      复制代码
      ALTER TABLE TableName DROP COLUMN ColumnName;
    • 修改列类型:

      复制代码
      ALTER TABLE TableName ALTER COLUMN ColumnName NewDataType;
  • 删除表

    复制代码
    DROP TABLE TableName;

3. 数据操作

  • 插入数据

    复制代码
    INSERT INTO TableName (Column1, Column2, ...) VALUES (Value1, Value2, ...);
  • 查询数据

    • 简单查询:

      复制代码
      SELECT Column1, Column2 FROM TableName;
    • 条件查询:

      复制代码
      SELECT * FROM TableName WHERE Condition;

      示例:

      复制代码
      SELECT * FROM Employees WHERE DepartmentID = 1;
  • 更新数据

    复制代码
    UPDATE TableName SET Column1 = Value1, Column2 = Value2 WHERE Condition;
  • 删除数据

    复制代码
    DELETE FROM TableName WHERE Condition;

4. 权限管理

  • 创建登录名和用户

    复制代码
    CREATE LOGIN LoginName WITH PASSWORD = 'Password';
    CREATE USER UserName FOR LOGIN LoginName;
  • 授权用户

    复制代码
    GRANT PermissionType ON Object TO UserName;

    示例:

    复制代码
    GRANT SELECT, UPDATE ON Salary TO jadew;
  • 回收权限

    复制代码
    REVOKE PermissionType ON Object FROM UserName;

5. 高级查询

  • 排序

    复制代码
    SELECT * FROM TableName ORDER BY Column1 ASC/DESC;
  • 聚合函数

    复制代码
    SELECT COUNT(*), SUM(ColumnName), AVG(ColumnName), MAX(ColumnName), MIN(ColumnName) FROM TableName;
  • 分组

    复制代码
    SELECT Column1, COUNT(*) FROM TableName GROUP BY Column1;
  • 连接查询

    • 内连接:

      复制代码
      SELECT * FROM Table1 INNER JOIN Table2 ON Table1.Column = Table2.Column;
    • 外连接:

      复制代码
      SELECT * FROM Table1 LEFT JOIN Table2 ON Table1.Column = Table2.Column;

6. 角色管理

  • 创建角色

    复制代码
    CREATE ROLE RoleName;
  • 分配角色

    复制代码
    EXEC sp_addrolemember 'RoleName', 'UserName';

7. 约束和索引

  • 添加主键/外键

    复制代码
    ALTER TABLE TableName ADD CONSTRAINT ConstraintName PRIMARY KEY (ColumnName);
    ALTER TABLE TableName ADD CONSTRAINT ConstraintName FOREIGN KEY (ColumnName) REFERENCES OtherTable(ColumnName);
  • 创建索引

    复制代码
    CREATE INDEX IndexName ON TableName(ColumnName);

自然语言翻译为SQL语句的技巧

  1. 识别核心动词和目标

    自然语言中的动词如"创建"、"查询"、"更新"往往对应SQL的操作:CREATESELECTUPDATE等。

    • 示例
      自然语言:"创建一个名为Departments的表,包含DepartmentID、Departmentname和Note列。"
      翻译:

      复制代码
      CREATE TABLE Departments (
          DepartmentID INT PRIMARY KEY,
          Departmentname VARCHAR(100),
          Note TEXT
      );
  2. 分解条件和逻辑

    自然语言描述的条件,如"所有销售额大于5000的记录",对应WHERE子句。

    • 示例
      自然语言:"查询所有收入大于5000的员工信息。"
      翻译:

      复制代码
      SELECT * FROM Salary WHERE Income > 5000;
  3. 分解多步骤任务

    对于描述复杂任务的自然语言,可以分解为多个SQL操作:

    • 示例
      自然语言:"先创建一个用户,然后授予其对Employees表的查询权限。"
      翻译:

      复制代码
      CREATE LOGIN new_user WITH PASSWORD = 'password123';
      CREATE USER new_user FOR LOGIN new_user;
      GRANT SELECT ON Employees TO new_user;
  4. 映射名词到数据库对象

    名词通常映射到表、列或数据库。例如:

    • "部门" => Departments
    • "员工信息" => Employees
  5. 检查语法逻辑

    将自然语言任务中的逻辑如"且/或"转化为SQL的AND/OR运算符:

    • 示例
      自然语言:"查询所有女性员工,且工作年份大于5年。"
      翻译:

      复制代码
      SELECT * FROM Employees WHERE Sex = 'F' AND Workyear > 5;
  6. 利用模板和通用结构

    对常见的SQL任务(如查询、权限管理)构建模板,根据实际需求填充。

    • 查询模板:

      复制代码
      SELECT Columns FROM TableName WHERE Conditions;
    • 权限管理模板:

      复制代码
      GRANT Permissions ON Object TO UserName;
  7. 多表逻辑处理

    自然语言涉及多个实体时,通常需要连接查询:

    • 示例
      自然语言:"查询每个部门的员工姓名和部门名称。"
      翻译:

      复制代码
      SELECT e.Name, d.Departmentname
      FROM Employees e
      INNER JOIN Departments d ON e.DepartmentID = d.DepartmentID;

通过这些方法,能够更高效地将自然语言任务转化为正确的SQL语句!

相关推荐
TiDB 社区干货传送门28 分钟前
从开发者角度看数据库架构进化史:JDBC - 中间件 - TiDB
数据库·oracle·中间件·tidb·数据库架构
虾球xz32 分钟前
游戏引擎学习第280天:精简化的流式实体sim
数据库·c++·学习·游戏引擎
uwvwko1 小时前
BUUCTF——web刷题第一页题解
android·前端·数据库·php·web·ctf
扶尔魔ocy2 小时前
【Linux C/C++开发】轻量级关系型数据库SQLite开发(包含性能测试代码)
linux·数据库·c++·sqlite
旋风菠萝2 小时前
项目复习(1)
java·数据库·八股·八股文·复习·项目、
w23617346012 小时前
Django框架漏洞深度剖析:从漏洞原理到企业级防御实战指南——为什么你的Django项目总被黑客盯上?
数据库·django·sqlite
菜鸟蹦迪2 小时前
学习记录:mybatis和jdbc实现数据表作为参数的相关的sql操作
sql·学习·mybatis
2302_809798322 小时前
【JavaWeb】MySQL
数据库·mysql
drowingcoder2 小时前
MySQL相关
数据库
Musennn3 小时前
MySQL刷题相关简单语法集合
数据库·mysql