SQL语句不区分大小写,一般需要每条命令后需要加入分号,表示此条命令结束。
select语句:
SELECT 表示选择哪些列,不同列用逗号隔开
FROM标识从那个表中选择
DISTINCT 去掉重复的行,加在列的名字前。
select 列,列+300 from 表名 显示列和此列所有数据都+300后的数据
列名后 + as 别名 表示显示时将此列以别名显示
SELECT ‘虚拟列’ FROM testTable 虚拟列,引号内原样输出
后面可以加where语句(<>=)、order by 列名(desc降序)
限定筛选(where):
在from语句之后,select之前执行
必须放在from之后,同时可以进行多个条件的判断,此子句之后返回的数据类型是布尔类型
可以加入关系运算符,放入where条件后,如< ,> , <=, >=, = ,!=, <> 以及and,or,not
优先级:not > and >or
例1:select * from emp where sal>1500注意where查询条件中的字符区分大小写
例2:select * from emp where sal>=1500 and sal <=3000 或:select * from emp where sal between 1500 and 3000 (闭区间,后面可以是日期)
例3:select * from emp where hiredate between date'1981-01-01' and date'1981-12-31'
还可以使用范围运算符,如in,not in,但后面不能接null
例4:select * from emp where empno in (7369,7788,7962);
模糊查询
like,not like
通配符:% 匹配任意类型和长度的字符 _ 匹配单个长度的字符,常用于限定字符长度
例5:select * from emp where ename like 'S%'
排序语句(order by)
一定是最后一个子句,后面可以加desc,降序排列,asc升序
可以利用序号设置排序列:
例1:select ename, empno, sal from emp order by 3 desc
例2:select * from emp order by sal desc, hiredate; --先按照sal倒序排列,如果相同按照入职日期排序
创建新列表:
create table 表名(
col1 指定的数据类型 not null,
col2 指定的数据类型 default X,
col3 指定的数据类型);
注意每列之间逗号隔开
数据类型有:
number类型(4,0),括号内第一个数表示整数位数,第二个表示小数位数
varchar2() 变常类型 ,后面括号内加字节,用于英文
date 类型,日期其中col为列的名字,可以替换,最多可以写1000列表名会自动转换成大写,如果不想转换则可以使用双引号将名字括起来
col1后not null表示不允许有空值,default 表示默认值为X
单行函数
funcation_name(列|表达式[,参数1,参数2])
分类:字符函数、数值函数、日期函数、转换函数、通用函数
字符函数
1、UPPER(列|字符串d)、lower(列) 将字符串内容全部大写或小写
例:select upper('abc'),lower('VDEDU') from dual
2、INITCAP(列) 首字母大写
3、replace(列,字符串,新的字符串) 使用新字符替换旧字符串
例1:select ename,replace(ename,'A','_') from emp; --将ename列中的A替换为_
例2:select replace(ename,ename, '***'||substr(ename,4,length(ename))) as name from emp; --用星号填充
4、LENGTH(列|字符串) 求出字符串长度
例:select * from emp where length(ename)=5; --字符串为5个的输出
5、substr(列|字符串,开始点[,长度]) 字符串截取
例1:select * from emp where substr(ename,0,3)='JAM';
例2:select ename,substr(ename,length(ename)-2) from emp; --显示姓名后两个字母
6、ASCII(字符):返回字符的ASCII码
7、CHR(整数): 给一个整数,并返回与之对应的字符
8、LTRIM(字符串)、RTRIM(字符串)、TRIM(字符串s)t:去掉左、右、两边空格
9、RPAD、LPAD(列|字符串,长度,填充字符):填充自定长度的字符
10、INSTR(列|字符串,要查找的字符串[,开始查找位置,第几次出现]):查找一个子字符串是否在指定位置出现,查找不到返回0
数值函数
1、ROUND(数字[,保留位数]) 对小数进行四舍五入
2、TRUNC(数字[,保留位数]) 截取小数位,可以对时间使用
例: select sysdate,trunc(sysdate,'mm') from dual;
3、MOD(数字,数字) 求余数
日期函数
1、sysdate 系统时间 可以加减,单位为天
2、ALTER SESSION SET NLS_DATE_FORMAT=’yyyy-mm-dd hh24:mi:ss‘; 修改格式日期
3、ADD_MONTHS(日期,数字) 在日期加入制定的月数,求出新日期,会忽略小数
4、MONTHS_BETWEEN(日期1,日期2) 求出两个日期之间的月份数
5、next_day(日期,星期数) 从此日期里开始计,到下一个星期几的日期
6、last_DAY(日期) 此月最后一天的日期
7、extract(格式 from 数据) 日期时间分割,或求出两个时间间的间隔
例:SELECT EXTRACT(YEAR FROM DATE '2001-09-19') years FROM dual;
转换函数
1、to_char(日期|数字|列,转换格式) 将指定的数据转换为char类型
2、to_date(日期|数字|列,转换格式) 将指定的数据转换为date类型
3、to_number(日期|数字|列,转换格式) 将指定的数据转换为数字类型
oracle特色函数:
1、NVL(数字|列,默认值) 如果现实数字为null,则变为默认值
2、NVL2(数字|列,返回结果1,返回结果2(为空显示)) 判断指定的列是否为null,如果不为null则返回结果1,如果为空则返回2
3、NULLIF(表达式1,表达式2) 如果表达式1和表达式2的值相等,则返回null,不相等则返回表达式1的值
4、DECODE(列|值,判断值1,显示结果1,判断值2,显示结果2,…,)如果现实的数字是null,则使用默认值表示,如果最后一个显示结果没有判断值,则所有不是之前判断值的返回最后一个判断值。只能是值,不能是表达式。
5、COALESCE(表达式1,表达式2,…,表达式n) 将表达式逐个判断,如果表达式1的内容是null,则显示表达式2,以此类推