Oracle使用命令及理解
1. Oracle登录
使用sqlplus 用户名/密码@数据库名 (as sysdba)
有时候登录不了,则用最高级
Sqlplus / as sysdba
然后用select username from dba_users;查看是否存在该用户;
Alter user username identified by 密码;//修改该用户的密码;退出重新登录
或者有时候登录时,显示用户被锁定,则运行:
Alter user username account unlock;
http://blog.csdn.net/zhangyingjie09/article/details/40481229/
http://www.cnblogs.com/xwdreamer/archive/2011/07/05/2296991.html
2. 数据库操作语言SQL
DDL、DML、DCL、
注:SQL中关键字、表名和字段名大小写不敏感,但是密码敏感。
2.1DDL:
1. 创建表:
Create tablestudent(name varchar2(20),age number(3));
2. 删除表
Drop table tablename;
3. 插入数据
Insert into student values(‘Tom’,13);
4. 删除表中数据
Delete tablename;或者delete from tablename;
5. 查看表结构:
Desc tablename;或者describe tablename;
2.2DML查询
1.Select * from tablename;
Select ziduan from tablename;
2.可以使用表达式:
Select ziduan,ziduan*12 from tablename;
3.||把字段和文本或其他表达式的连接形成新的字符串;
Select ‘姓名:’||name,’的年龄为:’age from student;
1. as 取别名
2. distinct去除重复行
select distinct ziduan from tablename;
//作用范围:后面所以字段的组合
3. orderbyziduan,ziduan1;排序 desc 降asc升,
4. where //select * from student where age >12;
5. select* from student where age >=20 and age <=39;
3. Oracle数据类型
1) char//2000byte、varchar2、long、number(m,n)、Date//to_date(‘2004-10-16’,’yyyy-mm-dd’)、timestamp
4. oracle用户
SyS用户、system、Scott;
创建新用户:
Create user username identified by passwd;
Sqlplus “sys/pw@db as sysdba”//以DBA身份登录
或者
Sqlplus /nolog
Connect sys/pw@db as sysdba;
create user spring identified by 123456 defaulttablespace users quota 40M on users;
//未被授予任何权限
Grant create session to spring;//使用户可以用于登录
//授权时除了用DBA用户还可以使用system
修改密码;
Alter User spring identified by 123;
Alter user spring account lock;//锁定
Alter user spring account unlock;//解锁
Alter user spring default tablespace example;//修改用户表空间
Alter user spring quata 60M on users;
Alter user
Drop user username [cascade];
//当用户名下有数据库对象时,必须用cascade参数做级联删除;
存储用户信息的数据库字典视图为:
All_user:当前数据库所有用户的用户名、用户ID及创建时间信息;
Dba_users:包含当前数据库所有用户的详细信息,用户名、用户ID、密码验证方式、账户状态、锁定时间、密码过期时间、默认及临时表空间;
User_users:包含当前用户的详细信息;
Oracle中类似mysql中limit 2的查询实现:
权限管理包括:特定数据库的连接、创建表或视图等数据库对象,查询数据、插入/更新/删除数据等操作;
用户在进行数据操作时先验证该用户是否有执行该操作的权限。分系统权限(system_privilege)和用户权限();
Tabs表中存储了数据库中的表信息;
Desc tabs查看tabs的字段情况;
Select table_name from tabs;//查看数据库中有哪些表;
一些操作实践:
5. 查看数据空间表情况
查看某用户下的数据库空间中的表情况
从all_tables表中查找;先desc all_tables;
Select table_name from all_tables where owner=’SYS’;
//注意区分大小写
6. Oracle导入.dmp
命令行:imp user/pw@test file=”” full=y
最后写在后面的实践的一些小内容:
1) 登录
sqlplussys/admin as sysdba
2) 创建表空间
create tablespace space1 datafile'D:\oracle\test\envir.dbf' size 3072M autoExtend on;
//注意space1是新建的表空间的名字,目录D:下的oracle和test文件夹必须存在。
http://www.cnblogs.com/psforever/p/3929064.html
3) windows中oracle数据库重启
命令行中如下输入关闭数据库
set ORACLE_SID=你的数据库SID名字
sqlplus/nolog
SQL>connect / as sysdba
SQL>shutdown immediate
SQL>exit
命令行中如下输入启动数据库
setORACLE_SID=你的数据库SID名字
sqlplus/nolog
SQL>connect / as sysdba
SQL>startup
SQL>exit
4) Oracle远程连接要配置
https://wenku.baidu.com/view/029f6665783e0912a2162ab2.html
5) Oracle数据库全库导入,要保证数据库中为空;
6) Oracle查询表命令
select *from tabs;(查看自己创建的表或者视图)
https://zhidao.baidu.com/question/324875231.html
7) 执行select语句时显示:未选定行
Reason:未选定行,是指符合你的查询条件的记录数为0出现这种状况
Resolution:
1你需要检查一下你的表中是否存在你要查的记录;
2如果你确定表中存在你要查的记录,你就需要检查你的查询语句是否正确
7. Q&A
(1) ORACLE 如何让拥有DBA权限的用户没有数据导入权限(如何用SYS用户撤销SYSTEM用户的数据导入权限)
CONNECT / AS SYSDBA
REVOKE IMP_FULL_DATABASE FROM DBA;
(2) oracle数据字典
https://zhidao.baidu.com/question/488107242.html
http://blog.csdn.net/yangaming/article/details/7971337
8. 使用Oracle时要注意的
1) 用超级用户登录Oracle时(sqlplus / as sysdba),可以在dba_tables表中查看当前数据库实例下的所有用户即所有表空间中的表信息;
2) Connname/pw 登录Oracle数据库实例时,可以在all_tables表中查看当前用户的表和有权限的其他用户的表;而user_tables表中存储的是当前用户(创建)的表;
3) Oracle数据恢复是中文乱码,ultraedit打开时默认的字符编码选用了中文简体gbk,在ultraedit下面选择utf-8格式,中文完美显示,然后全选复制到oracle的sqlplus命令行下,粘贴-等待-回复成功;
4) Oracle数据库中不可恢复的删除数据表中的数据
truncate table tablename;
//特点:快速,不可恢复
5) oracle命令行下导入sql文件的数据:
6) Oracle中as的用法
在Oracle中as关键字不能用于指定表的别名,在Oracle中指定表的别名时只需在原有表名和表的别名之间用空格分隔即可,但可以用于指定列的别名,但在存储过程中如果列的别名与原有列名相同,在运行时会报错(编译时不会出错),其他情况下列的别名可以与列名本身相同。
7) Oracle中获取date字段的日期部分
To_char(column_name,’yyyy’)
https://zhidao.baidu.com/question/215323289.html
9. Oracle时间类型的转换
使用方法to_char(‘time’,’YYYY-MM-DD HH24:MI:SS’)
//转换为char类型,其中time是一个时间类型的字段(maybe其它也可以)
To_date(‘char’,’YYYY-MM-DD HH24:MI:SS’)
//转换为date类型的数据,其中‘char’是非时间类型的数据;
使用Oracle遇到的一些问题
[Err] ORA-00905: missing keyword
检查sql语句是否正确,该有的select from table join on 等关键字是否齐全;