用户管理:
1. 创建用户:create user llu(账号) identified by llu(密码);
2. 用户密码修改:password llu;
3. 删除用户,如果非管理员,则需要有drop权限:drop user llu [cascade] (方括号里面是可选参数,可以一起删除用户所创建的表)
4. 赋予用户远程登陆权限:grant connect to llu;
5. 赋予用户创建表的权限:grant resource to llu;
6. 用户创建表:create table test(userid varchar(30),username varchar(30));
7. 查看表结构:desc test;
8. 赋予A用户查询B用户下test表的权限:grant select on test to A; 查询的时候A需要输入:select * from B.test;
9. 赋予A用户修改B用户下test表的权限:grant update on test to A;
10. 回收权限:revoke select on test from A;
11. 权限传递(允许A用户传递权限给其他用户):grant select on test to A with grant option;
12. 权限回收后,传递的权限一起被回收
13. 账户锁定(3次密码输入错误账户就锁定2天,aaa是配置文件):create profile aaa limit failed_login_attempts 3 password_lock_time 2;
Alter user lockuser1 profile aaa;(把配置文件作用到lockuser1上)
14. 如何解锁:alter user lockuser1 account unlock;
15. 要求用户定期修改密码,并宽限2天,10天以后才可重用密码:create profile bbb limit password_life_time 10 password_grace_time 2 password_reuse_time 10;
Alter user llu profile bbb;
16.
表的管理:(让pl/sql显示执行的时间,set timing on)
1. 表名命名规范:必须以字母打头,长度不超过30字符,不能使用oracle保留字,只能使用A-Z,a-z,0-9,$,#等(标点符号不要用)
2. Char,定长的字段,最长2000字符(查询效率高,空间占用大)
3. Varchar2,可变长度,最长4000字符(查询慢,空间占用小)
4. Clob(最大支持4G的字符)
5. 数字类型:number(5,2)
6. 时间类型:date,timestamp(精度更高)
7. 图片类型:blob(二进制)
8. 创建表:
create table class(
classid number(2),
classname varchar2(40)
);
9. 表创建后,已有数据的情况下添加字段:alter table student add (classid number(2));
10. 修改已创建字段长度:alter table student modify (xm varchar2(30));
11. 字段尽量不要删除,加字段默认加到最后
12. 表改名也很少用(rename A to B)
13. 插入字段:insert into student values(1,’鲁良’,’男’,’31-8月-2011年’,9999.9,12)
或者改变默认日期格式:alter session set nls_date_format = ‘yyyy-mm-dd’
14. 添加一个空值:insert into student (xh,xm,sex,birthday) values(3,’aa’,’女’,null);
如果要查找空值的数据:select * from student where birthday is null;
Sql等工具是select * from student where birthday=’null’
更新表中某些数据:Update student set sex=’女’ where xh=001;
15. 删除操作:
a) Delete from student; 数据删除,但是表结构还在,写日志,如果建立回滚点,则可以恢复。
i. Savepoint aa; 这个很重要(类似镜像)
ii. Rollback to aa;
b) Drop table student; 这个是删除数据和表结构(无法恢复)
c) Delete from student where xh=’A001’; 这个是删除一条记录
d) Truncate table student; 删除数据,表结构还在,不写日志,但是数据无法恢复(删除速度快)
16. 查询表结构:desc 表;
17. 批量插入数据(自己复制自己):insert into 表 (字段1,字段2,字段3) select * from 表
18. 查询记录的时候合并相同的条目,或者说只显示一条:select distinct 条目1, 条目2 from 表;
19. 查询的时候注意:where 条目=‘AaBb‘;引号里面的内容是区分大小写的
20. 查询的时候如果有个条目值为null,则需要用到nvl函数:select 条目*13+nvl(条目,0)*13 "别名",条目 from 表;
21. 查询特定条件的数值,需要select 条目1,条目2 from 表 where 条目>值;
22. 模糊查询的时候,用到%字符,where 条目 like ‘s%’;(首字母是s的条目)
23. 如果需要查找第三个字符是S的条目:where 条目 like ‘__S%’;(两条下划线)
24. 如果有多个类似的查询条件:where 条目 in(123,234,800);
(类似or,但是查询速度很快)
25. Select * from emp where (sal>500 or job=’manager’) and ename like ‘j%’;
(emp表中,符合薪水大于500或者manager职位,同时姓名首字母是j的人)注意括号
26. 查询出来的数据按照从小到大排序:select * from emp order by sal;
如果是从大到小:select * from emp order by sal desc;
27. 查询出来的数据需要1种以上的排序:select * from emp order by deptno,sal desc; (注意两个条件中间用逗号)
28. 查询出来的数据用表里没有的条目进行排序:select ename,(sal+nvl(comm,0))*12 “年薪” from emp order by “年薪”; (使用别名)
29.