2018年5月20日
操作平台:Oracle数据库
背 景:学校的数据库上机配置环境为Oracle数据库,非图形化环境,swarm想记下来一些常规的建表、查表等操作命令。
内 容:
1.创建表的命令格式
CREATE TABLE <表名>
(<属性名><数据类型>[NULL|NOT NULL],...,
[CONSTRAINT<主键名>PRIMARY KEY (主属性列表),]
[CONSTRAINT<外键名>FOREIGN KEY (外键属性列表)REFERENCES<被参照表名(被参照表主键名)>,]...,
[CONSTRAINT<检查名>CHECK<较验条件>]
);
示例:
CREATE TABLE Grade
(
学号 VARCHAR2(12),
课程号 VARCHAR2(7),
成绩 NUMBER(3,0),
CONSTRAINT PK_Grade PRIMARY KEY 学号,课程号,
CONSTRAINT FK_Grade_To_Student FOREIGN KEY 学号 REFERENCES Student 学号,
CONSTRAINT FK_Grade_To_Course FOREIGN KEY 课程号 REFERENCES Student 课程号,
);
/**
*常用的数据类型参见如下:
*VARCHAR2(size) 储存可变长的字符数据
*NUMBER(precision[,<scale>]) precision指定总位数,scale指小数点位(默认为0,范围是-84~127,为负时是左舍入)
*DATE 存储日期和时间信息
*/
2.表中插入数据
INSERT INTO <表名>[(<属性列1>[,<属性列2>]...)] VALUES (<常量1>[,<常量2>]...);
a.对于数字,直接写;
b.对于字符列或者日期列,使用单引号
c.插入数据须与表结构、实体完整性相符合
示例:
INSERT INTO Student VALUES ('201013137001','张三','M','13137',18);
3.表中删除数据
DELETE FROM <表名>[Where <条件>];
示例:
DELETE FROM Grade WHERE 学号=‘95001’;
4.表中修改数据
UPDATE <表名>SET <属性列名>=<表达式> [,<属性列名>=<表达式>]...
[WHERE <条件>];
示例:
UPDATE Student SET 系名='电信' where 学号='05001';
5.创建视图的命令格式
CREATE VIEW <视图名>[(<列名>[,<列名>]...)]
AS <子查询>
[WITH CHECK OPTION];
示例:
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept='IS';
6.创建用户|角色的命令格式
/*创建一个用户*/
CREATE USER 用户名 IDENTIFIED BY 口令
[DEFAULT TABLESPACE 默认表空间名]
[QUOTA [数值K|M]|[UNLIMITED] ON 表空间名]
[PROFILE 概要文件名]
[ACCOUNT LOCK]|[ACCOUNT UNLOCK]
指定一个已存在的表空间作为默认表空间,临时表空间一般使用Oracle中的temp
示例:
CREATE USER test IDENTIFIED BY test /*IDENTIFIED BY 用于指定用户口令*/
DEFAULT TABLESPACE users /*指定用户默认的表空间*/
TEMPORARY TABLESPACE temp /*指定用户的临时表空间*/
QUOTA 3M ON users; /*指定表空间的最大容量*/
/*创建一个角色*/
CREATE ROLE <角色名> IDENTIFIED BY <口令>
7.实体授权命令
GRANT <权限> ON [<用户名>] <表名> TO <用户名|PUBLIC>
[WITH GRANT OPTION] /*WITH GRANT OPTION表示权限可授予其他用户*/
示例:
/*test拥有对Student表进行查询和修改的权限,且能将权限授予他人*/
GRANT select,update ON Student TO test WITH GRANT OPTION;
/**
*常用权限如下:
*select 查询权
*update 修改权
*delefte 删除权
*insert 插入数据权限
*ALL PRIVILEGES 所有操作权限
*/
8.删除类命令
/*删除一个表,如果存在依赖关系,请先删除被参照表*/
DROP TABLE <表名>;
/*删除一个视图*/
DROP VIEW <视图名>;
/*回收实体的权限*/
REVOKE <权限> ON <表名> FROM <用户名>;
9.查看表结构、用户权限类命令
/*查看某个表的结构*/
DESC <表名>;
/*查看当前数据库中所有表
*USER_TABLES是一个数据库系统表。数据库系统表是由DBMS创建并管理的,用于存储数据库信息,USER_TABLES表中包含所有用户的数据表
*/
SELECT table_name FROM user_tables;
/*
*查看完整性约束条件
*/
SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE
FROM user_constraints
WHERE TABLE_NAME='GRANDE';//表名字符全大写
/*
*查看当前用户
*/
show user;
小结和体会:
Oracle编码把我狠狠的坑了一把,我在自己的笔记本上用notepad++写的sql语句,拿到实验室用start命令执行,然后全报未识别字符错误。。
都是编码惹的祸,自己的是utf-8。Oracle字符集是ZHS16GBK。只能上win10记事本了。(以前编程都是ide,真的没关心过编码的问题)
Oracle对个格式要求有点严,字符串用单引号括起,mysql好像单双都行。。。