开篇:SQL语言的分类:
-
DQL(数据查询语言)select
-
DML(数据操作语言)insert、update、delete
-
DDL(数据定义语言)create、alter、drop
-
DCL(数据控制语言)grant、revoke
一、Oracle数据类型、表的创建及对表数据的增删改查:
1、基本数据类型,和mysql整体上比较相似,但是有些地方有细微差别:
——mysql:int(常用数字类型), varchar(20)
——Oracle:number(常用数字类型),varchar2(n)可以容纳两个字符、nvarchar2(n)可以容纳两个汉字
2、表的创建和对表数据的基本增删改查:
2.1、–创建一张表:
CREATE TABLE user2( idd NUMBER primary key, username VARCHAR2(40), pwd VARCHAR2(40) );
Oracle没有办法像mysql那样使用AUTO_INCREAMENT实现自增,如果想实现自增,需要依靠序列来完成
2.2、–创建序列:
CREATE sequence us START WITH 1 INCREMENT by 1;
2.3、现在利用us序列,在向user2表中添加数据时候,实现自增效果:
INSERT INTO user2 (idd, username, pwd) VALUES (us.nextval, '吉桂权', '123');
2.4、查询当前用户所有的序列:
SELECT SEQUENCE_OWNER, SEQUENCE_NAME FROM dba_sequences WHERE SEQUENCE_OWNER = 'JIGUIQUAN';
查询结果为:
2.5、删除序列:
DROP sequence us;
2.6、查询结果:
SELECT * FROM user2;
2.7、修改数据
UPDATE user2 set PWD = '456' WHERE idd = 4;
2.8、删除数据:
DELETE FROM user2 WHERE idd = 4;
2.9、查看当前账号下有多少张表:
SELECT * FROM user_tables;
二、账号的创建、删除、修改和查询(这类操作必须由超级管理员来完成 system和sys用户)
1、查询所有用户:
SELECT * FROM all_users;
2、创建一个账号:create user 账号名 identified by 初始化密码[account lock/unlock password expired] ;
——account lock/unlock:代表账户创建后,是否为锁定状态;
——password expired:代表密码是否为一次过期型(第一次登陆可以,但是会要求立即修改密码)
CREATE user zhangsan IDENTIFIED by 123 account LOCK password expire;
此时“zhangsan”这个用户的状态为lock,不可以登陆:
3、给张三这个用户解锁:
ALTER USER zhangsan account unlock;
现在“zhangsan”这个用户已经被解锁了,登陆时候回理解要求修改口令(密码):
但是可以看到,即使为“zhangsan”设置了新的口令,依然不可以登陆,原因是:
ORA-01045: user ZHANGSAN lacks CREATE SESSION privilege; logon denied:
用户张三缺少 CREATE SESSION 的权限(登陆权限);
4、给“zhangsan”授予登陆 oracle 系统的权限:grant 权限名 to 用户
GRANT CREATE SESSION to zhangsan;
至此,用户“zhangsan”就可以登录进oracle系统了:
5、删除账户:DROP USER 用户名
DROP USER zhangsan;
报错的意思是,当前处于连接状态的用户,不可以被drop删除,比较人性化,可以使用“disc”断开 zhangsan 的连接,然后就可以正常删除了;
6、查看当前用户的详细信息:
SELECT * from user_users;
补充:与 disc 断开操作相反的操作为conn连接,conn jiguiquan/456,即可直接连接;