常用sql命令@oracle数据类型概括@权限、角色、用户的创建于使用@伪列及其注意事项
1.各种不同权限的用户
系统权限:
用户名:sys/system(用户名默认的是 sys,system);密码:Oracle11g(密码是你安装的密码,oracle11g的密码必须填Oracle11g)
重置用户密码,这里以scott用户为例:
alter user scott identified by tiger;(当忘记密码时,可以采用sqlplus sys/aaa as sysdba;--以数据库管理员的身份登录;alter user identified by 都是关键字)
对SCOTT解:
alter user scott account unlock;
scott也可以在登录的时候 用一个错误的密码,会让你重新输入密码 和设置密码。
2.oracle数据库命令操作的使用
安装成功后进入DOS界面操作在进行以下操作时,需启动oracle服务(oracleServiceoral),如果要在项目中连接数据库则还需要开启两个服务(oracleOraDb11g_home1第二个、OracleDBConsoleorcl);最好设置成手动的,每次使用之前开启服务,因为oracle非常占内存,如果开机启动,不但导致开机慢还容易导致性能不好的电脑还会开机死机状态。
1)进入oracle命令窗口有以下三种方法:
A、开始--运行—cmd(或win+r输入cmd)回车:输入sqlplus 回车;提示输入正确的用户名和密码;
B、开始—>所有程序-àoracle文件-à应用程序开发—>sqlplus;
C、开始—>输入sqlplus回车:提示输入正确的用户名和密码;
2)切换用户操作
A、先退出 再登陆
Exit、quit:退出命令窗口;crtl+c :强制退出(可以从正在输入状态的命令中退出来);sqlplus窗口会直接关闭,cmd窗口会退出。
oracle;登录命令 cmd下-》sqlplus回车 system/Oracle11g 直接登录或者搜索sqlplus直接输入用户密码
B、也可以不退出直接切换用户
在sql>操作中采用 conn/用户名/密码切换用户;例:conn scott/tiger;注意:登录的时候没有分号结束。
3)oracle 中的表是按照用户进行分类的
sys 超级用户(权限最高)
system 数据库管理员(执行大部分管理操作)
自定用户 测试用户
3.常用oracle命令以及知识点串讲
常用命令:
select * from tabs:查询当前用户下有哪些表(多查询出系统表);
select table_name from user_tables:查询当前用户下的所有表名
desc 表名 :查看表有哪些列(表的结构)
conn system/Oracle11g:连接到用户
create user scott identified by tiger: 创建用户
conn scott/tiger: 切换用户 (用户切换失败提示Not logged on;出现用户没有session权限的提示,应当分配session权限)
用户与密码:
sys/Oracle11g
scott/tiger
hr/hr
dbshop/tiger
设置列宽:set linesize 120
设置具体列宽:col ename for 9999(只能是9,小于位数的会用#代替当前值)
sqlplus命令窗口清屏的命令:host cls
设置deptno不重复显示: break on deptno skip 0;
设置deptno不重复显示并且不同deptno字段中间相隔2行: break on deptno skip 2;
备份表(创建一个与emp表一样的表):create table emps as select * from emp;
分配权限:
grant 权限名 to 用户名;
SQL> conn system/Oracle11g;//第一步切换到管理员
SQL> grant create session to scott; //为用户受权
提示:Grant succeeded//受权成功
备注当受权成功后,scott就可以登录,但是登录后,当用户创建表时,也会出现权限不足,这就需要通过用户的角色来给用户分配权限的.角色(一个角色包含多个权限):
connect
create session、create table、resource(对表空间使用权限) ……
grant connect,resource to scott;
注意:对用用户的创建,权限的分配,只有管理员才能够操作,普通用户不能实现.
创建用户:
切换到system管理员中 以system管理员进行登录
1)、Create user 用户名 identified by 密码;(不能是全数字) //创建用户
2)、grant create session,create table,resource to 用户名; //给用户分配权限
3)、start 目录(D:\emp.sql);//注意该文件不能放在桌面 (因为目录中不能包含空格否则会出现如下错误:
SQL> start C:\a a a\emp.sql; Error reading file)
案例:
SQL> create user redarmychen identified by redarmy;
//创建用户并为用户设置密码为redarmy
SQL> grant connect,resource to redarmychen;
//给用户授权 connect,resource
SQL> conn redarmychen/redarmy; //切换到新创建的用户中来
SQL> start c:\emp.sql; //导入外部sql文件的方式
SQL Plus常见的命令:
conn 切换连接用户
desc 显示表结构
host 执行操作系统命令
start 执行文件系统SQL语句
exit 退出
col 格式化输出
/ 执行最近一条SQL或新定义过程
startup 启动数据库实例 (DBA)
shutdown 关闭数据库实例 (DBA)
startup shutdown必须是sys system用户才能够执行;其它用户不能使用.并且此命令只能在sqlplus中执行.不能在客户端工具中使用。
数据是信息数字表现形式,信息的加工处理是以大量的结构化数据为载体进行的,数据库管理系统的核心是数据库,数据库的主要对象是表,表是结构化数据存储的地方.
Oracle系统也提供了大量的数据类型主要包括两大类:用户自定义的数据类型、置的数据类型
数据类型:
A、字符型
字符数据类型可以用于声明包含了多个字母数字数据的字段。固定长度的字符类型
char:用于存储固定长度的字符,一旦声明长度固定(不论你存储的实际大小,但是大小绝对不能大于声明的长度)长度不足时,采用空格补充。1B的默认大小,最大尺寸为2000B。
nchar与char的解析是一样的,不过ncarh存储的是Unicode字符数据。
可变长度的字符类型varchar与char类似,但是它是用于存储可变的字符串,而char用于存储固定的字符串。
nvarchar与varchar解析是一样的,不过nvarchar用于存储的数据位双字节的数据。
B、日期型
date 短日期格式(1990-10-10)
Timestamp长日期格式(1990-10-10 10:10:10)
C、数字型
Number(2),代表:声明一个2位数字的整数。
Number(3,2)代表:声明为3数字位,并且小数后有2位。
D、文本型-àlob数据类型
Blob:可以存储图像,音频文件及视频等文件。
Clob:字符格式的大型对象,oracle数据àunicode格式的编码
Bfile:用于存储二进制格式的文件。
E、rowid 伪劣类型
用于在oracle内部保存表中的每条记录的物理地址。
4.创建表命令与过程再现
插入语句:
向表中插入一条新的(全字段)记录
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values(1111,'test','test','7369',to_date('1992-12-12','yyyy-mm-dd'),100,100,20);
或者写成:insert into emp values(2222,'test','test','7369',to_date('1992-12-12','yyyy-mm-dd'),100,100,20);
向表中插入一条新的(部分字段)记录
SQL> insert into emp(empno,ename,hiredate,deptno) values(3333,'test',to_date('1992-12-12','yyyy-mm-dd'),30);
注意:在插入操作的时候如果有关联,一定要插入相应关联的字段的值.备注:插入之后都需要手动的提交 commit;
SQL是structured Query Language(结构化查询语言)的缩写。可以使用sql语句建立或删除数据库的对象,插入,修改和更新数据库中的数据,并且可以对数据库执行各种日常管理的操作。它是所有关系数据库管理系统的标准语言.换句话说使用sql可以对所有的关系数据库进行操作。
5. SQL按照功能分类:
数据库定义语言
DDL(Data Definition Language):用于创建、修改、删除数据库对象。
数据库操作语言
DML(Data Manipulation Language)用于:查询,添加修改或删除存在数据库对象中的数据。
数据库控制语言
DCL(Data Control Language)用于控制访问数据库中特定对象的用户、grant revoke
Oracle系统中经过对Sql语言扩展被称为PL/SQL语言。
数据查询语言
DQL:(Data Query Language) SELECT 数据查询语言
6.集合运算符
UNION 并集 并去掉重复的行
UNION ALL 并集 不去除重复的行
MINUS 差集
INTERSECT 交集(oracle特有的)
7、伪列
1)、rowNum的伪列
SQL> select ename, rownum from emp; //rownum为查询的结果加上序列号
ENAME ROWNUM
---------- ----------
SMITH 1
ALLEN 2
WARD 3
SQL> select ename,rownum from emp where rownum<=5; //查询记录的前五条记录
ENAME ROWNUM
---------- ----------
SMITH 1
ALLEN 2
WARD 3
JONES 4
MARTIN 5
注意:如果把rownum用于比较条件时,只能用于小于、小于等于。
对于等于、大于 、大于等于不使用.
但有个特殊值就是大于等于1 或者等于1的时候可以。这就与rownum的产生原理有关.就是每当从磁盘拿出结果时,加上序列号。通过测试分析
测试:
SQL> select ename,rownum from emp where rownum >5;//当使用大于判断时,没有查询出任何结果.
ENAME ROWNUM
---------- ----------
分析:当从磁盘读取的数据时,加上序列号为1,1>5不成立,读取数据,加上序号为1(这里很关键?),>5不成立,读取数据…….因此说1是特殊值.
RowNUM与Order By连接的问题
SQL> select ename,sal,rownum from emp order by sal; //注意观察 rownum的输出结果.
ENAME SAL ROWNUM
---------- --------- ----------
test 100.00 15
SMITH 800.00 1
JAMES 950.00 12
ADAMS 1100.00 11
WARD 1250.00 3
以上说明先执行的rownum 再执行的排序.
解决方法:
SQL> select ename,sal,rownum from (select * from emp order by sal);//通过子查询实现
ENAME SAL ROWNUM
---------- --------- ----------
test 100.00 1
SMITH 800.00 2
JAMES 950.00 3
……..
rowid伪列:代表数据库表中记录的唯一标识(也可以理解成数据库表中该条记录的物理地址)。
SQL> select ename,sal,rowid from emp;
ENAME SAL ROWID
---------- --------- ------------------
SMITH 800.00 AAADVsAABAAAI1qAAA
ALLEN 1600.00 AAADVsAABAAAI1qAAB
…….
备注说明: 当使用rowid查询时,速度最快.
SQL> select empno,rowid from emp where empno =7369;
EMPNO ROWID
---------- ------------------
7369 AAAR3sAAEAAAACXAAA
select empno,rowid from emp where rowid='AAAR3sAAEAAAACXAAA';
EMPNO ROWID
---------- ------------------
7369 AAAR3sAAEAAAACXAAA