数据库SQL入门题目及答案记录
题目一 查询所有列
题目地址
题目:现在运营想要查看用户信息表中所有的数据,请你取出相应结果
解答:
(1)当运营对表中列的展示顺序无要求时,命令可为如下两种,此时查询结果中各列按照原始表中的顺序展示;
注意:使用*会进行全表扫描导致数据路性能下降,速度慢
select * from user_profile;
以下不使用*的方法更好
SELECT
id,device_id,
gender,
age,
university,province
FROM user_profile;
(2)当运营对表中列的展示顺序有要求时,命令可为:select 列1 列3 列4··· from user_profile,可以按照需求的列顺序来展示查询结果。
题目二 查询多列
题目地址
题目:现在运营同学想要用户的设备id对应的性别、年龄和学校的数据,请你取出相应数据
select device_id, gender,age, university
from user_profile;
题目三 查询结果去重
题目地址
题目:现在运营需要查看用户来自于哪些学校,请从用户信息表中取出学校的去重数据。
解法一:使用distinct(关键词distinct用于返回唯一不同的值)
select distinct university from user_profile;
解法二:使用group by按照university进行分组
select university from user_profile group by university;
题目四 查询结果限制返回行数
题目地址
题目:现在运营只需要查看前2个用户明细设备ID数据,请你从用户信息表 user_profile 中取出相应结果。
select device_id from user_profile limit 2;
解析:
使用LIMIT限制结果集
LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。
LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。
如果只给定一个参数,它表示返回最大的记录行数目。
如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。
注意:初始记录行的偏移量是 0(而不是 1)。也就是从0开始表示第一行。
举例:
检索记录行 6-10(第一个5表示从第6行开始,第二个5表示行数,也就是指从第5行开始(包括第5行在内)的往下的5行数据(总共5行数据)):
SELECT * FROM table LIMIT 5,5
检索前 5 个记录行(limit 5 相当于 limit 0,5):
SELECT * FROM table LIMIT 5
题目五 将查询后的列重新命名
题目地址
题目:现在你需要查看前2个用户明细设备ID数据,并将列名改为 ‘user_infos_example’,,请你从用户信息表取出相应结果。
select device_id as user_infos_example
from user_profile limit 2;
解析:
这里主要是用到了 起别名关键字 as 以及组合限制查询 limit 索引,个数
select device_id as user_infors_example from user_profile limit 0,2;
其中as可以省略,索引为0可以省略
select device_id user_infors_example from user_profile limit 2;
注:
1.as 写不写都可
2.别名加不加引号(单双)都可
//加引号:别名就是引号内的内容。
//不加引号:别名如果为小写,会解析为大写,别名实际为大写。
//以上两点在调用别名时要注意,易报错:找不到对应的列(大小写对应的是不同的列)
3.这里的重命名仅仅针对本次查询有效,并不更改原始表的内容