Mysql(7)

select语句练习

 1. 统计某个学生学了几门课
select count(course_no) from choose join student on choose.student_no = student.student_no where student_name = '张三';
 2. 统计某个学生学了哪几门课
select course_name from course join choose on choose.course_no = course.course_no join student on choose.student_no = student.student_no where student_name = '张三';
 3. 统计几个学生选了某门课
select count(student.student_no) from student join choose on choose.student_no = student.student_no join course on choose.course_no = course.course_no where course_name = 'java程序设计';
 4. 统计哪个课程学生已经选满
select course_name, up_limit from choose join course on course.course_no = choose.course_no join teacher on teacher.teacher_no = course.teacher_no group by course.course_no having up_limit = count(*);
 5. 统计选修人数少于30的所有课程信息
select course_no from course join choose on course.course_no = choose.course_no join student on choose.student_no = student.student_no group by course_no having count(*) < 30;
 6. 统计没有任何学生选某门课的课程信息
select course.course_no from course join choose on choose.course_no = course.course_no where not exists (select course_no from choose join student  on student.student_no = choose.student_no); 
 7. 统计一门课已有多少人选,还可以让多少人选
select count(student_no), up_limit-count(student_no) having_choose_num from choose join course on  choose.course_no= course.course_no group by course_no;

使用正则表达式模糊查询

实现模式匹配功能,有点像like
语法:
字段名 [not] regexp [binary] '正则表达式';
. 匹配任意单个字符
^ 匹配字符串开始的部分
$ 匹配字符串结尾的部分
[字符集合或数字集合] 匹配方括号中的任意字符用‘-’表示范围,e.g.[abc]匹配a或b或c,[a-z]表示任意字母
[^字符集合或数字集合] 匹配字符串除了方括号内的任何字符
string1|string2  匹配字符串1或字符串2
* 匹配0个或多个*前面的字符,e.g.s*表示0个或多个s
+ 匹配1个或多个*前面的字符,e.g.s*表示1个或多个s
? 匹配0个或多个*前面的字符,e.g.s?表示0个或多个s
string{n} 表示n个string
string{m,n}表示最少m个string,最多n个string
e.g
检索含有java的course_name
select * from course where course_name regexp 'java';
等价于
select * from course where course_name like '%java%';
检索以程序设计结尾的course_name
select * from course where course_name regexp '程序设计$';
检索以j开头,以程序设计结尾的course_name
select * from course where course_name regexp '^j.程序设计$';
检索以55175516开头,后面4个数字的student_no
select * from student where student_no regexp '^551[78][0-9]{4}';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值