oracle SQL之SELECT基础

SQL分类


DDL—数据定义语言:定义对数据库对象的操作。

CREATE、ALTER、DROP、RENAME、TRUNCATE等。

DML—数据操纵语言:定义修改表的内容的操作。

SELECT查询语句:检索数据库表中存储的行。

INSERT、DELETE、UPDATE等

DCL—数据控制语言:定义修改数据库结构的操作权限。

GRANT、REVOKE等。

TCL—事务控制语言:用于将对行所做的修改永久性地存储到表中,或取消这些修改操作。
COMMIT、ROLLBACK、SAVEPOINT等。


ORACLE数据类型 

      1 字符串类型:用单引号引起来的字符序列。 
 
           CHAR(length):固定长度字符串,不足自动以空格补齐长度,最多2000个字节。 
 
           如:CHAR(10)  使用length(列) 获取的是定义的长度(length) 
 
           VARCHAR2(length):可变长度字符串,最多4000个字节。 【常用的字符串类型】


           如:VARCHAR2(10)  使用length(列) 获取的是实际数据的长度 


           举例  title char(10) length(title)永远都是10 


          content varchar2(10) 插入数据 'test' length(content)是实际数据的长度 4 
 


      2    数值类型: 

           NUMBER[(precision, scale)]:数值型,可以存储整数、浮点数。最高精度38位。如果没有指定最大位数和精度,就存储38位精度的数字。 

           NUMBER(24)  最多24位 整数类型; 

           NUMBER(5,3)  总和最多5位,其中小数最大是3位 整数位最大 5-3

           NUMBER  最大默认38位  整数和小数位总和不能超过38位         

       3 日期类型 
 

           DATE:存储日期和时间,精确到秒。时间值 【重要的类型】
               默认存放格式:“DD-MON-YYYY” 

               默认显示格式:“DD-MON-YY 


            java常用日期格式 yyyy-MM-dd hh:mm:ss
            orace转换日期格式  yyyy-MM-dd hh:mi:ss
   

            select sysdate from dual --输出的是date类型 (当前系统时间)

            select to_char(sysdate,'yyyy-MM-dd hh24:mi:ss') from  dual  --转换成了char类型 (24小时制)
            

            TIMESTAMP[(seconds_precision)]:存储日期、时间和时区信息,带小数位的秒。时间戳 
 
               如:TIMESTAMP(3)   秒后面小数点为3位。(最多可9位) 
 

            大对象(Large objects)类型:最大存储128TB 

                CLOB:Character LOB,用于存储字符数据。 

               BLOB:Binary LOB,用于存储二进制数据。如图形、视频剪辑和声音文件。 

               BFILE:用于存储二进制文件指针。 
 

二: sql语法注意点 

       关键字不区分大小写 但是【字符串区分大小写】。 

       表名和列名不区分大小写。 

       语句以分号;结束 

       单行注释使用--  多行注释 /**/ 
 

三: 解锁scott账号 
 
    conn /as sysdba --以dba的账号登录 

    alter user scott account unlock --解锁scott账号 
 
    conn scott/tiger  --密码是tiger     

四:显示表结构 
 
    dos命令下 可以使用 以下命令查看表结构

    desc 表名称  可以列出表结构 

    select * from tab; 查询当前用户下的所有的表   ,视图,同义词 
 

五:常用的sql语句 
 
   select用于crud【create read update delete】 查询 是用于查询和筛选数据 【重中之重】

   select语法结构

   SELECT 【列名, 列名2…】| * FROM 表名 where 条件 ; 
   
   【在oracle中字符串 使用''而不是""】


    查看当前方案中的表和其它数据库对象: 
 
   SELECT * FROM tab; 

    查询指定表的所有列数据: 
 
   SELECT * FROM 表名; 

    查询指定表的指定列数据: 

   SELECT 列名, 列名2… FROM 表名; 
 

    可以在SELECT语句中使用算术运算符:+、-、*、/ 
 

    为查询的列取别名: 

   SELECT 列名 [AS] 别名, … FROM 表名; 
 

    使用||做连接 *

    举例: select '钱:'||'$'||sal as sal from emp

   使用DISTINCT消除重复内容 

    举例:select distinct sal as sal from emp


   条件过滤(where)语句: 
 

   SELECT [DISTINCT] * | [列名 [别名],…] FROM 表名  WHERE 条件; 
 
    WHERE子句中的条件表达式: 

     可以包括运算符(算术、比较、逻辑) 

     可以使用()

     可以使用常量、列、函数。 
 

六: oracle常用的运算符 

        算术运算符: +、-、*、/ 
 
        连接操作符:将多个字符串或数据值合并成一个字符串      || 

        比较运算符: =、!=(或<>)、<、>、<=、>= 

        ANY(值1,值2,值3…)    与列表中的任意一个值进行比较 

       ALL(值1,值2,值3…)    与列表中的所有值进行比较 

       in(值1,值2,值3)  列的值包含在所给的值中 
 
举例:

--any表示等于其中的任意一个值  一般常用是使用in

       select * from emp where job=any('SALESMAN','MANAGER')

       select * from emp where job in('SALESMAN','MANAGER')


    --all 表示和所有值进行 比较 一般用于等于

       select * from emp where job!=all('SALESMAN','MANAGER')

       select * from emp where job not in('SALESMAN','MANAGER')

       逻辑运算符: 
 
       AND、OR、NOT 
         举例:
             --等价于java &&
select * from emp where sal>2000 and job='MANAGER'
     --等价于java ||
select * from emp where sal>2000 or job='MANAGER'
     --等价于java  !
select * from emp where not sal>2000


      SQL 运算符的优先级从高到低的顺序是:  算术 、连接、比较、逻辑(NOT、AND、OR)   


      模糊匹配 like

_代表一个字母  %代表0个或者多个字母 

        select * from emp where job like '_A%';


SQL操作符可以对字符串、值列表、值范围以及空值进行模式匹配,来限定查询返回的行:

IN (值1,值2…):匹配值列表


LIKE ‘模式字符串’:匹配指定的字符串模式。


下划线字符(_)匹配一个字符


百分号字符(%)匹配任意个字符。可以使用在任何数据类型中


BETWEEN 值1 AND 值2:匹配值范围。包括边界可用于数值类型和日期时间类型。


IS NULL匹配空值  理解空值(null value):未知的值。并不是一个空字符串。


IS NAN:匹配NAN这个特殊值。NAN表示“非数字”(oracle10g)


注意:这些SQL操作符都可以和NOT组合使用:

NOT IN(…)、NOT LIKE …、NOT BETWEENT. AND .、IS NOT NULL


排序语句:

SELECT[DISTINCT] * | [列名[别名],…]  FROM 表名  WHERE 条件 ORDER BY 排序的列1 [ASC |DESC],排序的列2 [ASC |DESC]

ASC:升序(默认值);

DESC:降序


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值