SQL 详解数据库

server/2025/1/16 11:51:04/

SQL(Structured Query Language,结构化查询语言)是一种专门用于与关系型数据库进行交互的标准化语言。它可以用于查询、更新和管理数据库中的数据,以及定义和控制数据库的结构。

以下是 SQL 的主要功能模块及其详解:


1. 数据查询 (Data Query)

1.1 SELECT 语句

用于从数据库中检索数据,是 SQL 最常用的语句。

基本语法:        SELECT 列名 FROM 表名 WHERE 条件;

示例:SELECT name, age FROM students WHERE age > 18;

关键子句:

  • WHERE:条件过滤。
  • ORDER BY:排序。
    SELECT name, age FROM students ORDER BY age DESC; 

GROUP BY:分组。 

SELECT department, COUNT(*) FROM employees GROUP BY department;
HAVING:分组后的条件过滤。

SELECT department, AVG(salary) 
FROM employees 
GROUP BY department 
HAVING AVG(salary) > 5000;

LIMIT:限制返回记录数量。

SELECT * FROM students LIMIT 10;
        

2. 数据操作 (Data Manipulation)

2.1 INSERT 语句

用于向表中插入数据。

基本语法:INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);
示例:INSERT INTO students (name, age, grade) VALUES ('Alice', 20, 'A');

2.2 UPDATE 语句

用于更新表中的数据。

基本语法:UPDATE 表名 SET 列名 = 新值 WHERE 条件;
示例:UPDATE students SET grade = 'B' WHERE name = 'Alice';

2.3 DELETE 语句        

用于删除表中的数据。

基本语法:DELETE FROM 表名 WHERE 条件;
示例:DELETE FROM students WHERE age < 18;
 

3. 数据定义 (Data Definition)

3.1 CREATE 语句

用于创建数据库和表。

创建数据库:CREATE DATABASE 数据库名;

创建表:

 CREATE TABLE 表名 (
    列名 数据类型 [约束],
    ...
);

示例:

CREATE TABLE students (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    age INT,
    grade CHAR(1)
);
 

3.2 ALTER 语句

用于修改表结构。

添加列:ALTER TABLE 表名 ADD 列名 数据类型;

修改列:ALTER TABLE 表名 MODIFY 列名 新数据类型;

删除列:ALTER TABLE 表名 DROP 列名;

3.3 DROP 语句

用于删除数据库或表。

删除表:DROP TABLE 表名;

删除数据库:DROP DATABASE 数据库名;

4. 数据控制 (Data Control)

4.1 GRANT 语句

用于赋予用户权限。

基本语法:GRANT 权限 ON 数据库名.表名 TO '用户名'@'主机';

示例: GRANT SELECT, INSERT ON school.* TO 'user1'@'localhost';

4.2 REVOKE 语句

用于撤销用户权限。

基本语法:REVOKE 权限 ON 数据库名.表名 FROM '用户名'@'主机';

 示例:REVOKE SELECT, INSERT ON school.* FROM 'user1'@'localhost';

5. 事务管理 (Transaction Management)

事务是一组操作的集合,要么全部执行成功,要么全部回滚。

事务控制语句:

  • BEGIN / START TRANSACTION:开始事务。
  • COMMIT:提交事务。
  • ROLLBACK:回滚事务。
  • SAVEPOINT:设置保存点。

示例:

START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
COMMIT;

6. 高级查询

6.1 子查询

嵌套在其他查询中的查询。

示例:SELECT name FROM students WHERE age = (SELECT MAX(age) FROM students);

6.2 联合查询 (UNION)

合并多个查询结果。

示例:

SELECT name FROM students WHERE grade = 'A'
UNION
SELECT name FROM students WHERE age < 18;

6.3 连接 (JOIN)

将多个表中的数据组合起来。

  • INNER JOIN:返回匹配的行。

SELECT employees.name, departments.name 
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;

  • LEFT JOIN:返回左表的所有行,即使没有匹配。
  • RIGHT JOIN:返回右表的所有行。
  • FULL JOIN:返回所有匹配和不匹配的行。

7. 常见 SQL 数据类型

7.1 数值类型

  • INT, FLOAT, DECIMAL

7.2 字符类型

  • CHAR, VARCHAR, TEXT

7.3 日期类型

  • DATE, DATETIME, TIMESTAMP

         


http://www.ppmy.cn/server/158814.html

相关文章

Django基础之ORM初识

一.前言 今天我们大致来了解一下django的orm&#xff0c;只是简单的了解&#xff0c;具体的会在下一期和大家来说&#xff0c;本质是关系对象映射&#xff0c;简单点来说就是翻译&#xff0c;利用类创建数据库 二.表结构 2.1 基础配置 首先在app中的models.py中按照规则编写…

mac下使用arthas分析工具报错

mac下使用arthas分析工具 依赖初次运行报错运行前的准备/usr/libexec/java_home -V 返回结果解释&#xff1a;为什么有两个版本&#xff1f;如果使用的是不带参数的命令&#xff1a;设置 JAVA_HOME / 如何选择要使用的 JVM&#xff1a;遗留的问题 依赖 在 JDK8 中&#xff0c;…

vue组件(Ⅰ)

目录 引入 一、组件基础 1.组件组成结构在components文件当中新建文件MyApp.vue 2.组件引用结构-----在App.vue当中设置如下属性 二、组件的嵌套关系 1.Header.vue 2.Main.vue 3.Aside.vue 4.Article.vue 在Main.vue当中注册 5.Itme.vue 在Aside.vue当中注册 三、组…

Jenkins-简介/安装!

一. 关于持续集成&#xff1a; 持续集成(CI ) [ Continuous Integration ]&#xff0c;通俗来讲&#xff0c;就是一个能监控版本控制系统变化的工具&#xff0c;可以自动编译和测试集成的应用程序。出现问题&#xff0c;能够及时的通知相应人员。持续集成是一种思维工具集&…

TypeScript 爬虫项目实战:抓取豆瓣电影 Top 250(TypeScript简单应用)

项目介绍 通过 TypeScript 实现一个简单的爬虫程序&#xff0c;从豆瓣电影 Top 250 页面抓取电影的标题和评论信息&#xff0c;并将数据存储到本地 JSON 文件中。该项目使用了 superagent 和 cheerio 两个核心工具&#xff1a; superagent&#xff1a;一个轻量的 HTTP 请求库…

想法分享,利用html通过求输入框中用户输入数组的最大值

我有一个非常有趣的想法 做一个网页求用户输入的数组的最大值 1.直接让用户输入进一个类似数组的容器&#xff0c;输入几个数字之后&#xff0c;点击按钮 2.这个方法不行&#xff0c;因为form表单没有直接类似数组的容器&#xff0c;所以用input输入框代替 3.Input直接输入的是…

Unity3D实现加载.abc动画模型

系列文章目录 unity工具 文章目录 系列文章目录unity工具👉前言👉一、效果展示👉二、使用步骤👉2-1、导入插件👉2-1、导入模型👉三、实现代码控制动画👉四、加载解析👉4-1、数据读取与解析👉4-2、动画播放机制👉4-3、材质👉壁纸分享👉总结👉前言 .…

《C++11》并发库:简介与应用

在C11之前&#xff0c;C并没有提供原生的并发支持。开发者通常需要依赖于操作系统的API&#xff08;如Windows的CreateThread或POSIX的pthread_create&#xff09;或者第三方库&#xff08;如Boost.Thread&#xff09;来创建和管理线程。这些方式存在以下几个问题&#xff1a; …