`
java虫
  • 浏览: 536578 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQL语句总结(二)

    博客分类:
  • DB
阅读更多

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.count()求和,如:select count(*)  from students (求学生总人数)
b.avg(列)求平均,如:select avg(mark)  from grades where cno=’B2’
c.max(列)和min(列),求最大与最小

4.分组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


5.UNION联合
合并查询结果,如:
SELECT * FROM students
WHERE name like ‘张%’
UNION [ALL]
SELECT * FROM students
WHERE name like ‘李%’


6.多表查询
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
相当于做笛卡儿积

7.嵌套查询
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’)

 8.关于排序order
a.对于排序order,有两种方法:asc升序和desc降序
b.对于排序order,可以按照查询条件中的某项排列,而且这项可用数字表示,如:
select sno,count(*) ,avg(mark) from grades
group by sno
having avg(mark)>85
order by 3

9.其他
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')

10.关于有难度多重嵌套查询的解决思想:
如,选修了全部课程的学生:
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表中找,排除那些选了课的即可。

 

分享到:
评论

相关推荐

    SQL语句总结

    本文将深入探讨“SQL语句总结”这一主题,特别关注MySQL数据库的常用操作。 首先,我们从基础的数据库操作开始,即CRUD(Create、Read、Update、Delete),它们构成了所有数据库操作的核心。 1. **创建(Create)*...

    常用 SQL 语句大全+50个常用sql语句总结

    根据给定的文件信息,以下是对“常用 SQL 语句大全+50个常用sql语句总结”的详细解析,涵盖数据操作、数据定义、数据控制、事务控制以及程序化 SQL 等方面的重要知识点。 ### 数据操作 1. **SELECT**:用于从...

    通过分析SQL语句的执行计划优化SQL(总结)

    这篇博客"通过分析SQL语句的执行计划优化SQL(总结)"深入探讨了这一主题,下面将对其中的主要知识点进行详细阐述。 1. **执行计划的理解**: 执行计划是数据库管理系统在执行SQL语句之前预先生成的一种详细步骤,它...

    常用实用sql语句总结

    `SELECT`语句是最常用的SQL语句之一,用于从表中检索数据。 **示例代码:** ```sql SELECT * FROM test_table; ``` - `SELECT *`表示选择所有列。 - `FROM`后跟表名。 ### 删除表 (DROP TABLE) `DROP TABLE`语句...

    50个经典sql语句总结

    50个经典sql语句总结50个经典sql语句总结50个经典sql语句总结50个经典sql语句总结

    SQL语句总结,包括增删改查,建库,表,修改表结构,增删约束与字段等

    SQL 语句总结,包括增删改查,建库,表,修改表结构,增删约束与字段等 SQL 语句是关系数据库管理系统的核心组成部分,用于管理和操作数据库。下面是 SQL 语句的总结,包括创建数据库、创建表、修改表结构、增删...

    MYSQL常用基本sql语句总结

    本文档是有关于MySQL的最常用的sql语句,非常的方便查询和复习

    sql语句命令-sql语句命令sql语句命令

    总结来说,SQL语句命令在数据库操作中扮演着核心角色,而ADO.NET提供了SqlConnection、SqlCommand、SqlDataAdapter等类,使得与SQL Server和其他OLE DB兼容数据库的交互变得更加便捷。理解并熟练掌握这些工具,对于...

    实用总结SQL语句大全实用总结SQL语句大全.rar

    本资源“实用总结SQL语句大全”涵盖了SQL的基本概念、语法以及高级特性,旨在帮助用户全面理解和掌握SQL。 首先,SQL的核心在于查询。基本的查询语句`SELECT`用于从数据库中提取数据,可以配合`FROM`指定数据来源,...

    oracle的SQL语句调优总结

    oracle的SQL语句调优总结,Oracle语句优化53个规则详解。

    Delphi中sql语句的使用总结

    ### Delphi中SQL语句的使用总结 在Delphi中使用SQL语句是与数据库进行交互的重要手段之一。本文将详细介绍如何在Delphi环境中构造和执行SQL查询,并给出具体的示例来帮助理解。 #### 一、基本SQL查询的构建 在...

    自动生成SQL语句_C#_sql_

    总结,自动生成SQL语句在C#开发中是一项实用的技术,可以帮助我们简化数据库操作,提高代码的可读性和维护性。无论是使用ORM框架如Entity Framework,轻量级库如Dapper,还是手工构造或利用辅助库,都有其适用的场景...

    sql常用语句总结,增删改查等sql语句

    SELECT是最复杂的SQL语句,用于检索数据库中的数据。基础形式如下: ``` SELECT 字段 FROM 表名 WHERE 条件; ``` 查询所有学生的名字和年龄: ``` SELECT Name, Age FROM Students; ``` 如果只想查找年龄...

    Transact-SQL语句总结大全

    介绍了各种SQL语句与使用实例 Transact-SQL语句 语法大全2008-01-17 10:33语句 ----功能 --数据操作 SELECT --从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除...

    oracle监听执行sql语句

    #### 二、监听执行SQL语句的基本方法 1. **使用`v$session`和`v$sqlarea`视图** ```sql SELECT a.username, a.sid, b.SQL_TEXT, b.SQL_FULLTEXT FROM v$session a, v$sqlarea b WHERE a.sql_address = b....

    SQL 执行超长语句

    #### 二、超长SQL语句的问题及挑战 1. **可读性差**:随着SQL语句长度的增加,其可读性和可维护性会逐渐降低,这不仅影响开发效率,还可能导致错误的引入。 2. **性能瓶颈**:超长SQL语句往往包含大量嵌套查询或...

    存储过程中怎么动态执行sql语句

    ### 动态执行SQL语句在Oracle中的应用 #### 标题解读 “存储过程中怎么动态执行SQL语句”这一标题表明文章将介绍如何在Oracle数据库的存储过程中编写能够动态执行的SQL语句。动态SQL是指在运行时才能确定其具体内容...

    易语言动态拼接sql语句

    总结,易语言动态拼接SQL语句是其数据库操作中的重要组成部分,通过理解动态拼接的原理,注意安全问题,以及熟练运用易语言提供的数据库操作命令,我们可以构建出高效且安全的数据库应用程序。在实际项目中,应结合...

    SQLITE sql语句使用总结

    SQLite SQL 语句使用总结 SQLite 是一个软件库,用于实现自包含、非服务式、零配置、事务化的 SQL 数据库引擎。SQLite 直接读写原始的磁盘文件,一个拥有多个表、索引、触发器和视图的完整 SQL 数据库就包含在一个...

Global site tag (gtag.js) - Google Analytics