SQL语言1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的关系数据库系统SystemR上实现。由于它具有功能丰富、使用方便灵活、语言简洁易学等突出的优点,深受计算机工业界和计算机用户的欢迎。1980年10月,经美国国家标准局ANSI的数据库委员会X3H2批准,将SQL作为关系数据库语言的美国标准,同年公布了标准SQL,此后不久,国际标准化组织ISO也作出了同样的决定。
在数据库管理中,增删改查(CRUD)是最基本也是最重要的操作。以下是每种操作的详细介绍和示例。
增(INSERT)
向数据库中添加新记录。
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
示例
假设有一个名为Students
的表,初始为空。
初始表格:
ID | Name | Age |
---|
执行以下命令:
INSERT INTO Students (ID, Name, Age)
VALUES (1, '张三', 20);
执行后的表格:
ID | Name | Age |
---|---|---|
1 | 张三 | 20 |
更多示例
向Students
表中插入多行数据:
初始表格:
ID | Name | Age |
---|---|---|
1 | 张三 | 20 |
执行命令:
INSERT INTO Students (ID, Name, Age)
VALUES (2, '李四', 22), (3, '王五', 23);
执行后的表格:
ID | Name | Age |
---|---|---|
1 | 张三 | 20 |
2 | 李四 | 22 |
3 | 王五 | 23 |
向表中插入数据,部分列使用默认值:
假设Students
表的Age
列有默认值18。
初始表格:
ID | Name | Age |
---|---|---|
... | ... | ... |
执行命令:
INSERT INTO Students (ID, Name)
VALUES (4, '赵六');
执行后的表格:
ID | Name | Age |
---|---|---|
... | ... | ... |
4 | 赵六 | 18 |
插入数据时使用子查询:
假设还有一个Class
表,包含学生的班级信息。
初始Students
表格:
ID | Name | Age |
---|---|---|
... | ... | ... |
Class
表格:
StudentID | ClassName |
---|---|
1 | 一班 |
2 | 二班 |
执行命令:
INSERT INTO Students (ID, Name, Age)
SELECT StudentID, '新学生', 18 FROM Class WHERE ClassName = '一班';
执行后的Students
表格:
ID | Name | Age |
---|---|---|
... | ... | ... |
1 | 新学生 | 18 |
删(DELETE)
从数据库中删除记录。
DELETE FROM table_name WHERE condition;
示例
初始表格:
ID | Name | Age |
---|---|---|
1 | 张三 | 20 |
执行以下命令:
DELETE FROM Students WHERE ID = 1;
执行后的表格:
ID | Name | Age |
---|
更多示例
根据姓名删除记录:
初始表格:
ID | Name | Age |
---|---|---|
1 | 张三 | 20 |
2 | 李四 | 22 |
执行命令:
DELETE FROM Students WHERE Name = '张三';
执行后的表格:
ID | Name | Age |
---|---|---|
2 | 李四 | 22 |
删除特定年龄段的记录:
初始表格:
ID | Name | Age |
---|---|---|
2 | 李四 | 22 |
3 | 王五 | 19 |
执行命令:
DELETE FROM Students WHERE Age BETWEEN 20 AND 25;
执行后的表格:
ID | Name | Age |
---|---|---|
3 | 王五 | 19 |
删除所有记录:
初始表格:
ID | Name | Age |
---|---|---|
3 | 王五 | 19 |
执行命令:
DELETE FROM Students;
执行后的表格将为空。
改(UPDATE)
更新数据库中的现有记录。
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
示例
初始表格:
ID | Name | Age |
---|---|---|
1 | 张三 | 20 |
执行以下命令:
UPDATE Students
SET Age = 21
WHERE ID = 1;
执行后的表格:
ID | Name | Age |
---|---|---|
1 | 张三 | 21 |
更多示例
更新特定记录的多个字段:
初始表格:
ID | Name | Age | Grade |
---|---|---|---|
1 | 张三 | 20 | B |
2 | 李四 | 22 | A |
执行命令:
UPDATE Students
SET Age = 23, Grade = 'A+'
WHERE ID = 1;
执行后的表格:
ID | Name | Age | Grade |
---|---|---|---|
1 | 张三 | 23 | A+ |
2 | 李四 | 22 | A |
使用条件更新多条记录:
初始表格:
ID | Name | Age | Grade |
---|---|---|---|
... | ... | ... | ... |
执行命令:
UPDATE Students
SET Grade = 'B'
WHERE Age > 20;
执行后的表格:
ID | Name | Age | Grade |
---|---|---|---|
... | ... | ... | B |
... | ... | ... | B |
更新记录时使用子查询:
假设还有一个ClassScores
表,记录学生的成绩。
初始Students
表格:
ID | Name | Age | Grade |
---|---|---|---|
... | ... | ... | ... |
ClassScores
表格:
StudentID | Score |
---|---|
1 | 85 |
2 | 90 |
执行命令:
UPDATE Students
SET Grade = 'A'
WHERE ID IN (SELECT StudentID FROM ClassScores WHERE Score > 80);
执行后的Students
表格:
ID | Name | Age | Grade |
---|---|---|---|
... | ... | ... | A |
... | ... | ... | A |
查(SELECT)
从数据库中选择数据。
SELECT column1, column2, ...
FROM table_name
WHERE condition;
示例
初始表格:
ID | Name | Age |
---|---|---|
1 | 张三 | 20 |
2 | 李四 | 22 |
执行以下命令:
SELECT Name FROM Students WHERE Age > 20;
查询结果:
Name |
---|
李四 |
更多示例
查询特定列的数据:
初始表格:
ID | Name | Age | Grade |
---|---|---|---|
1 | 张三 | 20 | A |
2 | 李四 | 22 | B |
执行命令:
SELECT ID, Name FROM Students;
查询结果:
ID | Name |
---|---|
1 | 张三 |
2 | 李四 |
使用条件和排序查询数据:
初始表格:
ID | Name | Age | Grade |
---|---|---|---|
1 | 张三 | 20 | A |
2 | 李四 | 22 | B |
3 | 王五 | 19 | B |
执行命令:
SELECT * FROM Students WHERE Grade = 'B' ORDER BY Age DESC;
查询结果:
ID | Name | Age | Grade |
---|---|---|---|
2 | 李四 | 22 | B |
3 | 王五 | 19 | B |
使用聚合函数进行查询:
初始表格:
ID | Name | Age | Grade |
---|---|---|---|
... | ... | ... | ... |
执行命令:
SELECT AVG(Age) AS AverageAge FROM Students;
查询结果:
AverageAge |
---|
[平均年龄] |