oracle:
--创建用户
create user 用户名 identified by 密码 (default tablespace 默认表空间名 temporary tablespace 临时表空间)
--查看创建的用户
select * from dba_users;
--给创建的用户授权
grant connect to 用户名 连接权限
--更改用户密码
alter user 用户名 identified by 新密码
--将某用户锁定
alter user 用户名 account lock
--删除用户
drop user 用户名 cascade (加cascade,将此用户关联的内容全部删除)
--查看oracle的系统权限
select * from system_privilege_map;
--表空间数据字典 dba_tablespaces/user_tablespaces
select * from dba_tablespaces;
--查看系统用户的表空间
select * from dba_users;
--查看当前用户的表空间
select * from user_users;
--下载sql developer在oracle官网下载 www.oracle.com
--主键约束 唯一性,非null
alter table 表名 add constraint 主键名 primary key(列名) ;
--非空约束
alter table 表名 modify(列名 数据类型 not null) ;
--唯一约束 列可以为空,可以有多个唯一性约束
alter table 表名 add constraint 约束名 unique(列名) ;
--检查约束 对某一列数据进行检查校对,保证数据的正确性
alter table 表名 add constraint 检查约束名 check(sex='男' or sex='女');
--外键约束 建立和加强两个表之间的链接的一列和多列,外键约束是唯一涉及两个表的约束
--先创建主表,再创建从表,主表也叫副表,主从表外键列名可以不一样。
例:主表:字段必须是唯一键或主键
create table department(
depid varchar2(10) primary key,
dname varchar2(30)
);
从表
create table student(
sid number(8,0),
name varchar2(20),
sex char(2),
depid varchar2(10) references department(depid)
);
修改表时添加外键
alter table student add constraint fk_depid foreign key(depid) references department(depid) on delete cascade;
cascade:级联删除,父表中删除包含主键值的行的操作,该值由子表的现有行中的外键列引用。在级联删除中,删除父表中的记录时,同时删除子表中外键引用此主健的记录。
sql 外键 on update cascade 和 on delete cascade 作用区别
用来设置当主键表中的被参考列的数据发生变化时,外键表中响应字段的变换规则的。update 则是主键表中被参考字段的值更新,delete是指在主键表中删除一条记录:
on update 和 on delete 后面可以跟的词语有四个
no action , set null , set default ,cascade
no action 表示 不做任何操作,
set null 表示在外键表中将相应字段设置为null
set default 表示设置为默认值(restrict)
cascade 表示级联操作,就是说,如果主键表中被参考字段更新,外键表中也更新,主键表中的记录被删除,外键表中改行也相应删除

--禁用约束
alter table student disable constraint fk_depid;
--彻底删除约束
alter table student drop constraint fk_depid;

--添加列
alter table 表名 add 列名 数据类型;
--修改列
alter table 表名 modify 列名 新数据类型;
--删除列
alter table 表名 column drop 列名;
--修改列名
alter table 表名 rename column 列名 to 新的列名;
--修改表名
rename 表名 to 新表名;
--删除表数据 截断删除 删除表数据效率更高 无法回滚 物理删除 一次性删除无where条件语句 会释放空间
truncate 表名
--删除表结构及其数据 无法回滚 物理删除
drop 表名

drop、truncate和delete的区别
相同点:
1.truncate和不带where子句的delete、以及drop都会删除表内的数据。
2.drop、truncate都是DDL语句(数据定义语言),执行后会自动提交。
不同点:
1. truncate 和 delete 只删除数据不删除表的结构(定义)
drop 语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index);依赖于该表的存储过程/函数将保留,但是变为 invalid 状态。
2. delete 语句是数据库操作语言(dml),这个操作会放到 rollback segement 中,事务提交之后才生效;如果有相应的 trigger,执行的时候将被触发。
truncate、drop 是数据库定义语言(ddl),操作立即生效,原数据不放到 rollback segment 中,不能回滚,操作不触发 trigger。
3.delete 语句不影响表所占用的 extent,高水线(high watermark)保持原位置不动
drop 语句将表所占用的空间全部释放。
truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage;truncate 会将高水线复位(回到最开始)。
4.速度,一般来说: drop> truncate > delete
5.安全性:小心使用 drop 和 truncate,尤其没有备份的时候.否则哭都来不及
使用上,想删除部分数据行用 delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用 drop
想保留表而将所有数据删除,如果和事务无关,用truncate即可。如果和事务有关,或者想触发trigger,还是用delete。
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。
6.delete是DML语句,不会自动提交。drop/truncate都是DDL语句,执行后会自动提交。
7、TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。
但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。
DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。
TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
8、TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。
如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。
9、对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。
由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。
10、TRUNCATE TABLE 不能用于参与了索引视图的表。

--oracle设置日期格式
--设置美国英语的日期格式
alert session set nls_language='AMERICAN';
--设置简体中文的日期格式
alert session set nls_language='SIMPLIFIFD CHINESE';
--设置自定义格式
alert session set nls_date_format='YYYY/MM/DD';

--字符串连接符
|| concat 注意拼接时日期和字符只能在单引号中出现。

模糊查询对特殊字符的处理,当数据中包含‘_’和‘%’时,模糊查询需要转义
select * from 表名 where 字段名 like '\_%' escape '\';

where子句中同时使用逻辑操作符的优先级
not优先级最高,and次之,or最低,如果需要改变优先级需要加括号

order by子句 当select语句包含多个子句(where,group by,having,order by)时,order by需要排在最后 asc升序,desc降序

储存过程 储存函数 都是数据库对象
指储存在数据库供所有用户程序调用的子程序叫储存过程、储存函数。

储存过程和储存函数相同点:完成特定功能的程序
储存过程和储存函数区别:储存函数可以用return语句返回值,而存储过程不能用return语句返回值
创建储存过程的语法:create procedure or replace 储存过程名 as plsql子程序体
--第一个储存过程,打印helloword
/*
调用储存过程方式有两种
1.exec sayhelloword();
2.begin
sayhelloword();
sayhelloword();
end;
/
*/
create or replace procedure sayhelloword as --as 不能省略
--说明部分
begin
dbms_output.put_line('helloword');
end;
/

 

如果不知道oracle的安装目录可以用 cat /etc/oraInst.loc 来查看

inventory_loc=/u01/app/oraInventory

inst_group=oinstall

然后/u01/app/oraInventory/ContentsXML/inventory.xml里记录了你安装的所有oracle产品的目录信息

 

(1) 以oracle身份登录数据库,命令:su – oracle(注意中间-)完全切换到oracle用户

(2) 进入Sqlplus控制台,命令:sqlplus /nolog

(3) 以系统管理员登录,命令:connect / as sysdba

(4) 启动数据库,命令:startup

(5) 如果是关闭数据库,命令:shutdown immediate

(6) 退出sqlplus控制台,命令:exit

(7) 进入监听器控制台,命令:lsnrctl

(8) 启动监听器,命令:start

(9) 退出监听器控制台,命令:exit

(10) 重启数据库结束

 

sqlplus有几种登陆方式 比如:
1.C: > sqlplus "/as sysdba"   --以操作系统权限认证的oracle sys管理员登陆

2.C: > sqlplus /nolog             --不在cmd或者terminal当中暴露密码的登陆方式
SQL> conn /as sysdba
&
SQL> conn sys/password as sysdba

3.C: > sqlplus scott/tiger      --非管理员用户登陆

4.C: > sqlplus scott/tiger@orcl    --非管理员用户使用tns别名登陆

5.C: > sqlplus sys/password@orcl as sysdba --管理员用户使用tns别名登陆
6.C: > sqlplus                       --不显露密码的登陆方式
Enter user-name:sys
Enter password:password as sysdba     --以sys用户登陆的话 必须要加上 as sysdba 子句
posted on 2018-07-11 09:42  唐小夏  阅读(112)  评论(0编辑  收藏  举报