`
mzpyljx
  • 浏览: 61064 次
  • 性别: Icon_minigender_1
  • 来自: 梅州
社区版块
存档分类
最新评论

Oracle数据库学习总结

阅读更多

1.set linesize xx; 设置行间距,常用数值有100200300

2.set pagesize xx; 设置每页显示行数

3.ed x ; 表示新建一个x.sql文件,通过文件编辑SQL语句,然后用@x命令可以调用刚才的命令

4.CONN username/password; 命令可以建立用户的连接,需要注意的是sys用户是超级管理员,连接是时需要在末尾加上AS SYSDBA 以系统管理员的身份进行连接

5.如果表是归某个用户特有的,在查询的时候需要加上用户名 即以 用户名.表名 的格式查询

6.SHOW USER; 命令可以显示当前连接的用户名

7.SELECT * FROM tab; 可以显示当前用户下的所有数据表

8. / ”表示重复执行上一次的SQL命令操作

9.SELECT xx别名,xx 别名 FROM xx; 搜索指定列名,并指定别名,方便显示

10.关键字DISTINCT 可以消除重复值 SELECT DISTINCT xx FROM xx;

11.Oracle中提供的字符串连接操作,使用“||”表示,相当于Java"+"普通字符用" ' " 括起来

: SELECT  '员工姓名是'||ename||'员工卡号是'||empno  FROM emp;

12.查询语句 BETWEEN xx AND xx 是包括边界的

13.查询日期的时候要加上''把日期引起来

   例如:SELECT * FROM emp WHERE hiredate BETWEEN '1-1 -81' AND '08-9 -81';

14.模糊查询中“%”可以匹配任意长度的内容,“_”可以匹配一个长度的内容,如果没输入模糊查询关键字,那么默认查询全部数据,like关键字可以用在任何地方,可以匹配数字、字符、日期等。

15.SQL中不等于可以用"<>"或者"!="表示

16.ORDER BY语句中 ASC表示升序,DESC表示降序,在没指定的时候默认按照升序排序

17.Oracle中的单行函数有如下,默认的所有的函数都要到表中执行,加上关键字DUAL只会产生一个临时表

UPPER('xxx') 将小写转换为大写

LOWER('xxx') 将大写转换为小写

INITCAP('xxx')将首字母大写

CONCAT('','')字符串连接

SUBSTR('xxx',x,x)字符串截取,从01开始截取效果是一样的,因为Oracle比较智能,要是输入的参数为负数,则表示倒着截取

LENGTH('xxx')字符串长度

REPLACE('xxx','x','x')字符串替换

ROUND(xxx,xx)四舍五入 xxx需要四舍五入的数值,xx保留的小数位,可以加负数

TRUNC(xxx)截断操作,默认小数点后的全部截断,也可以指定小数点保留位数如TRUNC(789.536,2)得到的结果是789.53,也可以加负数如TRUNC(789.536,-2) 结果是700

18.SELECT sysdate FROM DUAL; 可以求出当前的日期

19.Oracle 中提供了以下日期函数支持:

MONTHS_BETWEEN()求出给定日期范围的月数

ADD_MONTHS(xxx,xxx)在指定日期加上指定的月数

NEXT_DATE(xxx,'')求出下一个给定日期数

TO_CHAR()可以将年、月、日进行分割

例如

TO_CHAR(hirdate,'yyyy') year,TO_CHAR(hirdate,'mm')months,TO_CHAR(hirdate,'dd')day

还可以对时间进行格式化输出 TO_CHAR(hirdate,'yyyy-mm-dd')

TO_CHAR(hirdate,'fmyyyy-mm-dd')可以去掉前导0

TO_CHAR()还可以对数字进行格式化

SELECT ename,TO_CHAR(SAL,'99,999') FROM emp;

注意:一定要用9来表示

$表示美元符号,L表示Local的缩写,以本地语言进行金额显示

TO_NUMBER()将字符串变为数字

TO_DATE()将字符串变为Date类型 例如 SELECT TO_DATE('2009-12-8','yyyy-mm-dd') FROM dual;

TO_NVL()可以将NULL的内容变为指定的内容

DECODE()相当于Javaif else else语句

例如SELECT DECODE(1,1,'内容是1',2,'内容是2',3,'内容是3') FROM dual; 将输入 内容是1

20.左右连接

SELECT e.empno,e.ename,d.deptno,d.dname,d.loc FROM emp e,dept d WHERE e.deptno(+)=d.deptno; 此例中是右连接,以deptno表为准。

21.SQL1999语法

   CROSS JOIN 交叉连接 会产生笛卡尔积

   NATURAL JOIN 自然连接 自动进行关联字段匹配 可以消除笛卡尔积

   USING 子句:直接关联操作列 SELECT * FROM emp e JOIN dept USING(deptno) WHERE deptno=30;

   ON 子句 用户自己编写连接条件

   LETF JOIN/RIGHT JOIN 左右连接

SELECT e.empno,e.ename,d.deptno,d.dname,d.loc FROM emp e right OUTER JOIN dept d ON(e.deptno=d.deptno);

22.分组查询GROUP BY 放在where之后

常见的组函数有

COUNT();

MAX();

MIN();

AVG();

SUM();

用法如下:SELECT deptno,count(empno) FROM emp GROUP BY deptno;

语法:SELECT deptno,empno,count(empno) FROM emp GROUP BY deptno;错误的,原因是使用分组函数的时候,不能出现分组函数和分组条件以外的字段。

语法:SELECT deptno,count(empno) FROM emp;是错误的,原因是不使用分组的时候,则只能单独使用分组函数

分组函数只能在分组中使用,不允许子啊where语句中个使用,要使用个分组条件可以加上HAVING

例如:SELECT deptno,avg(sal) FROM emp GROUP BY deptno having avg(sal)>2000;

注意:分组函数可以嵌套使用,但是在组函数嵌套使用的时候不能再出现分组条件的查询语句

如下语法是错误的:SELECT deptno,max(avg(sal)) FROM emp GROUP BY deptno; 不能出现deptno

如下语法是正确的:SELECT max(avg(sal)) FROM emp GROUP BY deptno;

23.子查询中

>ANY 比里面的最小值大

<ANY 比里面的最大值小

=ANY IN用法相同

>ALL 比里面的最大值大

<ALL 比里面的最小值小

24.表复制

CREATE TABLE myemp AS SELECT * FROM emp; 既复制表结构,又复制表内容

CREATE TABLE myemp AS SELECT * FROM emp where 1=2; 后面的条件不可能成立,只复制表结构

25.Oracle 中常用的数据类型

VARCHARVARCHAR2 代表一个字符串,有长度限制,为255

NUMBER 分为两种

  1)NUMBER(n) 代表一个整数,数字的长度是n,可以使用INT

  2)NUMBER(m,n) 代表一个小数,小数长度为n,整数长度为m-n,可以使用FLOAT

DATE 代表日期的类型,日期要按照标准的日期格式进行存放

CLOB 大对象,表示大文本数据,一般可以存放4G的文本

BLOB 大对象,表示二进制数据最大可以存放4G,例如存放歌曲、电影、图片

26.表的创建

CREATE TABLE person(

  pid VARCHAR2(18),

  name VARCHAR2(200),

  birthdate DATE,

  age NUMBER(4),

  sex VARCHAR2(2) DEFAULT ''

);

27.插入数据

INSERT INTO person(pid,name,birthdate,age) VALUES('222','里斯',TO_DATE('1989-02-09','yyyy-mm-dd'),45);

28.更改表中数据

增加表结构:ALTER TABLE person ADD(address VARCHAR2(50) DEFAULT '暂无地址');

修改已存在的列:ALTER TABLE person MODIFY(name VARCHAR2(40) DEFAULT '无名氏');

29.表的重命名(只能在Oracle中使用)

RENAME XXX TO XXX;

30.约束(主要分为5类)

1)主键约束 主键表示是一个唯一的标识。本身不能为空

2)唯一约束 在一个表中只允许建立一个主键约束,而其他列如果不希望重复值的话,则可以使用唯一约束

3)检查约束 检出一个列的内容是否合法

4)非空约束

5)外键约束 在两张表中进行约束的操作 删除时应该先删除子表,再删除父表

创建主键:

语法1

CREATE TABLE person(

  pid VARCHAR2(18) PRIMARY KEY,

  name VARCHAR2(200),

  birthdate DATE,

  age NUMBER(4),

  sex VARCHAR2(2) DEFAULT ''

);

语法2

CREATE TABLE person(

  pid VARCHAR2(18),

  name VARCHAR2(200),

  birthdate DATE,

  age NUMBER(4),

  sex VARCHAR2(2) DEFAULT '',

  CONSTRAINT p_id PRIMARY KEY(pid)

);

创建非空约束

CREATE TABLE person(

  pid VARCHAR2(18),

  name VARCHAR2(200) NOT NULL,

  birthdate DATE,

  age NUMBER(4),

  sex VARCHAR2(2) DEFAULT ''

);

创建唯一约束

语法一

CREATE TABLE person(

  pid VARCHAR2(18),

  name VARCHAR2(200) UNIQUE NOT NULL,

  birthdate DATE,

  age NUMBER(4),

  sex VARCHAR2(2) DEFAULT ''

);

语法二

CREATE TABLE person(

  pid VARCHAR2(18),

  name VARCHAR2(200) NOT NULL,

  birthdate DATE,

  age NUMBER(4),

  sex VARCHAR2(2) DEFAULT '',

  CONSTRAINT p_name UNIQUE(name),

);

创建检查约束

语法一

CREATE TABLE person(

  pid VARCHAR2(18),

  name VARCHAR2(200) NOT NULL,

  birthdate DATE,

  age NUMBER(4) NOT NULL CHECK(age BETWEEN 0 AND 150),

  sex VARCHAR2(2) DEFAULT '' CHECK(sex IN ('','','')),

);

语法二

CREATE TABLE person(

  pid VARCHAR2(18),

  name VARCHAR2(200) NOT NULL,

  birthdate DATE,

  age NUMBER(4) NOT NULL ,

  sex VARCHAR2(2) DEFAULT '' ,

  CONSTRAINT p_age CHECK(age BETWEEN 0 AND 150),

  CONSTRAINT p_sex CHECK(sex IN ('','',''))

);

创建外键约束

--person

CREATE TABLE person(

  pid VARCHAR2(18) PRIMARY KEY,

  name VARCHAR2(200) NOT NULL,

  birthdate DATE,

  age NUMBER(4) NOT NULL ,

  sex VARCHAR2(2) DEFAULT ''

);

--book

CREATE TABLE book(

  bid NUMBER PRIMARY KEY,

  bname VARCHAR2(30),

  bprice NUMBER(5,2),

  pid VARCHAR2(18),

  CONSTRAINT b_pid_fk FOREIGN KEY(pid) REFERENCES person(pid)

 );

对于删除,应该先删除book表再删除person

也可以使用级联删除,强制删除某张表

DROP TABLE person CASCADE CONSTRAINT;

设置外键约束级联删除

--person

CREATE TABLE person(

  pid VARCHAR2(18) PRIMARY KEY,

  name VARCHAR2(200) NOT NULL,

  birthdate DATE,

  age NUMBER(4) NOT NULL ,

  sex VARCHAR2(2) DEFAULT ''

);

--book

CREATE TABLE book(

  bid NUMBER PRIMARY KEY,

  bname VARCHAR2(30),

  bprice NUMBER(5,2),

  pid VARCHAR2(18),

  CONSTRAINT b_pid_fk FOREIGN KEY(pid) REFERENCES person(pid) ON DELETE CASCADE

 );

31.修改约束

如果一张表已经建立完成之后,则可以为其添加约束

ALTER TABLE 表名称 ADD CONSTRAINT 约束名称 约束类型(约束字段);

关于约束名称的命名最好要统一:

PRIMARY KEY :主键字段_PK

UNIQUE:字段_UK

CHECK:字段_CK

FOREIGH KEY:父字段_子字段_FK

例如:

DROP TABLE person;

CREATE TABLE person(

  pid VARCHAR2(18) ,

  name VARCHAR2(200) NOT NULL,

  birthdate DATE,

  age NUMBER(4) NOT NULL ,

  sex VARCHAR2(2) DEFAULT ''

);

ALTER TABLE person ADD CONSTRAINT pid_PK PRIMARY KEY(pid);

ALTER TABLE person ADD CONSTRAINT name_UK UNIQUE(name);

ALTER TABLE person ADD CONSTRAINT age_CK CHECK(age BETWEEN 1 AND 150);

CREATE TABLE book(

  bid NUMBER ,

  bname VARCHAR2(30),

  bprice NUMBER(5,2),

  pid VARCHAR2(18)

);

ALTER TABLE book ADD CONSTRAINT book_PK PRIMARY KEY(bid);

ALTER TABLE book ADD CONSTRAINT pid_FK FOREIGN KEY(pid) REFERENCES person(pid);

删除约束

ALTER TABLE person DROP CONSTRAINT name_UK;

ALTER TABLE person DROP CONSTRAINT age_CK;

 

0
8
分享到:
评论

相关推荐

    ORACLE数据库学习总结资料.pdf

    Oracle数据库学习总结资料.pdf Oracle数据库学习总结资料.pdf 是一份关于 Oracle 数据库的学习总结资料,涵盖了 Oracle 数据库的各个方面,包括 Oracle 的简介、简单查询、标量函数和算数运算、多表查询、列函数和...

    ORACLE数据库学习总结

    ### ORACLE数据库学习总结 #### 一、数据库简介与安装 **1、Oracle与SQL Server比较的优点:** - **跨平台支持:** Oracle支持多种操作系统平台,如Windows、Linux、Unix等,而SQL Server主要支持Windows系统。这...

    Oracle数据库学习总结.pdf

    Oracle数据库学习总结.pdf

    oracle数据库学习总结.doc.docx

    在学习Oracle数据库的过程中,我们可以从以下几个关键知识点入手: 1. **可移植性和兼容性**: Oracle数据库因其采用C语言开发,所以具备高度的硬件和操作系统独立性,能够在多种平台如UNIX、DOS、Windows等上运行...

    oracle数据库学习总结.docx

    ### Oracle数据库学习总结 #### 一、Oracle物理与逻辑组件详解 ##### 1.1 Oracle物理组件 **数据文件(Data Files)** - **定义**:数据文件是用于存储数据库数据(如表、索引数据等)的文件。 - **特性**:一个...

    oracle数据库学习总结(一)参考.pdf

    Oracle数据库学习总结(一)参考.pdf中包含了一系列关于Oracle数据库的命令和操作的详细知识点,这里将逐一介绍和解释这些知识点。 ### Oracle数据类型 文档首先介绍了Oracle中的数据类型,包括字符类型、数字类型、...

    oracle数据库学习总结(一).pdf

    以下是对Oracle数据库学习总结的基础部分的详细解析: 一、Oracle中字段的数据类型 1. 字符型: - `CHAR`:定长字符串类型,最大长度为2000个字节。例如,`CHAR(10)`的“张三”会填充6个空格以达到10个字节的长度...

    Oracle数据库的学习总结一

    ### Oracle数据库学习总结知识点 #### 1. 数据表的基本操作 - **创建表**: 使用 `CREATE TABLE` 语句创建新的表。例如:`CREATE TABLE student (name VARCHAR2(20), age NUMBER(3));` - **插入记录**: 使用 `...

    ORACLE数据库学习总结.pdf

    以上是Oracle数据库学习的基础内容,涵盖从数据库的基本概念、操作到高级查询和管理。深入学习Oracle,还需要了解索引、触发器、存储过程、游标、事务处理以及数据库备份和恢复策略等。通过实践和理解这些概念,可以...

    ORACLE数据库学习总结可用.pdf

    本文将对Oracle数据库的主要方面进行总结,包括其发展历程、体系结构、SQL*Plus常用命令以及基本的SQL查询操作。 一、Oracle简介 Oracle数据库自诞生以来经历了多个版本的迭代。Oracle 8引入了对Internet的支持,...

    oracle数据库学习总结(一)整理.pdf

    Oracle数据库是一种广泛使用的大型关系型数据库管理系统,它在...以上就是Oracle数据库学习的基础知识,涵盖了数据类型、表管理、数据操作及查询功能。理解并掌握这些概念对于进一步学习和使用Oracle数据库至关重要。

Global site tag (gtag.js) - Google Analytics