数据操纵语言dml
select 查询
可以查询所有的列也可以查询指定的列,中间用逗号隔开,当null和别的数字加减乘除的时候结果都是null
select 显示别名例如 select last_name name, commission_pct comm from emp;
意识是显示的时候last_name 用name 显示 commission_pct 用comm显示不同的列之间用逗号隔开,不同的名字之间用空格隔开默认的显示的时候都是大写,如果有大小写或汉子的话,要显示的内容用”” 引起来。
例如:select last_name “姓名”, commission_pct comm from emp;
连接是|| 例如 select last_name ||job_id as “employees” from emp;
显示的时候 last_name和job_id显示在一个列列里名字是employees
也例如:select last_name ||is a’||job_id as “employee” from employees
select distinct last_name from emp; 重复的行显示一行。
describe 列出结构。
例如 desc emp;
where子句,当where条件是字符串或者是日期,要用单引号引起来,where条件区分大写的,假如有时候不知道大小写的话,可以通过upper更改。
例如:select last_name from emp where upper(last_name) =whalen’;
lower 后面是改成小写。
in条件。例如:select manager_id from emp where manager_id in (100,101,201);
他和这条语句是一样的:select manager_id from emp where manager_id=100 or manager_id=101 or manager_id=201;
字符也可以的例如:select manager_id from emp where last_name in (‘wang’ ,li’);
select语句别名用双引号引起来。
like 模糊查询。
代表一个字符 %代表多个字符。
怎样创建表
建表。-学生表
create table student ( 表名
xh number(4), 学号
xm varchar2(20), 姓名
sex char(2), 性别
birthday date, -出生日期
sal number(7,2) -奖学金
-班级表 create table class(
classid number(2),
cname varchar2(40)
修改表 添加一个字段。
sql>alter table student add (classid number(2));
修改一个字段的长度
sql>alter table student modify (xm varchar2(30));
修改字段的类型/或是名字(不能有数据) 不建议做
sql>alter table student modify (xm char(30));
删除一个字段不建议做(删了之后,顺序就变了。加就没问题,应为是加在后面)
sql>alter table student drop column sal;
修改表的名字很少有这种需求
sql>rename student to stu;
删除表 sql>drop table student;
更改日期显示格式。
sql> alter session set nls_date_format='yyyy-mm-dd';
session altered.
sql> select sysdate from dual; (查看日期显示格式)
sysdate
错误写法:select * from student where sex = null;
正确写法:select * from student where sex is null;
如果要查询sex不为null,则应该这样写:
select * from student where sex is not null;
insert into emp values ('a002', mike', 男', 1905-05-06', 10);
这样添加数据的时候,每一列的数据都要写上。
update emp set email=''where id='01'; 增加一行的某一个值。
sql> update student set classid='2' where classid is null;
sql> update student set sal=null where sal is not null;
sql> update student set xingming='null' where xingming is not null;
update student set birthday='1986-03-19',sal='300',classid='2' where xuehao=08;
insert into emp (id,name,sex,age) values(12,'德华','男',35)增加一行。
alter table emp add(爱好 varchar2(20));增加一列。
alter table emp drop column 爱好。
alter table emp drop column sex 删除一列。
s**epoint a; -创建保存点
delete 的数据可以恢复。
rollback to a; -恢复到保存点
现在说下对象权限,现在要做这么件事情:
希望xiaoming用户可以去查询emp表
希望xiaoming用户可以去查询scott的emp表
grant select on emp to xiaoming
希望xiaoming用户可以去修改scott的emp表
grant update on emp to xiaoming
希望xiaoming用户可以去修改/删除,查询,添加scott的emp表
grant all on emp to xiaoming
scott希望收回xiaoming对emp表的查询权限
revoke select on emp from xiaoming
对权限的维护。
希望xiaoming用户可以去查询scott的emp表/还希望xiaoming可以把这个权限继续给别人。
-如果是对象权限,就加入 with grant option
grant select on emp to xiaoming with grant option
sql> create user xiaohong identified by m123;
用户已创建。
sql> grant connect to xiaohong;
授权成功。
如果是系统权限。
system给xiaoming权限时:
grant connect to xiaoming with admin option
sql> revoke select on emp from xiaoming;
撤销小明对emp表的查询权限。
例子:指定scott这个用户最多只能尝试3次登陆,锁定时间为2天,让我们看看怎么实现。
创建profile文件 (用管理员的身份去操纵)
sql> create profile lock_account limit failed_login_attempts 3 password_lock_time 2;
sql> alter user scott profile lock_account;
2.给账户(用户)解锁
sql> alter user tea account unlock;
例子:给前面创建的用户tea创建一个profile文件,要求该用户每隔10天要修改自己的登陆密码,宽限期为2天。看看怎么做。
sql> create profile myprofile limit password_life_time 10 password_grace_time 2;
sql> alter user tea profile myprofil;
如果希望用户在修改密码时,不能使用以前使用过的密码,可使用口令历史,这样oracle就会将口令修改的信息存放到数据字典中,这样当用户修改密码时,oracle就会对新旧密码进行比较,当发现新旧密码一样时,就提示用户重新输入密码。
例子: 1)建立profile
sql>create profile password_history limit password_life_time 10 password_grace_time 2 password_reuse_time 10
password_reuse_time //指定口令可重用时间即10天后就可以重用
2)分配给某个用户
alter user guotao profile password_history;
概述:当不需要某个profile文件时,可以删除该文件。
sql> drop profile password_history 【casade】
注意:文件删除后,用这个文件去约束的那些用户通通也都被释放了。
加了casade,就会把级联的相关东西也给删除掉。
char 定长最大2000个字符。
例子:char(10) ‘小韩’前四个字符放‘小韩’,后添6个空格补全如‘小韩’
varchar2(20) 变长最大4000个字符。
例子:varchar2(10) ‘小韩’ oracle分配四个字符。这样可以节省空间。
clob(character large object) 字符型大对象最大4g
char 查询的速度极快浪费空间,查询比较多的数据用。
varchar 节省空间
数字型。number范围 -10的38次方到 10的38次方
可以表示整数,也可以表示小数
number(5,2)
表示一位小数有5位有效数,2位小数
范围:-999.99到999.99
number(5)
表示一个5位整数
范围99999到-99999
日期类型 date 包含年月日和时分秒 oracle默认格式 1-1月-1999
问题:如何按照工资的从低到高的顺序显示雇员的信息?
select * from emp order by sal;
问题:按照部门号升序而雇员的工资降序排列
select * from emp order by deptno, sal desc;
order by 默认是升序加desc就是降序了。
如何显示所有员工中最高工资和最低工资?
select max(sal),min(sal) from emp;
查询最高工资员工的名字,工作岗位
select ename, job, sal from emp where sal = select max(sal) from emp);
ORACLE学习笔记
rac real application clusters 真实应用集群。ohs oracle http server sga system global area 系统全局区,是系统为实例分配的一组共享缓冲存储区,用于存放数据库数据和控制信息,以实现对数据库数据的管理和操作。实例 存取和控制数据数...
Oracle学习笔记
参数文件 记录了控制文件的位置,控制文件是一个非常小的二进制文件,最大。可以增长到 64mb,控制文件包括如下主要信息 数据库的名字,检查点信息,数据库创建的时间戳 所有的数据文件,联机日志文件,归档日志文件信息 备份信息等 有了这些信息,oracle 就知道那些文件是数据文件,现在的重做日志文件是...
ORACLE学习笔记
目录。oracla管理 1 1.登录sqlplus 1 1.1.sysdba 身份登陆 1 1.2.普通用户登陆sqlplus 1 2.常用命令 1 3.格式化提示符 2 4.查看系统状态 2 4.1.查看实例状态 2 4.2.查看表 2 5.关闭 启动 2 6.创建表空间 3 7.用户和权限 3 ...