自学内容网 自学内容网

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

         


原文地址:https://blog.csdn.net/2402_86725606/article/details/145135661

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!