当前位置: 首页 > article >正文

SQL 详解数据库

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.kler.cn/a/504069.html

相关文章:

  • Java Stream流操作List全攻略:Filter、Sort、GroupBy、Average、Sum实践
  • 【算法篇】前缀和
  • java项目启动时,执行某方法
  • 利用AI大模型和Mermaid生成流程图
  • 解决:ubuntu22.04中IsaacGymEnv保存视频报错的问题
  • 【人工智能】大语言模型的微调:让模型更贴近你的业务需求
  • Spring Boot中如何处理跨域请求(CORS)
  • 【Linux】Linux基础命令(二)
  • 《Openlayers零基础教程》第六课:地图控件
  • 《重生到现代之从零开始的数据结构生活》——单链表
  • MySQL:表的内外连接
  • Python爬虫基础——IP反爬虫的应对
  • 工业互联网项目开发工作流及各阶段核心关注点
  • 如何通过openssl生成.crt和.key
  • 如何入门编程
  • CNN张量输入形状和特征图
  • Ubuntu 20.04 安装Cuda 12.2版本踩坑记录
  • 微服务中的日志管理中间件的使用和管理
  • ​​​​​​​​​​​​​​★3.3 事件处理
  • 如何使用PHP构建IoC容器,实现依赖注入!
  • 我国无人机新增实名登记110.3 万架,累计完成飞行2666万小时
  • LKT4304新一代算法移植加密芯片,守护物联网设备和云服务安全
  • 免费送源码:Java+ssm+Android 基于Android系统的外卖APP的设计与实现 计算机毕业设计原创定制
  • 智能物流升级利器——SAIL-RK3576核心板AI边缘计算网关设计方案(一)
  • 外部获取nVisual所在层级方法
  • 【系统安全】CVE-2024-49113 Windows轻量级目录访问协议(LDAP)拒绝服务漏洞