ORACLE 数据库SQL基础
1、创建用户
CREATE USER jack --创建用户
INDENTIFIED BY 123456 --设置密码
ACCOUNT UNLOCK --用户解锁
2、给角色授权
GRANT CONNECT, --与服务器连接会话权限
RESOURCE, --创建表、存储过程、触发器、索引等权限
DBA --系统权限,拥有创建用户的权限
TO jack
3、回收权限
REVOKE CONNECT FROM jack
4、修改用户
ALTER USER jack IDENTIFIED BY 654321
ALTER USER jack LOCK|UNLOCK
数据定义语言(DDL)
CREATE命令、ALTER命令、DROP命令
建立一张学生表
CREATE TABLE student_1(
sno varchar2(10),
sname varchar2(20),
sage number(3),
sbirthday date
)
复制表结构
CREATE TABLE student_2 AS
SELECT * FROM student_1 WHERE 1=2;
复制表
CREATE TABLE student_3 AS
SELECT * FROM student_1;
创建结果集表
CREATE TABLE student_2 AS
SELECT * FROM student_1 WHERE sage<=20;
删除表
DROP TABLE student_1; --可以回滚
TRUNCATE TABLE student_2; --不可回滚
DELETE FROM student_3 WHERE 1=1; --有条件删除数据
添加列
ALTER TABLE student_1 ADD ssex varchar2(2);
修改数据类型
ALTER TABLE student_1 MODIFY sno number;
修改列名
ALTER TABLE student_1 RENAME COLUMN sno TO id;
删除列
ALTER TABLE student_1 DROP COLUMN ssex;
修改表名
ALTER TABLE student_1 RENAME TO student_0;
添加表注释
COMMENT ON TABLE student_0 IS '学生表';
添加表字段注释
COMMENT ON COLUMN student_0.id IS '学生ID';
查看表注释
SELECT * FROM user_tab_comments
WHERE TABLE_NAME='student_0';
查看表字段注释
SELECT * FROM user_col_comments
WHERE TABLE_NAME='student_0';
表的约束
1、PRIMARY KEY:主键约束
2、FOREIGN KEY:外键约束
3、CHECK :检查约束
4、UNIQUE :唯一约束
5、NOT NULL:非空约束
创建约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束内容
添加主键
ALTER TABLE student_0 ADD CONSTRAINT myconstraint PRIMARY KEY(id)
添加外键约束
ALTER TABLE student_0 ADD CONSTRAINT myforeingkey FOREIGN KEY (cno) REFERENCES course (cno)
添加check约束
ALTER TABLE student_0 ADD CONStRAINT mycheck CHECK (ssex='男' or ssex='女')
添加唯一约束
ALTER TABLE student_2 ADD CONSTRAINT myunique UNIQUE(id)
添加非空约束
ALTER TABLE student_2 ADD CONSTRAINT mynotnull NOT NULL(id)
删除约束
ALTER TABLE student_2 DROP CONSTRAINT myunique
创建会话级临时表
CREATE GLOBAL TEMPORARY TABLE table_name(col1,col2...)ON COMMIT PRESERVE ROWS;
创建事务级临时表
CREATE GLOBOLTEMPORARY TABLE table_name(col1,col2...)ON COMMIT DETELE ROWS;
临时表的作用:把复杂的逻辑拆分开来,用临时表存储中间结果,以方便后面的逻辑处理。程序执行过程中可能需要存放一些临时的数据,这些数据在整个程序会话过程中都需要用的等等。
会话级临时表只有当会话结束的时候临时表中的数据才会被截断,而且事务级临时表则不管是COMMIT、ROLLBACK、或者是会话结束,临时表中的数据都会被截断清空(TRUNCATE TABLE)