Oracle 数据库操作基础,命令行实测:
# 时间:2021/5/13 17:25
# -*- coding:utf-8 -*-
oracle下载:
https://www.oracle.com/database/technologies/xe-prior-releases.html
// 官网地址:需要注册一个甲骨文账号,windows选择前两个、linux选择最后一个
下载完直接安装就可以,傻瓜式安装。
安装完成打开 运行SQL命令行
往下操作
oracle版本(显示在第一行):
SQL*Plus: Release 11.2.0.2.0
SQL语言的分类
-
DQL (数据查询语句)select
-
DML(数据操作语句)insert、update、delete
-
DDL(数据定义语句)create、alter、drop、rename
-
DCL(数据控制语句)grant、revoke
-
TCL(事务控制语句)savepoint、rollback、commit
目录
1.链接数据库:
SQL> conn sys / as sysdba; // 最大权限 相当于Mysql中的root
输入口令: # 输入口令的时候是不显示的,但是可以正常输入
已连接。
2.表空间:
格式: create tablespace 表间名 datafile '数据文件名' size 表空间大小;
example:
create tablespace data_test datafile 'e:\oracle\oradata\test\data_1.dbf' size 2000M;
create tablespace idx_test datafile 'e:\oracle\oradata\test\idx_1.dbf' size 2000M;
3.用户:
SQL> create user root identified by 123123;
# create user (自定义用户名) identified by (自定义密码)
用户已创建。
格式: create user 用户名 identified by 密码 default tablespace 表空间表;
example:
SQL> create user study identified by 111111 default tablespace data_test;
用户已创建。
3.1用户授权:
SQL> grant connect,resource to study; // 给 study 用户授权 connect 、resource
授权成功。
SQL> grant dba to study; // 给 study 用户授权 dba
授权成功。
[DBA] 拥有全部权限,是系统最高权限。只有DBA才可以创建数据库结构。
[resource] 拥有resource权限的用户只可以创建实体,不可以创建数据库结构。
[connect] 拥有connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
[普通用户] 授予connect,resource权限。
[DBA管理用户] 授予connect,resource,dba权限。
3.2撤销用户权限:
revoke (权限) from (用户名)
3.3修改密码:
Alter user (用户名) identified by (修改密码)
3.4删除用户:
SQL> Drop user root; # drop user (用户名)
用户已删除。
3.5切换用户:
conn (用户名)/(密码)
example:
conn root/123123;
4.创建表
create table test_user (
no number(5) not null , // no列 不为空 列长 5 数字型
username varchar2(30) not null , // 用户名列 不为空 列长30 字符串型
passpord varchar2(30) not null , // 密码列 不为空 列长30 字符串型
constraint pk_connectdb primary key(no) // 设定主键行为,保证no列不重复
)
storage (initial 10k next 10k pctincrease 0); // 设定表分区空间 ,没理解。
4.1查看表结构:
desc 表名;
example:
desc test_user;
4.2表中插入数据
insert into table (表名) (列名,列名) values (值1,值2); #插入一条
ps(同时插入多条语句和 Mysql 不通用):
INSERT ALL
INTO 表名 (列名,列名,列名) values(值,值,值)
INTO 表名 (列名,列名,列名) values(值,值,值)
INTO 表名 (列名,列名,列名) values(值,值,值)
SELECT 1 FROM DUAL;
4.3数据查询
select * from 表名;
select 字段名,字段名,字段名 from 表名 where 条件;
example:
select username,passpord from test_user where no<10;
oracle 中没有 limit 要实现提取已知数量的数据可以在where条件中使用 rownum
example:
select username,passpord from test_user where rownum <= 3;
4.4数据删除
delete from 表名 where 条件; 注意:不指定条件会默认删除所有数据
DELETE from TEST_USER;
truncate from test_user;
两者都会把数据全部清除。
1、TRUNCATE 是 DDL 命令,命令执行完就提交,删除的数据不能恢复; DELETE 命令是 DML 命令,命令执行完需提交后才能生效,删除后的数据可以通过日志文件恢复。
2、如果表中的数据量较大,TRUNCATE 的速度比 DELETE 速度快很多。
3、truncate 删除将重新设置表索引的初始大小,而 delete 不能。
4、delete 能够触发表上相关的 delete 触发器,而 truncate 则不会触发。
5、delete 删除的原理是一次一条从表中删除数据,并将删除操作当做事物记录在数据库的日志当中,以便进行数据回滚。而 truncate 是一次性进行数据页的删除,因此执行速度快,但是不能回滚。
总结:truncate 命令是属于 DDL 命令,一次性删除表中所有数据,并且数据不能恢复,在实际开发过程当中truncate命令慎用。
4.5数据更新
update 表名 set 列名=值,列名=值,列名=值 ....... where 条件;
// 注意这里的值如果是字符串请使用单引号 双引号会报错 :
ORA-00904: "root": invalid identifier
update TEST_USER set USERNAME = 'root' , PASSPORD = 111111 where NO = 1;
5.查看用户拥有的表
查看当前用户的表数量:
SELECT COUNT(*) FROM USER_TABLES;
查看当前用户的所有表:
select * from all_tab_comments where owner='用户名‘ ;
PS:用户名要大写!否则报错:“未指定行”
6.链接Navicat
连接名 : 自定义
连接类型:默认Basic
主机:本地IP地址 // 获取办法:打开cmd 输入ipconfig 便可以查询到,ipv4地址就是。
端口:默认1521
服务名:在配置文件里 // oracle 安装目录: [D:\oracle\app\oracle\product\11.2.0\server\network\ADMIN\tnsnames.ora]
找到本文件,以记事本打开,SERVICE_NAME 就是服务名 PORT 就是端口号 可以更改
用户名:上文第三点创建的用户名
密码:同上
点击链接测试,提示链接成功!打开链接找到自己的用户名 即 自己的表的所在