oracle基础(sql基础)
2015-06-11 15:43
453 查看
1、建表
--学生表
create table student (xh number(3),
xm varchar2(20),
sex char(2)
);
2、修改表
--添加一个字段
SQL>alter table student add (classId number(5));
--修改一个字段的长度
SQL>alter table student
modify (xm varchar(20));
--修改字段的类型或是名字(表不能有数据),不建议这么做
SQL>alter table student
modify (xm char(20));
--删除一个字段 不建议做(删除之后,顺序就变了,加没问题,因为是加在后面)
SQL>alter table
student drop column sal;
--修改表名
SQL>rename student
to stu;
--删除表
SQL>drop table
student;
3、添加数据
--所有字段都插入数据
insert into student
values ('001' , '张三' , ‘男’);
insert into student () values ();
默认的日期格式:10-2月-1992;
修改日期格式:
SQL>alter session set NLS_DATE_FORMAT = 'yyyy-mm--dd';
4、修改数据
SQL>update student
set sex='女' where xh='001';
5、删除数据
SQL>delete from
student;
delete删除所有记录,表结构还在,数据可恢复
SQL>truncate table student;
truncate删除表中的所有记录,表结构还在,数据不可恢复,速度快
SQL>drop
table student;
drop删除表的结构和数据
--创建保存点
SQL>savepoint a;
--恢复到保存点
SQL>rollback to a;
查询语句
--查看表结构
desc emp;
--查看所有列
select * from emp;
set time on;打开显示操作时间的开关,在下面显示查询时间
--使用算术表达是
nvl (comm,0)如果comm为null,用0 代替;
--连接字符串||
select ename||' is a '||job from emp;
--使用like模糊查询
%:表示任意0到多个字符, _:表示任意单个字符
--查询首字母为S的员工
select * from emp where ename like'S%';
--查询第三个字符为O的员工
select * from emp where ename like'__O%';
--排序 order by asc(desc)
--数据分组 max min avg sum count
--group by 和 having 子句
group by 用于对查询的结果分组统计
having 子句用于限制分组显示结果
(如果你要分组查询的话,分组的字段deptno一定要出现在查询的列表里面,否则会报错。)
--对数据分组的总结n
1 分组函数只能出现在选择列表、having、order by子句中(不能出现在where中)
2 如果在select语句中同时包含有group by, having, order by 那么它们的顺序是group by, having, order by
3 在选择列中如果有列、表达式和分组函数,那么这些列和表达式必须有一个出现在group by 子句中,否则就会出错。
分页查询
按雇员的id号升序取出
oracle的分页一共有三种方式
1.根据rowid来分
select * from t_xiaoxi where rowid in (select rid from (select rownum rn, rid from(select rowid rid, cid from t_xiaoxi order by cid desc) where rownum<10000) where rn>9980) order by cid desc;
执行时间0.03秒
2.按分析函数来分
select * from (select t.*, row_number() over(order by cid desc) rk from t_xiaoxi t) where rk<10000 and rk>9980;
执行时间1.01秒
3.按rownum来分
select * from (select t.*,rownum rn from(select * from t_xiaoxi order by cid desc)t where rownum<10000) where rn>9980;
执行时间0.1秒
==合并查询
集合操作符号union,union all,intersect,minus
union:并集,自动去重
union all:并集,不去重
intersect:交集
minus:差集
SQL
--学生表
create table student (xh number(3),
xm varchar2(20),
sex char(2)
);
2、修改表
--添加一个字段
SQL>alter table student add (classId number(5));
--修改一个字段的长度
SQL>alter table student
modify (xm varchar(20));
--修改字段的类型或是名字(表不能有数据),不建议这么做
SQL>alter table student
modify (xm char(20));
--删除一个字段 不建议做(删除之后,顺序就变了,加没问题,因为是加在后面)
SQL>alter table
student drop column sal;
--修改表名
SQL>rename student
to stu;
--删除表
SQL>drop table
student;
3、添加数据
--所有字段都插入数据
insert into student
values ('001' , '张三' , ‘男’);
insert into student () values ();
默认的日期格式:10-2月-1992;
修改日期格式:
SQL>alter session set NLS_DATE_FORMAT = 'yyyy-mm--dd';
4、修改数据
SQL>update student
set sex='女' where xh='001';
5、删除数据
SQL>delete from
student;
delete删除所有记录,表结构还在,数据可恢复
SQL>truncate table student;
truncate删除表中的所有记录,表结构还在,数据不可恢复,速度快
SQL>drop
table student;
drop删除表的结构和数据
--创建保存点
SQL>savepoint a;
--恢复到保存点
SQL>rollback to a;
查询语句
--查看表结构
desc emp;
--查看所有列
select * from emp;
set time on;打开显示操作时间的开关,在下面显示查询时间
--使用算术表达是
nvl (comm,0)如果comm为null,用0 代替;
--连接字符串||
select ename||' is a '||job from emp;
--使用like模糊查询
%:表示任意0到多个字符, _:表示任意单个字符
--查询首字母为S的员工
select * from emp where ename like'S%';
--查询第三个字符为O的员工
select * from emp where ename like'__O%';
--排序 order by asc(desc)
--数据分组 max min avg sum count
--group by 和 having 子句
group by 用于对查询的结果分组统计
having 子句用于限制分组显示结果
(如果你要分组查询的话,分组的字段deptno一定要出现在查询的列表里面,否则会报错。)
--对数据分组的总结n
1 分组函数只能出现在选择列表、having、order by子句中(不能出现在where中)
2 如果在select语句中同时包含有group by, having, order by 那么它们的顺序是group by, having, order by
3 在选择列中如果有列、表达式和分组函数,那么这些列和表达式必须有一个出现在group by 子句中,否则就会出错。
分页查询
按雇员的id号升序取出
oracle的分页一共有三种方式
1.根据rowid来分
select * from t_xiaoxi where rowid in (select rid from (select rownum rn, rid from(select rowid rid, cid from t_xiaoxi order by cid desc) where rownum<10000) where rn>9980) order by cid desc;
执行时间0.03秒
2.按分析函数来分
select * from (select t.*, row_number() over(order by cid desc) rk from t_xiaoxi t) where rk<10000 and rk>9980;
执行时间1.01秒
3.按rownum来分
select * from (select t.*,rownum rn from(select * from t_xiaoxi order by cid desc)t where rownum<10000) where rn>9980;
执行时间0.1秒
==合并查询
集合操作符号union,union all,intersect,minus
union:并集,自动去重
union all:并集,不去重
intersect:交集
minus:差集
SQL
相关文章推荐
- Oracle基础——第一章 Oracle简介
- Oracle基础——第二章 SQL语言基础
- Oracle基础——第三章 Oracle PL/SQL语言基础
- Oracle基础——第四章 用户管理及表空间
- Oracle基础——第五章 表的实现
- Oracle基础——第六章 查询
- OCP教材推荐
- PL/SQL 基础
- ORDER BY子句
- oracle数据库对象--序列
- Oracle 创建用户及建表
- 表空间
- Oracle-如何简便地查找某一年的信息
- 一套Oracle SQL练习题及答案
- oracle基础学习02
- DBA,SYSDBA,SYSOPER三者的区别
- oracle基础一
- oracle基础二
- Oracle一些基本术语英汉对照
- Oracle 11203 + ASM安装 for HP UX