oracle之sql基础一

where  限制条件

1    比较操作符
    = < > <= >=
    <>  != ^= any  all
    > any()   大于any中的任意一个的,也就是大于最小的,()中间的条件以逗号分割
    > all()       大于all中的所有的,也就是大于最大的
    显示员工表中职位是SALESMAN 的部门编号
    
    字符型需要加上单引号

操作符
    确定范围: between  ... and ; not between  ... and   包括边界值
    确定集合:    in  ; not in
    空值: null  , not null
    模糊匹配:    like  ; not like , escape , % , _
                    % 匹配0个或多个字符
                    _ 匹配1个字符
                    escape 指定转移字符

查询薪水不在2000和4000之间的ename
    select ename from emp where sal not between 2000 and 4000;
    select ename from emp where not sal between 2000 and 4000;
    区别:上面运算一次,下面是2个运算符,先运行between and 再执行not ,结果一样,但是下面运行效率较低
    
    显示职位是salesman and clerk 的员工编号,薪水和入职时间
    select empno,sal,hiredate from emp where job in (‘salesman‘,‘clerk‘);
    
    显示姓名中以A开头的员工
    select ename from emp where ename like ‘A%‘;
    
    显示姓名中第三个字符是A的员工
    select ename from emp where ename like ‘__A%‘;
    
    显示姓名中含有 % 的员工
    select ename from emp where ename like ‘%/%%‘ escape ‘/‘;              转移字符可以任意指定
    select ename from emp where ename like ‘%a%%‘ escape ‘a‘;
    
    查找奖金为空的员工
    select ename from emp where comm is not null;            is
    
    逻辑条件
    not   and   or
    可以使用() 改变优先级
    
    
    算术运算

变量
SQL> select ename from emp where empno=&epn;
Enter value for epn:        输入值就可以查询
old   1: select ename from emp where empno=&epn
new   1: select ename from emp where empno=7839

SQL> set verify off  取消新旧值的显示

SQL> save  /tmp/epn.sql

可以把这条语句写入一个sql脚本,每次调用
SQL> @ /tmp/epn.sql

sql语句执行顺序是从右向左
select ename,&epn from emp where empno=&&epn;            这样是两个变量,会提示先输入后面的变量值,在输入前面的
    
select ename,&&epn from emp where empno=&epn

排序  
order  by        永远放在sql语句的最后,排序会占用内存资源,能不用尽量不用

number类型  0-9
char 字符型        a-z  A-Z
日期: 1-12
null:  排序中,NULL的值是最大的

order by ... asc| desc
asc 升序  desc 降序
默认是升序,asc可以省略,按照ascII 码排序

#export NLS_LANG=‘Simplified Chinese‘_china.al32utf8;   导入字符集,可以看到汉语字符串
#unset NLS_LANG        取消

查找汉语排序的方式

conn / as sysdba        需要切换到sysdba用户
select tname from  tab where tname like ‘%NLS%‘        查找含有NLS的表和视图
desc v_$nls_parameters
 
select parameter,value from v$nls_valid_values where parameter=‘SORT‘ and value like ‘%CHINESE%‘

按照指定的方式排序
select name from china order by nlssort (name,‘nls_sort=SCHINESE_RADICAL_M‘)

按照列名
        
按照别名
        select ename,empno as epn ,sal,job.hredate from emp order by epn desc;        epn是empno别名
按照顺序
           select ename,empno as epn ,sal,job.hredate from emp order by 3 desc;   3代表sal,多字段中的第三个
           select ename,empno as epn ,sal,job,hiredate from emp order by 2,3 desc;  先按2排,2相同的再按3排

日期排序
        
        
——————————————————————————————————————————————————————        
        
函数
函数作用: 返回值
函数的分类:
    单行函数,对一行数据进行处理,返回一个值;
        字符函数,数值函数,日期函数,转化函数,通用函数,正则表达式函数
    多行函数,又名聚合函数,对多行数据进行处理,返回一个值;
        sum, count ,max ,min ,avg
    分析函数,可以返回多个值,以后单独讲
    
不同函数的用法

Installing and Upgrading            安装与升级
 Getting Started        
 Database Administration            数据库管理
 Application Development            开发
 Grid Computing        grid
 Performance
 High Availability        高可用
 Data Warehousing and Business Intelligence
 Unstructured Data and Content Management
 Information Integration
 Security         安全
    
    
OpenOpen Database Administratio    
Supporting Documentation
    Concepts     HTML     PDF
    Reference     HTML     PDF
    
SQL, PL/SQL, and PL/SQL Packages    
    SQL Language Reference     HTML     PDF
        5 Functions
    
    
    
    
    字符函数
    upper(x)        大写
    lower(x)        小写
    initcap(x)        每个字符串首字母大写,其他字母小写,字符串以空格分割
    select upper(‘hello‘) from dual;              
    select lower(‘hello‘) from dual;
    select initcap(‘hello world‘) from dual;
    
        
    concat(x,y)  链接函数,如果要链接3个以上的字符串,需要嵌套使用concat(concat(x,y),z)
    ascii(x)    查看呢ascii码
    length(x)  统计长度,按字符统计
    lengthb(x)     按字节统计
    lengthc(x)        按unicode统计
    
    substr(x,y,z)        在x中截取从y位置开始,长度为z的字符;z可以省略,表示到字符串最后;y可以为负数,表示倒数第y位置开始
            SQL> select substr(‘123.456.789‘,5,3) from dual;

instr(x,y,z,c)        从x字符串中查找y字符串,从第z位置开始,第c次出现的位置    z 和c 可以不写,默认为1,z可以为负,表示从右向左第z个字符开始从右向左查找
            SQL> select instr(‘hello chengdu chengdu‘,‘du‘,2,1) from dual;
            SQL> select instr(‘hello chengdu‘,‘e‘,-2,1) from dual;        返回值    9
            
    trim(x)        去掉字符串前后的空格    
            SQL> select length(‘   chengdu  ‘),trim(‘   chengdu  ‘) from dual;
    
    trim(leading | trailing | both  x from y)            从头/从尾/从两头 掉y中的x字符,只能去掉单个字符
            SQL>select trim(trailing ‘x‘ from ‘xabcx‘)  from dual;
    
    ltrim(x,y) ,rtrim(x,y)            11g后增加的,可以去除多个字符                
    ltrim从左边,在x中匹配y中的任意字符,并去除,返回剩下的字符串
            SQL> select ltrim(‘abaacdeabc‘,‘ab‘) from dual;   返回 cdeabc
            SQL>select ltrim(‘abababcabab‘,‘ab‘) from dual;  返回 cabab
            SQL>select ltrim(‘ababababab‘,‘ab‘) from dual;   返回为空

rpad(x,y,z)        右填充函数,如果x不满足y位,则在其右边填充z满足y位
   lpad(x,y,z)        左填充
            SQL> select rpad(ename,12,‘*‘) from scott.emp;            返回值SMITH*******
            
    chr(x)   把x作为ascii 码 转换成对应的字符
            SQL>select chr(37) from dual;         返回值 %
    replace(x,y,z)        把x中的y子字符串 用z字符串替换    
            SQL> select replace(‘chinese‘,‘ese‘,‘a‘) from dual;        返回值  china

数值函数

abs(x)    返回x绝对值
    power(x,y)        x的y次方
    ceil(x)    向上取整,x整数部分+1,x为负数取整数部分
    floor(x)    向下取整,只取x整数部分,x为负数取x整数部分-1
    sign(x)        x小于0 返回-1    x等于0 返回0  x大于0 返回1
    round(x,y)    从小数点后y位置,对x进行四舍五入
    mod(x,y)        x除以y 取余
    bitand(x,y)         转换成二进制进行异或运算

日期函数
    sysdate        系统时间,可以自己定义格式???
        SQL> alter session set nls_date_format=‘yyyymmddhh24:mi:ss‘
    systimestamp
    add_months(x,y)        在x的基础上,加上y个月,y可以为负数
    moths_between(x,y)        x和y之间相差的月数,天数会换算成月变成小数,x小于y,返回负数
    last_day(x)        x月的最后一天是几号
    next_day(x,y)        在x的基础上,下一个y是几号,y是星期几的英文拼写,并且需要使用 单引号 ‘‘,如next_day(sysdate,‘FRIDAY‘)
    CURRENT_DATE
    CURRENT_TIMESTAMP
    trunc(x)     时间四舍五入,只保留日期,即每天零点
        trunc(x,‘Q‘)   按季度四舍五入
        trunc(x,‘Q‘) -1      上个季度的最后一天
    round(sysdate,‘mm‘)  按照月对当前时间进行四舍五入        yy年,dd天

时间: 2024-08-03 22:01:31

oracle之sql基础一的相关文章

[Oracle系列整理04] oracle pl/sql 基础

PL/SQL块中只能直接嵌入SELECT,DML(INSERT,UPDATE,DELETE)以及事务控制语句 (COMMIT,ROLLBACK,SAVEPOINT),而不能直接嵌入DDL语句(CREATE,ALTER,DROP)和DCL语句 (GRANT,REVOKE) 1.检索单行数据    1.1使用标量变量接受数据  v_ename emp.ename%type;  v_sal   emp.sal%type;  select ename,sal into v_ename,v_sal fro

oracle pl/sql 基础

一.pl/sql developer开发工具pl/sql developer是用于开发pl/sql块的集成开发环境(ide),它是一个独立的产品,而不是oracle的一个附带品. 二.pl/sql介绍开发人员使用pl/sql编写应用模块时,不仅需要掌握sql语句的编写方法,还要掌握pl/sql语句及语法规则.pl/sql编程可以使用变量和逻辑控制语句,从而可以编写非常有用的功能模块.比如:分页存储过程模块.订单处理存储过程模块.转账存储过程模块.而且如果使用pl/sql编程,我们可以轻松地完成非

Oracle的SQL基础

1.了解SQL的种类 (1)DDL 数据定义语言:定义数据库中数据要如何存储的,包括对数据库对象的创建(create)修改(alter)删除(drop)的操作,这些对象主要有数据库,数据表,视图,索引等. (2)DML 数据操作语言:对数据库表进行的操作,包括对数据库表进行增加(insert)删除(delete)修改(update)的操作. (3)DQL 数据查询语言:对数据库表进行的查询操作,既可以查询(select)一个也可以查询多个表,并且可以按不同的条件进行进行检索数据. (4)DCL

二十、oracle pl/sql基础

一.pl/sql developer开发工具pl/sql developer是用于开发pl/sql块的集成开发环境(ide),它是一个独立的产品,而不是oracle的一个附带品. 二.pl/sql介绍开发人员使用pl/sql编写应用模块时,不仅需要掌握sql语句的编写方法,还要掌握pl/sql语句及语法规则.pl/sql编程可以使用变量和逻辑控制语句,从而可以编写非常有用的功能模块.比如:分页存储过程模块.订单处理存储过程模块.转账存储过程模块.而且如果使用pl/sql编程,我们可以轻松地完成非

Oracle之SQL基础

用户: 登录SQL Plus 系统用户:sys,system(sys>system)   sysman scott(默认密码tiger) 使用system用户登录SQL Plus [username/password][@server][as sysdba|sysoper] system/123456           @orcl      as sysdba orcl就是自己设置的服务名 因为就在本机,就不用添加服务 查看登录用户: show user dba_users数据字典 数据字典是

Oracle PL/SQL基础语法 ——Oracle Database 11g R2

一.PL/SQL代码块 DECLARE(可以不是用此块) <声明变量>; BEGIN <语句序列>; END; 在SQL Plus执行需要在代码块最后/,并且单独占一行. DBMS_OUTPUT.PUT_LINE();用于输出内容,类似于C的printf,C++的cout. 二.PL/SQL注释 行注释(一行):--. 块注释(多行):/* */.

Oracle PL\SQL 基础学习三

一. PL/SQL 与 SQL的交互 1. 使用select语句.into是必须的, 查询只能返回一条或0条数据 declare       v_fname employees.first_name%TYPE;  --更正规的写法       --v_fname varchar2(25);    begin       select first_name into v_fname       from employees where employee_id=200;       DBMS_OUT

Oracle PL/SQL基础

1.下载sql developer数据库连接可视化工具 连接地址:点我下载 下载完成,安装有Java环境,解压即可运行,也可以在linux系统中运行. 原文地址:https://www.cnblogs.com/ZeroMZ/p/9211624.html

SQL基础--&amp;gt;层次化查询(START BY ... CONNECT BY PRIOR)

--====================================================== --SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR) --====================================================== 层次化查询,即树型结构查询,是SQL中经经常使用到的功能之中的一个,通常由根节点,父节点,子节点,叶节点组成,其语法例如以下: SELECT [LEVEL] ,column,ex