Oracle数据库入门
一、Oracle 1、oracle服务 1)OracleDBConsoleorcl Oracle数据库控制台服务,orcl是Oracle的实例标识,默认的实例为orcl。 2)OracleOraDb11g_home1TNSListener 监听器服务,服务只有在数据库需要远程访问的时候才需要。 3)OracleServiceORCL 数据库服务(数据库实例),是Oracle核心服务,该服务是数据库启动的基础,只有该服务启动,Oracle数据库才能正常启动。 启动顺序:OracleOracle_homeTNSListener,OracleServiceORCL,OracleDBConsoleORCL 2、sql*plus 1)常用命令 help[?|topic] ?模糊查询/topic 具体命令 desc[ribe] 查询指定对象的数据结构 如:desc scott.emp show option 显示SQL*Plus系统变量的值或环境变量的值 如:show user 用户连接命令: a、conn[ect] conn 用户名/密码@网络服务名 [as sysdba/sysoper] b、disc[onnect] 断开与当前数据库的连接 c、passw[ord] 修改用户的密码 d、exit 断开与数据库的连接,同时会退出sql*plus 查看系统所有用户: select username,account_status from dba_users; 查询用户下所有的表: select table_name from tabs; select table_name from user_tables; select tname from tab; select?*?from?dba_tables?where?owner=‘SCOTT'; 2)用户管理指令 忘记管理员密码: sqlplus/nolog connect/as sysdba alter user sys identified by sys 创建新用户:具有DBA权限的用户执行 create user test identified by 123456 default tablespace users temporary tablespace temp quota 3m on users; //用户角色 connect Role(连接角色):临时用户,特别是那些不需要建表的用户 resource Role(资源角色): 提供给用户另外的权限以创建他们自己的表、序列、过程、触发器、索引和簇。只可以创建实体,不可以创建数据库结构 dba Role(数据库管理员角色):拥有所有的系统权限,只有DBA才可以创建数据库结构 用户授权: grant sys_privi | role to user | role | public [with admin option] sys_privi:表示Oracle系统权限,系统权限是一组约定的保留字。 role:角色。 user:具体的用户名,或者是一些列的用户名。 public:保留字,代表Oracle系统的所有用户。 with admin option:表示可再将权限授予另外的用户。 如:grant connet,resource to test;为用户test授予连接和开发系统权限 收回权限: revoke sys_privi | role from user | role | public; 如:revoke resource from test; 对象权限: grant obj_privi | all column on schema.object to user | role | public [with grant option] | [with hierarchy option] obj_privi:表示对象的权限,可以是alter、execute、select、update和insert等 role:角色名 user:被授权的用户名 with admin option:表示被授权者可再将系统权限授予其他的用户 with hierarchy option:在对象的子对象(在视图上再建立视图)上授权给用户 如:grant select,insert,delete,update on scott.emp to test; 给用户test授予select、insert表soctt.emp的权限 收回对象权限 revoke obj_privi | all on schema.object from user | role | public cascade constraints cascade constraints:表示有关联关系权限也被撤销 如:revoke delete,update on scott.emp from test; 从test用户撤销scott.emp表的update和delete 修改用户:就是创建新用户把create关键字替换成alter 解锁被锁住的用户: alter user test account unlock; 删除用户: drop user 用户名 [cascade] cascade:级联删除选项,连同该用户所拥有的对象一起删除 3)常用数据类型 a、字符类型 char(n byte/char) 默认1字节n最大2000 末尾填充空格以达到指定长度 varchar2(n byte/char) 最大长度必须指定最大4000 超过指定长度则报错 b、数字类型 number(p[,s]) 1-22字节 binary_float 32位单精度浮点型 binary_double 64位双精度浮点型 c、时间类型 date 没有分秒和时间区 timestamp 没有时间区 timestamp with local time zone 使用数据库时区 d、大对象类型 blob 二进制文件,支持事务处理 clob 字节字符数据,支持事务处理 nclob unicode数据,支持事务处理 bfile lob地址指向文件系统上的二进制文件,维护目录和文件名,不参与事务,支持只读 4)sequence序列————主要用于提供主键值 a、创建序列需要的权限: create sequence 或 create any sequence b、语法: CREATE SEQUENCE sequence //创建序列名称 [INCREMENT BY n] //递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1 [START WITH n] //开始的值,递增默认是minvalue 递减是maxvalue [{MAXVALUE n | NOMAXVALUE}] //最大值 [{MINVALUE n | NOMINVALUE}] //最小值 [{CYCLE | NOCYCLE}] //循环/不循环 [{CACHE n | NOCACHE}]; //分配并存入到内存中 如: create sequence seq_test increment by 1 --每次加1个 start with 1 --从1开始计数 nomaxvalue --不设置最大值 minvalue 1 --最小值 nocycle --一直累加,不循环 nocache; --不建缓冲区 c、序列使用 currval: 返回sequence的当前值 nextval: 返回sequence的下一个值 d、注意事项 currval总是返回当前sequence的值,只有在第一次nextval初始化后,才能使用currval,否则会出错 第一次nextval返回的值是初始值:随后的nextval会自动增加定义的increment by值,然后返回增加后的值 使用cache或许会跳号,比如数据库突然不正常down掉,cache中的sequence就会丢失,可以在定义sequence的时候,使用nocache防止这种情况 e、使用触发器实现自增长 create or replace trigger trg_customers before insert on test for each row begin select seq_test.nextval into :new.id from dual; end; 5)分页 a、伪列 rowid行标示符和rownum行号 看不到这两个列,只在数据库内部使用 b、三段式分页 select * from ( select rownum rn,t.* from ( select * from t_users ) t where rownum<=页码值*每页行数 ) where rn>(页码-1)*每页行数 6)常用函数 concat(X,Y):连接字符串X和Y length(X):返回X的长度 substr(X,start[,length])返回X的子字串,从start处开始,截取length个字符,缺省length,默认到结尾 ltrim(X[,TRIM_STR]):把X的左边截去trim_str字符串,缺省截去空格 rtim(X[,TRIM_STR]) 把X的右边截去trim_str字符串 abs(X) X的绝对值 ceil(X) 大于或等于X的最小整数值 floor(X) 小于或等于X的最大整数值 round(X[,Y]) X在第Y位四舍五入 power(X,Y) X的Y次幂 add_months(d,n),在某一个日期 d 上,加上指定的月数 n,返回计算后的新日期。d 表示日期,n 表示加的月数。 last_day(d),返回指定日期当月的最后一天。 extract(fmt FROM d),提取日期中的特定部分。fmt 为:YEAR、DAY等。其中 YEAR、MONTH、DAY可以为 DATE 类型匹配,也可以与 TIMESTAMP 类型匹配;但是 HOUR、MINUTE、SECOND 必须与 TIMESTAMP 类型匹配。 to_char(d|n[,fmt]):把日期和数字转换为制定格式的字符串。Fmt是格式串 to_date(X,[,fmt]) 把一个字符串以fmt格式转换成一个日期类型 to_number(X,fmt])把一个字符串以fmt格式转换为一个数字 nvl(X,VALUE):如果X为空,返回value,否则返回X nvl2(x,value1,value2)如果x非空,返回value1,否则返回value2 3、jdbc连接数据库————同mysql 驱动类:ojdbc6.jar 类名:oracle.jdbc.driver.OracleDriver url:jdbc:oracle:thin:@192.168.0.1:1521:orcl user:scott password:a1s2d3f4 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |