如何提高SQL语句的能力?
1、在查询结果中显示列名:
a、用as关键字:select name as '姓名' from students order by age
b、直接表示:select name '姓名' from students order by age
2、精确查找:
a、用in限定范围: select * from students where native in ('湖南', ' 4川')
b、 between...and:select * from students where age between 20 and 30
c、 “=”:select * from students where name = '李山'
d、 like:select * from students where name like '李%' (注意查询条件中有“%”则介绍说明是部分匹配而 且还有先后信息在里面即查找以“李”开头匹配项所以若查询有“李”所有对象应该命令:'%李%';若是第 2个字为李则应为'_李%'或'_李'或'李')
e、匹配检查符: select * from courses where cno like '[AC]%' (表示或关系和"in(...)"类似而且""可以表示范围如:select * from courses where cno like '[A-C]%')
3、对于时间类型变量处理
a,smalldatetime:直接按照串处理方式进行处理例如:select * from students where birth > = '1980-1-1' and birth <= '1980-12-31'
4、集
a,count求和如:select count(*) from students (求学生总人数)
b,avg(列)求平均如:select avg(mark) from grades where cno='B2'
c,max(列)和min(列)求最大和最小
5、分组group
常用于统计时如分组查总数: select gender,count(sno) from students group by gender (查看男女学生各有多少)
注意: 从哪种角度分组就从哪列"group by"
对于多重分组只需将分组规则罗列比如查询各届各专业男女同学人数那么分组规则有:
届别(grade)、专业 (mno)和性别(gender)所以有"group by grade, mno, gender" select grade, mno, gender, count(*) from students group by grade, mno, gender
通常group还和having联用比如查询1门课以上不及格学生则按学号(sno)分类有:
select sno,count() from grades where mark<60 group by sno having count()>1
6、UNION联合
合并查询结果如: SELECT * FROM students WHERE name like ‘张%'
UNION [ALL] SELECT * FROM students WHERE name like ‘李%'
7、多表查询
a、内连接 select g.sno,s.name,c.coursename from grades g JOIN students s _disibledevent=>
JOIN courses c _disibledevent=>(注意可 以引用别名)
b、外连接
b1、左连接 select courses.cno,max(coursename),count(sno) from courses LEFT JOIN grades _disibledevent=> group by courses.cno
左连接特点: 显示全部左边表中所有项目即使其中有些项中数据未填写完全 ,左外连接返回那些存在于左表而右表中却没有行再加上内连接行
b2、右连接和左连接类似
b3、全连接 select sno,name,major from students FULL JOIN majors _disibledevent=>两边表中内容全部显示
c、自身连接 select c1.cno,c1.coursename,c1.pno,c2.coursename from courses
c1.courses
c2.where
c1.pno=c2.cno 采用别名解决问题
d、交叉连接 select lastname+firstname from lastname CROSS JOIN firstanme 相当于做笛卡儿积
8.嵌套查询
a、用关键字IN,如查询李山同乡: select * from students where native in (select native from students where name=' 李山')
b、使用关键字EXIST,比如下面两句是等价:
select * from students where sno in (select sno from grades where cno='B2')
select * from students where exists (select * from grades where grades.sno=students.sno AND cno='B2')
9、有关排序order
a、对于排序order有两种思路方法:asc升序和desc降序
b、对于排序order,可以按照查询条件中某项排列而且这项可用数字表示如:select sno,count(*) ,avg(mark) from grades group by sno having avg(mark)>85 order by 3
10、其他
a、对于有空格识别名称应该用""括住
b、对于某列中没有数据特定查询可以用null判断如select sno,courseno from grades where mark IS NULL
c、注意区分在嵌套查询中使用any和all区别any相当于逻辑运算“||”而all则相当于逻辑运算“&&”
d、注意在做否定意义查询是小心进入陷阱:
如没有选修‘B2'课程学生 : select students.* from students, grades where students.sno=grades.sno AND grades.cno <> 'B2'
上面查询方式是正确方式见下方: select * from students where not exists (select * from grades where grades.sno=students.sno AND cno='B2')
11、有关有难度多重嵌套查询解决思想:
如选修了全部课程学生: select * from students where not exists ( select * from courses where NOT EXISTS
(select * from grades where sno=students.sno AND cno=courses.cno))
尚学堂给同学们带来全新的Java300集课程啦!java零基础小白自学Java必备优质教程
关住“BlankLB”,有任何不懂的技术问题都可随时咨询!
如何提高SQL语句的能力?相关推荐
- 提高SQL语句的性能
一.FROM子句中的表 FROM子表的安排或次序对性能有很大的影响,把较小的表放在前面,把较大的表放在后面,可以得到更高的效率. 二.WHERE子句中的次序 一般来自基表的字段放在结合操作的右侧,要被 ...
- 云和恩墨受邀参加CCSA TC601第一次《SQL质量管理服务能力要求》标准研讨会
点击上方"蓝字" 关注我们! 7月30日下午,中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)数据库与存储工作组在中国信息通信研究院召开<SQL质量管理服务 ...
- SQL语句中用Parameters有什么好处
SQL语句中使用parameters的好处: 1.提高SQL语句的性能:每个不同的SQL语句在执行前都会进行相应的预解析等操作,这个过程是比较耗时的,而任何值的不同也是SQL不同,比如:SELECT ...
- oracle sql语句大全
ORACLE支持五种类型的完整性约束NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值.CHECK (检查)--检查在约束中 ...
- Informix 11.5 SQL 语句性能监控方法及实现
本文主要介绍 Informix 11.5 中 SQL 语句性能监控的基本方法及实现,希望能够使大家有一个比较全面的了解. 我们知道,在数据库应用系统中,SQL 语句的性能好坏至关重要.如果 SQL 语 ...
- select 1 from ... sql语句中的1代表什么意思?
我们都知道,用exists代替in可以提高sql语句的执行效率,例如如下两个例子: 检索部门所在地为 NEW YORK'的员工信息. 使用IN select * from scott.empwhere ...
- JAVAEE框架技术之8-myBatis ORM框架技术参数和动态SQL语句
parameterType 传入多个参数 确切点是方法的输入参数,一般都是采用直接使用pojo类.此时在mapper.xml文件中的SQL语句不用再写parameterType属性,而是用arg0,a ...
- SQL语句优化(落实到代码,不绕弯子)
文章目录 看完本篇文章你能学到什么? SQL语句优化 1.1 排序优化 1.1.1 索引优化 1.1.2 算法优化 1.1.3 排序优化建议 1.2 分组优化 1.3 分页优化 1.3.1 分页优化一 ...
- oracle数据库中最常用的sql语句
对SQL语句进行调整,往往有一项前期工作,就是定位最常用的SQL 语句.Oracle数据库可以从多个方面取得SQL语句.如从数据库自身的存储过程或者函数中取得,也可以从前台的应用程序中取得.所以,数据 ...
- Oracle SQL语句执行流程与顺序原理详解
以前读的文章,保存到本地了,忘记来源了,分享一下,本地存着怕丢了 Oracle SQL语句执行流程与顺序原理详解 第一步:客户端把语句发给服务器端执行 当我们在客户端执行SQL语句时,客户端会把这条S ...
最新文章
- in_array 判断问题的疑惑解决。
- Mongoose 索引、Mongoose 内置 CURD 方 法、扩展 Mongoose Model 的静态方法和 实例方法
- bellman ford 算法 判断是否存在负环
- axios学习笔记(一):学习HTTP相关的技术知识点
- vue使用阿里巴巴矢量图标库
- 基于 TI 方案 CC2540 低功耗无线蓝牙模块详解
- 天线SMA处抗静电保护收发开关
- vb webQQ登陆器
- TJA1101汽车网卡调试
- 计算机网络计算1g等于多少MB,1g是多少mb(1g等于多少兆)
- 部署RPA如何实现投资回报率最大化?评估ROI的6大指标
- pyqt5 点击开始按钮,执行事件,中途点击暂停按钮后,所执行的事件暂停
- 计算机网络举例说明,什么是计算机网络,举例说明计算机网络有哪些应用?
- 【.NET框架实战】IdentityServer4身份验证、授权
- C语言 五种基本的算术运算符
- 全球与中国小龙虾市场深度研究分析报告
- ciscn_2019_qual_virtual
- 撕不撕?如何撕?跟谁撕?权力游戏致胜手册
- 中国制造遭围堵 美欧再工业化倒逼我产业升级
- 8051单片机Proteus仿真与开发实例-74HC148优先编码器驱动仿真
热门文章
- Class -- 07 -- Modifier类常用方法解析
- C# 通过UDP 远程监控摄像头
- 2021年山东省安全员C证考试及山东省安全员C证模拟考试
- ubuntu mysql 默认安装路径_ubuntu安装mysql并修改默认目录
- mysql怎么加载txt文本1148_MySQLload从文件读入数据提示ERROR1148
- 当下既是上天赐予的礼物 ——《心灵奇旅》影评
- 如何获取淘宝/天猫商品历史价格信息的API接口
- openCV和python基于dlib库实现眨眼/睁闭眼检测--亲测高效
- 微生物组-扩增子16S分析第10期(报名直播课免费参加线下2020.10)
- NOI2021 D类打铁记