Oracle基础知识
数据库:存储数据的仓库;
常见的数据库类型有关系型数据库和非关系型数据库
Oracle是关系型数据库,端口号为1521;
数据库标准语言:
数据库定义语言:DDL
- create table 创建表、alter table 修改列、drop table 删除列;
数据库操作语言:DML
- insert 添加、update 修改、delete 删除;
事务控制语言:TCL
- commit 提交、rollback 回滚(撤销);
数据库查询语言:DQL
- select 查询;
数据库控制语言:DCL
- grant 授权、revoke 回收权限;
Oracle中常用的几种数据类型
char(n):定长字符串,默认长度为1,长度不可变,指定多长就占几个字节;
varchar:字符串类型,长度不可变,没有值得时候是“”
varchar2(n):可变长字符串,在你指定的范围内可变长度(如:varchar(10),存入的长度为5,它的长度就是5,最大不能超过指定的长度)
没有值得时候是一个null(和varchar的区别);
number(m,n):数字型数据类型,m表示有效位数,n表示保留小数点后几位;
date:日期类型;
clob:用于存储定长字节的大数据对象,大字符备注区别;
blob:一般用于存储图片,媒体资料等;
简单命令:
show user:查看当前用户;
desc 表名:查看表结构;
drop table 表名 purge:删除表;(Oracle中删除表不是真正的删除,而是占用空间移动到别的地方,因为为了不占空间,真正删除需要purge)
delete from 表名:删除表中所有值,若加上where 列明=value则表示删除某列中的值
CRUD语句:
//添加
INSERT INTO 表名(字段1,字段2....) VALUES();
//查询
SELECT 字段1,字段2... FROM 表名;
//删除
DELETE FROM 表名 WHERE 字段名=存在的字段内容;
//修改
UPDATE 表名 SET 字段名=修改的字段内容 WHERE 字段名=存在的字段内容;
五大约束
not null:不为空约束;
unique:唯一约束;
primary key:主键约束(自带不为空约束、唯一约束和序列);
foreign key:外键约束;
check:检查约束;
Oracle常用函数
dual:伪表,主要用来完成功能性查询sql;
字符函数--返回字符值:
CHR(n):将n转化成ASCLL表对应的字符(n是整数类型);
select chr(54740) 别名1,chr(65) 别名2 from dual;
CONCAT(s1,s2):拼接s1,s2两个字符串;
select concat('010-','88888888')||'23' 连接 from dual;
INITCAP(s):返回字符串单词首字母大写,其余字母小写;
select initcap('smith hEllo') upp from dual;
LOWER(s):将字符串的每个字符都改为小写;
select lower('AaBbCcDd') AaBbCcDd from dual;
UPPER(s):将字符串的每个字符都改为大写;
select upper('AaBbCcDd') upper from dual;
LPAD(s1,X,[s2]):在s1的左边插入X个s2;
select lpad('gao',5,'*')from dual
RPAD(s1,X,[s2]):在s1的右边插入X个s2;
select rpad('aaa',5,'*') from dual;
REPLACE(s1,s2,s3):将s1里面的子串s2替换成s3,如果没写s3则表示删除s2;
select replace('he lohe you','he','i') from dual;
TRIM(s1):功能1.去除首位的空格,功能2.用来删除字符串两边的指定字符(trim([s2] from s1) s2必须为单字符)
LTRIM(s):去除左边字符串的空格;
RTRIM(s):去除右边字符串的空格;
SUBSTR(s,a,b):截取字符串,从第a个开始截取b个字符,(这里字符串的下标是从1开始的);
select substr('13088888888',3,8) 截取字符串 from dual;
字符函数--返回数字:
ASCII(s):给定一个字符返回一个ASCll表的值;
select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;
INSTR(s1, s2,a,b):返回给定中的字符串s1中的子串s2从a位开始查第b此出现的下标位置;
select instr('oracle traning','ra',1,2) instring from dual;
LENGTH (s):返回字符串的长度;
select length('asdfg') 长度 from dual;
数学函数:
ABS(x) :取绝对值;
select abs(-100) from dual;
CEIL(x) :向上取整;
--值为11;
select ceil(10.3) from dual
MOD(x,y):取余数;
ROUND(x[,y]) :四舍五入函数,y缺省值为0,x保留整数;y>0,x保留小数点右边y位,y<0,x保留小数点左边 |y| 位;
日期时间函数:
sysdate:获取当前系统时间(类型为:date);
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
SYSTIMESTAMP:获取当前系统时间(类型为:timetamp)
Select systimestamp from dual;
TRUNC(d,format) :截断日期时间数据;
select to_char(trunc(sysdate,'hh'),'yyyy.mm.dd hh24:mi:ss') hh from dual;
TO_CHAR(d,format):将日期类型转换成字符串类型;
TO_DATE(s,format):将字符串类型转换成date类型;
Select to_date(‘20130101’,’yyyymmdd’) from dual;
TO_NUMBER(s):转换为数字类型;
select to_number('1999') year from dual;
分组统计函数:
AVG():取平均值
select avg(degrees) as 平均值 from dual;
COUNT(1):得到查询中行的数目,参数也可以是*,但是1的效率高;
Select count(1) from emp;
其他函数
升序:order by......asc;
降序:order by......desc;
分组:group by 字段名;(在使用它的时候查的应该是被分组字段或者是分组函数);
decode(查询字段,匹配字段,返回结果......,default):类似java中的switch()...case
nvl2(value1,value2,value3):如果value1为空输出value3,不为空则输出value2;(java中的三目运算符)
nvl(value1,value2):如果value1为空输出value2,不为空则输出value1;
nullif(value1,value2):如果value1等于value2则返回null,否则返回value1(一般用来判断value1字段是否为空)
distinct:去重
select distinct name from 表名
between...and...:表示在两者之间;
select * from 表名 where age between 18 and 20
in():匹配括号里面中的任意一个;
select name from 表名 where age in(18,,20,22);
not in():不匹配括号里面的任意一个;
union:将两个查询语句合并为一条语句执行,合并重复内容;
select * from 表名 where age>= 18 union select * from 表名 where age<=25
union all:和union一样,只是结果保留重复内容;
select * from 表名 where age>= 18 union all select * from 表名 where age<=25
以上两个要保证两个查询语句、查询字段、查询个数必须相同;
托生此世,万般好处,也是一枕黄粱。