关闭

Java笔记oracle--SQL基础篇(二)

标签: oraclesql
118人阅读 评论(0) 收藏 举报
分类:
            Oracle笔记-SQL基础篇(二)

一、DDL操作–创建表,修改表,删除表

①创建表employees,表中default 的作用是给列指定默认值

 create table employees(
     id number(10),
     name varchar2(20) ,
     gender char(2) default 'm',
     job varchar2(30),
     salary number(7,2),
     deptno number(5)
)

以上这种是白手起家式建表,可以利用已经存在的表建立新的表,如下所示 emp表的建立,

create table emp
as
select id,name,salary,job
from employees;

②修改表,指在未添加数据前对于字段的操作(字段就是列)

1.增加新的字段–

   --增加comm列
   alter table employees
   add( comm number(6,2));

查看数据表结构 desc table_name

desc employees;

查询结果为:这里写图片描述
从表中可以看出增加的字段comm操作成功

2.修改字段的数据类型、长度、默认值

alter table employees
modify( salary number(9,2)):

这里写图片描述
表中的salary的长度改变

3.修改表名
rename old_name to new_name :将表名employees改为emp

rename employees to emp;

4.删除字段:

--删除gender
alter table employees
drop gender;

运行结果:
这里写图片描述
表中没有了gender这个字段

③删除表

drop table employees;

二、DML操作–插入、删除、修改一条记录

①insert语句:插入一条记录

insert into employees
values(200919,'chaoge','java',8500,10,650.00);

以上这种方法必须按照字段建立的顺序依次插入,若不知道字段顺序,采用下面这种方法

insert into employees(id,name,job,salary,deptno,comm)
values(201009,'chaoge','c++',6000,20,350)

②update语句:更新表中的记录

update employees
set job = 'c#' 
where id  = 201009;

没有where字句,则表中的数据全部会被更新!

③delete语句:删除表中的记录

    delete from employees
    where id = '201009';

**注意**DML 和DDL,区别在于DDL是针对字段的操作,DML是针对记录的操作,DML操作后要进行commit操作–提交,也可以进行rollback操作–回滚,取消操作。才能真正的实现DML操作。

三、DQL –查询语句

--1 *:表示查询所有的列;
 select * from emp;
--2   指定列查询 ;distinct 去除重复的行
select distinct deptno from emp;
--3   可以给 列名起别名;
select ename,sal as salary,job work from emp;
--4  where字句使用比较操作符限制查询结果 
select ename,job from emp where deptno = 10;

第三个查询语句的运行结果:(标题的显示样式是别名)
这里写图片描述

第四个查询语句的运行结果:部门号都是10的员工信息
这里写图片描述
②查询条件

1.使用<、 >、 <=、 >=、 <>(<>就是不等于!=)

--查询工资低于5000的员工信息
select ename,id,sal from emp where sal<=5000;

2.使用and 或or

--查询工资大于2000且职位是SALES的员工信息
select ename,sal from emp where sal>2000 and job ='SALES'

--查询工资低于2000或者高于5000的员工姓名和职位
select ename,job from emp where sal<2000 or sal >5000;

3.使用 in

--查询部门号在10或者20的员工姓名,工资。
select ename,sal,deptno from emp where deptno in (10,20);

4.使用between..and…

--查询工资在2500到4500之间的员工的姓名和所在部门
select ename,deptno from emp where sal between 2500 and 4500;

5.使用like–模糊查询

--查询名字中有字母C的员工
select ename from emp where ename like '%C%';
--查询名字中第三个字母是C的员工
select ename from emp where ename like '__C%;
--查询名字中倒数第二个字母是C的员工
select ename from emp where ename like '%C_';
--查询名字中含有_(下划线)的员工名字--用escape转义
select ename from emp where ename 
like '%A\_B%'escape '\';

6.使用 null:注意用法:is null 和 is not null

--查询没有奖金的员工的姓名和职位
select ename,job from emp where comm is null;

7.排序:order by (默认是从小到大)

  asc:升序  , desc :降序

--按照工资的由高到低查询员工姓名
select ename ,sal from emp order by sal desc;

运行结果是:
这里写图片描述

8 .聚合函数(也叫分组函数)
avg:平均数
max:最大值
min:最小值
sum:综合
count:数量和
stddey:标准差

①查询工资的平均值,最大值和员工人数
select avg(sal),count(*),max(sal) from emp;

运行结果:
这里写图片描述

②利用通用函数nvl将null替换成0
select count(nvl(comm,0)) from emp;

9.分组查询:group by
凡是不是组函数的列,都应该出现在group by 中。意思是:group by在使用时,在select中所有未包含在分组函数中的列,都应该包含在group by子句中。
having子句:用来过滤对分组后的结果,必须跟在group by 的后面
where子句中不能出现分组函数,用having子句代替

查询10号和20号部门的平均工资
select  deptno,avg(sal) from emp group by deptno having deptno in(10,20);

运行结果:
这里写图片描述

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7028次
    • 积分:304
    • 等级:
    • 排名:千里之外
    • 原创:15篇
    • 转载:5篇
    • 译文:0篇
    • 评论:1条
    最新评论