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

来源:互联网 发布:皮带机功率计算软件 编辑:程序博客网 时间:2024/05/07 15:45
            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 empasselect id,name,salary,jobfrom employees;

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

1.增加新的字段–

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

查看数据表结构 desc table_name

desc employees;

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

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

alter table employeesmodify( salary number(9,2)):

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

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

rename employees to emp;

4.删除字段:

--删除genderalter table employeesdrop gender;

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

③删除表

drop table employees;

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

①insert语句:插入一条记录

insert into employeesvalues(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 employeesset 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替换成0select 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
原创粉丝点击