1.数据类型
计算机都要有数据类型,不同语言存储数据的方式不同,计算机是二进制 只能识别 0,1信息,机器只能识别电流,电流靠开关控制,开是 1,关是 0,二进制信号再往上转化成更高级的数据数据存在内存里面,永远存在硬盘里面的硬盘数字,英文,标点符号,汉字,日期等、统称数据。
/* 在计算机里叫数据类型不同语言有不同数据类型,我们只研究数据库的数据类型。
三大类:字符串,数字,日期*/
一,字符串:在库里数据只要 '123njnjb' 只要打两个引号都叫字符串
存在表里的时候两个引号不会显示
Varchar2() : 用途存储字符串数据。(50)代表字符长度
在GBK字符集下 1个数字,1个英文,1个符号都是1个长度
1个汉字是2个长度
在UTF-8字符集下 1个数字,1个英文,1个符号都是1个长度
1个汉字是3个长度
nvarchar2,nchar 针对别的字符集,计算长度时和字符集相关
二、数字:0123456
Number(5,2) 逗号可以看成小数点 5.2 小数点左边最多存5位,右边最多存2位
如果左边不够空着就行,右边用0补齐 230.10
int(),double,float
三、日期类型 : 2018/12/4 14:58:00 yyyy/mm/dd hh24:mi:ss
Select Sysdate From dual
and or
and: 交集 过滤条件 两个都满足
or: 并集 过滤条件 只满足一个
数据库的一些对象
constraints 约束 主键,唯一,非空,默认,外键,校验约束(check)
procedure 存储过程
function 函数
table 表
index 索引
view 视图
materialized view 物化视图
sequence 序列
synonym 同义词
database link 数据库连接
tablespace 表空间
--视图
With tmp_xxx As (
Select * From emp Where deptno=20)
Select * From tmp_xxx;
With ... As --相当于创建一个临时表
--With as短语也叫子查询部分可以定义一个SQL片段
--with 必须紧跟引用的select语句,创建的临时表必须被引用否则会报错
--内连视图
Select * From (Select * From emp Where deptno=20);
--定义视图
Create Or Replace View vw_emp20 As--可以存储在数据库中
Select * From emp Where deptno=20;
Select * From vw_emp20;
视图的特点:
1、视图存储数据吗?
视图本身不存储数据,查询视图得到数据来自于执行
视图对应定义的查询语句。
2、你们用视图么?什么情况用?有什么利弊?
2.1)用
2.2)跨用户访问表的时候,会访问对应的视图
例如:HR用户要查询SCOTT用户的EMP表
vw_emp视图:select * from emp
2.3)视图更加灵活。
3、视图的分类
1)简单视图
单表,无聚合运算的
基于视图对基表进行DML(实际工作千万不要对视图DML)
2)复杂视图
多表关联,聚合运算等等
无法基于视图对基表DML
同义词
--私有同义词--只有在当前用户下可查
Create Synonym emp_ptg For scott.emp;
Select * From emp_ptg;
Select * From scott.emp;
--公有同义词,所有用户都可访问
Create Public Synonym pub_emp For scott.emp;
所有用户能看到pub_emp这个同义词,但是能不能查询依赖于这个用户对于scott.emp的权限。
--序列:编号生成器
create sequence seq_emp
start with 1 --序列的初始值
increment by 1 --步长
minvalue 1 --最小值
maxvalue 9999999999999999 --最大值
nocycle --不循环
cache 5000 --缓冲量
order;
Select seq_emp.nextval From dual;
Select seq_emp.currval From dual;
Create Table emp_ptg As Select Cast(0 As Number(4)) Id,
t.* From emp t Where 1=2;
Insert Into emp_ptg Select seq_emp.nextval,t.* From emp t;