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 ('湖南', '四川') 
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  '李%' (注意查询条件中有“%”,则说明是部分匹配,而且还有先后信息在里面,即查找以“李”开头的匹配项。所以若查询有“李”的所有对象,应该命令:'%李%';若是第二个字为李,则应为'_李%'或'_李'或'_李_'。)
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 ‘李%’

注意union与union all的区别:

前者要把重复项做个过滤,在结果中只显示一条重复的信息;而后者则不管。所以可以看出union与 union all所用算法不同,后者要简单许多。从调优角度上讲,推荐用union all,这样查询效率会提高不少。

7.多表查询
a.内连接
select g.sno,s.name,c.coursename 
   from grades g JOIN students s ON g.sno=s.sno
       JOIN courses c ON  g.cno=c.cno
(注意可以引用别名)
b.外连接
b1.左连接
select courses.cno,max(coursename),count(sno) 
from courses LEFT JOIN grades ON courses.cno=grades.cno 
group by courses.cno
左连接特点:显示全部左边表中的所有项目,即使其中有些项中的数据未填写完全。

左外连接返回那些存在于左表而右表中却没有的行,再加上内连接的行。
b2.右连接
与左连接类似
b3.全连接
select sno,name,major 
from students FULL JOIN majors ON students.mno=majors.mno
两边表中的内容全部显示
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.关于有难度多重嵌套查询的解决思想:[数据库]简单SQL语句总结
如,选修了全部课程的学生:
select *
from students
where not exists (       select *
   from courses
   where NOT EXISTS 
    (select *
      from grades
      where sno=students.sno
     AND cno=courses.cno))
最外一重:从学生表中选,排除那些有课没选的。用not exist。由于讨论对象是课程,所以第二重查询从course表中找,排除那些选了课的即可。

转载于:https://www.cnblogs.com/zhuqun/p/3917575.html

[数据库]简单SQL语句总结相关推荐

  1. 数据库简单sql语句(CURD)

    数据库分类 1.非关系数据库: 存储数据快,保存数据麻烦 ,同名数据不能保存 例如 MongoDB , Redis. 2. 关系数据库:适合存储大量数据 ,结构化清晰 例如:MySQL, Oracle ...

  2. 达梦数据库简单sql语句

    创建库 创建库之前可以先创建一个管理用户 用新建的管理用户账号再次登录 新建一个模式<库>方式 语句创建模式<库> CREATE SCHEMA "<名称> ...

  3. php 登陆 sql语句,PHP 连接MySQL数据库的SQL语句的简单示例

    这篇文章主要为大家详细介绍了PHP 连接MySQL数据库的SQL语句的简单示例,具有一定的参考价值,可以用来参考一下. 首先用phpmyadmin进入建立数据库user 再建个三段的表admin 再别 ...

  4. 软件创新实验室:MySQL数据库与简单SQL语句使用

    文章目录 前言 简介 特点 SQL DDL:操作数据库.表 DML:增删改表中数据 DQL:查询表中的记录 后记 拓展 范式 第一范式 1NF 第二范式 2NF 第三范式 3NF B+树 节点结构 插 ...

  5. 数据库基本----SQL语句大全

    数据库基本SQL语句大全 一.基础 1.说明:创建数据库 Create DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sq ...

  6. 使用Java反射(Reflect)、自定义注解(Customer Annotation)生成简单SQL语句

    使用Java反射(Reflect).自定义注解(Customer Annotation)生成简单SQL语句 这次给大家介绍一下在Java开发过程中 使用自定义注解开发: 主要知识点:          ...

  7. 将mysql语句转换为sql_数据库-转换sql语句

    文章描述:主要说明转换成SQL语句的过程.----必要信息(数据库名,表名,条件)转换成SQL语句 一些界面上数据增删改查的操作往往只需要输入一数据库名,表名,加条件就可以进行数据查询了,在这背后是怎 ...

  8. 基于简单sql语句的sql解析原理及在大数据中的应用

    基于简单sql语句的sql解析原理及在大数据中的应用 李万鸿 老百姓呼吁打土豪分田地.共同富裕,总有一天会实现. 全面了解你所不知道的外星人和宇宙真想:http://pan.baidu.com/s/1 ...

  9. mysql语句生成在线_在线数据库表(sql语句)生成java实体类工具

    相信每个做java开发的读者,都接触过SQL建表语句,尤其是在项目开发初期,因为数据库是项目的基石. 在现代项目开发中,出现了许多ORM框架,通过简单的实体映射,即可实现与数据库的交互,然而我们最初设 ...

最新文章

  1. 阿里云证书 | 套路太深,还是我打开姿势不对?
  2. 详解MySQL字符串函数CONCAT()、CONCAT_WS()、INSERT()、REPLACE()、LOWER()、UPPER()用法(二)
  3. EqualsBuilder和HashCodeBuilder
  4. 用long类型让我出了次生产事故,写代码还是要小心点
  5. Java“地铁”表(JavaFX)
  6. 26享元模式(Flyweight Pattern)
  7. 近指针, 远指针和巨指针
  8. oracle 分组统计行数,求助分组之后进行统计行数
  9. 使用jpeglib直接把NV12转为jpeg文件的代码
  10. 吉林大学操作系统概论
  11. 北森职业测试软件包括的取向,北森人才测评介绍(上).doc
  12. Centos图形界面和命令行切换快捷键 2022_11_15
  13. 京东商城选择地址信息
  14. pc端MNIST数据集pytorch模型CNN网络转换为onnx部署树莓派4B和神经棒NCS2(使用openvino2021框架)
  15. MAE 论文逐段精读【论文精读】(深度学习论文篇)
  16. 万字自动化测试面试题,助你吊打面试官
  17. 计算机的未来展望英语作文,展望未来英语作文5篇
  18. zotero 多设备文件同步配置,不需要 iCloud,使用 webdav
  19. PDF文件如何转成HTML格式?说一种思路
  20. 使用 JAVA Swing 构建 Sftp 桌面连接工具

热门文章

  1. 晶科能源坐稳全球光伏组件制造商“头把交椅”
  2. 《Docker技术入门与实战》——2.4 本章小结
  3. UIWebView中字体自动放大问题的探究
  4. 《男人这东西》—— 读后总结
  5. 云计算与云原生技术系列文章
  6. FD.io/VPP — 常用指令集合
  7. C 编程异常 — /usr/bin/ld: 找不到 -lm
  8. KVM — CPU 虚拟化
  9. VMware 虚拟化编程(10) — VMware 数据块修改跟踪技术 CBT
  10. Openstack Restful API 开发框架 Paste + PasteDeploy + Routes + WebOb