Oracle数据库的添、删、改

      最近在学习Oracle数据库,其实在我看来初级的数据库还是很简单的,其实简单的数据库无疑就是4个字:“添、删、改、查”!所以写了一篇文章来给大家分享一下我的见解;

      首先先介绍一下Oracle;Oracle服务器是由Oracle 数据库和 Oracle 实例组成。Oracle 是企业管理器用于管理、诊断和调整多个数据库的工具。数据库语言SQL;SQL 是 Structured Query Language(结构化查询语句)。SQL 是数据库语言,Oracle 使用该语言存储和检索信息。SQL由4个部分组成:“DML、DCL、TCL、DDL”;DML 数据库操作语言,干的事情呢 就是 查询(select)、插入(insert)、删除(delete)、修改数据库的数据(update)!DCL 数据控制语句,用来控制存取许可,存取权限等!TCL 事务控制语句,用于事务处理!DDL 数据定义语句,这个建立数据库、数据库对象和定义表的列;

       现在来介绍一下SQL中的运算符:

       算数运算符:+ - * / 对应的就是以前小学学数学时期的加、减、乘、除;

       赋值:就只有一个“=”,就比如 “name=‘王后’”;

       逻辑运算:and 就是and前的条件和and后的条件要同时成立才能返回true;or就是or前的条件和or后的条件只要成立一个条件结果都会返回true;

       比较运算符:< 、> 、= 对应的就是小学的小于、 大于 、等于;<> 不等于;>= 大于等于;<=小于等于;!= 这个也是不等于 但是不是SQL-92标准。

        下面说下要注意的事项:

1、数据的完整性;

       这个错误大多都是在数据存入的过程中;创建表的时候就应当保证以后数据输入是正确的!错误的数据、不符合要求的数据是不允许输入的;

2、约束;

扫描二维码关注公众号,回复: 1175684 查看本文章

       确保数额ude数据要满足指定的要求,不然将拒绝相应的数据修改。

       接下来我写一段代码给大家介绍一下在数据库中怎么创建用户、捆绑用户、授予权限、解锁用户、收回权限用代码演示一遍;

connect system/System as sysdba;
-- 进入管理员权限 system 是管理员的帐号 而System 是我system帐号的密码
create tablespace yl datafile 'E:\Mydate\0626 yaolou.ora' size 100M autoextend on;
--建立数据文件 名字叫yl 保存在E:\Mydate\0626 yaolou.ora' 给它的大小是100M
create user yl1 identified by 123;
--创建了一个名叫yl1的用户 密码是123
alter user yl1 default tablespace yl;
--捆绑用户和数据文件
grant connect,resource to yl1;
--授权
alter user scott account lock;
--锁定用户
alter user scott account unlock;
--解锁用户
revoke select on scott.emp from newer; 
--收回权限
grant select on scott.emp to newer; 
--允许一个用户可以在我的呃数据库中查询emp表

------------------------------------------------------------------------------------------------------------------------------------

        下面就用实例来演示一下在数据库中建立一个表格

create table tb_student(
--建立一个名叫tb_student的表格
stu_id number primary key,
--在表tb_student里面建立一个名叫stu_id的列 numb就是数字类型 主键(不能为空,唯一的)
stu_name varchar2(20) not null.
--在表tb_student里面建立一个名叫stu_name的列 是字符类型 not null 非空
stu_ sex char(10),
--在表tb_student里面建立一个名叫stu_sex的列  不能超过10个字符
stu_person_id varchar2(255) unique
--在表tb_student里面建立一个名叫stu_person_id的列  是字符类型 字符要小于255 要唯一的
);

在上面建立了一个名叫tb_student的表;

tb_student里面定义了stu_id stu_name stu_ sex stu_person_id这么多的列名

在各个列的后面添加了很多的约束

         常用的约束类型:

主键约束(Primary Key):要求主键列数据唯一,并且不允许为空

唯一约束(Unique ):要求该列唯一,允许为空,但只能出现一个空值。

检查约束(Check):某列取值范围限制、格式限制等,如有关年龄的约束。

认约束(Default ):某列的默认值,如我们的男性学员较多,性别默认为“男”。

外键约束(Foreign Key):用于两表间建立关系,需要指定引用主表的那列



----------------------------------------------------------------------------------------------------------------------------------------------------------------------

 当表建立之后 我们要检查你建立表是否建立成功,

select * from tb_student;

 

好了,表已经建立成功,检查一下,如果发现你的表中还有一些列在建立表中忘记建立了,没关系我们还可以给你们添加,当你发现建立的有些列没用的时候还可以删除,约束条件错误的话,还可以修改列里面的约束条件。

alter table tb_student add(stu_score number); 
--添加一个名为tb_scoret列 number类型
--alter table tb_student drop column stu_score;
--删除tb_scoret列
alter table tb_student modify(stu_name varchar2(30) default '男'); 
--修改tb_name的约束条件 varchar2类型 默认的属性是“男”

 ------------------------------------------------------------------------------------------------------------------------------------

      

再用

select * from tb_student;

 之后就会变成

 STU_ID STU_NAME                       STU_SEX    STU_PERSON_ID                                         STU_SCORE

---------- ------------------------------ ---------- -------------------------------------------------------------------------------- 

好了表已经建立好了 约束好了 我们就给表中添加数据

insert into tb_student values(1,'张三','男','125463215548944567',124);
insert into tb_student values(2,'李四','男','745896548945787894',125);
insert into tb_student values(3,'王五','女','844574128456551255',126);
insert into tb_student values(4,'王二','男','854795254852855655',124);
insert into tb_student values(5,'麻子','女','215879654485852545',124);
insert into tb_student values(6,'理想','男','855482845487456457',124);

 我们向tb_student表中添加了6条数据

暂且我们把这些数据理解成为 编号为1的同学叫张三 男 身份证为125463215548944567 学号是124

其他的以此类推

我们可以看见 number类型的数据直接可以添加进去 而varchar2和char类型的数据需要加上'' 添加的每一条数据后面都要用,隔开,每一句语句最后都要用;结尾;尤其要注意的是在我们写代码的时候千万不要把自己电脑里的中文输入法打开,不然会被认定是无效字符。

-----------------------------------------------------------------------------------------------

发现没有 定义每一列的时候列名后面都会有一个数据类型 比如number varchar2 char等

现在就来介绍在Oracle数据库中的数据类型有哪些

其实数据类型分为5类 我用一张图片表示



 数据类型就包括这5大类

字符类型分为:1、char  2、varchar2  3、long

1、char:需要固定长度的字符串时  数据类型存储字母数字值  char的长度是1-2000个字节

2、varchar2:可变长字符串 比如 varchar2(20) 表示最长可以存储20个字节 而如果你没有20个字节 就会根据你写的长度在内存中开辟多大的空间。比如a varchar2(20); 而a是name 那就只会给你开辟一个4个字节的空间 节省了内存的空间;他的大小1-4000个字节

3、long:long的数据最多可以存储2G 一张表中只能出现一次 而且不能在long类型的列上建立主键、唯一约束、索引。不能存储过程的参数类型。

数值数据类型:可以存储整数 浮点数和实数 最高精度为38位 number

日期数据:包括年、月、日、时、分、秒 主要类型有:

1、date 存储日期和时间 精确到整个秒。

2、timestamp 存储日期、时间、时区信息、秒值精确到小数点后6位。

raw 数据用于存储二进制数据 最多能存2000字节

longraw能存储2G

LOB称为“大对象”数据类型 可以存储4G的非结构化信息 比如音乐、视频等。

-------------------------------------------------------------------------------------------------------------------------------------

现在我们开始在我们建立的表格中间说一些我们能用到的修改和添加

一般条件我们都用where 来表示 

update scott.stu_student set scott.stu_student.stu_name='小学生' where scott.stu_student.stu_id=1;
--编号为1的改成小学生 tb_student 表是在我电脑里Scott用户中创建的;

update scott.stu_backup set scott.stu_student.stu_name='小学生',scott.stu_student.stu_id=8 where scott.stu_backup.stu_id=1; 
--编号为1的改成小学生 编号改成8

delete from scott.stu_student where scott.stu_student.stu_name='小学生'; 
--删除姓名为小学生的所有学生

-------------------------------------------------------------------------------------------------------------------------------------

自己电脑里安装的数据库中用户都会带有一个emp和dept表

如图

 ------------------------------------------------------------------------------------------------------------------------------------



 我们开始在这2张表中做文章

select * from emp order by sal asc;
--排序 根据sal列从低到高排序 

select * from emp order by sal desc;
--排序 根据sal列从高到低排序 

select ename||sal from emp;
--拼接 把员工表中的name和sal拼接起来

select * from emp where comm is null;
--查询员工表中没有奖金的员工

select ename,sal+500 from emp where sal+500<8000 order by sal+500 desc; 
--员工的薪水加500后 小于8000的人按从高到低排序

select ename from emp where ename like 'A%'; 
--在员工表中找到A开头的名字

select ename from emp where ename like 'A_';  
--在员工表中找到A开头的名字  只匹配的1位

select sum(sal) from emp;
-- emp表中 sal中值得总合

select avg(sal) from emp;
--emp表中sal数据的平均值

select max(sal) from emp;
--emp表中sal数据中的最大值

select min(sal) from emp;
--emp表中sal数据中的最小值

select distinct dept.*from emp inner join dept on emp.deptno=dept.deptno; 
--列出至少有一个雇员的所有部门信息

select * from emp where emp.sal>(select sal from emp where ename='SMITH');
--列出薪金(工资)比'SMITH'多的所有雇员信息

猜你喜欢

转载自yaolou.iteye.com/blog/2145074