MySQL中常用的查询操作,首先是能从表中直接取出数据,接着能对查询结果做一些简单的处理,比如去重等,然后是根据条件查询数据,包括精准查询、模糊查询以及按照数据的某个范围或者指定多个指标进行查询,最后是将查询结果进行排序,主要包括升序和降序以及多个字段的先后排序处理。
第一部分主要介绍select语句——简单处理查询结果。
一、具体方法
查询数据(简单处理查询结果)
select查询的基本语法
select * from 表名;
from 后面写表名,表示数据来自这张表; select 后面写表中的列名,如果是 * 表示在结果中显示表中所有列;如果要查询多个列,之间使用逗号分隔; 消除重复行 在select后面列前使用 distinct 可以消除重复的行 重命名 在 select 后面的列名部分,可以使用as为列起别名,这个别名出现在结果集中。
注意
1、避免使用 select * 。按照需要进行数据查询,否则会导致查询速度变慢。避免查询多余数据。
2、如果只需要查询出一条数据,使用 limit 1。例如,想要知道是否有男生,只要能查询到一条含有男生的记录就可以。使用Limit 1 可以在找到一条数据后停止搜索,避免多余查询。
问题 | 类型 | 方法 |
---|---|---|
查询所有列 | 所有列 | *、列名 |
查询某些列 | 某些列 | 列名 |
查询结果去重 | 结果去重 | distinct |
将查询后的列重新命名 | 重命名 | as |
二、实例
已知有用户信息表user_profile(device_id 设备ID, gender 性别, age 年龄, university 学校, gpa)
id | device_id | gender | age | university | gpa |
---|---|---|---|---|---|
1 | 2138 | male | 21 | 北京大学 | 3.4 |
2 | 3214 | male | 复旦大学 | 4.0 | |
3 | 6543 | female | 20 | 北京大学 | 3.2 |
4 | 2315 | female | 23 | 浙江大学 | 3.6 |
5 | 5432 | male | 25 | 山东大学 | 3.8 |
6 | 2131 | male | 28 | 北京师范大学 | 3.3 |
题目1:取出用户信息表中所有的数据
【分类】:取出所有列
【知识点】: *
求解代码
select *
from user_profile
结果
device_id | gender | age | university | gpa |
---|---|---|---|---|
2138 | male | 21 | 北京大学 | 3.4 |
3214 | male | 复旦大学 | 4.0 | |
6543 | female | 20 | 北京大学 | 3.2 |
2315 | female | 23 | 浙江大学 | 3.6 |
5432 | male | 25 | 山东大学 | 3.8 |
2131 | male | 28 | 北京师范大学 | 3.3 |
题目2:取出用户的设备id、性别、年龄和学校的数据
【分类】:取出某些列
【知识点】:直接写列名
求解代码
select
device_id,
gender,
age,
university
from user_profile
结果
device_id | gender | age | university |
---|---|---|---|
2138 | male | 21 | 北京大学 |
3214 | male | 复旦大学 | |
6543 | female | 20 | 北京大学 |
2315 | female | 23 | 浙江大学 |
5432 | male | 25 | 山东大学 |
2131 | male | 28 | 北京师范大学 |
题目3:取出学校的去重数据
【分类】:查询结果去重
【知识点】:distinct
求解代码
select
distinct university
from user_profile
结果
university |
---|
北京大学 |
复旦大学 |
浙江大学 |
山东大学 |
北京师范大学 |
题目4:取出用户的设备ID数据,并将列名改为 ‘user_infos_example’
【分类】:重命名
【知识点】:as适用于列名和表的重命名,as也可以省略
求解代码
select
device_id as user_info_example
from user_profile
结果
user_infos_example |
---|
2138 |
3214 |
6543 |
2315 |
5432 |
2131 |
创建 user_profile 表的代码
-- ----------------------------
-- Table structure for user_profile
-- ----------------------------
DROP TABLE IF EXISTS `user_profile`;
CREATE TABLE `user_profile` (
`id` int(11) NOT NULL,
`device_id` int(11) NOT NULL,
`gender` varchar(14) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`age` int(11) NULL DEFAULT NULL,
`university` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`gpa` float NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user_profile
-- ----------------------------
INSERT INTO `user_profile` VALUES (1, 2138, 'male', 21, '北京大学', 3.4);
INSERT INTO `user_profile` VALUES (2, 3214, 'male', NULL, '复旦大学', 4);
INSERT INTO `user_profile` VALUES (3, 6543, 'female', 20, '北京大学', 3.2);
INSERT INTO `user_profile` VALUES (4, 2315, 'female', 23, '浙江大学', 3.6);
INSERT INTO `user_profile` VALUES (5, 5432, 'male', 25, '山东大学', 3.8);
INSERT INTO `user_profile` VALUES (6, 2131, 'male', 28, '北京师范大学', 3.3);
SET FOREIGN_KEY_CHECKS = 1;