sqlyog基本查询练习

-- 1.查询整个表格
SELECT * 
FROM gy_user ;

-- 2.查询序号 名字 编号     多个字段名之间用, (符号都是英文状态书写)
SELECT sno,realname,sname
FROM gy_user ;

-- 3.查询姓名叫吴令的      文本型字符加单引号
SELECT *
FROM gy_user 
WHERE realname= '吴令' ;

-- 4.查询年龄大于20       
SELECT *
FROM gy_user 
WHERE age>20 ;

-- 5.查询年龄小于20
SELECT *
FROM gy_user 
WHERE age<20 ;

-- 6.查询年龄大于等于30
SELECT *
FROM gy_user 
WHERE age>=30 ;

-- 7.查询年龄小于等于30
SELECT *
FROM gy_user 
WHERE age<=30 ;

-- 8.查询年龄不等于35
SELECT *
FROM gy_user 
WHERE age<>35 ;
-- 或者
SELECT *
FROM gy_user 
WHERE age!=35 ;

-- 9.查询姓名叫周仕平的
SELECT *
FROM gy_user 
WHERE realname='周仕平' ;

-- 10.查询姓周的                 %百分号表示多个字符
SELECT *
FROM gy_user 
WHERE realname LIKE '周%';

-- 11.查询两个字的名字,姓周的     _ 一个下划线表示一个字符
SELECT *
FROM gy_user 
WHERE realname LIKE '周_';

-- 12.三个字的名字,姓周的         like表示模糊查询 类似这个类型的
SELECT *
FROM gy_user 
WHERE realname LIKE '周__';

-- 13.查询用户姓名包含令 或者包含 伟   
SELECT*
FROM gy_user
WHERE realname LIKE '%令%' OR realname LIKE '%伟%' ;

-- 14.查询年龄在25-35之间的用户      多个条件就需要用连接符 and (和) 或者 or (或者)
SELECT *
FROM gy_user
WHERE age>=25 AND age<=35;
-- 规范的写法
SELECT*
FROM gy_user
WHERE age BETWEEN 25 AND 35;

-- 15.查询姓名包含王 年龄在20-30之间   (between  and) 表示在什么之间
SELECT*
FROM gy_user
WHERE realname LIKE '%王%' AND (age BETWEEN 20 AND 30) ;

-- 16.查询班级编号为1 或学历为1的
SELECT*
FROM gy_user
WHERE class_type=1 OR education=1 ;

-- 17.查询用户地址 包含闵行区 并且 
SELECT*
FROM gy_user
WHERE address LIKE '%闵行区%' AND sno<400 ;

-- 18.查询 年龄大于18 并且 班级类型为2
SELECT *
FROM gy_user
WHERE age>18 AND class_type=2 ;

-- 19.查询编号不等于100的 或者年龄小于35的
SELECT *
FROM gy_user
WHERE sno<>100 OR age<35 ;

-- 20.查询学历大于1的学生信息 只显示编号 真实姓名
SELECT sno,realname
FROM gy_user
WHERE education>1 ;

-- 21.查询年龄小于40 并且手机号 号段为138的用户
SELECT sno,address
FROM gy_user
WHERE age<40 AND phone LIKE '138%' ;

-- 22.查询手机号尾数为1 并且 地址 在上海的 学生用户名 编号 地址
SELECT sname,sno,address
FROM gy_user
WHERE phone LIKE '%1' AND address LIKE '上海%';

-- 23.查询用户名包含字母 1 的 并且班级类型不为1 的
SELECT *
FROM gy_user
WHERE sname LIKE '%l%' AND class_type<>1 ;

-- 24.查询用户名为5位字符 或者真实姓名为 5位字符的用户编号,姓名,地址
SELECT sno,realname,address
FROM gy_user
WHERE sname LIKE '_____' OR realname LIKE '_____' ;

练习
精准查询 学生姓名为马冬梅的学生
SELECT *
FROM gy_user
WHERE realname='马冬梅';
查询学生编号大于60的
SELECT *
FROM gy_user
WHERE sno>60 ;
查询学生年龄大于20的
SELECT *
FROM gy_user
WHERE age>20;
查询学生姓名为钱璟的
SELECT*
FROM gy_user 
WHERE realname='钱璟的';
查询学生性别为女
SELECT*
FROM gy_user 
WHERE sex ='女';
查询编号小于110的学生
SELECT *
FROM gy_user 
WHERE sno<110;
年龄不等于23的学生信息
SELECT*
FROM gy_user 
WHERE age<>23;
学生姓名不等于 张子栋 只显示学生 编号 姓名
SELECT sno,realname
FROM gy_user
WHERE realname<>'张子栋';
学生省份为重庆的 只显示 学生编号 姓名 省份
SELECT sno,realname,province
FROM gy_user
WHERE province='重庆';
学生姓名 包含 马
SELECT*
FROM gy_user 
WHERE realname LIKE '%马%';
学生姓名以吴开头
SELECT*
FROM gy_user
WHERE realname LIKE '吴%';
学生姓名包含 李
SELECT *
FROM gy_user 
WHERE realname LIKE '%李%';
姓名包含静的学生
SELECT *
FROM gy_user 
WHERE realname LIKE '%静%' ;
姓名是两个字符的学生
SELECT *
FROM gy_user 
WHERE realname LIKE '__' ;
姓名最后一位是 民 的学生
SELECT *
FROM gy_user 
WHERE realname LIKE '%民' ;
姓名第二位为 春 的学生姓名
SELECT *
FROM gy_user 
WHERE realname LIKE '_春_' ;
姓名只有三个字符的学生
SELECT *
FROM gy_user 
WHERE realname LIKE '___' ;
姓名是 马什么梅
SELECT *
FROM gy_user 
WHERE realname LIKE '马%梅' ;
姓名是马东什么
SELECT *
FROM gy_user 
WHERE realname LIKE '马东%' ;
姓名是什么冬梅
SELECT *
FROM gy_user 
WHERE realname LIKE '%冬梅' ;
查询学生id是77 88  99  111
SELECT *
FROM gy_user
WHERE id=77 OR id=88 OR id=99 OR id=111;
可以简化
SELECT *
FROM gy_user 
WHERE id IN(77,88,99,111);
查询学生年龄是 23  30
SELECT *
FROM gy_user
WHERE age IN (23,30);
查询学生省份 是 安徽 重庆  
SELECT *
FROM gy_user
WHERE province IN ('安徽','重庆') ;
姓名 不包含 什么健康
SELECT *
FROM gy_user 
WHERE realname NOT LIKE '%健康' ;
编号 不在 05 10 15 20
SELECT *
FROM gy_user 
WHERE sno NOT IN(05,10,15,20);
导师不包含 李什么
SELECT *
FROM gy_user
WHERE tutor NOT LIKE '李%';
老师不在 李素云 马超 刘程旭
SELECT *
FROM gy_user
WHERE teacher NOT IN ('李素云','马超',''刘程旭);
查询公司名称 包含上海 或者地址在上海的
SELECT*
FROM gy_user
WHERE NAME LIKE '%上海%' AND address LIKE '%上海%' ;
查询公司名称 包含阿里 地址在上海金融中心的
SELECT*
FROM gy_user
WHERE NAME LIKE '%阿里%' AND address LIKE '%上海金融中心的%' ;
查询 公司地址 包含 重庆或者包含 成都 或者 上海的
SELECT*
FROM gy_user
WHERE address IN ('重庆' OR '成都' OR '上海') ;

-- 字段为空   null 空
SELECT *
FROM gy_user
WHERE sname IS NULL;
-- 字段不为空       用两个--和空格 表示备注
SELECT *
FROM gy_user
WHERE sname IS NOT NULL;
-- 排序    升序 asc 一般默认的就是升序,所以可以不写
SELECT *
FROM gy_user
ORDER BY age;
-- 降序
SELECT *
FROM gy_user
ORDER BY age DESC ;

-- 以编号查询降序排序
SELECT *
FROM gy_user
ORDER BY sno DESC;

-- 带判断条件降序排序   用where  如果带有函数的判断条件用  having
SELECT *
FROM gy_user
WHERE realname LIKE '%吴%'
ORDER BY age DESC;

-- 制定限制前10条     
-- limt(n,m) n和m都是整数 n是开始位置,但是不包含n本身(起始位置是从0开始的) m是个数 
-- n 是0的时候是可以省略的
SELECT * 
FROM gy_user 
LIMIT 10 ;  
-- 指定字段去重       distinct 去重   写在select里面
SELECT DISTINCT realname 
FROM gy_user ;

-- 30.查询真真实姓名的姓氏为张 王 李 杨 的学生,按照年龄倒序排序,只显示真实姓名,年龄
SELECT realname,age
FROM gy_user 
WHERE realname LIKE '张%' OR realname LIKE'王%' OR realname LIKE'李%'OR realname LIKE'杨%' 
ORDER BY age DESC;

-- 31查询用户名包含guoya的用户,根据真实姓名去重
SELECT DISTINCT realname 
FROM gy_user
WHERE sname LIKE '%guoya%';

-- 32查询用户表id 在50 60 70 80 ,并且真实姓名不为空的用户
SELECT *
FROM gy_user
WHERE sno IN (50,60,70,80) AND (realname IS NOT NULL);

-- 33查询用户表 年龄在20 30 40 姓名包含张 吴 显示真实姓名,年龄,地址
SELECT realname,age,address
FROM gy_user
WHERE age IN (20,30,40) AND (realname LIKE '%张%' OR realname LIKE '%吴%');

-- 34查询用户表 编号大于50 地址在上海的   展示 用户名 年龄 地址 的前100条数据
SELECT sno,age,address
FROM gy_user
WHERE sno>50 AND address LIKE '%上海%'
LIMIT 100 ;

-- 35.查询用户表 姓名为单子的,对真实姓名去重,根据年龄倒叙排序
SELECT DISTINCT realname
FROM gy_user
WHERE realname LIKE '%单%'
ORDER BY age DESC;

-- 36.查询用户表 地址不为空 对用户名去重,显示前30条
SELECT DISTINCT sname
FROM gy_user
WHERE address IS NOT NULL
LIMIT 30;

-- 37.查询用户表 手机号码 地址都不位空 并且用户编号大于20 只显示第50--100条数据
SELECT*
FROM gy_user
WHERE phone IS NOT NULL AND (address IS NOT NULL) AND (sno>20)
LIMIT 49,51;

-- 38查询用户表 年龄大于20 班级类型为1 以id倒序 以年龄正序排列
SELECT*
FROM gy_user
WHERE age>20 AND class_type=1
ORDER BY age ASC,sno DESC;

-- 39.查询手机号不为空 姓名包含 王 以年龄倒序排序,显示内容真实姓名 去重
SELECT DISTINCT realname
FROM gy_user
WHERE phone IS NOT NULL AND realnane LIKE '%王%'
ORDER BY age DESC;

-- 40.查询用户编号100-500区间,微信号不为空,以年龄倒序,用户名去重显示
SELECT DISTINCT sname
FROM gy_user
WHERE (sno BETWEEN 100 AND 500) AND wechat IS NOT NULL
ORDER BY age DESC;

-- 求每一个班级的 总年龄  sum求和
SELECT SUM(age),class_type
FROM gy_user
GROUP BY class_type;

-- 求每一个班级的平均年龄  avg 求平均
SELECT AVG(age),class_type
FROM gy_user
GROUP BY class_type;

-- 求每一个学历的最大年龄 max最大
SELECT MAX(age),education
FROM gy_user
GROUP BY education;

-- 求每一学历的 平均年龄
SELECT AVG(age),education
FROM gy_user
GROUP BY education;

-- 查询各班级中最大年龄大于32的
SELECT MAX(age),class_type
FROM gy_user
GROUP BY class_type
HAVING MAX(age)>32;

-- 查询各班级中平均年龄大于18的
SELECT AVG(age),class_type
FROM gy_user
GROUP BY class_type
HAVING AVG(age)>18;

-- 查询不同学历的各自人数
SELECT COUNT(education)
FROM gy_user
GROUP BY education; 

-- 查询不同学历 最小年龄 小于30的  min最小
SELECT MIN(age),education
FROM gy_user
GROUP BY education
HAVING MIN(age)<30;

-- 求每一个班级的 总年龄
SELECT SUM(age),class_type
FROM gy_user
GROUP BY class_type;

-- 查询各班级中平均年龄大于20的
SELECT AVG(age),class_type
FROM gy_user
GROUP BY class_type
HAVING AVG(age)>20;

-- 查询各班级中最小年龄大于20的
SELECT MIN(age),class_type
FROM gy_user
GROUP BY class_type
HAVING MIN(age)>20;

-- 查询各班级中平均年龄小于23的
SELECT AVG(age),class_type
FROM gy_user
GROUP BY class_type
HAVING AVG(age)<23;

-- 查询各班级中年龄总和小于500的
SELECT SUM(age),class_type
FROM gy_user
GROUP BY class_type
HAVING SUM(age)<500;

你可能感兴趣的:(sqlyog基本查询练习)