精华内容
下载资源
问答
  • 在查询语句中的from
    万次阅读 热门讨论
    2021-07-01 21:44:52
    select * from test.dbo.users    -- 普通条件查询
    where id=1;

    模糊查询

    	select * from test.dbo.users
    	where username like '%li%';

    范围查询

    	select * from test.dbo.users	-- id在1~3之间的数据
    	where id between 1 and 3;
    	
    	select * from test.dbo.users	-- id在1~3以外的数据
    	where id not between 1 and 3;

    子查询

    	select * from test.dbo.users	-- id为1或2或3的数据
    	where id in(1,2,3);
    	
    	select * from test.dbo.users	-- id不是1或2或3的数据
    	where id not in(1,2,3);

    排序

    	select * from test.dbo.users	-- 从小到大排序
        order by id asc;
        
        select * from test.dbo.users	-- 从大到小排序
    	order by id desc;

    更多相关内容
  • SQL语句——查询语句

    千次阅读 2022-03-06 21:17:19
    一、查询语句 查询语句的基本语法: select * from 表名 或 select 列名,列名... from 表名 注:select * 写法的效率低于 select 列名的写法 select 和 from之间写的内容: 1. 列名加运算符,进行运算。 ...

    一、查询语句

    查询语句的基本语法:

    select * from 表名

    select 列名,列名... from 表名

    注:select * 写法的效率低于 select 列名的写法

    select 和 from之间写的内容:

    1. 列名加运算符,进行运算。

    null值和任何数值做运算的结果都是null 

    附加:null值和任何字符串连接,结果都是相当于和“”连接

    使用 ifnull 函数处理null值的运算 ,Oracle数据库中是nvl函数

    -- 查询学生姓名,余额-200的值
    select sname,amt-200 from student
    -- 如果运算的列含有null值,要处理null值保证运算结果的正确
    -- 使用一个mysql的函数进行处理,ifnull函数
    -- 函数直接调用,函数一定有结果
    -- IFNULL(expr1,expr2) 如果expr1是null那么函数的结果就是expr2 ;否则结果就是expr1
    select sname,IFNULL(amt,0)-200 from student

    附加函数解释

    concat函数:MySQL中是连接字符串的,在Oracle数据库中使用 || 连接字符串

    2.为结果集的列定义别名

    select sname as n,IFNULL(amt,0)-200 as 余额 from student

    注:as可以省略

    select sname n,IFNULL(amt,0)-200 余额 from student

     3. distinct关键字:去掉重复的行数

    select distinct sname,birthday from student
    -- 查询出有学生的班级编号
    select distinct classid from student
    

    二、条件查询

    根据查询条件,查询出部分记录行的数据

    语法:

    select * from 表名 [where 布尔表达式]

     也就是 布尔表达式的结果是true,这行数据才能显示才结果集中

    例如:

    -- 查询姓名是jack的学生的所有信息
    select * from student where sname='jack'
    

    三、查询条件

    1.比较运算的条件:: = 、>、< 、= 、!=或<>

    -- 查询姓名不是jack的学生的所有信息
    select * from student where sname<>'jack'

    2.逻辑运算条件:and、or、not

    select * from student where not sname='jack'
    -- 余额在100~500之间的学生信息
    select * from student where amt >= 100 and amt <= 500
    -- 余额大于100的 或 身高大于 1.7
    select * from student where amt>=100 or height>=1.7
    -- and的优先级高于or
    select * from student where amt>=100 or height>=1.7 and birthday > '2000-01-01'

    and的优先级高于or,也可以使用小括号强制优先级

    3. between ... and ... 数值范围条件

    -- 余额在100~500之间的学生信息
    select * from student where amt between 100 and 500
    

    4.匹配条件/查询条件模糊的

    使用like关键字 和 两个符号 % 、_ 组合使用

    %和like组合使用代表 0个或更多个

    _和like组合使用代表 单个任意字符

    例如:

    -- 查询名字以rose开头的
    select * from student where sname like 'rose%'
    -- 查询名字不是rose开头的
    select * from student where sname not like 'rose%'
    -- 查询名字含有o的学生
    select * from student where sname like '%o%'
    -- 查询名字第二个字母是o的
    select * from student where sname like '_o%'
    

    5.in关键字,集合列表范围查询

    -- 查找姓名是jack、rose、tom的学生信息
    select * from student where sname = 'jack' or sname = 'rose' or sname = 'tom'
    select * from student where sname in ('jack','rose','tom')
    

    6. 空值的判断条件

    -- 生日为空的学生信息
    select * from student where birthday is null
    select * from student where birthday is not null

    注:where 语句中不能使用别名 

    四、排序

    排序语句是对查询结果集的排序

    使用order by 语句排序

    语法:

     查询语句的最后 order by 列名或别名,列名或别名

     排序的列名后面默认是asc关键字,代表升序desc关键字是降序

    -- 查询学生信息,按姓名排序,降序
    select * from student order by sname desc
    -- 使用别名排序
    select sname n from student order by n
    -- 组合排序 按身高的升序排序,再按余额的降序排序
    select sname,height,amt from student order by height,amt desc

    五、limit关键字:限定查询记录

    limit语句是在order by 的后面,可以对查询结果条数进行限定

    select sname,height,amt from student limit 3
    -- 等同于
    select sname,height,amt from student limit 0,3
    -- 从第1条开始(条数从0开始的)找3条
    select sname,height,amt from student limit 1,3

    注:分页功能就是用limit实现的

    六、分组查询

    对查询的数据进行分组,进行一些统计分析的工作。

    分组函数/聚合函数

    sum()、avg()、max()、min()、count()

    select sum(height),avg(height),max(height),min(height),count(height) from student

    count(height) 计算身高不为null的记录数,那么要计算学生表中有多少条记录:

    select count(0) from student

    mysql数据库中分组函数不能嵌套;oracle数据库分组函数最多嵌套两层

     查询结果进行分组查询

    使用group by  列名,列名....

    -- 计算各个班级中的最高身高
    select max(height) from student group by classid

    下面的SQL语句的数据是不正确的:sname并没有再group by 子句中

    -- 计算各个班级中的最高身高
    select sname,max(height) from student group by classid
    

    与分组函数一起查询的列,一定要在group by子句中

    select classid,max(height) from student group by classid

    对两列进行分组查询

    -- 计算各个班级中男生和女生的最高身高
    select max(height) from student group by classid,sex;
    select max(height) from student group by sex,classid

    两条语句在结果上是没有区别的

    group by中可以使用别名

    select classid cid,sex s,max(height) from student group by cid,s;

    注:在where语句中不能使用分组函数,可以在having语句中使用分组函数

     要做分组函数的条件时,写在having中,不是分组函数的条件写在where中

    -- 计算班级平均身高大于1.72的班级
    select classid,avg(height) from student
    group by classid
    having avg(height) > 1.72

    七、where和having的区别

    where中不能使用分组函数的条件,having中可以使用

    where是对每条表记录的条件限定,having是对结果集记录的条件限定。

    select classid,avg(height) from student
    group by classid
    having classid>0
    
    select classid,avg(height) from student
    where classid>0
    group by classid
    -- 上面两条语句的区别:
    -- 语句1:student表的所有记录按班级分组,计算多个分组的值,对结果集进行having的条件限定获得两条
    -- 语句2:student表的班级id大于0的记录按班级分组,计算多个分组的值,获得两条
    

    八、多表连接查询

    当查询的列或使用的条件的列,如果在多张表中,可以使用多表连接查询方式。

    1. 等值连接

    等值连接时,将两张表的所有记录进行组合(笛卡尔积)。组合的数据有一部分是不正确的,要通过查询条件查询出 正确的组合。

    -- 查询学生和班级的信息
    select * from student,class c
    where classid = c.id
    -- 查询学生姓名,和班级名称
    select sname,cname from student,class c
    where classid = c.id
    -- 查询学生所有信息,和班级名称
    select s.*,cname from student s,class c
    where classid = c.id

    多张表的多表连接查询

    -- 查询员工姓名、部门名称、在部门中的工作年限
    select empname,dname,worktime from employee e,department d,work w
    where e.empid = w.empid and d.deptno = w.deptno
    order by empname
    -- 计算员工在公司工作了多少年
    select empname,sum(worktime) from employee e,department d,work w
    where e.empid = w.empid and d.deptno = w.deptno
    group by empname
    having sum(worktime)>2
    -- 计算部门曾经有多少个员工工作过,显示部门名称和员工数量
    select dname,count(0) from work w,department d
    where d.deptno = w.deptno
    group by w.deptno

    2. 不等值连接

    -- 查询员工姓名,部门名称 和 年限等级名称
    select empname,dname,name from employee e,department d,work w,yearlevel y
    where e.empid = w.empid and d.deptno = w.deptno and worktime between low and height

    3. 内连接

    内连接的结果和等值/不等值连接的结果是相同的。只是写法不同

    -- 查询员工姓名、部门名称、在部门中的工作年限
    select empname,dname,worktime from work w
    inner join employee e on e.empid = w.empid
    inner join department d on d.deptno = w.deptno
    order by empname
    -- 查询年龄大于30岁的员工姓名、部门名称、在部门中的工作年限
    select empname,dname,worktime from work w
    inner join employee e on e.empid = w.empid and age>30
    
    inner join department d on d.deptno = w.deptno
    order by empname;
    
    select empname,dname,worktime from work w
    inner join employee e on e.empid = w.empid
    inner join department d on d.deptno = w.deptno
    where age>30
    order by empname
    
    -- 计算员工在公司工作了多少年
    select empname,sum(worktime) from work w
    inner join employee e on e.empid = w.empid
    inner join department d on d.deptno = w.deptno
    group by empname
    having sum(worktime)>2
    -- 计算部门曾经有多少个员工工作过,显示部门名称和员工数量
    select dname,count(0) from work w
    inner join department d on d.deptno = w.deptno
    where d.deptno = w.deptno
    group by w.deptno
    -- 查询员工姓名,部门名称 和 年限等级名称
    select empname,dname,name from work w
    inner join employee e on e.empid = w.empid
    inner join department d on d.deptno = w.deptno
    inner join yearlevel on worktime between low and height

    注:内连接/等值/不等值连接问题:只会显示符合连接条件的数据,不会显示所有的数据

    4. 外连接

    外连接后,可以查询一个表的所有记录。外连接分为左外连接和右外连接,无论是哪种连接,都会显示左表的所有 记录。例如,A表左外连接B表,那么A表就是左表;B表右外连接A表,那么A表就是左表。

    左外连接写法:

    -- 查询学生和班级的信息 显示所有的学生记录
    select * from student s
    left outer join class c on s.classid = c.id
    -- 查询所有的班级及班级中的学生
    select * from class c
    left outer join student s on s.classid = c.id
    -- 连接多个表时,左外和内联一起写 ,学生表不是左表了
    select sname,room from student s
    left outer join class c on s.classid = c.id
    inner join room r on r.id = c.roomid
    

    5. 自连接

    表自己连接自己,就是自连接

    -- 查询学生姓名和班长姓名
    select * from student s
    left outer join student k on s.classking = k.id
    -- 查询所有学生的上课地点 和 其班长的上课地点
    select s.sname,m.room,k.sname,km.room from student s
    left outer join class c on s.classid = c.id
    left outer join room m on c.roomid = m.id
    left outer join student k on s.classking = k.id
    left outer join class kc on k.classid = kc.id
    left outer join room km on kc.roomid = km.id

    九、子查询

    一个查询语句的结果作为另一个查询语句的条件

    -- 查询和rose身高相同的学生
    -- 外层的是主查询,括号里的是子查询
    select sname,height from student
    where height = (select height from student where sname = 'rose')
    and sname != 'rose'
    

    主查询每进行一行的条件检索,就执行一次子查询语句,如果主查询检索5行,子查询检索4行,一共检索20行 。子查询效率低,但子查询几乎可以解决所有查询需求。

    子查询分为单行子查询和多行子查询

    子查询的结果只有一行就是单行子查询;反之就是多行子查询

    对单行子查询的操作只能是比较操作

    对多行子查询的修饰可以是

    in:

    select sname,height from student
    where height in (select height from student where sname = 'rose')

    any:

    任意一个,只要任意一个符合条件

    -- 查询 比2班其中任意一个学生高的学生
    select sname,height from student
    where height > any(select height from student where classid = 2)
    and classid != 2

    all:

    所有的,要满足子查询所有结果的条件

    -- 查询 比2班所有学生高的学生
    select sname,height from student
    where height > all(select height from student where classid = 2)
    and classid != 2
    

    exists:

    exists修饰的子查询,如果查询出记录,结果是true,没有查询记录,结果是false

    -- 未结课班级的学生
    select sname,classid from student
    where classid in (select id from class where flag = '0')
    -- exists语句替换,效率高于 in语句的子查询
    select sname,classid from student s
    where exists (select 0 from class c where flag = '0' and s.classid = c.id)

    in的子查询 要 替换为exists子查询,效率高

    替换的模板写法为

    select * from A
    where a1 in (select b1 from B)
    -- 替换为exists
    select * from A a
    where exists(select 0 from B b where a.a1 = b.b1)

    展开全文
  • 同样的一条sql语句select * from (select ename from emp);,mysql执行会报错,错误如下: [SQL] select * from (select ename from emp); [Err] 1248 - Every derived table must have its own alias 如果...

    我这里只谈论Oracle和mysql,因为我只会这两种数据库,O(∩_∩)O哈哈~

    结论:

    mysql中需要加,而Oracle中可以不加

    证明:

    同样的一条sql语句select * from (select ename from emp);,在mysql中执行会报错,错误如下:

    [SQL] select * from (select ename from emp);
    [Err] 1248 - Every derived table must have its own alias
    

    如果在Oracle中执行则不会报错,结果如下:
    在这里插入图片描述
    如果上面那条sql语句加上别名,那mysql中也可以正常执行了,如下所示:
    在这里插入图片描述
    而Oracle中就不用演示了,肯定可以正常执行

    展开全文
  • 各种数据库的分页查询语句

    千次阅读 2021-05-07 01:48:36
    各种数据库的分页查询语句 1.oracle数据库分页select * from (select a.*,rownum rc from 表名 where rownum=endrow) a where a.rc=startrow2.DB2数据库分页Select * from (select rownumber() over() as rc,a.* ...

    5268f80b9b1e01f982625ef6fac83ca1.png

    各种数据库的分页查询语句 1.oracle数据库分页select * from (select a.*,rownum rc from 表名 where rownum=endrow) a where a.rc=startrow2.DB2数据库分页Select * from (select rownumber() over() as rc,a.* from (select * from 表名 order by 列名) as

    各种数据库的分页查询语句

    1.oracle数据库分页

    select * from (select a.*,rownum rc from 表名 where rownum<=endrow) a where a.rc>=startrow

    2.DB2数据库分页

    Select * from (select rownumber() over() as rc,a.* from (select * from 表名 order by 列名) as a) where rc between startrow and endrow

    3.SQL Server 2000数据库分页

    Select top pagesize * from 表名 where 列名 not in(select top pagesize*page 列名 from 表名 order by 列名) order by 列名

    4.SQL Server 2005数据库分页

    Select * from (select 列名,row_搜索number() over(order by 列名1) as 别名from 表名) as t where t.列名1>=startrow and t.列名1<=endrow

    5.MySQL数据库分页

    Select * from 表名 limit startrow,pagesize

    (Pagesize为每页显示的记录条数)

    6.PostgreSQL数据库分页

    Select * from 表名 limit pagesize,offset startrow

    (Pagesize为每页显示的记录条数.)

    7.通用模式select * from (

    select * from tb_student where sid not in(

    select sid from tb_student where rownum<=(currentPage-1)*pageSize)

    ) where rownum <=pageSize;

    1428d0e076c3959ab11d28a39bc84fab.png

    5268f80b9b1e01f982625ef6fac83ca1.png

    本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

    本文系统来源:php中文网

    展开全文
  • 查询语句中select from where group by having order by的执行顺序 1.查询中用到的关键词主要包含六个,并且他们的顺序依次为 select–from–where–group by–having–order by 其中select和from是必须的,其.....
  • 【MySQL】Select * From查询语句集合

    万次阅读 多人点赞 2020-08-12 15:16:55
    查询student表的所有记录的sname,ssex,class列 select SNAME,SSEX,CLASS from student;...查询Score表成绩60到80之间的所有记录 select * from score where degree between 60 and 80; 查询Score.
  • 数据库的查询语句

    千次阅读 2022-04-28 19:42:48
    一、温馨提示 ...2、dos窗口输入一个指令,模糊查询当前mysql数据库所有带有"character"字符集的变 量全部出来 SHOW VARIABLES LIKE '%character%' ; 3、dos窗口需要修改 set char...
  • mySQL查询语句

    千次阅读 2022-03-24 17:45:26
    MySql查询语句整理
  • 数据库查询语句中的排序

    千次阅读 2021-07-02 16:34:15
    1.排序查询语法 排序查询语法: select * from 表名 order by 列1 asc|desc [,列2 asc|desc,...] 语法说明: 先按照列1进行排序,如果列1的值相同,则按照列2排序,以此类推 asc从小到大排序,即升序 desc从大到小...
  • oracle 基本查询语句及实例

    千次阅读 2021-05-02 04:02:48
    1、查询所有列select * from 表名;...4、racle查看所有表和字段获取表:select table_name from user_tables; //当前用户的表select table_name from all_tables; //所有用户的表select table_name ...
  • SQL语句中查询数据

    千次阅读 2022-03-20 15:20:58
    查询数据数据库的操作相当重要的,项目实训中查询是经常要用到的,所以掌握数据库的查询是基本要求。 什么是数据库? 数据库表示存储数据库所有数据的对象。,数据按行和列格式逻辑组织,类似电子表格...
  • Mysql查询语句大全

    千次阅读 多人点赞 2022-01-16 14:23:41
    解析:从 student 表中查询 name 与 age ## 条件查询 语法:select 字段 from 表名 where 条件; 举例:select name from student where age = 15; 解析:从 student 表中查询 age = 15 的 name ## 模糊查询 语法...
  • sql from后面跟select语句查询

    千次阅读 2019-09-01 09:42:55
    工作碰到这样一种sql写法:select id,name from (select id,name from student where name = '') as s;一直没有明白其中from后面子查询的意思,今天特意找资料看了看,将心得写下来: 其实就是把子查询的...
  • 常用数据库查询语句

    千次阅读 2021-01-06 21:32:40
    常用数据库查询语句 基本查询 select 字段1, 字段2,…from 表名; 例如:select id , name from stu; 条件查询 select 字段1, 字段2,…from 表名 where 字段 关系符号 值 ; 关系符号 < = >= <= != 大于 等于 ...
  • SQL Server 查询语句

    千次阅读 2022-03-06 19:02:42
    ,数据按行和列格式逻辑组织,类似于电子表格(Excel),每行代表一个唯一记录,每列代表记录的一个字段。 例如,customers表包含客户数据,如客户标识号,名字,姓氏,电话,电子邮件和地址信息,...
  • MySQL简单的查询语句

    千次阅读 2021-02-02 15:07:31
    1、查询特定列:select 列名 from 表名;(必须先进入数据库)或者 select 列名 from 数据库.表名;2、查询多个列:select 列1,列2,。。。 from 表名;3、除去重复列查询:select distinct 列名 from 表名;4、设定...
  • MongoDB常用28条查询语句(转)

    千次阅读 2022-07-03 17:14:08
    转自:MongoDB常用28条查询语句 1、查询所有记录 db.userInfo.find(); 相当于: select* from userInfo; 默认每页显示20条记录,当显示不下的情况下,可以用it迭代命令查询下一页数据。注意:键入it命令不能带“;”...
  • oracle查询语句if

    千次阅读 2021-05-01 03:10:01
    oracle语句查询or和andSELECT*FROMPersonsWHERE(FirstName='(FirstName='Thomas' OR FirstName='William') AND LastName='Carter' 会得到 lastname 必须为 carter ,firstname 为 thomas 或者 william的人 thomas ...
  • 数据库查询语句关键字总结

    千次阅读 2021-01-19 13:39:09
    看过牛腩视频后,前17集讲后台代码的编写,尤其讲到查询语句的时候,顿时感觉原来学习过的查询语句中用到的关键字烟消云散了,啥都不记得了,通过看视频,帮着回忆了一部分,这里总结一下,查询语句中用到的关键字...
  • Mongodb常用查询语句_笔记

    千次阅读 2020-08-20 20:25:54
    工作会使用到Mangodb数据库,这是一个非关系型数据库,所以它的一些查询语句跟sql会不太一样,一时半会不能马上写出来,因此做了一些笔记,希望做出一些输出的内容。 提示:以下是本篇文章正文内容,下面案例可供...
  • SQL语句中的嵌套子查询

    万次阅读 多人点赞 2019-06-20 21:29:52
    SQL语句;相关子查询;求选修了所有课程的学生的学号
  • SQL查询语句详解

    千次阅读 2020-10-26 11:48:42
    SQL查询语句详解(一) 一、基本语法 Select select_list From table_name Where condition_expression Group by group_columns having condition_expression Order by sort_columns 二、查询实例 查询所有字段 ...
  • sqlwhere查询语句中使用变量

    万次阅读 2018-04-10 18:10:03
    好气啊,sql语句在查询变量时一直使用的是字符串模板${变量},可是这次查询一个日期时,却失败了,如:2018-04-13 最后在网上终于找到解决办法了 如下: "select * from records where brr_time='"+ ...
  • sql语句中左连接查询的使用

    千次阅读 2020-07-01 20:29:10
    这里是一条左连接的查询语句 select * from SXS_BOOK_INFO a left join SXS_TEST_BOOK b on a.book_name = b.book_name 查询之后的效果: 上述查询查询两个表书名(字段名:book_name)相同的左连接查询,于是...
  • 数据库查询语句大全

    千次阅读 2021-01-21 15:49:04
    select * from 表名 where to_days(时间字段名) = to_days(now()); 2、昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1 3、近7天 SELECT * FROM 表名 where DATE_SUB...
  • SQL简单的查询语句之模糊查询

    千次阅读 2020-10-29 15:58:10
    sql,可以根据某些特定的条件进行模糊查询,比方说要查找咦某个字母开头的昵称,或者一组类似的数据等。我们用字段like表示相似,来进行模糊查询模糊查询中,%表示任意字符,_表示一个字符。 下面直接上...
  • bitsCN.com一条sql语句实现统计查询如图:程序员进行如下的统计时,现在提供两种实现方案:方案一:运用 SEKECT CASE WHENEXPLAIN SELECT count(*) AS '总数', count( CASE oup.status WHEN '1' THEN oup.id END )...
  • sqlwhere查询语句中使用文本值、数值、变量
  • SQL语句——查询

    万次阅读 多人点赞 2021-01-05 18:05:30
    查询语句(SELECT)是数据库最基本的和最重要的语句之一,其功能是从数据库检索满足条件的数据。查询的数据源可以来自一张表,也可以来自多张表甚至来自视图,查询的结果是由0行(没有满足条件的数据)或多行...
  • Sql语句中select from等结构的执行顺序

    千次阅读 2018-09-04 10:00:50
    sql语句的分类:  DDL:数据库定义语言,...DQL:数据库查询语言,查询数据库的记录(select from) DCL:数据库控制语言,数据库权限和安全级别的控制(grant revoke) sql语句的编写顺序: SQL语句的编写...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,644,233
精华内容 657,693
热门标签
关键字:

在查询语句中的from