当前位置:实例文章 » 其他实例» [文章]二、DDL-2.表操作-创建&查询

二、DDL-2.表操作-创建&查询

发布人:shili8 发布时间:2025-01-07 22:35 阅读次数:0

**数据库管理系统**

### 二、DDL-2. 表操作-创建&查询####1. 创建表在关系型数据库中,表是数据的基本存储单位。每个表都有一个唯一的名称,可以通过以下语法来创建:

sqlCREATE TABLE 表名 (
 列名 数据类型,
 列名 数据类型,
 ...
);


例如,我们可以使用以下语句创建一个学生信息表:

sqlCREATE TABLE 学生信息 (
 学号 INT PRIMARY KEY,
 姓名 VARCHAR(20),
 年龄 INT,
 性别 CHAR(1)
);


在上述语句中,`学号`被设置为主键(Primary Key),这意味着每个学生的学号都是唯一的。

####2. 查询表要从表中获取数据,我们可以使用以下语法:

sqlSELECT 列名1, 列名2, ...
FROM 表名;


例如,我们可以使用以下语句查询所有学生信息:

sqlSELECT *
FROM 学生信息;


在上述语句中,`*`表示选择表中的所有列。

####3. 条件查询我们可以通过添加 `WHERE` 子句来根据条件筛选数据:

sqlSELECT 列名1, 列名2, ...
FROM 表名WHERE 条件;


例如,我们可以使用以下语句查找年龄大于18的学生:

sqlSELECT *
FROM 学生信息WHERE 年龄 >18;


####4. 排序和分页我们可以通过添加 `ORDER BY` 子句来对结果进行排序:

sqlSELECT 列名1, 列名2, ...
FROM 表名ORDER BY 列名 ASC|DESC;


例如,我们可以使用以下语句按学号升序排列学生信息:

sqlSELECT *
FROM 学生信息ORDER BY 学号 ASC;


我们也可以通过添加 `LIMIT` 子句来限制结果的数量:

sqlSELECT 列名1, 列名2, ...
FROM 表名LIMIT 开始行数, 结果数量;


例如,我们可以使用以下语句获取前5条学生信息:

sqlSELECT *
FROM 学生信息LIMIT0,5;


####5. 分组和聚合我们可以通过添加 `GROUP BY` 子句来对结果进行分组:

sqlSELECT 列名1, 列名2, ...
FROM 表名GROUP BY 列名;


例如,我们可以使用以下语句按性别分组统计学生数量:

sqlSELECT 性别, COUNT(*) AS 数量FROM 学生信息GROUP BY 性别;


我们也可以通过添加 `HAVING` 子句来对结果进行过滤:

sqlSELECT 列名1, 列名2, ...
FROM 表名GROUP BY 列名HAVING 条件;


例如,我们可以使用以下语句按性别分组统计学生数量,要求每个性别的学生数量大于5:

sqlSELECT 性别, COUNT(*) AS 数量FROM 学生信息GROUP BY 性别HAVING COUNT(*) >5;


####6. 子查询我们可以通过使用子查询来在一个语句中执行多个查询:

sqlSELECT 列名1, 列名2, ...
FROM 表名WHERE 条件 = (子查询);


例如,我们可以使用以下语句查找年龄大于18且性别为男的学生:

sqlSELECT *
FROM 学生信息WHERE 年龄 >18 AND 性别 = (SELECT 性别 FROM 学生信息 WHERE 年龄 >18 GROUP BY 性别 HAVING COUNT(*) >5);


####7. 联合查询我们可以通过使用 `UNION` 或 `UNION ALL` 子句来将两个或多个查询的结果联合起来:

sqlSELECT 列名1, 列名2, ...
FROM 表名1UNIONSELECT 列名1, 列名2, ...
FROM 表名2;


例如,我们可以使用以下语句将学生信息和老师信息联合起来:

sqlSELECT *
FROM 学生信息UNIONSELECT *
FROM 老师信息;


####8. 交叉连接我们可以通过使用 `CROSS JOIN` 子句来将两个表的每一行与另一个表的每一行进行匹配:

sqlSELECT 列名1, 列名2, ...
FROM 表名1CROSS JOIN 表名2;


例如,我们可以使用以下语句将学生信息与老师信息进行交叉连接:

sqlSELECT *
FROM 学生信息CROSS JOIN 老师信息;


####9. 自联接我们可以通过使用 `SELF JOIN` 子句来将一个表与自身进行匹配:

sqlSELECT 列名1, 列名2, ...
FROM 表名 AS 表名别名JOIN 表名 AS 表名别名 ON 条件;


例如,我们可以使用以下语句将学生信息与自身进行匹配,要求每个学生的学号与自己相同:

sqlSELECT *
FROM 学生信息 AS s1JOIN 学生信息 AS s2 ON s1.学号 = s2.学号;


####10. 外联接我们可以通过使用 `LEFT JOIN`、`RIGHT JOIN` 或 `FULL OUTER JOIN` 子句来将一个表与另一个表进行匹配,并保留未匹配的行:

sqlSELECT 列名1, 列名2, ...
FROM 表名 AS 表名别名LEFT|RIGHT|FULL OUTER JOIN 表名 AS 表名别名 ON 条件;


例如,我们可以使用以下语句将学生信息与老师信息进行左外联接,要求每个学生都有一个老师:

sqlSELECT *
FROM 学生信息 AS s1LEFT JOIN 老师信息 AS t1 ON s1.学号 = t1.学号;


以上是关于表操作-创建&查询的内容。

相关标签:oracle数据库
其他信息

其他资源

Top