VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 194|回复: 0

VC++高级班之数据库篇-[3]简单的SQL查询语言

[复制链接]
51_avatar_middle
online_admins Syc 发表于 2018-4-25 23:46:00 | 显示全部楼层 |阅读模式
①、查询语句可以分为:
select 子句、from 子句、where 子句、order by 子句、group by 子句;

select 子句指明需要查询的项目,一般是列名,也可以是表达式;
from 子句指明被查询的表或视图名;
※※※ select 和 from 是每个SQL查询语句所必须的,其他子句是任选的。

where 子句说明查询的条件,group by 子句用于将结果分组,order by 子句将结果排序。
===================================================
②、为了方便查询,这里向新建几个表,并插入几条数据;
语句如下:
//学生表
create table students(
        sno char(8) not null unique,
        sname char(8) not null,
        ssex char(2),
        sage smallint,
        sdept char(20)
        );
       
insert into students values ('0406321', '李明', '男', 21, 'computer');
insert into students values ('0406322', '王雪', '女', 20, 'english');
insert into students values ('0406323', '程丽', '女', 22, 'math');
insert into students values ('0406327', '张三', '男', 25, 'computer');
       

//科目表
create table course(
        cno char(8) not null unique,
        cname char(8) not null,
        ccredit smallint
        );
insert into course values ('C001', 'English', 3);
insert into course values ('C002', 'C++', 2);
insert into course values ('C003', 'Database', 3);
       
//学生选课表
create table sc(
        sno char(8) not null,
        cno char(8) not null,
        grade smallint
        );
insert into sc values ('0406321', 'C001', 86);
insert into sc values ('0406321', 'C002', 90);
insert into sc values ('0406322', 'C001', 90);
insert into sc values ('0406322', 'C003', 76);
insert into sc values ('0406323', 'C001', 89);
insert into sc values ('0406323', 'C003', 70);
insert into sc values ('0406327', 'C001', null);
===================================================
③、select 和 from 子句:
◆ 查询全体学生的学号和系别:select sno, sdept from students;
◆ 查询全部列可以指定为 *,查询课程的详细记录:select * from course;
◆ 列表达式可以是列名也可以是表达式,如,要查询学生的姓名和出生年份:
select sname, 2013-sage from students;
◆ 查询结果中不允许出现重复项,select 查询时加上 distinct 选项:
select distinct cno from sc;

===================================================
④、where 子句定义查询条件:
前面示例中的查询只是对列进行了筛选,结果中包含了所有的行,而实际操作中,
不仅要对列进行筛选,行也要满足指定的条件,进行筛选,所以要用到where子句。

where 子句的后面常常加上条件表达式,如下:
◆ 比较:=, >, <, <=, >=, <>, !>, !<, not+上述比较运算符;
查询年龄大于20岁的学生姓名和系别:select sname, sdept from students where sage > 20;

◆ 确定范围:between and, not between and;
查询成绩在 80 到 90 分之间的学生的学号和成绩:select sno, grade from sc where grade between 80 and 90;

◆ 确定集合:in, not in;
查询数学系和英语系学生的姓名和系别:select sname, sdept from students where sdept in ('english', 'math');

◆ 字符匹配:like, not like;
like 引入了两个特殊意义的通配符:_(下划线) 和 %(百分号),
下划线表示任意单字符(一个汉字占用两个字节,所以为2个下划线),百分号表示长度任意的字符串。
如果是完整的字符串,则可以使用比较符号 = 取代like

查询姓氏为李的学生的信息:select * from students where sname like '李%';

◆ 空值:is null, is not null;
例如,某些学生选修课程后没有参加考试,所以有选课记录,但是没有考试成绩。
查询缺少成绩的学生的学号和课程号:select sno, cno from sc where grade is null;
◆ 多重条件:and, or;
and 和 or 可以用于连接多个查询条件:
查询年龄大于20并且是男生的学生的信息:select * from students where sage > 20 and ssex = '男';
===================================================
⑤、group by 子句对查询结果分组:
SQL聚集函数:avg,max,min,sum,count;
求所有选课的平均成绩:select avg(grade) from sc;
求每一门课程的平均成绩:select cno, avg(grade) from sc group by cno;
===================================================
⑥、order by 子句对查询结果排序:
对查询结果中按照指定的列进行排序,asc表示升序,desc表示降序,缺省表示升序;
查询学生选课表,给出选了C001号课程的学生的学号和成绩,结果以成绩升序排列:
select sno, grade from sc where cno='C001' and grade is not null order by grade asc;
===================================================
===================================================
※※※ 小作业:本身SQL语句可谓是变化多端,自己组合语句进行相关的查询操作。
可以先了解了解 ② 点的SQL语句,也是做个预习准备。
------------------------------------- End -------------------------------------------

相关课程演示细节还请观看视频教程!
本套教程由VC驿站原创,提供视频教程+售后答疑服务!
VC驿站Vip会员售后答疑截图【持续更新】:http://www.cctry.com/thread-288054-1-1.html
教程介绍及详情请见:http://www.cctry.com/static/vip/index.html
VC驿站Vip会员详情请见:http://www.cctry.com/static/vip/index.html




上一篇:VC++高级班之数据库篇-[2]SQL之数据定义语言DDL的简介及使用
下一篇:VC++高级班之数据库篇-[4]深入的SQL查询语言

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-8-17 05:50

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表