NetManager(链接服务器)
SYS超级管理员
权限最大
cmd中sqlplus scott/tiger@my_orcl的这个命令可以登录oracle数据库
常用的命令方式,一般dba去操作
oracle的常用命令太多了,简单看一下
show paramter name; //可以查看当前数据库的参数配置(注意scott权限不够)
conn system/system;//切换用户
conn 模式名、模式密码;(切换用户)
show paramter name;(已经拥有权限可以操作)
创建新用户(模式)
新创建的用户(模式)需要解锁
create user 用户名 account unlock;
忘记密码时:
sqlplus /nolog //注意这是无模式登录,进入数据库后可以修改数据库
前提(必须通过sys或system登录后操作的,因为权限足够)
创建表空间,授权(这是前提)
做增删改查时可以用设置好的那个模式(用户)
创建超市的模式(用户时)不能和原先就有的模式(用户)冲突或一起
可以新建表空间(在创建时就需要制定空间大小)
还可以重新指定空间大小
先在左边的小钥匙用system登录
只保留object
在右边的SQL中写sql语句(不区分大小写)
语句也会自动变色
//创建表空间
create tablespace smbms //(smbms不用这样加单引号’smbms’)
datafile ‘D;//oracle_datafiles/smbms.fbf’ size 20M //(20MB语法不对)
AUTOEXTEND ON;(和小海豚一样选中执行,sql语句以分号结尾)
在D盘新建文件放oracle数据库的数据文件
表上右键profiles可以查看参数
单纯一个表空间不行,(表空间)磁盘放到了D盘,可以存数据,不可查看(因为是二进制的)
有了表空间后,我们要允许有谁可以操作表空间
sys和system都可以操作表空间(表空间相当于创建用户(模式)时指定的存储空间)
PASSWORD EXPIRE;//(初始密码,下次登录之后必须进行修改)
创建、查看表空间必须要系统用户的权限
bdqn可以是创建用户时先登录进去
//工作时给你一个表空间,给你一个初始密码,让你使用,不会给你系统权限
先创建表空间再创建用户
新创建的用户需要授予权限才能登录(只有sys和system的用户才能授予)
可以先统一的分配两个角色,然后用户可以获得角色,获得权限
也可以撤销用户权限
授予权限后新建的用户可以登录
table文件夹下可以查看有没有表
点击用户文件夹,角色需要记住一两个因为是自己指定的,可以点击用户文件夹后在右边的role开头的选项中查看用户获得的角色
//测试新建的用户是否可以创建用户
create table cui_test{
cid int,
canme varchar2
}
这个语句出错,你没有权限(因为你只是给他授予了连接oracle数据库登录权限)
可以通过命令语句再授予所有的权限
grant create tables suiyaya;
(忘记命令,可以百度一下 oracle grant create)
可以查看语句命令
切记,要切换新建的用户到system用户(模式)来操作授予cuiyaya用户权限
grant create table to cuiyaya;
点击cuiyaya用户的文件夹来在右边第四个选项查看新建用户获得的系统权限
登录上cuiyaya(新建用户) 在Tables文件夹上点击,右键新建表 指定表名下一步,向表中添加数据
添加完后可以在右下角点击view sql然后查看转换的命令语句
再点击切换回来,点击左下角、replay创建成功
单纯的授予用户某一权限:
grant create 。。。
命令视频里面有的,老师是结合工作经验,重点学思维
创建表时
和mysql的结构差不多
就是数据类型有点不一样
可以将mysql和oracle的数据类型进行比较记忆
timestamp是时间戳
date是常用的时间
number(7,2)总共长度是7位,保留两位
知道表中谁是主键
forei_cuitest
日期格式是必须在存如表中时,转换成时间格式的
操作上略微有变化
切换到scott模式(用户)
小钥匙切换账户(右上角)
可以设置伪列,相当于表中的主键
可以图形可以命令修改数据都可以的
update set comn=comn+100 empno=7844; //让数据增加了100
先设置伪列,然后设置流水号: rownum(是流水号)是把查询结果从1开始计数的,哪怕是倒序,永远是第一行12345按顺序向下排列
伪列,不能按条件查询,也就是limut
但是伪列可以弄一个子查询弄一张新的表一样,来查询,会通过顺序查询,不然的话会按着原先的顺序来查询
可以再子查询中再嵌套一个子查询,这时会是一个真正的列了,可以进行hwere rn>=6 and rn<=10的按条件查询
rownum一开始是混乱的,不带任何条件,本身rownum是存再自己表里面的,可以先把查询的结果变成一张表,然后,再从这个表里面查询数据,再给这个查询到的数据用rownum排序,但是不能够按条件查询,因为伪列不能查询,但是再在
外面用一个表在进行查询表中的数据,可以对rownum进行操作,而且需要给要查询的表重命名,可以limit操作。这时伪列也变成了一个真正的列
实际工作时,一般多表查询
分页是嵌套了连个子查询,最里面的子查询是你正儿八经的查询,再外面一层需要获取rownum将它as成真正的列,然后再往外面嵌套一层即可,最终分页的判断再最外面当成条件查询就行。
可以在每次的命令中,直接写入命令,自动提交:
#事务提交(注意是把commit之前所有选中的命令语句进行提交)
insert into cui_test values(2,‘bbb’);
insert into cui_test values(5,‘eee’);
commit;
明天直接将用程序连接oracle
函数和序列:(明天再将一节课的oracle的命令)
注意:
插入两条数据
插入完之后没有commit
相当于在两条数据之间进行连接
两条数据
SAVEPOINT a;
又一条数据(这个又一条数据不会执行的)
ROLLBACK TO SACEPOINT a;
操作符号
union
合并两个查询结果并去重
selete empno.ename from emp where empno<7698 #(返回5条结果)
union
selete empno,ename form emp where empno<7844
#取交集,两个查询结果共同有的进行显示
selete empno.ename from emp where empno<7698 #(返回5条结果)
miuns
selete empno,ename form emp where empno<7844
#取差集,第一个查询结果有第二个查询结果没有的结果。
TO_CHAR()函数
select sysdate from deal;
select to_char(sysdate,‘yyyy-HH-dd HH:mm:ss’) from dual;
select to_char(1210.7,‘09,999.00’) from dual;
select SQRT(to_number(‘100’)) from dual;
//常用的记住就行
分析函数(oracle会用到)