您的位置:首页 > 游戏 > 游戏 > SQL 入门教程

SQL 入门教程

2024/11/17 21:17:27 来源:https://blog.csdn.net/weixin_64255870/article/details/139625863  浏览:    关键词:SQL 入门教程

        SQL(Structured Query Language,结构化查询语言)是一种用于管理和操作关系数据库管理系统的编程语言。它被设计用来查询、更新、插入和删除数据库中的数据。SQL是一种标准化的语言,尽管在不同的数据库系统中可能存在一些差异,但其基本语法和核心功能是通用的。 

目录

一、SQL基础概念

1、数据库(Database)

2、表(Table)

3、行(Row)

4、列(Column)

5、主键(Primary Key)

6、外键(Foreign Key)

7、数据类型(Data Types)

8、约束(Constrains)

二、SQL基本操作

1、创建数据库

2、创建表

3、插入数据

4、查询数据

5、更新数据

6、删除数据

三、高级操作

1、连接查询

2、子查询

3、聚合函数

4、分组和排序

四、事务管理

五、索引

六、实践建议


一、SQL基础概念

1、数据库(Database)

        数据库是一个存储有组织的数据的集合。它通常由一个或多个表组成,每个表都包含了一系列的数据记录。 

2、表(Table)

        表是数据库中用于存储数据的结构,它由行(记录)和列(字段)组成。每一列都有特定的数据类型,而每一行都代表一个单独的记录。 

3、行(Row)

        表中的每一行代表一个记录,它包含了该记录的所有信息。在SQL中,行也被称为元组。

4、列(Column)

        表中的每一列代表一个字段,它包含了所有记录在该字段的值。列也被称为属性。

5、主键(Primary Key)

        主键是表中的一个或多个字段,用于唯一地标识表中的每一行。主键的值必须是唯一的,并且不能为NULL。

6、外键(Foreign Key)

        外键是一个字段或一组字段,用于在两个表之间建立关系。它是一个指向另一个表的主键的字段,用于保持数据的一致性和完整性。

7、数据类型(Data Types)

        SQL支持多种数据类型,用于定义表中的列可以存储的数据种类。常见的数据类型包括:

  • INT: 整数类型
  • FLOAT: 浮点类型
  • VARCHAR(n): 可变长度字符串,最多包含n个字符
  • CHAR(n): 固定长度字符串,总是包含n个字符
  • DATE: 日期类型,格式为 YYYY-MM-DD
  • DATETIME: 日期和时间类型,格式为 YYYY-MM-DD HH:MM:SS
8、约束(Constrains)

        约束用于限制表中数据的规则,以确保数据的准确性和一致性。常见的约束包括:

  • PRIMARY KEY: 唯一标识表中的每一行
  • FOREIGN KEY: 用于建立表之间的关系
  • UNIQUE: 保证列中的所有值都是唯一的
  • NOT NULL: 确保列不能有NULL值

二、SQL基本操作

SQL基本操作包括对数据库和表进行创建、查询、更新、插入和删除等。

SQL语句是用于执行数据库操作的语言指令。常见的SQL语句包括:

  • SELECT: 用于查询数据
  • INSERT: 用于插入新数据
  • UPDATE: 用于更新现有数据
  • DELETE: 用于删除数据
  • CREATE: 用于创建数据库、表等
  • ALTER: 用于修改数据库结构
  • DROP: 用于删除数据库、表等
1、创建数据库
//CREATE DATABASE是固定的 ,后面的 exampleDB是数据库名,可根据自己需要起名。
CREATE DATABASE exampleDB;use exampleDB;
2、创建表
//CREATE TABLE固定语法, Employees是表名,可根据自己的需要起名。
//EmployeeID,FirstName ,LastName,Salary是字段名,也就是最后创建的表头。
//INT,VARCHAR(50),VARCHAR(50)这些是数据类型。
//PRIMARY KEY这个是主键CREATE TABLE Employees (EmployeeID INT PRIMARY KEY,FirstName VARCHAR(50),LastName VARCHAR(50),Salary INT
);
3、插入数据
//INSERT INTO是固定写法, Employees (EmployeeID, FirstName, LastName, Salary)是插入数据的那个表。然后对应哪些字段要插入数据。
//VALUES (1, 'John', 'Doe', 70000),插入的数据,插入的数据是字符串类型的话,要有引号,不然回报错。INSERT INTO Employees (EmployeeID, FirstName, LastName, Salary)
VALUES (1, 'John', 'Doe', 70000);
4、查询数据
// *表示向Employees表查询所有数据SELECT * FROM Employees;// 表示向Employees表查询EmployeeID, FirstName 字段的数据SELECT EmployeeID, FirstName  FROM Employees;
5、更新数据
//将Employees表中EmployeeID为1的那一行数据的Salary列更新为75000。UPDATE Employees
SET Salary = 75000
WHERE EmployeeID = 1;
6、删除数据
//从Employees表中删除EmployeeID为1的那一行数据。DELETE FROM Employees
WHERE EmployeeID = 1;

三、高级操作

1、连接查询
//从Employees表和Departments表中检索数据,并返回一个结果集
//其中包含每个员工的FirstName、LastName以及他们所在部门的DepartmentName。
//只有当Employees表中的DepartmentID与Departments表中的DepartmentID相匹配时,才会包含在结果集中。SELECT Employees.FirstName, Employees.LastName, Departments.DepartmentName
FROM Employees
JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
2、子查询
//从Employees表中选择所有EmployeeID、FirstName和LastName列
//其中DepartmentID与子查询返回的DepartmentID列表相匹配,而这个列表是Departments表中所有Location为’New York’的部门的DepartmentID。
//简而言之,这个查询返回了所有在纽约部门工作的员工的ID、名字和姓氏。SELECT EmployeeID, FirstName, LastName
FROM Employees
WHERE DepartmentID IN (SELECT DepartmentID FROM Departments WHERE Location = 'New York');
3、聚合函数
//COUNT(EmployeeID)用于计算Employees表中EmployeeID列的行数。这个函数返回表中的记录数。
SELECT COUNT(EmployeeID) FROM Employees;//SUM(Salary)用于计算Employees表中Salary列的所有值之和。这个函数返回所有员工薪水之和。
SELECT SUM(Salary) FROM Employees;//AVG(Salary)用于计算Employees表中Salary列的平均值。这个函数返回所有员工薪水的平均值。
SELECT AVG(Salary) FROM Employees;//MAX(Salary)用于找出Employees表中Salary列的最大值。这个函数返回最高薪水。
SELECT MAX(Salary) FROM Employees;//MIN(Salary)用于找出Employees表中Salary列的最小值。这个函数返回最低薪水。
SELECT MIN(Salary) FROM Employees;
4、分组和排序
//从Employees表中选择DepartmentID和每个部门的员工数量,然后按照员工数量降序排序。
//结果将显示每个部门的DepartmentID和对应的员工数量,从最多员工的部门到最少员工的部门。SELECT DepartmentID, COUNT(EmployeeID) AS NumberOfEmployees
FROM Employees
GROUP BY DepartmentID
ORDER BY NumberOfEmployees DESC;

四、事务管理

        事务管理是数据库管理的重要组成部分,它确保了一组数据库操作要么全部成功,要么全部失败。在SQL中,事务通常通过以下命令进行管理:BEGIN TRANSACTIONCOMMITROLLBACK

  • BEGIN TRANSACTION: 开始一个新事务
  • COMMIT: 提交当前事务,使其更改永久化
  • ROLLBACK: 回滚当前事务,撤销所有未提交的更改

下面是一个简单的事务管理例子,展示了如何使用这些命令来确保数据的一致性。

假设我们有一个银行账户表Accounts,其中有两列:AccountIDBalance。我们想要从一个账户转移一定金额到另一个账户。这个操作需要两个步骤:从第一个账户扣除金额,然后将相同金额添加到第二个账户。如果任一步骤失败,整个操作应该回滚,以确保不会出现资金的不一致。

-- 开始一个新事务
BEGIN TRANSACTION;-- 从账户1扣除1000元
UPDATE Accounts
SET Balance = Balance - 1000
WHERE AccountID = 1;-- 检查账户1是否有足够的余额
IF (SELECT Balance FROM Accounts WHERE AccountID = 1) < 0
BEGIN-- 如果余额不足,回滚事务ROLLBACK TRANSACTION;-- 抛出错误或返回信息PRINT '余额不足,转账失败';
END;-- 将1000元添加到账户2
UPDATE Accounts
SET Balance = Balance + 1000
WHERE AccountID = 2;-- 如果没有错误发生,提交事务
COMMIT TRANSACTION;-- 提示转账成功
PRINT '转账成功';

        在这个例子中,我们首先使用BEGIN TRANSACTION开始一个新的事务。然后,我们尝试从账户1扣除1000元,并检查账户1是否有足够的余额。如果余额不足,我们使用ROLLBACK TRANSACTION回滚事务,并打印出错误信息。如果余额充足,我们继续将1000元添加到账户2。 最后,如果没有错误发生,我们使用COMMIT TRANSACTION提交事务,并打印出成功信息。

五、索引

        在SQL中,索引是一种特殊的数据结构,它用于提高数据库查询的性能。索引可以加速对数据的搜索,因为它允许数据库快速定位到表中特定的行。

//创建了一个名为idx_lastname的索引,该索引基于Employees表的LastName列。
//创建索引后,数据库系统会在LastName列上存储一个数据结构,该结构有助于快速定位具有特定LastName值的行。CREATE INDEX idx_lastname ON Employees (LastName);

六、实践建议

  • 使用在线SQL编辑器或安装数据库管理系统(如MySQL, PostgreSQL等)进行实践。
  • 创建一个简单的数据库和表,并执行插入、查询、更新和删除操作。
  • 尝试使用不同的SQL函数和聚合函数进行数据操作。
  • 练习使用子查询和连接查询来从多个表中检索数据。
  • 学习如何创建和使用索引来优化查询性能。

通过一些简单的步骤和例子,希望看到这篇文章的你能够更好地理解SQL的基础知识,并开始使用它来管理和查询数据库。记住,实践是学习SQL的关键,因此请确保您有充足的机会来应用这些概念。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com