Oracle 学习语法记录

本文详细介绍了Oracle数据库的用户权限管理、登录语法、数据字典使用、表空间管理、数据类型、表操作、约束设置以及查询技巧等核心内容,是Oracle数据库管理和优化的实用指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

语法记录

系统用户权限

  • sys
  • system
  • sysman 用于操作企业管理器
  • scott Oracle 创始人的名字,默认密码是: tiger

用户登陆语法

# 如果是管理员登陆,使用 as sysdba 或者 sysoper
[username/password] [@server] [as sysdba|sysoper]

使用其他用户登陆

如果 username 是 sys,必须使用 as 子句
CONNECT username/password [AS sysdba|syoper]

查看登陆的用户

show user

数据字典:相当于系统表

dba_users

查看所有用户

SELECT USERNAME FROM dba_users;

解锁用户

ALTER user username account UNLOCK

[例]:启动 scott 用户

ALTER USER scott ACCOUNT UNLOCK

锁住用户

alter user username account lock

使用指定用户登陆数据库,默认密码为 : tiger

connect username/password

表空间

理解表空间

数据库和表空间的关系

表空间是数据库的逻辑存储空间,可以理解为在数据库中开辟的一个空间用于存放数据库对象。一个数据库中有多个表空间。很多优化都是基于表空间。

表空间和数据文件

表空间实际上是由一个或多个数据文件构成的,数据文件的位置和大小由用户定义,数据库,表都是存储在数据文件中的。

表空间的分类

  • 永久表空间 存储表,视图,存储过程
  • 临时表空间 存放数据库操作当中,执行的过程,不进行永久的保存
  • UNDO表空间 用于保存事务所修改的旧数据,也就是被修改之前的数据,用于对数据进行回滚

查看表空间字段

# dba_tablespaces  系统管理员使用的表空间数据字典
# user_tablespaces 普通用户表空间数据字典
desc {dba_tablespaces|user_tablespaces}

查看用户

# dba_users  系统管理员使用的用户数据字典
# user_users 普通用户用户数据字典
DESC dba_users | user_users
SELECT * FROM dbs_users

查看数据文件的字段

desc dba_data_files

创建表空间

CREATE [TEMPORARY] TABLESPACE tablespace_name TEMPFILE|DATAFILE 'xx.dbf' SiZE xx

修改表空间

  • 修改 system 用户默认表空间的语句
ALTER USER SYSTEM DEFAULT TABLESPACE xxx
  • 修改表空间的状态

    • 设置表空间的脱机或联机状态
    ALTER TABLESPACE tablespace_name ONLINE|OFFLINE
    
    • 设置只读或可读写状态(修改此属性,必须是联机状态)(默认读写状态)
    ALTER TABLESPACE tablespace_name READ ONLY|READ WRITE
    
  • 修改数据文件

    • 向表空间添加数据文件
    ALTER TABLESPACE tablespace_name ADD DATAFILE 'xx.dbf' SIZE xx
    
    • 向表空间删除数据文件
    ALTER TABLESPACE tablespace_name DROP DATAFILE 'filename.dbf'
    

    [注意]:只能删除表空间中非第一个创建的数据文件,如果想删除全部的数据文件,只能删除表空间

  • 删除表空间

DROP TABLESPACE tablespace_name [INCLUDING CONTENTS]

[注意]:如果只删除表空间而不删除数据文件,不要加上[INCLUDING CONTENTS]

Orable 数据类型

  • 字符型
    • CHAR(n)
    • NCHAR(n)
    • VARCHAR2(n)
    • NVARCHAR2(n) NVARCHAR2用于存储Unicode格式的数据,更适合存储中文数据
  • 日期型
    • DATE 表示范围:公元前4712年1月1日到公元9999年12月31日,精确到秒
    • TIMESTAMP
  • 数值型
    • NUMBER(n, s)
      • n:有效数字位数
      • s:小数点后的位数
    • FLOAT(n) 存放的是二进制的数据,n 表示二进制的位数为 1-126位,如果将其转化位十进制需要乘于 0.30103
  • 其他数据类型
    • BLOB 最大:4G,以字节存放
    • CLOB 最大:4G,以字符存放
修改表
  • 添加字段
ALTER TABLE table_name ADD column_name datatype
  • 修改字段
ALTER TABLE table_name MODIFY column_name datatype
  • 删除字段
ALTER TABLE table_name DROP COLUMN column_name
  • 修改字段的名字
ALTER TABLE table_name RENAME COLUMN column_name TO new_column_name
  • 修改表的名字
RENAME table_name TO new_table_name
  • 删除表中的全部数据
TRUNCATE TABLE table_name
  • 删除表
DROP TABLE table_name
  • sysdate 系统当前时间

  • 复制表中的数据

    • 在建表时复制
    CREATE TABLE table_name AS SELECT * FROM table_old
    
    • 在插入数据时复制
    INSERT INTO table_new[(column1, column2, ...)] SELECT * FROM table_old
    
约束

约束数据字典

user_constraints
  • 非空约束(只能在列级添加约束)

    • 在创建表时设置非空约束
    CREATE TABLE table_name (column_name DATATYPE NOT NULL)
    
    • 在修改表时添加非空约束
    ALTER TABLE MODIFY column_name NOT NULL
    
    • 在修改表时去除非空约束
    ALTER TABLE MODIFY column_name NULL
    
  • 主键约束(确保表当中每一行数据是唯一的)

    • 查询约束的名字
      利用到 users_constraint
    SELECT constraint_name FROM users_constraint WHERE table_name='[要大写]'
    
    • 在创建表时设置主键约束
    CREATE TABLE table_name (column_name DATATYPE PRIMARY KEY,...)
    
    • 置于所有的字段创建完毕后,添加主键约束
    CONSTRAINT primary_key_name PRIMARY KEY(column_name1, column_name2,...)
    
    • 在修改表时添加主键约束
    ADD CONSTRAINT constraint_name PRIMARY KEY(column_name1, ...)
    
    • 更改约束的名称
    RENAME CONSTRAINT old_name TO new_name
    
    • 禁用或启用约束
    DIABLE|ENABLE CONSTRAINT constraint_name
    
    • 删除约束
    DROP CONSTRAINT constraint_name
    
    • 通过删除主键的方式来删除主键约束
    # CASCADE 级联的意思
    DROP PRIMARY KEY[CASCADE]
    
  • 外键约束

    • 创建表的时候添加外键约束(列级)
    column_name datatype REFERENCES tablename(column_name)
    
    • 创建表的时候添加外键约束(表级)
    CONSTRAINT constraint_name FOREIGN KEY(column_name) REFERENCES tablename(column_name)[ON DELETE CASCADE]
    
    • 修改表的时候添加外键约束
    ADD CONSTRAINT constraint_name FOREIGN KEY(column_name) REFERENCES tablename(column_name)[ON DELETE CASCADE]
    
    • 更改约束的名称
    RENAME CONSTRAINT old_name TO new_name
    
    • 禁用或启用约束
    DIABLE|ENABLE CONSTRAINT constraint_name
    
    • 外键约束
    DROP CONSTRAINT constraint_name
    
  • 唯一约束(允许有一个 null 值)

    • 在创建表的时候创建唯一约束(列级)
    DATATYPE UNIQUE
    
    • 在创建表的时候创建唯一约束(表级)
    CONSTRAINT constraint_name UNIQUE(column_name)
    
    • 在修改的表的时候添加唯一约束
    ADD CONSTRAINT constraint_name UNIQUE(column_name)
    
    • 更改约束的名称
    RENAME CONSTRAINT old_name TO new_name
    
    • 禁用或启用约束
    DIABLE|ENABLE CONSTRAINT constraint_name
    
    • 外键约束
    DROP CONSTRAINT constraint_name
    
  • 检查约束

    • 在创建表的时候创建检查约束(列级)
    CHECK(expression)
    
    • 在创建表的时候创建检查约束(列级)
    CONSTRAINT constraint_name CHECK(expression)
    
    • 在修改表的时候添加检查约束
    ADD CONSTRAINT connect_name CHECK(expression)
    
    • 更改约束的名称
    RENAME CONSTRAINT old_name TO new_name
    
    • 禁用或启用约束
    DIABLE|ENABLE CONSTRAINT constraint_name
    
    • 外键约束
    DROP CONSTRAINT constraint_name
    
查询
  • 基本查询语句
SELECT [DISTINCT] cplumn_name...
FROM table_name
[WHERE conditions]
  • 在 SQL*PLUS 中设置格式
# 改变显示的名字
COLUMN column_name heading new_name
# 改变显示的格式
COLUMN column_name FORMAT dataformat
# 清除格式
COLUMN column_name CLEAR
  • 例:讲字符串补充为指定长度的字符穿
COLUMN column_name FORMAT a10;
  • 例:数字格式 一个 9 表示一个数字,如果不足位数,显示 #
COLUMN column_name FORMAT a10;
  • 查询表中的所有字段及特定字段
# 查询全部字段
SELECT * FROM table_name
# 查询指定字段
SELECT username, password FROM table_name
  • 给字段设置别名
SELECT column_name AS new_name FROM table_name
  • 运算符和表达式


  • 在 SELECT 中使用运算符
  • 带条件的查询
  • 模糊查询
# _ 单个通配符
# * 任意通配符
SELECT column_name1, column_name2 FROM table_name WHERE column_name LIKE '_%'
  • 范围查询

  • 对查询结果排序

  • case…when 语句的使用

    • 方法一
    CASE column_name
    WHEN vlaue THEN result,...
    [ELSE result] END
    
    • 方法二
    CASE
    WHEN column_name = value THEN result, ...
    [ELSE result] END
    
    
  • decode 函数的使用

DECODE(column_name, value1, result1, value2, result2, ..., default_value)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值