SQL文练习

查询中用到的关键词主要包含六个,并且他们的顺序依次为 

select -- from -- where -- group by -- having -- order by 

 

 

如:当职员工资小于或等于 2000美元时,就返回信息“过低”,大于或等于 4000美元时,就返回消息“过高”,如果在这两者之间,就返回“ok”。
select name,sal
case
 when sal <= 2000 THEN ‘过低‘
 when sal >= 4000 THEN ‘过高‘
 ELSE  ‘OK‘
END AS stats FROM emp WHERE deptno = 10;
 
工资分档次统计人数:
SELECT 档次,count(*) AS 人数
    FROM(SELECT (CASE
         WHEN sal<=1000 THEN ‘0000-1000‘
         WHEN sal<=2000 THEN ‘1000-2000‘
         WHEN sal<=3000 THEN ‘2000-3000‘
         ELSE ‘好高‘  END)  AS 档次,ename,sal FROM emp)
   GROUP BY 档次
   ORDER BY 1 ;
 
进行抽查的时候要求只返回两条数据中的第二行
SELECT * FROM(SELECT rownum AS sn,emp.* FROM emp WHERE rownum <=2) WHERE sn=2;
//rownum是一次对数据进行标识,必须先有第一名再有第二名
 
进行抽查的时候要求只返回两条数据
SELECT * FROM emp WHERE rownum<=2;
 
从表中随机返回N条记录(用dbms_random 来对数据进行随机排序,然而取其中的三行)
SELECT empno,aname
    FROM(SELECT empno,ename FROM emp ORDER BY dbms_random.value())
WHERE  rownum <= 3;
 
常见的模糊查询(查出vname中包含字符串“CED”的)
SELECT *  FROM  v  WHERE  vname  LIKE ‘%CED%‘;

查出vname中包含字符串“_BCE”的
错误:SELECT * FROM  v  WHERE vname  LIKE   ‘_BCE%‘;
正确:SELECT * FROM v  WHERE  vname  LIKE  ‘\_BCE%‘   ESCAPE ‘\‘;
因为在LIKE语句中%和_都是通配符,我的理解就是个数不同而已

查出vname包含字符串“_/BCE”
错误:SELECT   *  FROM     v    WHERE   vname  LIKE   ‘_\BCE%‘  ESCAPE ‘\‘ ;
正确:SELECT   *  FROM     v    WHERE   vname  LIKE   ‘_\\BCE%‘  ESCAPE ‘\‘ ;
结果:_\BCDF
解释:双写转义字符,百分号和下划线的处理方式一样
按照第三列顺序排序:
SELECT EMPNO,ENAME,HIREDATE   FROM emp WHERE deptno=10 ORDER BY 3 ASC;
按照部门编号升序,并按工资降序排列:
SELECT empno,deptno,sal,ename,job FROM emp ORDER BY  2  ASC, 3  DESC;
替换字母字符串
SELECT TRANSLATE(‘ab 你好 bcadefg‘ , ‘abcdefg‘ , ‘1234567‘) AS   NEW_STR    FROM   DUAL;
按照字母和数字的混合列中的字母排序 data:6767ADAMS → ename:ADAMS
SELECT data,translate(data,‘-0123456789‘,‘-‘) AS ename  FROM v ORDER BY 2 ;
思路:先将列中字母,也就是取出排序的依据另成一列ename,然后在排序,把数字和字母都替换为空;
查询每个月倒数第二天入职的员工信息
select 信息
feom 表
where 时间列= last_day(时间列)-1
查询 last_name 等于chen的manager信息 ---- lower表示把字符都编程小写
select 信息
from 表
where lower(last_name)=‘chen‘
通过一条sql查询自连接
select m.*
from employess e,employess m
where e.manager_id = m.manasger_id and e.last_name = ‘chen‘
通过sql查询子查询
select *
from employess
where employess_id = (
select  manager_id
from employess
 where last_name = "chen")
查询平均工资高于8000的部门id和平均工资(使用 having 原因就是 where 关键字无法和合计函数一块使用)
select employess_id , avg(salary)
from employess
group by employess_id
HAVING avg(SALARY)>8000

查询平均工资最低的员工信息
select *
from employess
where employess_id = (
        select employess_id
        from employess
        group by employess_id
        having salary = min(avg(salary))
)
 
时间: 2024-10-12 15:23:11

SQL文练习的相关文章

UNION函数的使用以及SQL文的高效编辑方法

查找SELECT 相同列的情况下,例如选择一个月每一天的某几项数据,相当于查询一个月三十行数据,为了在一个表中显示就要使用union函数. eg: SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time LIKE '2018-05-01%' AND act = '1005001001' UNION ALL SELECT COUNT(DISTINCT uid) AS c FROM da_track WHERE data_time

SQL文(UNION)

[2014/10/14 0:20] 数据库软件到期了,但是又想记忆一下UNION ~ORDER BY的用法. 连接数据库 start mysql -u root (没有设置密码) 查看数据库中的数据库 show databases; 选择test数据库 use test; 创建一个数据库(这样写好看点) String SQl="CREATE TABLE milk("+ " ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY ," +

VB读取sql文并删除

Private Sub UpdateTask() Dim connStr As String = ConfigurationManager.connectionStrings("TaxSoftwareConnection").ToString() if File.Exists(path) Dim file As FileInfo=New FileInfo(path) Dim sr As StreamReader = file.OpenText() Dim script As Strin

文顶顶iOS开发博客链接整理及部分项目源代码下载

文顶顶iOS开发博客链接整理及部分项目源代码下载 网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程却很难找.如果你是初学者,在学习了斯坦福iOS7公开课和跟着文顶顶的博客做项目之后,最快只需要2个月时间,就基本可以独立完成iOS App的开发工作.有经验的开发者也可以在该博客中寻找代码片段进行学习借鉴,必有所收获. 在此也向@文顶顶 表示严重感谢! 由于文顶顶博客博文繁多,每次找文章需要频繁的翻页,

LINQ To SQL 语法及实例大全

LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句. Where操作包括3种形式,分别为简单形式.关系条件形式.First()形式.下面分别用实例举例下: 1.简单形式: 例如:使用where筛选在伦敦的客户 var q = from c in db.Customers where c.City == "London" select c

批量生成表Create SQL 示例 Generate SQL Create Scripts for existing tables with Query

有时候,我们想要快速获取数据库中某个表的结构,或者是对应的SQL文. DDL: CREATE TABLE [dbo].[WorkOut]( [WorkOutID] [bigint] IDENTITY(1,1) NOT NULL, [TimeSheetDate] [datetime] NOT NULL, [DateOut] [datetime] NOT NULL, [EmployeeID] [int] NOT NULL, [IsMainWorkPlace] [bit] NOT NULL, [Dep

SQL Cursor 基本用法

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 table1结构如下 id int name varchar(50) declare @id int declare @name varchar(50) declare cursor1 cursor for --定义游标cursor1 select * from table1 --使用游标的对象(

Sql面试常考题(持续添加)

最近萌生换工作的念头,于是上网下载了一些公司的面试题,重新看了面试题中的Sql部分,这些查询题有时候只是兜一个弯角来考,对于给EF惯坏的孩子来说还是有点难度的(给面试官鄙视了几下的结果),所以列出最近感觉比较有意思的Sql查询题. 1.查询出子节点最多的NodeName,如下图的table, NodeName 子节点 节点1 1 节点2 2 节点3 1 节点3 1 节点3 1 节点4 2 节点4 3 1 declare @t table( id int ,NodeName varchar(50

NO2:自动生成sql语句

SQL语句自动生成工具 大哉乾元 2016/2/26   作者原创转载请注明出处 前言 这个程序是几年前做成的,现在整理成文档和大家分享,当时参与的项目中大量使用的sql语句,所以SqL语句的代码输入占了较大的比例,为了提高sql语句的书写正确性和输入效率,做成了这个自动生成工具. 一:ADO.NET中执行sql文,对应的sql语句嵌入到vb.net的代码内,分析sql的语法格式个特点: 已检索语句为例分析: A:必须是已select开头 B:检索的字段名(一些系统函数:可选,例如max,sum