本文共 4032 字,大约阅读时间需要 13 分钟。
在数据库查询中,排序查询是为了对结果进行排列,按照特定的顺序输出数据。这对于分析数据趋势、排序数据等场景非常有用。
排序查询的语法在大多数数据库中类似,常用语句为 ORDER BY
。具体语法如下:
SELECT [字段1] , [字段2] , ... FROM [表名]ORDER BY [排序字段1] [排序方式1] , [排序字段2] [排序方式2] , ... ;
排序方式主要有两种:
聚合函数是用来对数据库中多个记录进行统计和计算的操作,常见的聚合函数包括 COUNT
、MAX
、MIN
、SUM
和 AVG
等。这些函数会将一列数据作为一个整体进行计算。
COUNT: 计算记录的个数
COUNT(*)
会统计所有记录,包括 NULL
值。MAX: 计算最大值
MIN: 计算最小值
SUM: 计算和
AVG: 计算平均值
NULL
值。NULL
值,需要使用 IFNULL
函数处理。分组查询用于将数据按照一定条件进行分组,通常用于统计和汇总操作。
分组查询的语法如下:
SELECT [分组字段] , [聚合函数] , ...FROM [表名]GROUP BY [分组字段];
GROUP BY
之后使用。SELECT sex, AVG(math) FROM student GROUP BY sex;
SELECT sex, AVG(math), COUNT(id) FROM student GROUP BY sex;
SELECT sex, AVG(math), COUNT(id) FROM student WHERE math > 70 GROUP BY sex;
SELECT sex, AVG(math), COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
分页查询用于对结果集进行分割,限制返回的记录数量,以方便展示。
分页的语法在不同数据库中有所不同,但大多数数据库支持 LIMIT
关键字。语法如下:
SELECT * FROM [表名] LIMIT [起始索引] , [每页显示的记录数];
(当前页码 - 1) * 每页显示的记录数
。SELECT * FROM student LIMIT 0, 3; -- 第1页
SELECT * FROM student LIMIT 3, 3; -- 第2页
SELECT * FROM student LIMIT 6, 3; -- 第3页
数据库约束用于对表中的数据进行限定,确保数据的正确性和完整性。
主键约束:
非空约束:
NULL
。ALTER TABLE
修改。唯一约束:
INDEX
结合使用,提高查询效率。NULL
值存在。外键约束:
INDEX
和 CONSTRAINT
组合使用。CREATE TABLE stu ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) NOT NULL UNIQUE, FOREIGN KEY (phone_number) REFERENCES phone_table(phone_number));
ALTER TABLE stu ADD CONSTRAINT phone_fk FOREIGN KEY (phone_number) REFERENCES phone_table(phone_number);
ALTER TABLE stu ADD CONSTRAINT phone_fk FOREIGN KEY (phone_number) REFERENCES phone_table(phone_number) ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE stu DROP PRIMARY KEY;
ALTER TABLE stu DROP INDEX phone_number;
ALTER TABLE stu DROP FOREIGN KEY phone_fk;
数据库设计是数据库开发中的关键环节,涉及数据结构的规划和关系的建立。
一对一关系:
一对多关系:
多对多关系:
以下是根据旅游线路系统设计的数据库表结构:
分类表 tab_category:
cid
:分类主键,自增。cname
:分类名称,非空且唯一。CREATE TABLE tab_category ( cid INT PRIMARY KEY AUTO_INCREMENT, cname VARCHAR(100) NOT NULL UNIQUE);
线路表 tab_route:
rid
:线路主键,自增。rname
:线路名称,非空且唯一。price
:价格。rdate
:上架时间。cid
:所属分类。CREATE TABLE tab_route ( rid INT PRIMARY KEY AUTO_INCREMENT, rname VARCHAR(100) NOT NULL UNIQUE, price DOUBLE, rdate DATE, cid INT, FOREIGN KEY (cid) REFERENCES tab_category(cid));
用户表 tab_user:
uid
:用户主键,自增。username
:用户名,非空且唯一。password
:密码,非空。name
:姓名。birthday
:生日。sex
:性别,默认为男。telephone
:手机号码。email
:电子邮箱。CREATE TABLE tab_user ( uid INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(100) UNIQUE NOT NULL, password VARCHAR(30) NOT NULL, name VARCHAR(100), birthday DATE, sex CHAR(1) DEFAULT '男', telephone VARCHAR(11), email VARCHAR(100));
收藏表 tab_favorite:
rid
:线路ID,外键。uid
:用户ID,外键。date
:收藏时间。CREATE TABLE tab_favorite ( rid INT, date DATETIME, uid INT, PRIMARY KEY (rid, uid), FOREIGN KEY (rid) REFERENCES tab_route(rid), FOREIGN KEY (uid) REFERENCES tab_user(uid));
数据库范式是指导数据库设计的规范,确保数据库的完整性和一致性。常见的数据库范式包括:
第一范式 (1NF):
第二范式 (2NF):
第三范式 (3NF):
通过遵循这些范式,可以减少数据冗余,提高数据库性能和安全性。
转载地址:http://hadfk.baihongyu.com/