第二章 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集成MyBatis实现SQL拦截器的实战指南

《SpringBoot集成MyBatis实现SQL拦截器的实战指南》这篇文章主要为大家详细介绍了SpringBoot集成MyBatis实现SQL拦截器的相关知识,文中的示例代码讲解详细,有需要的小伙伴... 目录一、为什么需要SQL拦截器?二、MyBATis拦截器基础2.1 核心接口:Interceptor

Python使用openpyxl读取Excel的操作详解

《Python使用openpyxl读取Excel的操作详解》本文介绍了使用Python的openpyxl库进行Excel文件的创建、读写、数据操作、工作簿与工作表管理,包括创建工作簿、加载工作簿、操作... 目录1 概述1.1 图示1.2 安装第三方库2 工作簿 workbook2.1 创建:Workboo

MySQL 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

MySQL字符串常用函数详解

《MySQL字符串常用函数详解》本文给大家介绍MySQL字符串常用函数,本文结合实例代码给大家介绍的非常详细,对大家学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql字符串常用函数一、获取二、大小写转换三、拼接四、截取五、比较、反转、替换六、去空白、填充MySQL字符串常用函数一、

MySQL中比较运算符的具体使用

《MySQL中比较运算符的具体使用》本文介绍了SQL中常用的符号类型和非符号类型运算符,符号类型运算符包括等于(=)、安全等于(=)、不等于(/!=)、大小比较(,=,,=)等,感兴趣的可以了解一下... 目录符号类型运算符1. 等于运算符=2. 安全等于运算符<=>3. 不等于运算符<>或!=4. 小于运

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

MySQL逻辑删除与唯一索引冲突解决方案

《MySQL逻辑删除与唯一索引冲突解决方案》本文探讨MySQL逻辑删除与唯一索引冲突问题,提出四种解决方案:复合索引+时间戳、修改唯一字段、历史表、业务层校验,推荐方案1和方案3,适用于不同场景,感兴... 目录问题背景问题复现解决方案解决方案1.复合唯一索引 + 时间戳删除字段解决方案2:删除后修改唯一字

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

MySQL 主从复制部署及验证(示例详解)

《MySQL主从复制部署及验证(示例详解)》本文介绍MySQL主从复制部署步骤及学校管理数据库创建脚本,包含表结构设计、示例数据插入和查询语句,用于验证主从同步功能,感兴趣的朋友一起看看吧... 目录mysql 主从复制部署指南部署步骤1.环境准备2. 主服务器配置3. 创建复制用户4. 获取主服务器状态5