Oracle基础语法

–建表
create table stuInfo(
sid int primary key , --主键约束
sname varchar2(10) not null, --非空约束
sex char(2) check(sex in('男','女')), --检查约束
age number(3,1) constraint ck_stuInfo_age check(age>10 and age<100),
tel number(15) unique not null, --唯一约束,
address varchar2(200) default '大魔王' --默认值

)


–表操作
–加字段
alter table 表名 add 字段名 类型
例:alter table classInfo add status varchar2(10) default '哈';
–修改字段类型
alter table 表名 modify 字段名 类型
例:alter table classInfo modify status number(1);
–修改字段名
alter table 表名 rename column 旧字段名 to 新的字段名
例:alter table classInfo rename column cname to 班级名;
–删除字段
alter table 表名 drop column 字段名
例:alter table classInfo drop column status ;
–修改表名
rename 旧表名 to 新表名;
rename classInfo to 班级信息;
–删除表
drop table 表名;–删除表结构和内容
truncate table classInfo;–截断表,全量删除内容,效率高,无法ROLLBACK
delete 表名 [where 条件];–条件删除,可以ROLLBACK
–增加数据语法
insert into 表名[(列名,....)] values (对应的数据的值)
–删除的语法
delete 表名 [where 条件];
–修改记录的语法

select *from emp;
通用函数
数值函数

    –四舍五入
    select round(12.234) from dual;–取整的四舍五入 12
    select round (12.657,2) from dual; –保留2位小数
    select trunc(12.48) from dual;–取整
    select trunc(12.48675,2) from dual; –保留2位小数 –取余
    select mod(10,3) from dual;--10/3取余 =1;

日期函数

    –日期-数字=日期 ,日期+数字=日期, 日期-日期=数字

    –查询员工进入公司的周数
    select ename,round((sysdate -hiredate)/7) weeks from emp;
    –查询所有员工进入公司的月数
    select ename,round(months_between(sysdate,hiredate)) months from emp; –求三个月后的日期
    select add_months(sysdate,6) from dual;
    select next_day(sysdate,'星期一') from dual; –下星期
    select last_day(sysdate) from dual;–本月最后一天
    select last_day(to_date('1997-1-23','yyyy-MM-dd')) from dual; –转换函数
    select ename ,
    to_char(hiredate,'yyyy') 年,
    to_char(hiredate,'mm')月,
    to_char(hiredate,'dd') 日
    from emp;
    select to_char(10000000,'$999,999,999') from emp;
    select to_number('20')+to_number('80') from dual; –数字相加 –查询员工年薪
    select ename,(sal*12+nvl(comm,0)) yearsal from emp; –空和任何数计算都是空 –Decode函数,类似if else if (常用)
    select decode(1,1,'one',2,'two','no name') from dual; –查询所有职位的中文名
    select ename, decode(job,
    'CLERK',
    '业务员',
    'SALESMAN',
    '销售',
    'MANAGER',
    '经理',
    'ANALYST',
    '分析员',
    'PRESIDENT',
    '总裁',
    '无业')
    from emp;
    select ename,
    case
    when job = 'CLERK' then
    '业务员'
    when job = 'SALESMAN' then
    '销售'
    when job = 'MANAGER' then
    '经理'
    when job = 'ANALYST' then
    '分析员'
    when job = 'PRESIDENT' then
    '总裁'
    else
    '无业'
    end
    from emp;




数值函数

–四舍五入
select round(12.234) from dual;–取整的四舍五入 12
select round (12.657,2) from dual; –保留2位小数
select trunc(12.48) from dual;–取整
select trunc(12.48675,2) from dual; –保留2位小数 –取余
select mod(10,3) from dual;--10/3取余 =1;

日期函数

–日期-数字=日期 ,日期+数字=日期, 日期-日期=数字

–查询员工进入公司的周数
select ename,round((sysdate -hiredate)/7) weeks from emp;

–查询所有员工进入公司的月数
select ename,round(months_between(sysdate,hiredate)) months from emp; –求三个月后的日期
select add_months(sysdate,6) from dual;
select next_day(sysdate,'星期一') from dual; –下星期
select last_day(sysdate) from dual;–本月最后一天
select last_day(to_date('1997-1-23','yyyy-MM-dd')) from dual; –转换函数
select ename ,
to_char(hiredate,'yyyy') 年,
to_char(hiredate,'mm')月,
to_char(hiredate,'dd') 日
from emp;
select to_char(10000000,'$999,999,999') from emp;
select to_number('20')+to_number('80') from dual; –数字相加 –查询员工年薪
select ename,(sal*12+nvl(comm,0)) yearsal from emp; –空和任何数计算都是空 –Decode函数,类似if else if (常用)
select decode(1,1,'one',2,'two','no name') from dual; –查询所有职位的中文名
select ename, decode(job,
'CLERK',
'业务员',
'SALESMAN',
'销售',
'MANAGER',
'经理',
'ANALYST',
'分析员',
'PRESIDENT',
'总裁',
'无业')
from emp;
select ename,
case
when job = 'CLERK' then
'业务员'
when job = 'SALESMAN' then
'销售'
when job = 'MANAGER' then
'经理'
when job = 'ANALYST' then
'分析员'
when job = 'PRESIDENT' then
'总裁'
else
'无业'
end
from emp;
–简单多表
select *from dept;
select *from emp,dept order by emp.deptno;
select *from emp e,dept d where e.deptno=d.deptno;
select e.*,d.dname from emp e,dept d where e.deptno=d.deptno; –外连接
select *from emp order by deptno;
–查询出每个部门的员工
/*
分析:部门表是全量表,员工表示非全量表,
在做连接条件时,全量表在非全量表的哪端,那么连接时全量表的连接条件就在等号哪断
*/
–左连接
select * from dept d,emp e where d.deptno=e.deptno(+) order by e.deptno;
–右连接
select * from emp e,dept d where e.deptno(+)=d.deptno order by e.deptno;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值