嗨客网搜索
数据库教程

Mysql自定义字段

Mysql自定义字段教程

我们之前的查询语句中,查询出来的结果都是表里面怎么存储,怎么查询出来的。但是我们如果想让查询出来的结果名称变化,或者查询出来的结果转换一种格式该怎么办呢?

这个时候对字段的计算就派上用场了。字段的计算,它不在数据库服务器上面,而是在执行 select 语句的时候创建的。

本章节我们使用下面的表里面的语句进行操作

CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `stu_no` int(11) DEFAULT NULL, `stu_name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, `chinese_score` double(10,0) DEFAULT NULL COMMENT '语文成绩', `mathematics_score` double(10,0) DEFAULT NULL COMMENT '数学成绩', `english_score` double(10,0) DEFAULT NULL COMMENT '英语成绩', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4; INSERT INTO student (`id`,`stu_no`,`stu_name`,`age`,`chinese_score`,`mathematics_score`,`english_score`) VALUES (1,1001,'小明',17,100,100,100), (2,1002,'红红',16,99,100,90), (3,1003,'小军',18,60,55,65), (4,1004,'小亮',19,88,90,100), (5,1005,'亮亮',19,55,100,100), (6,1006,'小杰',16,99,55,45), (7,1007,'小亮',20,99,99,99), (8,1008,'无年龄',null,0,0,0), (9,1009,'欧阳亮亮',19,100,100,100);

字段拼接详解

语法

select CONCAT(列1/自定义字符,列2/自定义字符 ...) 列n from 表名

描述

和一般的查询语句类似,但是它用 CONCAT 关键字将一些列和字符连接了起来。将多列里面的数据和并成一个列,在查询结果里面展现出来。

案例

拼接字段

SELECT CONCAT(stu_no, ' (',stu_name,')'),chinese_score, mathematics_score,english_score FROM student;

运行结果如下

25 拼接字段.png

上面的 sql 语句是在查询学生成绩的时候,由于学生的名称有重复的,所以如果仅查询学生的姓名和成绩的话,不能具体定位到那个学生,这个时候,我们可以把学生的学号和学生的姓名拼接起来,然后再将学生成绩一起查询出来。我们可以看到,使用了 CONCAT 语句之后,会将原先两列的数据和并成一列,并且按照指定的数据格式展示。

别名

我们看到,使用字段拼接之后,查询的结果里面的字段是 sql 语句里面的拼接字段直接作为列了,如果我们想修改展示的列名可以使用别名,它的语法是在查询语句的列后面加 AS 自定义名称

-- 嗨客网(www.haicoder.net) SELECT CONCAT(stu_no, ' (',stu_name,')') AS student_no_name,chinese_score AS chinese, mathematics_score,english_score FROM student;

运行结果如下

26 别名.png

我们可以看到,别名不仅对拼接的字符有作用,对原始的数据库查询出来的字段也有作用,查询出来之后展示的就是用户自定义的名称。

列算数计算

-- 嗨客网(www.haicoder.net) SELECT CONCAT(stu_no, ' (',stu_name,')') AS student_no_name,chinese_score,mathematics_score,english_score, chinese_score + mathematics_score + english_score AS total_score FROM student;

运行结果如下

27 算数运算.png

上面的案例中,我们计算了每个学生的总成绩。并给查询结果定义了一个别名 total_score。

算数运算符包含 +- * /,他们是对数字进行计算的,如果对应的数据类型不是数字类型,他们就会把那列的数据当作 0 来处理。

它们的计算优先级和一般的数学计算优先级一样,如果想控制数据计算顺序,可以用 () 来进行控制。

Mysql自定义字段总结

使用字段的拼接,我们可以将多列的字段转换成一列字段进行展示,因为查询出来的结果展示是按照 sql 语句里面查询的信息进行展示的,在有些情况下,我们想让自己的列名展示的比较简洁易懂,这个时候可以使用 AS 来给类重新赋名称,给它别名。

在查询数据的时候,我们也可以对列进行简单的数学操作。它可以将 sql 中规定的列进行计算。

嗨客网顶部