精华内容
下载资源
问答
  • 在千万条数据的数据表中, 使用select count(distinct...应该使用 select count(*) from (select distinct col_name,... from table) as temp; 这样的查询时间将大大的缩短。   详细分析 讨论分析      ...

    在千万条数据的数据表中,

    使用select count(distinct col_name,...) from table;使用的查询时间太大

    应该使用 select count(*) from (select distinct col_name,...  from table) as temp; 这样的查询时间将大大的缩短。

     

    详细分析

    讨论分析

     

     

     

    展开全文
  • ORACLE数据库-查询语句SELECT

    千次阅读 2017-07-31 22:05:41
    本文自己总结的写了ORACLE的SELECT的一些简单语法,希望对大家有用哦!
    ---------查询语句
    --完整语法描述:
    --SELECT [ALL|DISTINCT] TOP n[PERCENT] WITH TIES select_list
    --[INTO[new table name]]
    --[FROM{table_name|view_name}[(optimizer_hints)]
    --[,{table_name2|view_name2}[(opyimizer_hints)]
    --[...,table_name16|view_name16][(optimizer hints)]]]
    --[WHERE clause]
    --[GROUP BY clause]
    --[HAVING clause]
    --[ORDER BY clause]
    --[COMPUTE clause]
    --[FOR BROWSE]
    ----------简单查询(仅含有SELECT和FROM 子句的查询是简单查询)
    --显示表中的所有行和列
    SELECT * FROM EMP;
    --1.使用FROM 子句指定表
    SELECT * FROM EMP,DEPT;--FROM后接多个表,按笛卡尔积来显示
    --2.使用SELECT指定列
    SELECT EMPNO,ENAME FROM EMP;--可以通过改变列的顺序来显示查询结果,甚至可以多次指定同一列
    SELECT EMPNO,LOC FROM EMP,DEPT;--这生成的也是笛卡尔积,只不过只选了两列
    --3.算数表达式
    --SELECT语句中可以包括(加减乘除和括号的算术运算符)
    SELECT EMPNO,ENAME,SAL*(1+0.1) FROM EMP;--给员工加薪百分之十
    SELECT EMPNO "编号" FROM EMP;
    SELECT EMPNO 编号 FROM EMP;
    SELECT EMPNO AS 编号 FROM EMP;--都可以给表里的列添加上标题,不过最好不用汉语名字,如果列标题里含有一些特殊符号如空格,则指定的列标题必须用双引号括起来;
    SELECT EMPNO AS A A FROM EMP;--ORA-00923: 未找到要求的 FROM 关键字,因为列标题中加了空格;
    SELECT EMPNO AS "A A" FROM EMP;--加上双引号这样就可以了
    --4.DISTINCT关键字
    --如考勤记录表中仅显示考勤人员而不显示时间时,人员的名字会有很大的重复
    --这时需要DISTINCT关键字来去除结果集中重复的行
    SELECT DISTINCT DEPTNO FROM EMP;--显示了EMP表中有员工的部门号
    SELECT DEPTNO FROM EMP;--返回了EMP表中该列的所有值
    --------WHERE子句
    --WHERE子句用于筛选从FROM子句中返回的值,完成的是选择操作;
    --WHERE将对FROM子句指定的数据表进行判断,只有满足WHERE子句判断条件的行才会显示,不满足WHERE条件的不包括在结果集中;
    --WHERE子句位于FROM之后
    SELECT ENAME FROM EMP WHERE SAL>1500;
    --1.条件表达式
    --A=B,A>B,A<B,A!=B 或A<>B,A LIKE B ,其中LIKE 是匹配运算符,"%" 代表0,1,或多个任意字符,"_"代表一个任意字符;
    --NOT <条件表达式> 它用于对结果取反;
    如查询EMP表中名字里有"S"的员工姓名;
    SELECT ENAME FROM EMP WHERE ENAME LIKE'%S%';
    --2.连接运算符
    --AND 在其左右的条件都为TRUE时,AND 运算符才返回TRUE;OR 在其左右的条件有一个为TRUE 就返回TRUE值;
    SELECT * FROM EMP WHERE SAL>2000 AND DEPTNO=20;
    SELECT * FROM EMP WHERE SAL>2000 OR DEPTNO=20;
    SELECT * FROM EMP WHERE DEPTNO=10 OR DEPTNO=30;--ORACLE 有优先级判断顺序的,可以通过加括号将表达式括起来,增加可读性;
    --3.NULL值
    --用来描述记录中没有定义内容的字段值,判断某个条件时,返回值可能为TRUE,FALSE,UNKNOWN;
    SELECT * FROM EMP WHERE COMM IS NULL;
    如下面的例子:
    CREATE TABLE DEPARTMENTS(DEPARTMENT_ID VARCHAR2(10),DEPARTMENT_NAME VARCHAR2(10),MANAGER_ID VARCHAR(10));
    INSERT INTO DEPARTMENTS(DEPARTMENT_ID,DEPARTMENT_NAME,MANAGER_ID) VALUES(30,'数据库',NULL);
    SELECT DEPARTMENT_ID,DEPARTMENT_NAME,MANAGER_ID FROM DEPARTMENTS WHERE MANAGER_ID = NULL;--没有结果,证明不能使用"=" ;
    SELECT DEPARTMENT_ID,DEPARTMENT_NAME,MANAGER_ID FROM DEPARTMENTS WHERE MANAGER_ID IS NULL;--这个表达才对,用"IS NULL" 和"IS NOT NULL";
    --ORDER BY 子句,对检测到的结果进行排序
    --SELECT 列名 FROM  表名 ORDER BY [(要排序的列,ASC,DESC)];
    ASC为默认排序,且它为升序排列;DESC为降序排列;
    如:SELECT EMPNO,ENAME,SAL FROM EMP WHERE SAL>2000 ORDER BY SAL DESC;
    如果需要对多个列进行排序,只需要在 ORDER BY 子句后指定多个列名。这样当输出排列结果时,首先根据第一列进行排序,
    当第一列的值相同时,再对第二列进行比较排序。比如,先对job排序,然后再排sal这样就可以使雇员的薪资分工种显示;
    select * from emp for update;--更新表数据
    --GROUP BY 子句
    --在查询结果集中对记录进行分组,以汇总数据或者分组显示单行的汇总信息;
    --使用GROUP BY 子句和统计函数,可以实现对查询结果中每一组数据进行分类统计
    常用统计函数:COUNT()---返回找到的记录行数;
    MIN()---返回一个数字列或是计算列的最小值;
    MAX()---最大值;
    SUM()---计算总和;
    AVG()---平均值;
    在使用 group by 子句时,必须满足下面的条件:
    1.在SELECT子句的后面只可以有两类表达式,统计函数和进行分组的列名;
    2.在SELECT子句中的列名必须是进行分组的列,除此之外添加其他的列都是错误的;
      但是 group by 子句后面的列名可以不出现在SELEECT子句中;
    3.如果使用了 WHERE 子句,那么所有参加分组计算的数据必须首先满足 WHERE 子句指定的条件;
    4.在默认情况下,将 group by 子句指定的分组列升序排列,如需重新排序,可以使用 ORDER BY 子句指定新的排列顺序;
    SELECT 子句中包含了未参与分组的列,会报错:
    SELECT JOB,SUM(JOB),DEPTNO FROM EMP WHERE SAL>2000 GROUP BY DEPTNO;
    --ORA-00979: 不是 GROUP BY 表达式
    --GROUP BY 子句对多个列进行分组,在这种情况下,GROUP BY 子句将在主分组范围内进行二次分组;
    如:对各个部门中的各个工种类型进行分组;
    SELECT DEPTNO,JOB,AVG(SAL),SUM(SAL),COUNT(*) FROM EMP GROUP BY DEPTNO,JOB;
    在 group by 子句中还可以加上 ROLLUP 和 CUBE,这两个运算符在功能上非常类似,
    group by 子句中使用它们后,都会在查询结果中附加一行汇总信息;
    如:SELECT JOB,AVG(SAL),SUM(SAL),MAX(SAL),COUNT(*) FROM EMP GROUP BY ROLLUP(JOB);--最后一行多了个汇总行
    SELECT JOB,AVG(SAL),SUM(SAL),MAX(SAL),COUNT(*) FROM EMP GROUP BY CUBE(JOB);--第一行多了个汇总行
    --5.HAVING 子句
    --HAVING 子句通常与GROUP BY 子句一起使用,在完成对分组结果统计后,可以使用HAVING 子句对分组结果做进一步的筛选;
    --如果不用GROUP BY 子句则HAVING 与WHERE 子句一样;
    --HAVING 与WHERE 子句都是定义搜索条件的,但是HAVING 子句与组相关,WHERE 子句与单个行相关;
    --如果 SELECT 语句中使用了GROUP BY 子句, HAVING 将用于GROUP BY 子句创建的那些组。
    --如果指定了WHERE 子句,而没有指定GROUP BY 子句,那么HAVING 子句将用于WHERE 子句的输出,并且整个输出被看成是一个组;
    --如果SELECT 语句既没有指定GROUP BY 也没有指定WHERE 则HAVING 子句将应用于FROM 子句的输出,将其看成是一个组;
    --SELECT 语句中子句的处理顺序 --FROM --WHERE --GROUP BY --HAVING --SELECT --ORDER BY;
    如:列出平均薪资大于10000的统计信息
    SELECT JOB,AVG(SAL),SUM(SAL),MAX(SAL),COUNT(*)
    FROM EMP GROUP BY JOB HAVING AVG(SAL)>10000;
    -----------------多表连接查询
    --1.简单连接
    --基本形式:仅仅通过SELECT 子句和FROM 子句来连接多个表,其查询结果是一个通过笛卡尔积所生成的表;
    笛卡尔积所生成的表,就是由一个基表中每一行与另一个基表的每一行连接在一起所生成的表,其查询结果的行数是两个基表行数的积。
    如:SELECT EMPNO,ENAME,DNAME FROM EMP,DEPT;
    --条件限定:笛卡尔积产生大量冗余信息,所以用WHERE 子句提供连接条件,可以有效避免笛卡尔积的出现;
    --WHERE 子句限定时,只有第一个表中的列与第二个表中的相应的列相互匹配后才会在结果集中显示,这是连接查询中最常用的形式。
    SELECT EMPNO,ENAME,DNAME FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO;--所要显示的列名不相同时可以不用显示其所在表;
    SELECT DEPTNO ,ENAME,DNAME FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO;--ORA-00918: 未明确定义列
    SELECT EMPNO,ENAME,DNAME FROM EMP ,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO AND DEPT.DNAME='SALES';--可以限定多个条件;
    SELECT * FROM TAB;--查询当前用户所有的表;
    SELECT * FROM DEPT;
    --表别名
    SELECT D.DEPTNO,D.DNAME,E.EMPNO,E.ENAME FROM EMP E,DEPT D WHERE E.DEPTNO=D.DEPTNO;--给表起别名来方便明确定义其中的列;
    注意:如果表指定了别名,那么语句中的所有子句都必须使用别名,而不允许再使用实际的表名;
    如:
    SELECT DEPT.DEPTNO, DEPT.DNAME, E.EMPNO, E.ENAME
      FROM EMP E, DEPT D
     WHERE E.DEPTNO = D.DEPTNO
       AND D.DNAME = 'SALES'; --ORA-00904: "DEPT"."DNAME": 标识符无效
    因为ORACLE各子句执行顺序是FROM,WHERE,SELECT,当 FROM指定了表别名后,表的真实名称将被替换。SELECT用原名选择的列将无法被找到;
    --2.JOIN 连接
    语法格式:--FROM JOIN_TABLE1 JOIN_TYPE JOIN_TABLE2
               --[ON(JOIN_CONDITION)]
    --JOIN_TYPE 为连接类型,包括内连接,外链接和自连接。连接查询中的ON(JOIN_CONDITION)指出连接条件,它由
    --被连接表的列和比较运算符、逻辑运算符等构成。
    (1)内连接(INNER JOIN)
    一般用关键字 INNER JOIN,可以省略INNER关键字,而只使用JOIN关键字表示内连接。
    内连接使用比较运算符时,在连接的某些列之间进行比较操作,并列出表中与连接条件相匹配的数据行;
    如:
    SELECT E.EMPNO,E.ENAME,D.DNAME FROM EMP E INNER JOIN DEPT D ON E.DEPTNO=D.DEPTNO WHERE E.JOB='CLERK';
    内连接实现两个以上表的查询:
    SELECT E.EMPNO,E.ENAME,D.DNAME,J.JOBNAME
    FROM EMP E INNER JOIN JOBS J
      ON E.JOBID=J.JOBID
      INNER JOIN DEPT D
      ON E.DEPTNO=D.DEPTNO
      WHERE E.JOBID='IT_PROG';--只是一个例子哦;
    (2)自然连接(NATURAL JOIN)
    自然连接与内连接的功能相似,在使用自然连接查询多个表时,ORACLE会将第一个表中的那些列
    与第二个表中具有相同名称的列进行连接。在自然连接中,用户不需要明确指定进行连接的列,系统
    会自动完成这一任务。--内连接有一个条件就是连接的各表之间必须具有相同名称的列。(但与现实意义脱轨,两张表的字段名也许相同但所包含的意思却是会不同的)
    自然连接的规律:存在相同的列,列中数据不一致,则连接数据一致的记录;
                     显示相同列所对应表的其他字段信息;
                     存在多个相同的列,对应的行的相关列的数据必须完全一致;
                     NULL<>NULL 空值不等于空值。  
    SELECT E.ENAME,D.DNAME
    FROM EMP E NATURAL JOIN DEPT D
    WHERE D.DNAME='SALES';
    (3)外连接(LEFT/RIGHT/FULL JOIN)
    内连接消除了与另一个表中的任何行不匹配的行,而外连接扩展了内连接的结果集,除返回所有匹配
    的行外,还会返回一部分或全部不匹配的行,这主要取决于外连接的种类。
    外连接分为左连接和右连接——LEFT JOIN(或 LEFT OUTER JOIN)和 RIGHT JOIN(或 RIGHT OUTER JOIN) 。
    全外连接——FULL JOIN 。
    SELECT E.EMPNO,E.ENAME,D.DNAME,D.DEPTNO 
    FROM EMP E LEFT JOIN DEPT D ON E.DEPTNO=D.DEPTNO;
    (左外连接以EMP表为主-没有40部门号)
    SELECT E.EMPNO,E.ENAME,D.DNAME,D.DEPTNO 
    FROM EMP E RIGHT JOIN DEPT D ON E.DEPTNO=D.DEPTNO;
    (右外连接以DEPT表为主-有40部门)
    完全外连接相当于同时执行了一个左外连接和一个右外连接; 
    (4)自连接
    有时用户可能会拥有自引用式外键。自引用式外键意味着表中的一个列可以是该表主键的一个外键。
    如EMP 表的EMP.MGR列可以是另一行的EMP.EMPNO;
    语句如下:
    SELECT E.EMPNO,E.ENAME,M.ENAME
    FROM EMP E,EMP M
    WHERE E.MGR=M.EMPNO;
    再如:
    SELECT E.ENAME,M.ENAME,D.DNAME,D.DEPTNO
    FROM EMP E,EMP M,DEPT D
    WHERE E.MGR=M.EMPNO AND E.DEPTNO=D.DEPTNO;
    (5)交叉连接(CROSS JOIN)——相当于产生笛卡尔积
    SELECT * FROM EMP CROSS JOIN DEPT;
    (6)(+)来进行左右外连接——一般不用这个
    D.DEPTNO=E.DEPTNO(+)--则以DEPT 的 DEPTNO 为基准
    D.DEPTNO(+)=E.DEPTNO--则以EMP 的 DEPTNO 为基准
    (+)写左边为左连接,写右边为右连接;
    SELECT E.ENAME,E.EMPNO,D.DEPTNO
    FROM EMP E,DEPT D
    WHERE D.DEPTNO=E.DEPTNO(+);--以DEPT 为基准


    SELECT E.ENAME,E.EMPNO,D.DEPTNO
    FROM EMP E,DEPT D
    WHERE D.DEPTNO(+)=E.DEPTNO;--以EMP 为基准
    -------------------查询的集合操作
    --集合操作就是将两个或多个SQL 查询结果合并构成复合查询,以完成一些特殊的任务需求;
    1. UNION--将多个查询结果相加,形成一个结果集。
           --UNION 运算会将集合中的重复记录虑除。
    SELECT * FROM DEPT
    UNION 
    SELECT 50,'教学','北京' FROM DUAL;


    SELECT 50 AS DEPTNO,'教学' AS DNAME,'北京' AS LOC FROM DEPT 
    UNION 
    SELECT * FROM DEPT;


    SELECT 50,'教学','北京' FROM DEPT/DUAL
    UNION
    SELECT * FROM DEPT;--这个就不对了,表头也变了;


    SELECT DEPTNO AS 部门号,DNAME AS 部门名称,LOC AS 地址 FROM DEPT;
    SELECT DEPTNO AS "部门号",DNAME AS "部门名称",LOC AS "地址" FROM DEPT;
    SELECT '部门号' AS DEPTNO,'部门名称'AS DNAME,'地址'AS LOC FROM DEPT WHERE DEPTNO=40;--这种是给字段列表赋予了一个临时值的感觉
    SELECT DEPTNO AS '部门号',DNAME AS '部门名称',LOC AS '地址' FROM DEPT;--给列建立别名只能用双引号或不用
    2. UNION ALL--将多个查询结果相加,形成一个结果集。
                --与UNION 不同的是UNION ALL 操作符形成的结果集中包含有两个子结果集重复的行。
    3. INTERSECT --也用于对两个SQL 语句所产生的结果集进行处理。
              --不同的是UNION 相当于OR 运算,即并运算;
              --而INTERSECT 相当于AND 运算,即交集运算。           
    SELECT EMPNO,ENAME FROM EMP WHERE ENAME LIKE 'S%' OR ENAME LIKE 'C%'
    INTERSECT
    SELECT EMPNO,ENAME FROM EMP WHERE ENAME LIKE 'S%' OR ENAME LIKE 'B%';
    (这个只有以S开头的员工姓名)
    SELECT EMPNO,ENAME FROM EMP WHERE ENAME LIKE 'S%' OR ENAME LIKE 'C%'
    UNION
    SELECT EMPNO,ENAME FROM EMP WHERE ENAME LIKE 'S%' OR ENAME LIKE 'B%';
    (这个以S,C,D开头的员工姓名都有)
    4. MINUS--它可以找到两个给定的集合之间的差集,即该操作符会返回所有从第一个查询中返回,但是没有在第二个查询中返回的记录。
            --MINUS相当于差集运算。
    SELECT EMPNO,ENAME FROM EMP WHERE ENAME LIKE 'S%' OR ENAME LIKE 'C%'
    MINUS
    SELECT EMPNO,ENAME FROM EMP WHERE ENAME LIKE 'S%' OR ENAME LIKE 'B%';
    (这个就只有以C开头的员工姓名了)


    ----------------ORACLE 查询的子查询
      子查询和连接查询一样,都提供了使用单个查询访问多个表中数据的方法,
    子查询提供了一种进一步的有效方法来表示WHERE子句中的条件。子查询是一个SELECT语句,
    它可以在 SELECT、INSERT、UPDATE 或 DELETE 语句中使用。
    SELECT E.* FROM (SELECT * FROM EMP WHERE EMPNO=7654) M,EMP E WHERE M.SAL<E.SAL;
    SELECT * FROM EMP WHERE SAL>(SELECT SAL,COMM FROM EMP WHERE EMPNO=7654);--ORA-00913: 值过多
    SELECT * FROM EMP WHERE SAL>(SELECT HIREDATE FROM EMP WHERE EMPNO=7654);--ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 DATE
    SELECT * FROM EMP WHERE SAL>(SELECT COMM FROM EMP WHERE EMPNO=7654);--看来只要数据一致就会有结果的,数据类型一致可以进行比较。
    SELECT * FROM EMP WHERE SAL>(SELECT SAL FROM EMP WHERE EMPNO=7654);
    1. IN 关键字
    -- 可以将原表中特定列的值与子查询返回的结果集中的值进行比较,如果莫航的特定列的值存在,则
    --在SELECT 语句的查询结果中就包含这一行。
    SELECT EMPNO,ENAME,DEPTNO FROM EMP WHERE DEPTNO IN(SELECT DEPTNO FROM DEPT WHERE DEPTNO=20); 
    注意:在使用子查询时,子查询返回的结果必须和外层引用列的值在逻辑上具有可比较性。
    2. ALL 关键字
      =ALL 查询等于子查询中所有值的值;
      >ALL 大于子查询中的所有值,即大于最大值;
      <ALL 小于子查询中的所有值,即小于最小值;
    3. ANY 关键字
      =ANY 与 IN 关键字的效果一致;
      >ANY 大于子查询中的任何一个值即可,即大于最小值;
      <ALL 小于子查询中的任何一个值即可,即小于最大值;
    4. EXISTS 关键字
    --EXISTS 关键字只注重子查询是否返回行,如果子查询返回一个或多个行,那么EXISTS 便返回TRUE ,否则返回FALSE 。
    --要使EXISTS 关键字有意义,则应在子查询中建立搜索条件。
    SELECT EMPNO, ENAME
      FROM EMP E
     WHERE EXISTS (SELECT *
              FROM DEPT D
             WHERE E.DEPTNO = D.DEPTNO
               AND DEPTNO = 20);
    在该语句中外层的SELECT语句返回的每一行数据都要由子查询来评估。
    如果EXISTS关键字里的条件为真则查询结果中就包含这一行,否则该行被丢弃。因此整个的查询结果取决于内层的子查询。
    小提示:EXISTS关键字的返回值取决于查询是否会返回行,而不是行的内容,所以子查询中,输出列表可以用‘*’代替。
    5. 比较运算符
    ‘=’‘<’‘>’‘<=’‘>=’‘<>’‘!=’
    注意:使用比较运算符必须保证子查询的返回结果只包含一个值。
    展开全文
  • 数据库基础:select基本查询语句

    万次阅读 多人点赞 2019-03-20 13:40:05
    数据库基本查询语句规范为:select 区域 from 表名 查询指定表 select * from 表名 *:代表所有列 示例:select * from TL_REQUEST 查询指定列 select 列名 from 表名 列名:代表从指定的列名中查找 ,:...

    数据库基本查询语句规范为select 区域 from 表名

    查询指定表

    select * from 表名

    *:代表所有列

    示例:select * from TL_REQUEST

     

    查询指定列

    select 列名 from 表名

    列名:代表从指定的列名中查找

    ,:如果是查找对应的多列,则用英文逗号间隔

    示例:

    select BU_NO from TL_REQUEST

    select BU_NO,BU_NM from TL_REQUEST

    条件查询

    select * from 表名 where 条件

    *:代表所有列

    条件:一般都是where加条件表达式

    查询列里包含数字或字母:select * from 表名 where 列名='值'

    示例:

    select * from TL_REQUEST where BU_NO='1234'

    select * from TL_REQUEST where BU_NM='小芳'

     

    范围查询

    select * from 表名 where 列名 between 'A' and 'B'

    select * from 表名 where 列名>='A' and 列名<='B'

    示例:

    select*from TL_REQUEST where BU_NO between '1000' and '1234'

    select*from TL_REQUEST where BU_NO>='1000' and BU_NO<='1234'


    多条件查询

    或条件查询:or

    select * from 表名 where 列名='A' or列名='B'

    示例:select * from TL_REQUEST where BU_NO='1000' or BU_NO='1234'

    和条件查询:and

    select * from 表名 where 列名='A' and列名='B'

    示例:select * from TL_REQUEST where BU_NO='1000' and CONTRACT_NO='tl001'

     

    离散查询

    包含值查询:in()

    select * from 表名 where 列名='A' 列名='B' 列名='C'

    或:

    select * from 表名 where 列名 in('A','B','C')

    示例:

    select * from TL_REQUEST where BU_NO='1000' BU_NO='1234' BU_NO='1311'

    或:

    select * from TL_REQUEST where BU_NO in('1000','1234','1311')

    不包含值查询:not in()

    select * from 表名 where 列名 not in('A','B','C')

    示例:select * from TL_REQUEST where BU_NO not in('1000','1234','1311')

     

    模糊查询

    查询列里包含具体中文:select * from 表名 where 列名like '%中文%'

    Like名称前面加。

    %任意多个字符。

    _下划线表示任意一个字符。

    示例:select * from TL_REQUEST where BU_NM like '%杜芳%'

    或查询第二个字符为芳的情况

    select * from TL_REQUEST where BU_NM like '%_芳%'

     

    去重查询

    select distinct 列名 from 表名

    示例:select distinct BU_NO from TL_REQUEST

     

    组合查询

    select distinct 列名 from 表名 where 条件

    示例:select distinct BU_NO from TL_REQUEST where BU_NO between '1000' and '1234'

    展开全文
  • 查询所有字段:select * from 表名; 查询指定字段:select 列1,列2,... from 表名; 使用 as 给字段起别名: select 字段 as 名字.... from 表名; 查询某个表的某个字段:select 表名.字段 .... from 表名; 可以通过...

    常规查询

  • 查询所有字段:select * from 表名;
  • 查询指定字段:select 列1,列2,... from 表名;
  • 使用 as 给字段起别名: select 字段 as 名字.... from 表名;
  • 查询某个表的某个字段:select 表名.字段 .... from 表名;
  • 可以通过 as 给表起别名: select 别名.字段 .... from 表名 as 别名;
  • 消除重复行: distinct 字段
    在这里插入图片描述
  • 条件查询

    ㈠比较运算符:>, <, >=, <=, =, !=, <>

    在这里插入图片描述

    ㈡逻辑运算符:and, or, not

    在这里插入图片描述

    ㈢模糊查询:like, rlike

    在这里插入图片描述

    ㈣范围查询:in,not in,between…and,not between…and

    在这里插入图片描述
    空判断
    在这里插入图片描述

    排序:order_by

    在这里插入图片描述

    聚合函数:count(), max(), min(), sum(), avg(), round()

    在这里插入图片描述

    分组:group_by, group_concat():查询内容, having

    在这里插入图片描述

    分页: limit

    在这里插入图片描述

    连接查询 :inner join, left join, right join

    在这里插入图片描述

    自关联:参考省级联动

    在这里插入图片描述

    展开全文
  • 数据库查询语句sql

    千次阅读 2018-04-06 22:23:34
    数据库查询语句sqlSELECT * FROM emp;SELECT * FROM dept;--数据库语句中分号是分隔符,系统遇到分号才会执行语句--单行注释/*多行注释*//*select 列1,列2 ,……列n --定义查询数据所在的列from 表1,表2 ,……...
  • 前两天又装了oracle,开始...一、select 查询语句 二、DDL 数据 定义 语句(create、drop、alter) 三、DML 数据 操作 语句(insert delect update) 四、TCL 事务 控制 语句(commit 提交、rollback 撤销 、savep
  • 数据库查询 实训内容 SELECT 语句的基本使用 条件查询 多表查询 分类汇总与排序 提供的数据 yggl 库 员工信息表 Employees 员工薪水情况表 Salary 部门信息表 Departments 一、SELECT语句的基本使用 ①查询...
  • 数据库SQL语句 SELECT LIKE like用法详解

    千次阅读 2018-08-06 18:24:17
    在SQL结构化查询语言中,LIKE语句有着至关重要的作用。 LIKE语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应子串...
  • Oracle数据库查询语句

    千次阅读 2019-01-04 23:08:10
    1 oracle数据库查询表的所有数据–select * from 表名;(* 代表所有) 2 oracle数据库查询表中指定字段的值–select 字段名1,字段名2,……from 表名; 3 oracle数据库往表中添加数据信息–(添加信息使用insert ...
  • 数据库查询语句

    2013-07-23 22:55:15
    简单的查询语句 select * from tabename 查询的列给别名 select column1 as AA ,column2 as BB from tablename where 条件 top 的使用 select top 3 * from tablename  select top
  • SQL数据库查询语句

    万次阅读 多人点赞 2016-08-26 23:40:12
    select语句除了可以查看数据库中的表格和视图的信息外,还可以查看SQL Server的系统信息、复制、创建数据表。其查询功能强大,是SQL语言的灵魂语句,也是SQL中使用频率最高的语句。 基本select语句: 一个基本...
  • 易语言SQL数据库查询语句

    千次阅读 2020-07-07 09:07:57
    select语句除了可以查看数据库中的表格和视图的信息外,还可以查看SQL Server的系统信息、复制、创建数据表。其查询功能强大,是SQL语言的灵魂语句,也是SQL中使用频率最高的语句。 基本select语句: 一个基本的...
  • ylbtech-SQL Server-Basic:SQL Server-数据库查询语句基本查询  SQL Server 数据库查询语句基本查询。 1,数据库查询语句基本查询   数据库 SQL Server Oracle 基本语句 ...
  • 数据库查询语句DQL

    千次阅读 2018-11-06 12:58:00
    2.结果集:通过查询语句查询出来的数据以表的形式展示,我们称这个表为虚拟结果集。存放在内存中。查询返回的结果是一张虚拟表。 3.查询指定列的数据: SELECT 列名1,列表2…FROM 表名; 条件查询: **1.**条件查询...
  • 数据库查询语句大全

    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...
  • 用jdbc连接mysql数据库,使用的查询语句SELECT MAX(call_start_time) FROM a,如何 在后台显示这个最大时间
  • 适用于SQL、Access、MySQL等数据库 语法: select * from Table where q3 like '%%' and city like '%%'
  • 经典语句例子: select * from table1 where 工资&gt;2500 and 工资&lt;3000 //同上 select 姓名 from table1 where 性别='0' and 工资='4000' select * from table1 where not 工资= 3200 select * ...
  • 数据库SELECT查询语句

    千次阅读 2019-03-17 14:27:48
    目录 1 基础知识 1.1 数据库的基本形式 ...3 selete语句 4 where子句 4.1 条件操作符 4.2 逻辑运算符 5 排序 6、函数 6.1 单行函数 6.1.1 字符函数 6.1.2 数值函数 6.1.3 日期函数 6.1.4 转换函数 6...
  • ![图片说明](https://img-ask.csdn.net/upload/201701/25/1485307842_762851.png) 如上图所示,我点查询的时候select语句应该怎么组织,给个思路,小虾米求助,望各位大侠不吝赐教,谢谢。
  • MySQL数据库查询语句入门

    千次阅读 2018-08-20 21:31:54
    准备工作: 创建数库 create database python_test charset=utf8;...select database(); 创建学生数据表 create table students( id int unsigned primary key auto_increment not null, n...
  • 实验3 数据查询语句SELECT 一、实验目的 1.掌握无条件查询的使用方法。 2.掌握条件查询的使用方法。 3.掌握聚族函数及汇总查询的使用方法。 4.掌握分组查询的使用方法。 5.掌握查询的排序方法。 6.掌握连接...
  • 对于数据库查询语句 select * from table where 1=1的疑惑一直理解不够清晰。终于发现一篇文章解释的特别详细 我们先来看看这个语句的结果:select * from table where 1=1,其中where 1=1,由于1=1永远是成立的...
  • 执行查询语句,因为网页要分页,所以在外面嵌套了一层分页,里面一层查询的数据是根据id,进行排序的,结果一查询,查出来的大部分数据为空,但是id确是对的。只要把排序字段不是id或者嵌套少掉外面一层分页,数据就...
  • 数据库查询语句关键字总结

    千次阅读 热门讨论 2014-09-03 17:29:41
    看过牛腩视频后,前17集讲后台代码的编写,尤其讲到查询语句的时候,顿时感觉原来学习过的查询语句中用到的关键字烟消云散了,啥都不记得了,通过看视频,帮着回忆了一部分,在这里总结一下,查询语句中用到的关键字...
  • #xiaodeng#python3#基于SQL和PYTHON的数据库数据查询语句import pymysql#1、基本用法cur.execute("select * from biao")#2、查询某表中的特定数据,如某制定id和名字的数据cur.execute("select * ...
  • 分配的任务,让我写两个查询语句,有点方,毕竟数据库只会简单的查询 幸好有强大的团队! 1.查询有多少个用户参加活动(涉及的表有marketing,marketing_success)  marketing表有code='201601003'  marketing_...
  • 数据库表的数据的基本查询 select * from book where book_name = '人性的弱点' select * from book where book_num = 19

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,520
精华内容 9,808
关键字:

数据库查询语句select