第二章 SQL数据库操作和查询

2024-08-29 10:18

本文主要是介绍第二章 SQL数据库操作和查询,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、Oracle数据类型



1、char(10):当数据小于10个字节时自动添加空格补齐,

2、varchar(10):数据小于10个字节时oralce自动判断识别数据的字节大小

3、number(4,2) :数据必须总长度是4位,小数点后为2位的数字(不包括小数点)

注意:小数点强制先占两位,再看整数位,小数点后超出范围四舍五入,整数不可以

4、date():储存日期和时间 如果添加日期没有时间自动补齐12:00:00



create table student
(
 sid int primary key,
 sname char(10),
 birth varchar(30),
 class int,
);
alter table student modify birth date;


insert into student (sid,birth)values ('13',to_date('2014-7-16','yyyy-mm-dd'));
insert into student(sid,sname)values(9,1)
select * from student


select sysdate,systimestamp from dual;


--default在Oracle是一个值


create table infos
(
 stuid varchar2(7)not null,  --学号
 stuname varchar2(10)not null, --姓名
 gender varchar2(2) not null, -- 性别
 age number(2) not null, --年龄 number为整数不能有小数点
 seat number(2) not null, --座号
 enrolldate date, --入学时间
 stuaddeess varchar2(50) default'地址不详', --住址
 classno varchar2(4) not null --班号   =学期序号+班级序号
)
select * from infos
-- 添加主键约束
alter table infos add constraint pk_infos primary key(stuid);
-- 添加列约束性别约束为男女
alter table infos add constraint ck_infos_gender check(gender in('男','女'));
-- 约束座号为0到50
alter table infos add constraint ck_infos_seat check(seat>=0 and seat<=50);
-- 约束年龄0到100
alter table infos add constraint ck_infos_age check(age between 0 and 100 );
-- 约束 班号
alter table infos add constraint ck_infodfss_classno check((classno between 1 and 1999) or (classno between 1 and 2999));
--注意:如果varchar2()类型中写数字 最大值不超过10;
--注意:如果varchar2() number()类型中写数字并取between值时只能默认最小的那个无视最大值但是插入时则按定义的类型和约束插入


create table scores
(
 id number ,
 term varchar2(2), --学期S1或S2
 stuid varchar2(7)not null, -- 学号
 examno varchar2(7)not null, -- 考号 E+班号+序号
 writtenscore number(4,1) not null, -- 笔试成绩
 labscore number(4,1) not null --机试成绩
)


alter table scores
add constraint ck_score_term check(term='s1' or term='s2')
/
alter table scores
add constraint fk_scores_ifos_stuid foreign key(stuid) references infos(stuid)
/
-- 缓存区就是储存在内存条里还未写入数据库或者说硬盘的数据 commit;结尾可以将他写入进去


--向student表中插入一个常量结果集
insert into student 
select '100106','卢俊义',to_date('2009-8-9 8:00:10','yyyy-mm-dd hh24:mi:ss'),2 from dual;


--向student表中插入一个select集






insert into student values
(15,'sd',to_date('2009-8-9 8:00:10','yyyy-mm-dd hh24:mi:ss'),2);


-- 复制表
create table studentab as select * from student;




-- truncate和delete不同之处是 truncate删除了数据永远无法找回 删除速度比delete快


-- 查询员工基本工资高于两千的人
select ename,sal,(emp.sal*12+2000) from emp where sal>2000
select *,(emp.sal*12+2000) from emp where sal>2000
--注意:这里加*无效 *不能和常量在一起出现


-- 字符串联接
select (ename||'is a'||job)from emp


-- 查看消除重复行
select distinct deptno from emp;


-- 查询空值
select * from emp where comm is null;
--非空 not null


-- 查出j开头s结尾的行
select * from emp where Ename like 'J%S';
--注意:数据区分大小写 列名不区分


-- 补集(返回两个集合之间所有不相同的数据)
select deptno from dept
minus
select deptno from emp;


-- 并集(返回两个集合所有的数据并且不能重复)
insert into dept
select 51,'公安部','台湾'from dual
union
select 61,'研发部','西安'from dual;


-- 交集(返回两个集合相同的数据 并且不重复)


--内联接
select e.ename,e.job,e.sal,d.dname from emp e  join dept d on e.deptno=d.deptno where e.sal>2000;
--注意:内联 on后面可以加 where 只能出现一次 ON是联接表 where是从已近联接的表中挑选自己想要的数据




-- +左right +右left
select e.ename,e.job,e.sal,d.dname from emp e  , dept d where e.deptno(+)=d.deptno;


-- 外连接
select e.ename,e.job,e.sal,d.dname from emp e right join dept d on e.deptno=d.deptno;


这篇关于第二章 SQL数据库操作和查询的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1117573

相关文章

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora

SpringBoot操作spark处理hdfs文件的操作方法

《SpringBoot操作spark处理hdfs文件的操作方法》本文介绍了如何使用SpringBoot操作Spark处理HDFS文件,包括导入依赖、配置Spark信息、编写Controller和Ser... 目录SpringBoot操作spark处理hdfs文件1、导入依赖2、配置spark信息3、cont

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

C#实现文件读写到SQLite数据库

《C#实现文件读写到SQLite数据库》这篇文章主要为大家详细介绍了使用C#将文件读写到SQLite数据库的几种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录1. 使用 BLOB 存储文件2. 存储文件路径3. 分块存储文件《文件读写到SQLite数据库China编程的方法》博客中,介绍了文

使用JavaScript操作本地存储

《使用JavaScript操作本地存储》这篇文章主要为大家详细介绍了JavaScript中操作本地存储的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录本地存储:localStorage 和 sessionStorage基本使用方法1. localStorage

使用JavaScript将PDF页面中的标注扁平化的操作指南

《使用JavaScript将PDF页面中的标注扁平化的操作指南》扁平化(flatten)操作可以将标注作为矢量图形包含在PDF页面的内容中,使其不可编辑,DynamsoftDocumentViewer... 目录使用Dynamsoft Document Viewer打开一个PDF文件并启用标注添加功能扁平化

JavaScript DOM操作与事件处理方法

《JavaScriptDOM操作与事件处理方法》本文通过一系列代码片段,详细介绍了如何使用JavaScript进行DOM操作、事件处理、属性操作、内容操作、尺寸和位置获取,以及实现简单的动画效果,涵... 目录前言1. 类名操作代码片段代码解析2. 属性操作代码片段代码解析3. 内容操作代码片段代码解析4.

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO