ORACLE数据库学习笔记

ORACLE数据库学习笔记

SQL的分类

1.数据查询语言(DQL)Data QueryLanguage,只有一个select
2.数据操纵语言(DML)Data Manipulation Language,主要包括:insert(插入)/update/delete
3.数据定义语言(DDL)Data Definition Language,主要包括:create/drop/alter(更改)
表:CREATE TABLE,ALTER TABLE,DROP TABLE;
索引 :CREATE INDEX,ALTER INDEX,DROP INDEX 索引是一种数据结构
4.数据控制语言(DCL)Data Control Language,
ALTER PASSWORD 改变口令
GRANT 为用户授予特权
REVOKE 从用户处收回特权
5.事务控制语言,用户管理数据库的事务命令主要包括:commit/rollback
COMMIT 用于保护数据库的事务
ROLLBACK 用于撤消数据库的事务
SAVEPOINT 创建一组事务中的撤消点
SET TRANSACTION 给事务命名
6.数据控制语言,审计和分析对数据库的操作,并可分析系统的执行过程,主要包括授权等等
START AUDIT
STOP

SELECT

select 列名称1(,列名称2...) from 表名称 ; 查询多列用逗号隔开
select * from 表名称 ; 查询所有列用*
select 列名称1*n(,列名称2...) from 表名称 ;` 如果某一列全为数字,则它可使用列名*n来快速计算整列与n的乘积
出现错误 ORA-01722 则说明可能在该列存在非数字的值

select 列名称1 as 其他名称(可以是中文或其他语言)(,列名称2 as 其他名称...)from 表名;其中的as可以省略

select 列名称1 (,列名称2 ...) from 表名 where +条件

select 列名称1 (,列名称2 ...) from 表名 where 列名1/列名2... = ‘某值’; 根据需求可改变运算符‘=’
运算法 说明
= 等于
<> 或
!= 不等于
< 小于
<= 小于等于
> 大于
>= 大于等于
Between … and …. 两个值之间 前面值小于等于后面值
Is null 为null

null 不等于’ ’ Null为空,不是空串,为空在建立表的时候可以设置这个字段什么数据都不填,也就是这
个字段没有值,在这种情况下必须采用is null

ADN 、OR

select 列名称1(,列名称2...) from 表名 where 列名n='文本'and 列名m=数字; 同时满足
select 列名称1(,列名称2...) from 表名 where 列名n='文本'or 列名m=数字;满足一个即可
select 列名称1(,列名称2...) from 表名 where 列名n='文本'or 列名m=数字 and 列名K=数字;先执行and再执行or
因此,在涉及到优先级的时候尽量使用括号。

IN
select 列名称1(,列名称2...) from 表名 where 列名n in('值1','值2');列出列名n中为值1或者值2的

NOT
select 列名称1(,列名称2...) from 表名 where 列名n not in('值1','值2');列出列名n中不为值1或者值2的
between A and B 同理 not between A and B 列出不在AB之间的

LIKE
select 列名称1(,列名称2...) from 表名 where 列名n like '%a';查找列n中以a结尾的
select 列名称1(,列名称2...) from 表名 where 列名n like 'a%';查找列n中以a开头的
select 列名称1(,列名称2...) from 表名 where 列名n like '%a%';查找列n中包含a的
select 列名称1(,列名称2...) from 表名 where 列名n like '_a%';查找列n中第二个字母为a的
通配符’_'通常影响查询效率,尽量少使用

添加/修改/删除

insert(注意插入非数字要加单引号)
insert into 表名 values (值1,值2...); 在表中添加一行
如果忽略了插入的字段,那么它会严格按照表中字段的顺序,包括类型必须符合,这种方式存在缺陷,如果表中位置发生改变,将会影响到insert语句。可以显示的设置某个值为null
insert into 表名(列名称1,列名称2...) values (值1,值2...); 在列名称1(,列名称2…)下添加一行
建议使用以上insert方式,此种方式存在优点,当数据库表中的字段顺序发生改变,不会影响到我们的insert语句

表内容复制
create table 表名2 as select 列名称1(,列名称2...)/* from 表名1; 自动建立一个表,将数据拷贝到新表中
如何将查询出的数据插入到已经存在的表中(insert into 新表名 select * from 表名)
insert into 表名2 select 列名称1(,列名称2...)/* from 表名1; ----要求表必须存在 且需要在新表中执行该命令

update

 update 表名 set 列名1=新值1,... where ...

update 表名 set 列名1=新值1; 把列名1的值更新为新值1
update 表名 set sal=sal+(sal*0.5) where job = 'MANAGER';如果job为MANAGER,薪水上涨50%
可以更新多个字段,字段间用逗号隔开
update 表名 set sal=10000 ,comm=5000 where job='MANAGER' ;如果job为MANAGER,sal=10000,comn=5000

delete

delete from 表名 where...;

delete from 表名 where 列名1 = 值1;删除表中列名1为值1的行
delete from 表名; 删除全部数据

问题总结:

select 列名称1n(,列名称2…) from 表名称 ; 如果某一列全为数字,则它可使用列名n来快速计算整列与n的乘积
问题:使用上述语句出现错误 ORA-01722
原因:在该列存在非数字的值

问题:使用between时只显示表类型不显示表内容
原因:and前的值不能大于and之后的值

问题 :A>4?
原因:使用了单引号比较的是ASCII码的大小

问题:esc 、 use、setline、l、run/r 、save、get、ed、@ 语句在PLSQL Developer中无法实现
原因:应当使用拥有更高权限的服务端进行操作 具体步骤:使用SecureCRT连接到服务端 输入命令

  1. su - oracle
  2. export ORACLE_SID=cc
  3. sqlplus / as sysdba

问题:怎么创建表 参数怎么设置?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值