SQL语言基础

SQL(Struct Query Language)是结构化查询语言的简称,是一种在关系型数据库中定义和操纵数据的标准语言。
不要使用面向对象的思想学习SQL,因为它不是面向对象的语言
目标

  • SQL语言简介(了解)
  • 从数据库数据检索数据(重点)
  • 子查询(重点)
  • Oracle常用函数(掌握)

1 SQL语言简介
1.1 SQL的特点

SQL语句通常用于完成一些数据库的操作任务,例如增加、修改、删除、查询数据以及对数据库对象(表、视图、索引、过程、函数、触发器等等)的一些列操作。巧妙运用SQL语句能够简化编程起到事半功倍效果。
程序员或者数据库管理员使用SQL语句能够完成下面的操作:
创建用户、创建表空间、创建表

  • create user
  • create tablespace
  • create table

删除用户、删除表空间、删除表

  • drop user
  • drop tablespace
  • drop table

改变数据库系统环境设置

  • set pagesize
  • set linesize
  • set newpage

用户授权

  • grant

为数据库的表建立索引

  • create index

修改数据库表结构

  • 通过alter table 关键字新建、删除、修改表个字段

对数据库中的数据进行添加、修改、删除、查询

  • 通过insert into、update、delete from、select....from语句对数据库表中的数据进行增删改查

SQL语言主要的特点如下:
1. 集合性
   SQL语句执行返回一个结果集。例如:使用select查询一个结果集、使用delete from语句删除表中的多条数
据、使用update语句批量修改多条数据
2. 统一性
SQL语句为许多任务提供了统一的命令
查询数据使用select from关键字
在表中插入、修改、删除数据使用insert into、update、delete from关键字
创建、删除、修改数据对象

  • 创建数据对象使用create关键字
  • 修改数据对象使用alter关键字
  • 删除数据对象使用drop关键字

控制对数据和数据对象的读写

  • commit关键字提交数据
  • rollback关键字回滚数据

保证数据的完整性和一致性,每一种约束都有自己统一的关键字

  • 主键约束使用primary key关键字
  • 外键约束使用foreign key关键字
  • 唯一约束使用unique关键字
  • 检查约束使用check关键字
  • 非空约束使用not null关键字
  • 默认约束使用default关键字

3. 非过程化
    SQL语句是一个非过程化语言,因为它没有分支、循环结构
4. 简单
SQL只有几个命令动词就可以实现对数据库以及数据的查询和管理。下面的表讲解了SQL语言的分类,以及对应的关键字(命令动词)
 

SQL的分类关键字(命令动词)职责
数据定义语
言(DDL) 
create、drop、alter创建、删除、修改数据对象
数据查询语
言(DQL)
select、into、from、where、group
by、having、order by
从数据库表中检索(查询)数据。特征:读
数据操纵语
言(DML)
delete、update、insert改变数据库表中的数据。特征:写
数据控制语
言(DCL) 
grant、revoke用于执行权限授予和权限回收操作
事务控制语
言(TCL):
commit、rollback用于执行权限授予和权限回收操作

1.2 SQL的编写规则

  • SQL关键字不区分大小写、既可以使用大写格式、又可以使用小写格式、或者大小写混用。
  • 对象名(表名称)、列名称不区分大小写
  • 字符值区分大小写

如果SQL语句很长,可以将其分行显示,提高阅读性

select empno 员工编号, ename 员工姓名, job 职位
from emp
where empno = 7369


小结:本单元主要对SQL语言做了一个宏观上的总体介绍,后面还会针对每个关键字进行详细讲解
2 用户模式
    在Oracle数据库中,为了方便管理创建的数据库对象(表、视图、索引等等),引入了模式的概念,某个用户创建的数据库对象都属于该用户模式。例如在 scott 模式下创建了 student 表,那该表就属于scott模式。
Student表此时就是一个数据对象,它在scott用户下面创建的,只能属于scott用户
模式也叫作用户 模式 等价于 用户

      Oracle数据库里面的数据库对象(表、视图、索引等等)都是跟着用户(模式)走的。创建用户(模式)的目的:为了更好的管理数据对象(表、视图、索引等等)


2.1 模式与数据库对象关系
模式是数据库对象的集合,一个模式对应多个数据库对象。例如:sys模式、scott模式等等。在一个模式(sys)内部不可以直接访问其他模式(scott)的数据库对象,即使在具有访问权限的情况下,也需要指定模式名称才可以访问其
它模式的数据库对象。
例如:使用sys模式登录,在sys模式(用户)下访问scott模式(用户)的emp表
select * from scott.emp;
scott.emp表示scott模式(用户)下的
emp表
小结:

  1.  模式(用户)用来管理数据库对象的,一个模式(用户)下面可以有多个数据对象
  2. 某个数据对象(emp表)只能属于一个模式(用户)
  3.  必须指定模式名称才可以访问其它模式的数据库对象 scott.emp

2.2 scott模式(用户)
scott模式(用户)是Oracle数据库经典的模式(用户),该模式演示了一个很简单的人力资源管理的数据结构。我们通常使用它进行学习。在Oracle19c中并没有scott用户需要我们手动创建并激活

dept部门表

属性英文名属性中文名
deptno部门编号
dname 部门名称
loc部门所在位置

emp雇员表

属性英文名属性中文名
empno雇员编号
ename雇员姓名
jop 雇员职位
mgr雇员对应领导编号
hiredate雇员的雇佣日期
sal雇员的基本工资
comm奖金或补助
deptno所在部门

salgrade工资等级

属性英文名属性中文名
ename雇员名字
jop雇员职位
sal雇员工资
comm雇员奖金

小结:
1. 模式(用户)拥有数据库对象(表、视图、索引等等),数据对象被模式(用户)拥有。

一个模式(用户)下面有多个数据对象
一个数据库对象只属于一个模式(用户)
2. 在工作中我们通常说数据库对象(表、视图、索引等等)是跟着用户走的。

3 数据检索(查询)

用户对表或视图用的最多的操作就是检索(查询)数据。检索数据可以通过select语句来实现,该语句由多个子句组成,通过这些子句对数据库表进行各种操作,最终得到用户想要的查询结果。select基本语法格式如下:

在数据检索(查询)语句中SELECT和FROM子句必须有,其它关键字可选
[] 表示可选
|表示或者

3.1 简单的查询

只包含select和from子句的查询就是简单查询

  • 连接scott用户,查询员工表所有的列

小结:
1. 上面的查询语句表示:从emp表中检索数据,然后选择表中所有的列
2. 先执行from关键字确定要查询哪张表,然后执行select选择表中的列

  • 查询指定的列

指定查询表中某些列名称,这些列名称跟在select关键字后面,每个列名称之间使用逗号分隔。法如下

例如:查询员工表的:员工编号、员工姓名、基本工资、职位

  • 为列指定别名

列别名就是指列的小名,使用列别名可以提高查询语句的可读性

  • select语句中的算术运算符 + - * /

算数运算符大多数情况下用在select后面的列中,对列值进行算数运算

通常只对数值类型的列进行算数运算

  • select语句中的比较运算符
  • 比较运算符通常对where或者having关键字后面的条件进行判断,如果条件成立就提取数据,否则就过滤

数据。Oracle的比较运算符:=  , >,  >=,< ,<= , != , <>

注意:Oracle比较运算符有两个不等于 != <>

小结:

  • from关键字确定要查询那张表
  • where关键字用来做条件判断(行过滤),如果条件成立就提取数据,否则就过滤数据。
  • select用来选择表中指定的列进行查询
  • 关键字执行顺序from-->where-->selec

注意:WHERE执行之前通过from就已经产生了一个查询结果集,where条件判断是在结果集里面进行的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/460426.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VBox增强功能、VBoxLinuxAdditions安装、共享文件夹问题解决

VBox增强功能、VBoxLinuxAdditions安装、共享文件夹问题解决 文章目录 VBox增强功能、VBoxLinuxAdditions安装、共享文件夹问题解决1.VBoxLinuxAdditions.run&#xff1a;找不到命令解决方案 2.可以看到共享文件夹。但是不能看到里面的内容。解决方案 参考 共享文件夹设置&…

一、在cubemx下RTC配置调试实例测试

一、rtc的时钟有lse提供。 二、选择rtc唤醒与闹钟功能 内部参数介绍 闹钟配置 在配置时间时&#xff0c;注意将时间信息存储起来&#xff0c;防止复位后时间重新配置。 if(HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR0)! 0x55AA)//判断标志位是否配置过&#xff0c;没有则进…

MySQL 复合索引测试

对MySQL复合索引结合具体示例&#xff0c;各条件下索引使用情况的运行结果及分析。 目录 复合索引示例 创建表 新增数据 查询数据 选项A SQL查询 explain分析 选项B SQL查询 explain分析 选项C SQL查询 explain分析 选项D SQL查询 explain分析 选项E SQL查询…

JavaFx -- chapter05(多用户服务器)

chapter05(线程池-多用户服务器) 教学与实践目的 学会服务器支持多用户并发访问的程序设计技术。 多用户服务器是指服务器能同时支持多个用户并发访问服务器所提供的服务资源&#xff0c;如聊天服务、文件传输等。 第二讲的TCPServer是单用户版本&#xff0c;每次只能和一个…

初体验鸿蒙 HarmonyOS NEXT开发

上个星期三就下载了鸿蒙 HarmonyOS NEXT&#xff0c;安装好了后测试了一下&#xff0c;感觉界面和功能设计与IntelliJ IDEA很像&#xff0c;对初学者非常友好&#xff0c;所见即所得。不知道什么原因&#xff0c;写了代码后测试起来很慢&#xff0c;简单测试后就没有再动。 今天…

《DIY项目之“一只眼狗链”》:视频方案

项目背景 《DIY项目之“一只眼狗链”》合集主要记录完成一个DIY项目的所有过程。该合集预计更新频率为2~3周一篇&#xff08;同样属于一边做一边记录发布&#xff0c;时间上主要涉及PCB绘板、零部件采购、样品制作、编程等&#xff0c;存在一定的不可控性&#xff09;。 当前项…

Date工具类详细汇总-Date日期相关方法

# 1024程序员节 | 征文 # 目录 简介 Date工具类单元测试 Date工具类 简介 本文章是个人总结实际工作中常用到的Date工具类&#xff0c;主要包含Java-jdk8以下版本的Date相关使用方法&#xff0c;可以方便的在工作中灵活的应用&#xff0c;在个人工作期间频繁使用这些时间的格…

WPF拖拽交互全攻略及实现自定义拖拽控件及数据交换技巧解析

目录 1. 基本概念2 . 实现拖拽功能概述需要要实现基本的拖放&#xff0c;完成以下任务&#xff1a;其他操作 示例3.1 设置拖拽源&#xff0c;拖拽开始3.2 设置拖拽效果DragDropEffects 3.3 设置放置目标&#xff0c;处理拖拽数据拖拽输入DragEnter事件DragOver事件拖拽离开Drag…

ubuntu 22.04网线连接无ip、网络设置无有线网界面(netplan修复)

目前遇到过树莓派和其他设备安装 ubuntu22.04&#xff0c; 使用有线网络一段时间&#xff08;可能有其他软件安装导致&#xff09;造成有线网络未启动无ip分配的问题。 1、动态分配 通过命令行启动dhcpclient实现 网络eth0存在异常&#xff0c;网口灯电源和信号灯均点亮&am…

开关灯问题(c语言)

样例&#xff1a;10 10 &#xff0c;输出&#xff1a;1&#xff0c;4&#xff0c;9 5 5 &#xff0c;输出&#xff1a;1&#xff0c;4 代码如下 #include<stdio.h> //引入bool值的概念 #include<stdbool.h> int main() {int n 0;//n为灯的数量int m 0;…

【Android14 ShellTransitions】(八)播放动画

书接上回&#xff0c;话说当WMCore部分走到了Transition.onTransactionReady&#xff0c;计算完参与动画的目标&#xff0c;构建出TransitionInfo后&#xff0c;接下来就把这个包含了动画参与者的TransitionInfo发给了WMShell&#xff0c;然后就该播放动画了&#xff0c;这部分…

git快速合并代码dev->master

需求&#xff1a; 日常开发都是在dev分支进行开发&#xff0c;但是dev代码开发测试完成后&#xff0c;需要将dev代码合到master主分支上 开始合并代码&#xff1a; 一、场景 一个代码仓库&#xff0c;包含两个分支&#xff0c;一个是master&#xff0c;另一个是dev&#xff1b…

gitblit 学习-hook功能

hook功能 hook是什么 git hooks是git提供的&#xff0c;在发生特定事件时&#xff0c;允许用户添加自定义代码&#xff08;或操作&#xff09;的方式。 就像Vue中组件的生命周期钩子&#xff0c;比如&#xff0c;你想在vue组件创建后输出一行log, 你可能会这么写 有什么用&a…

Android Input的流程和原理

Android Input事件机制 Android系统是由事件驱动的&#xff0c;而Input是最常见的事件之一&#xff0c;用户的点击、滑动、长按等操作&#xff0c;都属于Input事件驱动&#xff0c;其中的核心就是InputReader和InputDispatcher。InputReader和InputDispatcher是跑在system_serv…

Jmeter基础篇(19)JSR223预处理器

前言 JSR223预处理器是Apache JMeter中的一个组件&#xff0c;它允许用户使用任何支持Java Scripting API (JSR 223) 的脚本语言来执行预处理任务。这个功能非常强大&#xff0c;因为它让测试人员能够利用如Groovy、JavaScript&#xff08;Nashorn引擎&#xff09;、BeanShell…

轻松实现金蝶与旺店通数据无缝对接的完整解决方案

【金蝶】采购入库单对接【旺店通】委外入库单_合并 在企业信息化系统中&#xff0c;数据的高效流转和准确对接是确保业务顺畅运行的关键。本文将分享一个实际案例&#xff0c;展示如何通过轻易云数据集成平台实现金蝶云星空与旺店通企业奇门之间的数据无缝对接。具体方案为&am…

基于SpringBoot的汽车票网上预订系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

前端好用的网站分享——CSS(持续更新中)

1.CSS Scan 点击进入CSS Scan CSS盒子阴影大全 2.渐变背景 点击进入color.oulu 3.CSS简化压缩 点击进入toptal 4.CSS可视化 点击进入CSS可视化 这个强推&#xff0c;话不多说&#xff0c;看图! 5.Marko 点击进入Marko 有很多按钮样式 6.getwaves 点击进入getwaves 生…

【K8S系列】Kubernetes 中 Service IP 分配 问题及解决方案【已解决】

在 Kubernetes 中&#xff0c;LoadBalancer 类型的 Service 允许用户轻松地将应用暴露给外部流量。它自动创建一个云负载均衡器并分配一个外部 IP 地址。然而&#xff0c;在某些情况下&#xff0c;LoadBalancer 类型的 Service 可能未能成功分配 IP 地址&#xff0c;导致外部无…

Tomcat servlet response关于中文乱码的经验

前言 最近修改老项目项目&#xff0c;使用zuul网关返回的中文内容乱码了&#xff0c;如果使用GBK或者GB2312编码确正常显示&#xff0c;稍微实验了一下&#xff0c;发现里面很多细节&#xff0c;毕竟Springboot对我们做了很多事情&#xff0c;而且当我们使用不同的模式会出现很…