Oracle 基础知识 新手学习详解一

文章太长,分批发送,会注明顺序。送给正在学习的你,希望有所帮助!

DDL : 数据库模式定义语言,关键字:create

DML : 数据操纵语言,关键字:Insert、delete、update

DCL : 数据库控制语言 ,关键字:grant、remove

DQL : 数据库查询语言,关键字:select

结构化查询语言 (Structured Query Language, SQL),Oracle 中的 SQL 不区分大小写只有在文本数字值得时候才会检查

注 : 当创建表或列名的时候使用双引号括起来就可以创建大小写敏感的列名或表名,但是不推荐这样做

SQL*Plus 是 Oracle 的一种操作数据库数据和对数据库执行即时查询的工具,甚至还可以作为代码生成器来使用

逻辑判断 : = > >= < <= != ^= <>

!= ^= <> 这3个都表示不等于

注 : 在进行数据类型比较时,一定要考虑编码情况,VARCHAR2 和 CHAR 是字符比较,如果列数据类型为 NUMBER 则 12 > 9,如果是字符比较则 9 > 12 因为字符 9 比字符 1要大

DESCRIBE : 查询表结构

SQL> describe newspaper;

LIKE 执行模式匹配 : _表示一个字符 %表示任意多个字符

NULL 表示该列是否存在数据,如果没有数据,就说明该列是 null

IS NULL,IS NOT NULL

IN : 在某几个指定项中

NOT IN : 不在几个指定项中

BETWEEN AND : 在指定范围之间

NOT BETWEEN AND : 不在指定范围之间

AND : 同事满足两边的条件

OR : 只满足其中一边的条件

优先级 : () 优先级最高,乘除次之,加减法最后,AND 的优先级高于 OR

使用 CREATE TABLE 关键字创建表

SQL> CREATE TABLE trouble(city VARCHAR2(13) NOT NULL,sample_date DATE NOT NULL,noon NUMBER(3,1),midnight NUMBER(3,1),precipitation NUMBER);

表明和列名必须以由字母、数字和下划线,长度为1~30个,并且名称必须唯一,不使用双引号括起来时不考虑字母大小写,使用双引号括起来时就要考虑大小写,建议不要括起来否则可能会给开发人员和用户造成麻烦

在设计表时需要考虑字符(CHAR 和 VARCHAR2)的最大宽度,并设置 NUMBER 精度

注 : 1> 使用宽的 VARCHAR2 存储数据不会浪费空间,但是会对默认的 SQL*Plus 列格式产生影响

2> NUMBER(3,1) 3表示存储数字位数,1表示小数点右边的位数 小数部分的长度比较大会进行四舍五入来达到指定精度

定义约束 : 表添加的约束越多那么维护数据的工作就越少,但更新数据花的时间就越长

1> 候选键(condidation key) : 是一列或多列的组合,其唯一地标识表中的一行

SQL> CREATE TABLE trouble(

city VARCHAR2(13) NOT NULL,

sample_date DATE NOT NULL,

noon NUMBER(4,1),

midnight NUMBER(4,1),

precipitation NUMBER,

CONSTRAINT trouble_uq UNIQUE(city,sample_date)

);

创建 UNIQUE 约束时,将创建唯一地索引来强制值得唯一性。在主键约束中,主键的列中至少有一列必须是 NOT NULL

2> 主键(primary key) : 具有特殊性质的候选键之一,可以仅有一个主键,并且主键列不能包含 NULL 值

SQL> CREATE TABLE trouble(

city VARCHAR2(13),

sample_date DATE,

noon NUMBER(4,1),

midnight NUMBER(4,1),

precipitation NUMBER,

CONSTRAINT trouble_pk PRIMARY KEY(city,sample_date)

);

# 对于但主键,可以使用如下方式定义

SQL> CREATE TABLE author(

author_name VARCHAR2(50) PRIMARY KEY,

comments VARCHAR2(100)

);

3> 指定索引表空间 : UNIQUE约束和 PRIMARY KEY 约束创建索引,索引默认存储在表空间中

SQL> CREATE TABLE author2(

author_name VARCHAR2(50),

comments VARCHAR2(100),

CONSTRAINT author2_pk PRIMARY KEY(author_name) USING INDEX TABLESPACE USERS

)

注 : 在大多数默认安装中,会创建 USERS 表空间,他是默认表空间

<1> 外键(foreign key) : 也叫完整性约束,指明外键值对应另一个表中主键的实际值

SQL> CREATE TABLE bookshelf(

title VARCHAR2(100) PRIMARY KEY,

publisher VARCHAR2(20),

category_Name VARCHAR2(20),

rating VARCHAR2(2),

CONSTRAINT bookshelf_fk FOREIGN KEY(category_Name) FERENCES category(category_name));

<2> CHECK约束 : 指定某个表达式,表达式对于表中的每一行数据都必须始终为真

SQL> CREATE TABLE rating_with_check(

rating NUMBER(1) CHECK(rating<=8),

rating_description VARCHAR2(50)

);

4> 命名约束 : 可以对约束命名,如果约束名使用一种有效的命名模式,能更好地识别和管理约束。约束名应该标识出它所作用的表和它所表示的约束类型。创建时如果没有指定约束名称,Oracle 会生成名称大多以 SYS_C##### 的形式因此最好自己命名

删除表 : 使用 DROP TABLE table_name 即可

SQL> DROP TABLE trouble;

使用 TRUNCATE 可以高效的删除表中的所有数据并回收空间,而不从数据库中删除删除表的定义

从 Oracle10g 开始,删除表仍保留表空间,可以在 "回收站" 中来访问,如果要从回收站中清除,使用 PURGE 子句

SQL> DROP TABLE trouble PURGE;

如果表已经删除,可以从 "回收站" 中清除所占的空间

SQL> PURGE TABLE trouble;

清除 "回收站" 中所有内容

SQL> PURGE RECYCLEBIN;

截断表

SQL> TRUNCATE TABLE trouble;

更改表

添加或更改列的规则

1> 可随时增加字符列宽度

2> 可随时增加 NUMBER 列的数字位数

3> 可随时增加或减少 NUMBER 列中的小数位数,对于减少的情况需要表为空

如果表中每一行的某一列都为 NULL,可作如下更改

1> 可以更改该列的数据类型

2> 可以减少字符列的宽度

3> 减少 NUMBER 列的数字位数

注 : 添加或更改列,更改后的列的每一行数据必须满足更改后列的数据限定,否则将会更改

失败。

欢迎大家留言讨论,一起学习一起上岸!!!


分享到:


相關文章: