/*注意,下面的某些表内容是为了演示需要,你们练习的时候可以复制我的这篇文章做SQL脚本直接运行,应该没有问题,如果有问题可以检查一下是不是少了    ;         或者哪行注释没有注释掉,自己改改。也可以自己建表,按照相应的语法规则进行数据的相关操作。*/

--人员表

create table person(

personID     number ,

pname        varchar2(20) constraint NN_pname not null,

psex         char(2) ,

pbirth       date  ,

constraint   PK_personID primary key (personID) ,

constraint   CK_psex  check (psex='男' or psex='女')

);

--增加数据

--普通加法(不加列名,默认为按表的列的排列顺序逐个插入)

--要求:数据对应,数据类型对应,插入的值的数量和列的数量必须一致,木有值的插入null

insert into person values (1,'david','男',to_date('1990-09-10','yyyy-mm-dd'));

insert into person values (2,'ggyy','男',to_date('1990-10-10','yyyy-mm-dd'));

insert into person values (3,'朱刀','男',to_date('1990-10-10','yy-mm-dd'));

insert into person values (4,'泥巴','女',to_date('1990-10-10','yy-mm-dd'));

insert into person values (5,'憨坨','女',to_date('1990-10-10','yy-mm-dd'));

insert into person values (6,'李静芳','女',null);

delete from person where  personID =6;

--使用to_date  的方法:   to_date('要插入的日期','该日期的格式')  下面是两个例子:

--to_date('2010-01-02 13:34:09','yyyy-mm-dd hh24:mi:ss')

--to_date('2010-01-02','yyyy-mm-dd')

---文艺加法(要加哪些列,列的顺序在在前面给好,后面按前面给的格式添加)

----这样想加哪几列,怎样的顺序加,想怎么搞怎么搞!

-----注意,必须满足表的约束,如主键,唯一,非空等,有的列必须加数据,不能为空!

insert into person (personID,pname) values (7,'犀利哥');

---2B加法   目前没有发现...(欢迎各位达人提供!)

--设置序列(自动增长列),一般的管理系统项目中都会用到

create sequence seq_personID ;

drop sequence seq_personID ;

select * from person;

--start with n  序列的初值为n ,increment by m 序列间隔为m

--如果不写,默认为从1开始,序列间隔为1

--前面插入了7条数据,所以这里的序列从8开始,否则违反主键约束

create sequence seq_personID start with 8 increment by 1;

--序列使用方法:序列名.Nextval

--上面加的是高中同学,现在以自增长的方式添加几个大学同学...

insert into person (personID,pname,psex) values (seq_personID.Nextval,'胖子','男');

insert into person (personID,pname,psex) values (seq_personID.Nextval,'小成成','男');

insert into person (personID,pname,psex) values (seq_personID.Nextval,'乐姐','女');

insert into person (personID,pname,psex) values (seq_personID.Nextval,'靓崽波','男');

select personID,pname,psex from person;

--insert into 表a (列名)select 列名 from 表b  从表b中查找出需要的数据插入到表a中

---一般这种方法用于表的复制,或者表中某些列数据的复制

-----哥刚才去吃了个饭,妈的,长沙这个鬼地方真是吃一餐饭出一身汗啊!特别是我还脑残-----的点了个煲仔...

-----接上面将的内容...

-----表的所有数据复制太简单,不讲了,一般也不常用,全部复制用什么sql语句啊,直接把数据导出去不就行了

-----讲下某些数据的复制

-------假设现在计科0903班的全体男生都被招到华为,女生都被招到中兴去了    美好的愿望...

-------所以现在华为和中兴的员工信息表中就要添加新的数据   ,怎么办呢?

create table huaweiworker(

workerID        number ,

pname        varchar2(20)  not null,

psex         char(2) ,

pbirth       date  ,

constraint   PK_jobID primary key (workerID)

);

--使用该方法插入数据

--假设华为已经有1000个员工了,所以工号为personID+1000

insert into huaweiworker (workerID,pname,psex,pbirth) select personID+1000,pname,psex,pbirth from person where  psex='男';

---这样person表中的部分信息就加到huaweiworker表中了,女生全招到中兴去了就省略不---写了...

select * from huaweiworker ;

--删除数据     不加where就是全删了

delete from person     --慎用!

--条件删除

delete from person where pname='犀利哥';  --  把犀利哥删掉了

--删表  慎用! 表木有了,里面的数据肯定木有了,一个通宵的努力就木有了...

/*drop table roleandnode ;

drop table tfunction ;

drop table trole ;

drop table userandrole ;

drop table loginzh ;

drop table person ;*/

--修改       不加where   就是全部数据都改了

--2B修改法

update person set pname='犀利哥' ;--把全部人的名字都改成犀利哥了,不过我没提交  嘿嘿~

--文艺修改法,按条件选定一行数据,将某些列改为自己需要的数据

---这里,我把朱刀的名字改成超级帅男了,妈的,提交了,杯具...

update person set pname='超级帅男' where pname='朱刀';

--登录账号表

create table loginzh(

userID       number ,

personID     number ,

zhanghao     varchar2(20) ,

passwd       varchar2(20) ,

logintime    date ,

loginIP      varchar2(15) ,

constraint   PK_userID primary key (userID) ,

constraint   FK_personID foreign key (personID) references person (personID)

);

--为这个表加点数据

create sequence seq_userID ;

insert into loginzh  values (seq_userID.Nextval,1,'111111','123456',sysdate,null);  -- sysdate为系统当前时间

insert into loginzh  values (seq_userID.Nextval,2,'222222','123456',sysdate,null);

insert into loginzh  values (seq_userID.Nextval,3,'333333','123456',sysdate,null);

insert into loginzh  values (seq_userID.Nextval,4,'444444','123456',sysdate,null);

insert into loginzh  values (seq_userID.Nextval,5,'555555','123456',sysdate,null);

insert into loginzh  values (seq_userID.Nextval,6,'666666','123456',sysdate,null);

--角色表

create table trole (

roleID       number ,

rolename     varchar2(20) ,

roleremark   varchar2(100) ,

constraint PK_roleID primary key (roleID)

);

--为这个表加点数据

create sequence seq_roleID ;

insert into trole values (seq_roleID.Nextval,'剑圣','一个能转出剑刃风暴和无敌斩的家伙!');

insert into trole values (seq_roleID.Nextval,'宙斯','一个能全屏放闪电的家伙!');

insert into trole values (seq_roleID.Nextval,'LION','用大招抢人头的屌丝!');

insert into trole values (seq_roleID.Nextval,'炸弹人','我不说什么了...');

insert into trole values (seq_roleID.Nextval,'UG','辉耀在手,天下我有!');

insert into trole values (seq_roleID.Nextval,'风行者','风一样的男子,哦不,是女子!');

select * from trole ;

--账号与角色表

create table userandrole(

userID number ,

roleID number ,

constraint FK_userID foreign key (userID) references loginzh (userID) ,

constraint FK_roleID foreign key (roleID) references trole (roleID)

);

--为这个表添加数据

insert into userandrole values (1,1);

insert into userandrole values (2,1);

insert into userandrole values (3,2);

insert into userandrole values (4,2);

insert into userandrole values (5,3);

insert into userandrole values (6,3);

--功能节点表

create table tfunction(

functionID number ,

nodename   varchar2(20) ,

noderemark varchar2(100),

constraint PK_functionID primary key (functionID)

);

--角色到节点表

create table roleandnode(

roleID number ,

functionID number ,

constraint FK_roleID1 foreign key (roleID) references trole (roleID) ,

constraint FK_functionID foreign key (functionID) references tfunction (functionID)

);

--查询  这个是关键!

---简单的单表查询     *代表全部列

select * from person

---只查询某些列     as的作用是取别名

select pname as 姓名 ,psex as 性别 from person ;

----条件查询   where  后面接条件

select pname as 姓名 ,psex as 性别 from person where psex='女' ;

----模糊查询  通配符 : %   表示0个或多个字符  ;   _   表示一个字符     关键字用 like   而不是 =

-----为了方便演示 ,我在表里面再插入些数据

insert into person values (seq_personID.nextVal,'洛晴川','女',null);

insert into person values (seq_personID.nextVal,'四阿哥','男',null);

insert into person values (seq_personID.nextVal,'八阿哥','男',null);

insert into person values (seq_personID.nextVal,'九阿哥','男',null);

insert into person values (seq_personID.nextVal,'十阿哥','男',null);

insert into person values (seq_personID.nextVal,'十三阿哥','男',null);

insert into person values (seq_personID.nextVal,'十四阿哥','男',null);

select * from person ;   --查询全部数据

select * from person where pname like '_阿哥' ;

select * from person where pname like '%阿哥' ;

--亲,通过这两个查询语句看出差别了么?

--附加常用查询效果:

--①查询中的字符串拼接工作,sqlserver 中是使用 + ,oracle中使用 ||

select '姓名:'||pname as 姓名,'性别:'||psex as 性别,'生日:'||pbirth as 生日 from person

--②查询非空字段  ,空字段

select * from person where pbirth is not null;

select * from person where pbirth is null;

--③对查询出的结果排序  默认为升序排列

select * from person order by personID ;

-- 看到效果没

---什么?   不写order by 也是这么排列的?  好吧,下面的语句让你明白!

select * from person order by personID desc ;  -- desc 表示降序排列 -- 有木有看到效果?!

---关于这个排序的应用很常见  :例如成绩管理,有一列是总分,你在总分那一列按降序排--列,成绩的排名不就出来了嘛?  自己去实践下!

--④关于查询前多少行数据

select * from person  where rownum <=10 ;

-- 查询前10行数据  这个配合上面的排序语句,是不是可以求出班上成绩前10名的

--人,要在视图中使用,后面学习

--如果在表中使用的话 ,是先查出前10行数据,再排序,达不到整体求前10 的效果

--⑤指定范围的一个查找  下面三条语句查询的结果完全一样  但要注意  第三种的用法

---方式1:

select * from person where personID >= 5 and personID <=15 ;

---方式2:

select * from person where personID between 5 and 15 ;

---方式3:

select * from person where personID in (5,6,7,8,9,10,11,12,13,14,15) ;

-----方式3一般不用于数值类型的,而是用于一些特殊的分类

select * from person where psex in('男','女') ;

-----可能你会说,我上面表的检查约束不就是  psex='男' or psex='女'  吗?  这样把所有数-----据都查出来有什么意思?

-----注意! 如果你是在给泰国某个公司做项目!!! 那么表的约束是不是要改改呢?

-----那么这条语句是不是还能查出所有数据呢?  这个...  你懂的...

-----还有,这里只是做个示范,不代表一定很实用,真正的使用要靠大家平时多积累经验啊!

-------其实上面讲的都是忽悠你的,in的真正用法是用在多表连接中,即当你不知道你的目-------标范围时,用in ,当然用exists也行(两种方式有区别,下次讲)

select * from person where personID in (select personID from loginzh) ;

-------这里涉及多表连接的查询,后面再细讲!

--⑥排除重复数据    这个很常用,前面忘写了,居然排到第六号才想起来...

---上面的表都不方便演示这个功能...

---新建一个表   员工工资表

create table tsalary(

personID number ,

msalary  number ,

mreward  number ,

constraint FK_personID1 foreign key (personID) references person (personID)

)

insert into tsalary values (1,10000,5000) ;

insert into tsalary values (2,10000,3000) ;

insert into tsalary values (3,8000,3000) ;

insert into tsalary values (4,6000,3000) ;

insert into tsalary values (5,5000,3000) ;

insert into tsalary values (6,10000,5000) ;

insert into tsalary values (8,6000,1000) ;

insert into tsalary values (9,8000,2000) ;

insert into tsalary values (10,5000,3000) ;

--终于可以了

select distinct msalary as 工资水平 from tsalary order by msalary;

--不加distinct

select  msalary as 工资 from tsalary order by msalary;

-- 注意  : 如果distinct后面有多个字段,那么就是排除掉这些字段都相同的行数据

select distinct msalary,mreward as 工资水平 from tsalary order by msalary;

--一共有9条数据,这里排除了两条

--⑦加常量列    数据库中的数据并没有改变,只是查询显示时多显示一个常量列

select t.*,'华为' as 所在公司 from person t  where rownum <=5 ;

/*好了,今天的内容就到这里,有什么问题可以在我博客里留言

或者加本人QQ248690920

欢迎大家一起相互学习,相互交流!*/

oracle数据库之数据的增删改以及简单的单表查询相关推荐

  1. 无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接口

    无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接口 回顾 通过之前一篇文章 无需编程,基于PostgreSQL零代码生成CRUD增删改查RESTful API接 ...

  2. SQL Server创建数据库和数据的增删改查

    SQL Server创建数据库和数据的增删改查 本文是针对数据的增删改查,数据的创建 首先我们使用命令创建sql server数据库 D盘新建一个文件夹DB use master go --创建数据库 ...

  3. oracle中多条数据的增查,Oracle数据库,数据的增、删、改、查

    oracle数据库中,数据的增.删.改.查,通过SQL语句实现 SQL:结构化查询语言: 特点:不区分大小写:字符串用单引号引起来:语句结束用分号表示结束: 行注释,在语句的最前面加"--& ...

  4. 10月25日学习内容整理:数据操作:增加更新删除,单表查询操作

    >>\G是按行显示,必须是大写 >>插入数据:补充另一种插入记录的方法 -->insert into 表名1(字段1,字段2,...) select 字段1,字段2,.. ...

  5. 实现对mysql增删改查_Java语言实现对MySql数据库中数据的增删改查操作的代码

    简单说操作的步骤: 1.连接数据库 2.将SQL语句发送到数据库 3.执行SQL语句 这里举个例子: 在一个数据库中有个students表,表中有学号(Id),姓名(Name),性别(Sex),地址( ...

  6. 零基础学SQL(六、数据的增删改查简单语句)

    目录 前置建表 一.数据的插入 1.插入数据语法 1.1.插入完整的行 1.2.插入行的一部分 1.3 .插入多行 1.4.插入某些查询的结果 二.数据的简单查询 1.查询数据语法 三.数据的修改 1 ...

  7. 简单的PHP访问MySQL数据库实现数据的增删改查,搜索,添加

    数据库源代码 CREATE TABLE students( id int not null AUTO_INCREMENT PRIMARY KEY, major char(10) NOT null, c ...

  8. Oracle数据库sql语句练习【emp和dept的连表查询由浅入深】

    Oracle SQL语句练习题 一.表的介绍 Oracle中有几个原始的表,我们可以以其中的三个表为例,来学习一下Oracle中SQL语句的使用.先看下这几个表的结构: 雇员表(emp) 假设该表中的 ...

  9. Navicat对数据库进行简单的单表查询语句

    目标需求: 我作为一个前端开发人员,简单查看数据库中满足我查询条件的数据有哪些 SQL语句: SELECT * FROM tb_configuration_info WHERE prj_id=1198 ...

最新文章

  1. 同向逆向、多车道线检测
  2. JEECG微云快速开发平台
  3. ip协议分析实验报告_入门工业通讯之EtherNet/IP协议分析
  4. 推荐:一个VS插件——CopySourceAsHtml
  5. Eclipse中弹出OLE Exception窗口
  6. input搜索mysql_实现input输入时智能搜索
  7. Swift语言中的#ifdef替换
  8. 关于css3的:target伪类选择器
  9. 生信技能树课程记录笔记(四)20220527
  10. npcap和winpcap的关系
  11. List转Map的几种方式
  12. ITPUB SQL大赛之BUG(二)
  13. 机器学习基石 5.1 Recap and Preview
  14. android手机用多久会卡机,你知道Android手机用久了会卡,而iPhone则不会是为什么吗?...
  15. 领导说“辛苦了”,千万别回“应该的”, 这是我听过最扎心的答案了!
  16. Git 开发分支合并到develop分支用法
  17. Android 内存优化- ANR 详解
  18. 解决H5播放视频黑屏只有声音没有图像的问题,Java调用ffmpeg转码成h264的mp4格式
  19. 基于Java毕业设计畜牧场信息管理系统源码+系统+mysql+lw文档+部署软件
  20. nagios mail告警通知

热门文章

  1. one 主格 复数 宾格_(完整版)英语主格宾格及其练习题
  2. 2. Spring Boot使用Apache Curator实现分布式锁(可重入排它锁)「第四章 ZooKeeper Curator应用场景实战」「架构之路ZooKeeper理论和实战」
  3. 2008中国IC十佳(七):深圳芯邦冲刺创业板
  4. 学习 UML 核心元素
  5. oracle实验报告2:: Oracle数据库物理存储结构管理(含实验小结)
  6. wordpress只在首页显示友情链接方法
  7. WgpSec(狼组安全) CTF PHPCode题目记录
  8. Yolov3:win10下训练自己的数据(GPU版)(详细步骤)
  9. python学习2——if语句、elif、if嵌套、while循环、while嵌套
  10. 同步练习(Java SE(十二))