Oracle基础——学习笔记

一、用户和表空间

1.表空间

(1)表空间概述

1.表空间:是数据库的逻辑存储空间。可以理解为,在数据库当中开辟的一个空间,用于存放数据库的对象。 
2.一个数据库可以由多个表空间构成。 
3.oracle中的表空间概念是与MySQL、SQL Server等数据库的一个重要区别;oracle的很多优化都是通过表空间实现的 
4.表空间:是由一个或多个数据文件构成的,数据文件的位置和大小可以由用户自己定义。

(2)表空间分类

1.永久表空间:数据库中要永久化存储的一些对象,如:表、视图、存储过程 
2.临时表空间:数据库操作当中中间执行的过程,执行结束后,存放的内容会被自动释放 
3.UNDO表空间:用于保存事务所修改数据的旧值,可以进行数据的回滚

2.创建表空间

-- 创建默认表空间和临时表空间
create [temporary] tablespace tablespace_name -- [temporary] :临时的
tempfile | datafile 'xx.dbf' -- tempfile :创建好的表空间默认在oracle安装目录下;datafile 'xx.dbf' :为你的表空间设定存储位置
size xx -- 设置表空间大小,xx可以为10m

3.创建用户并指定表空间

CREATE USER cici IDENTIFIED BY cici -- 创建用户cici,并设置密码cici
-- PROFILE DEFAULT -- 存储位置默认
-- DEFAULT TABLESPACE CICI -- 默认表空间为CICI
ACCOUNT UNLOCK; -- 解锁用户

4.为用户赋予权限

GRANT connect TO cici; -- 可以与服务器建立连接
GRANT resource TO cici; -- 可以创建表、序列、过程、触发器、索引

二、管理表

1.认识表

表其实是我们存储数据的一个基本单位

在数据库中的表都是一个二维结构;在一张表中,每一列的数据必须具有相同的数据类型;列名要具有唯一性每一行的数据也要保证其唯一性。

2.数据类型

(1)字符型数据类型

固定长度的数据类型:
CHAR(n)类型;-- CHAR类型的n的最大值是2000;
NCHAR(n)类型;-- NCHAR类型的n的最大值是1000;
可变长度的数据类型:
VARCHAR2(n)类型;-- VARCHAR2(n)类型的n最大值是4000;
NVARCHAR(n)类型;-- NVARCHAR(n)类型的n的最大值是2000;用于存储Unicode格式的数据,更适合存储中文数据。

(2)数值型数据类型

NUMBER(p,s)类型:是Oracle中比较常用的的一个数值型,p在这里代表这有效数字,而s则可以理解为效数点后的位数
-- 例:NUMBER(5,2)==有效数字是五位,保留两位小数。
FLOAT(n)类型:主要是用来存储二进制数据,还能表示二进制的位数是1~126位

(3)日期型数据

DATE类型:DATE类型的存储范围是从公元前4712年1月1日到公元9999年12月31日,DATE类型可以精确到秒的数据类型。
TIMESTAMP类型:时间戳类型,能精确到小数秒的数据类型。

(4)其他类型

存放大对象的数据:
BLOB类型(以二进的形式来存放数据,最大值为4GB)
CLOB类型(以字符串的形式来存放数据,最大值为4GB)

3.管理表
(1)创建表
创建表的基本语法:

CREATE TABLE table_name -- 在同一个用户下,表名要是唯一的
{
columu name datatype,
....
}

 

create table student
(
sid number  primary key, -- 添加主键约束
sname varchar2(20) not null, -- 添加非空约束
gender varchar2(2) check(gender in('男','女')), -- 添加检查约束
email varchar(40) unique not null -- 添加唯一约束及非空约束
);

查看表里面的字段信息 :

desc table_name


(2)修改表

alter table table_name add column_name datetype; -- 向表中添加字段
alter table table_name modify column_name datatype; -- 修改字段类型
alter table table_name drop cloumn column_name;-- 删除字段
alter table table_name rename column column_name to new_name;-- 修改字段名
rename table_name to new_table_name;-- 修改表名

(3)删除表

DELETE FROM table_name [WHERE conditions];
 deletetruncatedrop
效果只删除数据只删除数据删除表结构、约束、触发器、索引、...
语言区别DML(事务提交后生效)DLL(立即生效)DLL(立即生效)
速度最快

二、操作表中的数据

1.添加数据

(1)向表userinfo中添加数据:

-- 示例:
INSERT INTO table_name(column1,column2,…) VALUES(value1,value2,…);
-- sysdate是获取当前日期
insert into userinfo values(1,‘xxx’,‘123123’,‘xxxxx@qq.com’,sysdate);

(2)创建表userinfo2的时候,给表中设置默认值

-- DEFAULT关键字代表默认,sysdate代表当前时间
create table userinfo2
(
id number(6,0),
dates date DEFAULT sysdate
);

向表userinfo2中添加数据

insert into userinfo2(id) values(1);

(3)向表userinfo中添加默认值

alter table userinfo modify email default ‘无’;
insert into userinfo(id) values(3);

-- 不想要默认值的时候,直接赋予值就行
insert into userinfo(id,email) values(4,‘yyyy@qq.com’)

(4)复制表table_old的数据到表table_new

-- 在建表时复制
create table table_new as select column1,...|* from table_old; 
-- 在添加数据是复制
insert into table_name [(column1,...)] select column1,...|* from table_old;

2.修改数据

Update table_name Set column1=value1,column2=value2,...[where conditions]

(1)无条件修改

(2)有条件修改

3.删除数据

DELETE FROM table_name [WHERE conditions];

三、查询语句

1.基本查询语句

-- FROM (可以多表查询) WHERE 子句可带多个条件 DISTINCT 显示不重复数据
select [Distinct] 列名 .. From 表名 [where condition] 

2.查询所有字段和指定字段

-- 查询所有
select * from table_name;
-- 查询指定字段
select column1, ... from table_name;

3.给字段设置别名

-- as可省略
select column_name as new_name, ... from table_name;

4.运算符和表达式

(1)表达式 = 操作数 + 运算符

(2)oracle中的操作数可以是常量、变量和字段

(3)oracle中的运算符:算数运算符(+ - * /)、比较运算符(> < = >= <= <>)、逻辑运算符(and or not)

(4) () 可以改变运算符优先级

5.在select语句中使用运算符

-- 在查询语句中,使用算术运算法对字段进行运算,并不影响真正表中的数据
-- 所有工资结果加200
select id,username,salary+200 from users;
select username from users where salary>800 or salary<>1801;

6.带条件的查询

逻辑运算符的优先级:按not、and、or的顺序依次递减; 比较运算符的优先级高于逻辑运算符

7.模糊查询

通配符的使用: 一个_只能代表一个字符,一个%可以代表0到多个任意字符

-- 查询以a开头的用户名
select * from users where username like 'a%';
-- 查询第二个字符为a的用户名
select * from users where username like '_a%';

8.范围查询

(1)BETWEEN...AND/NOT BETWEEN...AND:查询结果为闭合区间

(2)IN/NOT IN:结果为一个具体的值

9.消除重复行

select distinct deptno from emp;

10.对查询结果进行排序

SELECT [DISTINCT] column_name1,...|* FROM table_name [WHERE conditions] ORDER BY column_name1 DESC|ASC,... 
-- DESC是降序排序,ASC是升序排序,默认情况下是升序排序

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值