第二章 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

相关文章

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

MySQL中优化CPU使用的详细指南

《MySQL中优化CPU使用的详细指南》优化MySQL的CPU使用可以显著提高数据库的性能和响应时间,本文为大家整理了一些优化CPU使用的方法,大家可以根据需要进行选择... 目录一、优化查询和索引1.1 优化查询语句1.2 创建和优化索引1.3 避免全表扫描二、调整mysql配置参数2.1 调整线程数2.

MySQL 临时表与复制表操作全流程案例

《MySQL临时表与复制表操作全流程案例》本文介绍MySQL临时表与复制表的区别与使用,涵盖生命周期、存储机制、操作限制、创建方法及常见问题,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小... 目录一、mysql 临时表(一)核心特性拓展(二)操作全流程案例1. 复杂查询中的临时表应用2. 临时

MySQL 数据库表与查询操作实战案例

《MySQL数据库表与查询操作实战案例》本文将通过实际案例,详细介绍MySQL中数据库表的设计、数据插入以及常用的查询操作,帮助初学者快速上手,感兴趣的朋友跟随小编一起看看吧... 目录mysql 数据库表操作与查询实战案例项目一:产品相关数据库设计与创建一、数据库及表结构设计二、数据库与表的创建项目二:员

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

MySQL实现多源复制的示例代码

《MySQL实现多源复制的示例代码》MySQL的多源复制允许一个从服务器从多个主服务器复制数据,这在需要将多个数据源汇聚到一个数据库实例时非常有用,下面就来详细的介绍一下,感兴趣的可以了解一下... 目录一、多源复制原理二、多源复制配置步骤2.1 主服务器配置Master1配置Master2配置2.2 从服

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

MySQL 临时表创建与使用详细说明

《MySQL临时表创建与使用详细说明》MySQL临时表是存储在内存或磁盘的临时数据表,会话结束时自动销毁,适合存储中间计算结果或临时数据集,其名称以#开头(如#TempTable),本文给大家介绍M... 目录mysql 临时表详细说明1.定义2.核心特性3.创建与使用4.典型应用场景5.生命周期管理6.注

MySQL磁盘空间不足问题解决

《MySQL磁盘空间不足问题解决》本文介绍查看空间使用情况的方式,以及各种空间问题的原因和解决方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录查看空间使用情况Binlog日志文件占用过多表上的索引太多导致空间不足大字段导致空间不足表空间碎片太多导致空间不足临时表空间

MySQL进行分片合并的实现步骤

《MySQL进行分片合并的实现步骤》分片合并是指在分布式数据库系统中,将不同分片上的查询结果进行整合,以获得完整的查询结果,下面就来具体介绍一下,感兴趣的可以了解一下... 目录环境准备项目依赖数据源配置分片上下文分片查询和合并代码实现1. 查询单条记录2. 跨分片查询和合并测试结论分片合并(Shardin