编程:处理数据
关系型数据库:mysql oracle sqlserver db2
非关系统数据库no-sql:redis
oracle的优势:安全性更高
数据处理能力更强:存储、处理更多的数据
LAMP :Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,了越拥有来越高的兼容度,共同组成了一个强大的Web应用程序平台。
DB:数据库,存储、组织数据的
DBMS:数据库管理系统,客户端,操作使用数据库
公司简介
ORACLE:产品1 数据库
产品2 ERP软件 物料采购、库存、销售前期
用友软件 金蝶 汉康
区别
mysql:库,相当于一个项目,每个库都有自己独立的文件,管理自己的数据库对象 系统用户:root
oracle: 库:就一个,整个计算机的磁盘就是oracle数据库
orcl 表空间:在大的仓库中划分出的小仓库分两类:
1)系统表空间,在创建数据库的过程中自动创建 存放了系统对象:系统表 系统用户 系统函数等
2)自定义表空间:存放用户自己的对象
用户:
1)系统用户:sys/system 能够管理所有表空间
2)自定义用户:只能管理所分配的表空间
【重要】
数据库orcl 相当于Java中类
数据库不能直接访问,必须通过数据库实例来访问(连接,增删改查)
数据库实例 相当于Java中类的对象
oracleserviceorcl 保证这个服务在服务中启动后,才能去访问数据库
oracle数据库正常使用,必须保证实例服务和监听启动
【技能点】oracle在安装过程中,默认创建示例用户SCOTT,状态“锁”
解锁 SCOTT必须使用SYS登录,其他用户无权限
在实际开发中,需要创建自己的表空间,来存放项目对应的表
数据库开发过程:
1、SYS用户登录
2、创建自己的表空间
3、创建表空间对应的用户
4、给用户分配/撤销权限
5、使用创建的用户登录
6、创建项目对应的表等数据库对象
oracle 常用的数据类型
1.字符类型
• CHAR:一个定长字符串,当位数不足自动用空格填充来达到其最大长度。如非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2,000字节的
信息。
• VARCHAR2:目前这也是VARCHAR 的同义词。这是一个变长字符串,与CHAR 类型不同,它不会用空格填充至最大长度。VARCHAR2(12)可能包含0~
12字节的信息
2、数字类型
• NUMBER:该数据类型能存储精度最多达38位的数字。每个数存储在一个变长字段中,其长度在0~22字节之间。Oracle的NUMBER类型精度很高, 远远高于许多编程语言中常规的FLOAT和DOUBLE类型。
NUMBER( p,s ) p表示精度(总长度) s表示小数位置且四舍五入
NUMBER(10,3) 10是总长度,3是小数位数的长度
3、日期类型
• DATE:一个7字节的定宽日期/时间数据类型。其中总包含7个属性,包括:世纪、世纪中哪一年、月份、月中的哪一天、小时、分钟和秒。
• TIMESTAMP:一个7 字节或12.字节的定宽日期/时间数据类型。它与DATE 数据类型不同,因为TIMESTAMP 可以包含小数秒(fractional second);带小数秒的TIMESTAMP 在小数点右边最多可以保留9位。
4、二进制及大文本数据
• BLOB: (binary large object)在Oracle9i及以前的版本中, 这种数据类型允许存储最多4GB的数据, 在Oracle 10g及以后的版本中允许存储最多(4GB)×(数据库块大小)字节的数据。BLOB包含不需要进行字符集转换的“二进制“数据,如果要存储电子表格、字处理文档、图像文件等就很适合采用
• CLOB:(Character Large Object)在Oracle9i及以前的版本中, 这种数据类型允许存储最多4GB的数据, 在Oracle 10g及以后的版本中允许存储最多(4GB)×(数据库块大小)字节的数据。CLOB包含要进行字符集转换的信息。这种数据类型很适合存储纯文本信息。
oracle 使用语句
--创建表空间
--DDL
-- 方式一:CREATE tablespace '路径'
方式二:create tablespace 空间名 datafile '路径'
size 10M 默认初始大小
autoextend on next 20m 下次拓展20M
maxsize 50m 最大50m
--创建用户,初始密码,同时制定用户对应的管理的表空间
create user 用户名 identified by 密码 default tablespace 表空间名
---给用户分配权限:connect 链接 resource 使用资源 dba 管理员
grant connect ,resource ,dba to用户名;
-给xsx分配update emp表的权限
grant update on emp to xsx
--撤销权限
revoke dba from xsx
--演示,创建用户表
create table department(
deptno varchar2(10) primary key,
dname varchar2(20) not null
)
insert into department valuse('1001','开发部门');
create table myuser(
userid varchar2(30) primary key not null,
age number(3,0) not null,
price number(3.0) not null,
sex char(2) not null,
dno varchar2(10) not null)
--创建check 约束
alter table myuser
add constraint ck_age chek (age between 18 and 90)
---表结构,数据一同复制
create table emp2
as select * from emp
--只复制表结构不复制数据
create table emp3
as select *from emp where 1=2
--插入emp3表数据,通过查询来获得插入的数据
insert into emp3
select * from emp where deptno=30
--【说明】查询得到的数据要和插入对应的列,在数据类型和长度上要兼容
--更新7698 job deptno 更新成7499一致
--如果更新的值来源于不同的表,需要分别查询
update emp2 set (job,deptno)=(
select job,deptno from emp2 where empno=7499)
where empno =7698
--删除emp2里部门位置是NEW YORK
delete from emp2 where deptno=(select deptno from dept where loc='new york' )
--联合查询,多个查询结果联合在一起显示
--all 联合在一起的结果中有重复值,正常显示
--去掉all 重复值不显示
--【注意】联合查询在一起的列的数据类型和长度要兼容
select empno ename from emp
union all 显示所有,有重复
select deptno, dname from dept
select empno ename from emp
union 显示所有,无重复性
select deptno, dname from dept
---单个查询结果去重
select distinct deptno from emp
--oracle 独有
--查看表结构
--命令: describe emp(不是sql语句)
--将查询结果中的多列合并为一列来显示
select ename ,deptno ,job from emp
select ename, deptno||'-'||job as 部门职务 from emp
--查询没有提成/奖金的人员 is null/is not null
select *from emp where emp.comm is null
select *from emp where emp.comm is not null
--对表中列字段删除
alter table myuser drop column deptno
--对表中添加列字段
alter table myuser add(deptno varchar2(20) not null)
--对表中修改列字段 ,数据类型,默认值,是否为空
alter table myuser modify(deptno varchar2(20))
--对表中表中列字段重命名
alter table myuser rename column deptno to ddeptno
--对表修改表重命名
alter table myuser rename to newmyuser
--对创建表中添加唯一键
create table utf( did number ,constraint uni_did unique(did))
--对表中添加唯一键
alter table myuser add constraint uni_deptno unique(ddeptno)
--对创建表中添加主键
alter table myuser add constraint pk_deptno primary key(deptno)
--对创建表中添加外键
create table ufo (uids number ,constraint fk_uids foreign key(uids) references utt(uuu))
--对表中添加外键
alter table t1 add constraint pk_t2_id foreign key(id) references t1(id);
【连接查询】复习 等值连接 和内连接 自行复习
【联合查询】把多条查询语句的查询结果联合在一起显示
【子查询】简单子查询/单行子查询 使用比较运算符的,要求子查询的结果不能多余一行
多行子查询 in / not in
any >any <any
all >all <all
delete from goods where goodsid in(1,3,4,6)
思路:点击删除按钮后,获取删除主键
构造1,3,4,6 字符串格式
今日总结:
1、安装oracle
2、控制面板-管理工具-服务里 实例服务和监听 改成手动服务
3、oracle的工作原理
创建一个数据库(大的仓库,所有对象都在大仓库中)
系统默认创建系统表空间system: sys system账户 系统表
SCOTT 及所属对象
区分:SYS 和SYSTEM的区别
使用SYS登录
创建表空间
创建用户及用户所管理的表空间
需要给用户分配权限或角色
理解:角色是不同权限的集合
例如: role1: insert update
role2: delete insert
系统角色:connect resource dba
DCL:grant revoke
使用新用户登录,登录创建自己的对象