当前位置: 首页 > article >正文

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.kler.cn/a/372138.html

相关文章:

  • 数据结构---顺序表
  • 从0开始学python-day18-Python包和模块2
  • 低代码开发:提升效率的利器还是质量下降的风险?
  • SD教程 重绘 ControlNet-Inpain
  • Unity3D学习FPS游戏(3)玩家第一人称视角转动和移动
  • 线性代数(1)——线性方程组的几何意义
  • 【Linux】centos7内核编译6.11.3版本及其所出现的问题解决方案(升级make、升级gcc)
  • 包和模块(上) python复习笔记
  • 汇流箱组件:光伏汇流采集装置 参数介绍
  • RTT工具学习
  • AI技术的应用前景如何?它会不会改变我们的生活和工作方式?
  • 阿里云VPC机器如何访问公网
  • Vue.observable vs Vuex:何时使用轻量级状态管理?
  • 【python】flash-attn安装
  • 【Clickhouse】客户端连接工具配置
  • 面试 Java 基础八股文十问十答第二十九期
  • Javaee:阻塞队列和生产者消费者模型
  • Brainpy的jit编译环境基础
  • 【LeetCode】跳跃游戏ⅠⅡ 解题报告
  • 如何在Linux系统中使用Netcat进行网络调试
  • Transformer中的Encoder
  • 基于STM32G0的USB PD协议学习(3)
  • 基于微信小程序的图书馆座位预约系统+LW示例参考
  • 数据结构算法学习方法经验总结
  • 经典面试题——抽象类和接口的区别
  • 【Linux】Kafka部署