目录

一、简介说明

四大传统主流数据库

标准创建流程

查询所有表空间(系统和自己的管理员操作)

二、创建表空间(管理员操作)

怎么删除表空间(管理员操作)

三、创建用户(管理员才可以创建用户)

用户创建成功了,但是缺失某个权限,导致登录失败

四、赋予登录权限

五、赋予增删改查的权限

回收权限

六、赋予收回管理员权限

其他流程操作语法

重置普通密码(管理员)

用户被锁定,解锁

删除用户(管理员)

数据定义语言DDL(DDL:Data Definition Language)

Create创建

创建表空间

创建用户

创建表

复制一个表

复制一个表(不复制表的信息,只保留表的类型)

复制一个表(剔除重复数据)

alter修改

新增约束

删除约束

用户被锁定

drop删除

删除表

数据操作语言(DML:Data Manipulation Language)

数据查询语言(DQL:Data Query Language)

Insert插入

插入数据

select选择

select语法基本结构

select语句的执行顺序

查询表中所有信息

查询表结构

查询指定的信息

选择指定的行列显示

筛选重复的行

按照某个规则排序

别名显示

查询不包括某条件的字段

查询某个时间等于某

delete删除

删除表中所有信息

删除表中的某个信息

update更新

修改表中的某个信息

七、事务控制语言(TCL:Transaction Control Language)

Commit提交

savepoint保存

pollback回拨

八、数据控制语言DCL(DCL:Data Control Language)

Grant授予

赋予登录权限

赋予增删改权限

赋予管理员权限

revoke撤销

回收管理员权限

回收登录权限

回收增删改权限

九、聚合函数

AVG 求平均值

MIN求最小值

MAX求最大值

SUN求和

count累加

十、排序

group by子句

order by子句

用列号排序

同列别名排序

多列排序

having子句

where子句

选择限制的行

十一、Not in和!= 的区别

语句执行顺序

SQL函数

单行函数

转换函数

select语句中的算术表达式

连字运算符

文字字符串

distinct去除重复行

字符串和日期

十二、比较条件

条件运算符

其他比较条件

使用between条件

使用in条件

使用like条件

使用null条件

十三、逻辑条件关系

and

or

not

十四、运算优先规则

SQL语句语法要求

SQL空值说明

空值

算数表达式中的空值


一、简介说明

四大传统主流数据库:

关系型数据库:Oracle      MySQL     SqlServer DB2

非关系型数据库: Redis MongoDB

主流数据库是关系型数据库:表与表之间是存在关联关系的

当我们说安装数据库的时候,指的是安装数据库服务

创建数据库的时候,指的是创建数据仓库

可以给数据仓库分成若干块,每一块就叫做一个表空间;

每个表空间都可以对应一个用户

初步使用数据库的时候,先创建一个用户,再给此用户指定一个表空间

如果不给用户提供创建表空间,就默认使用Oracle的默认表空间;为了安全期间,应该为每个用户都创建一个表空间

.DBF就是表空间文件的意思,表空间可以提高安全性。在表空间的用户只能访问存入当前表空间的内容

标准创建流程:

先创建表空间,创建用户让用户名与此表空间关联;

再建表,这样做的话,新建的表就会创建在刚才的表空间中;

最后再赋予登录,增删改权限即可

创建表空间---创建用户(关联表空间)---赋予登录权限---赋予增删改权限

查询所有表空间(系统和自己的管理员操作)

二、创建表空间(管理员操作)

create tablespace 表空间名
datafile '存储的路径'
size 10M
autoextend on
next 10M

datafile  用于设置物理文件名称

size  用于设置表空间的初始大小

autoextend on  用于设置自动增长,如果存储量超过初始大小,则自动扩容

next  用于设置扩容的空间大小

怎么删除表空间(管理员操作)

  注意必须先用语句执行,再手动删除磁盘空间,否则Oracle会崩溃

drop tablespace 表空间名称

三、创建用户(管理员才可以创建用户)

--创建用户
create user 用户名
identified by 密码
default tablespace 表空间名称--修改用户的表空间
alter user 用户名default tablespace 表空间名称

identified by 用于设置用户的密码

default tablespace 用于指定默认表空间名称

用户创建成功了,但是缺失某个权限,导致登录失败

login denied 登录拒绝;就是缺失登录权限

四、赋予登录权限

grant connect to 用户名;

当建表时,显示没有操作权限

五、赋予增删改查的权限

grant resource to 用户名

回收权限

注意:同级别不能“互相伤害”,就是删除回收平级用户

--回收登录权限
revoke connect from 用户名;--回收增删改权限
revoke resource from 用户名;

六、赋予收回管理员权限

--给管理员权限
grant dba to 用户名;--收回管理员权限
revoke dba from 用户名;

其他流程操作语法

Oracle有几个默认用户

        Sys,system,scott

        Sys,system是管理员;Scott是普通用户

重置普通密码(管理员)

sys as sysdba        //作为系统管理员身份登录
alter user 用户名 identified by 密码
:

用户被锁定,解锁

--管理员执行:
alter user 用户名 account unlock;

删除用户(管理员)

删除用户时,如果有表则删除失败,因为安全起见;先删除所有表,再删除用户

--删除用户
drop user 用户名 cascade;

数据定义语言DDL(DDL:Data Definition Language)

定义数据库对象语言,其语句包括动词create,drop

Create创建

创建表空间

--创建表空间
create tablespace 表空间名
datafile '存储的路径'
size 10M
autoextend on
next 10M

创建用户

--创建用户
create user 用户名
identified by 密码
default table 表空间名称

创建表

default 向表中添加某个默认值--创建表
create table 表名称(
字段名称 类型(长度),
字段名称 类型(长度)default ''
);

复制一个表

--利用现有的表创建新表,复制一个表
create table 新表名称 as select * from 旧表名称;

复制一个表(不复制表的信息,只保留表的类型)

--只复制表的类型
--Where1=2的意思就是,不相等,复制表的时候就不复制表的信息,只复制表的类型
Create table 新表名 as select * from 旧表名 where 1=2;

复制一个表(剔除重复数据)

--利用现有的表创建新表,复制的表中数据不重复
create table 新表名称 as select distinct * from 旧表名称;

alter修改

新增约束

主键:创建表的时候,每个表都要有主键,主键起到一个唯一识别的作用

约束的作用:约束用于规定表中的数据规则,如果存在违反约束的数据行为,行为会被约束终止

  • 主键约束:唯一性,非空性
  • 唯一约束:唯一性,可以为空但只能有一个
  • 检查约束:对该列数据的范围、格式的限制(年龄,性别)
  • 非空约束:该列不允许包含空值
    PK主键(Primary Key);UQ唯一(Unique )约束CK检查(Check )约束;FK外键(Foreign Key)约束--约束语法(可以直接在追加表后面)
alter table xx
add constraint 约束名 约束类型 具体约束说明例如:
alter table product add constraint PK_PNO primary key (pno);--添加年龄约束15~40
alter table stuInfo
add constraint checkAge check(stuAge>15 and stuAge<40);

删除约束

--删除约束
alter table 表名
drop constraint 约束名

用户被锁定

alter user 用户名 account unlock

drop删除

删除表

--删除表
drop table 表名

数据操作语言(DML:Data Manipulation Language)

包括insert插入,update更新,delete删除

数据查询语言(DQL:Data Query Language)

也叫数据检索语句,用于从表中获取数据,确定数据怎样在应用程序给出。

关键字select是所有sql用的最多的动词;其他DQL常用关键字有where,order by,group by

having。这些关键字常与其他类型的SQL语句一起使用

Insert插入

插入数据

--向表中插入数据
insert into 表名 values('xxx',to_date('2020-02-02','yyyy-mm-dd hh24:mi:ss'));--如果插入的是部分数据
insert into 表名(字段名称,字段名称……) values('xxx','xxx');

select选择

select语句的作用是从数据库中返回信息;主要有以下作用

  • 列选择(投影操作)

能够使用select语句的列选择功能选择表中的列,这些列是我们想要用查询返回的;当我们查询时,可以选择的查询表中指定的列

  • 行选择(选择操作)

能够使用select语句的行选择功能选择表中的行,这些行是我们想要用查询返回的,能够使用不同的标准限制所看见的行

  • 连接(多表操作)

能够使用select语句的连接功能来集合数据,这些数据虽然被存储在不同的表中,但是我们可以通过连接查询到该数据

基本select语句
在最简单的形式中,select语句必须包含以下内容:

一个select子句,指定被显示的列

一个from子句,指定表,该表包含select子句中的字段列表

select语法解释:

select  是一个或多个字段的列表

*   选择所有的列

distinct   关键字表示禁止重复

column|expression   选择指定的字段或表达式

alias   给所选择的列不同的标题

from table   指定包含列的表

select语法基本结构

select 确定哪些列

from 确定哪张表

select *| {[distinct],column|expression [alias],....} from table;

select语句的执行顺序

from子句(哪张表)

where子句 (什么要求)

select子句 (怎么投影)

order by子句(怎么排序)

查询表中所有信息

--查询表中所有信息
select * from 表名

查询表结构

--查看表结构
select * from user_tab_columns where table_name='departments'--命令行窗口下查看表结构
--desc 表名

查询指定的信息

--查询指定的信息
select * from 表名 where 主键='xx';--查询名称King或者pat的员工的工作编号
select job_id from employees where last_name='King' or first_name='Pat'

选择指定的行列显示

--指定数据进行 行和列 显示
select xx,xx from 表名

筛选重复的行

--显示筛选重复的行
select distinct xx,xx from 表名

按照某个规则排序

--按照某个规则排序(年龄降序,学号升序)
select * from 表名 order by xxage DESC,xxno ASC;--例如
--ascending 升序
select * from sc order by (要升序的字段名) asc;--descending 降序
select * from sc order by 字段名 desc;--默认显示是asc,可以为空

别名显示

--列表别名,就是自定义个名称
--'S'|| 学生编号前面有个S
select 'S'||stuNO 学号,stuName"姓 名" FROM 表名

例如,别名显示后降序排序

查询不包括某条件的字段

--not in 范围         !=不等于具体的值
-- !=的效率比not in高,not in 会造成全盘扫描造成索引异常--部门编号不等于10  !=
select * from emp where deptno!=10;
--not in
select * from emp where  deptno not in('10','20');

查询某个时间等于某

--查询emp表2000-1-13入职的员工
select * from employees where hire_date=to_date('2000/1/13','YYYY-MM-DD')

delete删除

删除表中所有信息

--删除表中所有字段信息
delete from 表名

删除表中的某个信息

-- 删除表中的某个信息
delete from 表名 where 主键='xx'--删除某个信息,多个信息可以and连接
delete from 表名 where xx=xx and xx=xx

update更新

修改表中的某个信息

--修改表中的某个信息
--一般都根据主键来修改数据
update 表名 set xx=xx,xx=xx where 主键=''例如:
update 表名 set sname='james' where sid=2023;

七、事务控制语言(TCL:Transaction Control Language)

它的语句能确保被DML语句影响的表的所有行得以及时更新

Commit提交

事务提交

savepoint保存

设置回滚点

pollback回拨

事务回滚

八、数据控制语言DCL(DCL:Data Control Language)

Grant授予

赋予登录权限

grant connet to 用户名

赋予增删改权限

--赋予增删改权限
grant resource to 用户名

赋予管理员权限

--赋予管理员权限
grant dba to 用户名

revoke撤销

回收管理员权限

--回收管理员权限revoke dba from 用户名

回收登录权限

--回收登录权限revoke connect from 用户名

回收增删改权限

--回收增删改权限revoke resource from 用户名

九、聚合函数

以下查询的emp表在scott用户里 ⬇⬇⬇

AVG 求平均值

--avg()平均值---求所有人平均工资
select avg(sal) from emp;--求20号部门的平均工资
select avg(sal) 平均工资 from emp where deptno=20;--求20号部门的平均工资 和 部门编号
select deptno,avg(sal) 平均工资 from emp where deptno=20 group by deptno;--按照部门编号进行分组,求每组的平均工资
select deptno,avg(sal) from emp group by deptno;

MIN求最小值

--min()最小值--求本公司薪资最低的人的工资
select min(sal) from emp;--求20号部门工资最低的人
select min(sal) from emp where deptno=20;--求本公司每个部门的最低工资
select deptno,min(sal) from emp group by deptno;--分组,就添加group by

MAX求最大值

--max()最大值--求本公司薪资最高的人的工资
select max(sal)最高工资 from emp;--求30号部门工资最高的人
select max(sal)部门最高工资 from emp where deptno=30;--求本公司每个部门的高工资
select deptno,max(sal) from emp group by deptno;

SUN求和

--sun()求和--求公司每月要发的总工资
select sum(sal)总工资 from emp;--求每个月给30号部分发的总工资
select sum(sal) from emp where deptno=30;--求本公司每个部门的总工资
select deptno 部门编号,sum(sal)总工资 from emp group by deptno;

count累加

--count()累加--求公司总人数
select count(*) from emp;--求20号部门的人数
select count(*) from emp where deptno=20;--最好不要用count(*);*代表查找所有字段
select deptno,count(*) from emp group by deptno;--求每个部门的总人数
select deptno,count(empno) from emp group by deptno;--每个部门的。。。值,只要2000以上的
select deptno 部门编号,max(sal) 最大值,AVG(sal) 平均值,min(sal) 最小值
from emp
group by deptno
having avg(sal)>2000;

十、排序

group by子句

用于将信息划分为更小的组;每一组行返回针对该组的单个结果(分组,就添加group by)

--group by子句SELECT deptno,MAX(sal) maxSal,
AVG(sal) avgSal,
MIN(sal) minSalFROM emp
GROUP BY deptno;

order by子句

一般是用来,依照查询结果的某一列(或多列)属性,进行排序(升序:ASC;降序:DESC;默认为升序;order by 子句在select语句的最后)

在排序中也可以使用没有包括在select子句定义的列排序,就是没有做投影

当排列为空值时,升序排序显示在最后降序排序显示在最前面

选择多个列属性进行排序,然后排序的顺序是,从左到右,依次排序。

如果前面列属性有些是一样的话,再按后面的列属性排序。(前提一定要满足前面的属性排序,因为在前面的优先级高)

--按照某个规则排序(年龄降序,学号升序)
select * from xxx order by xxage DECS,xxno ASC;--男同学的年龄升序输出asc,降序desc
select sno 男同学编号,sage 男同学年龄 from student where ssex='男' order by sage desc

用列号排序

可以使用投影的列的序号指定排序列,但是不推荐

--对员工名称,薪资进行排序
--不建议使用列号排序,如果变动就失效了
select last_name,job_id,salary from employees order by 1 asc,3 desc

同列别名排序

可以使用列的列表名指定排序列

--使用列别名进行排序
select last_name as name,job_id,salary from employees order by name asc
select last_name as name,job_id as id,salary from employees order by id desc

多列排序

多列排序,可以用多列排序查询结果。在order by 子句中,多个指定的列名之间用逗号分开。如果想要对某个列倒序排序需则在该列名后面指定desc

--多列排序,注意逗号隔开
select last_name as name,job_id as id,salary from employees order by name asc,id asc

having子句

用于指定group by 子句检索行的条件

having和where的区别
只有满足HAVING短语指定条件的组才输出。

HAVING短语与WHERE子句的区别:作用对象不同。

1》WHERE子句作用于基视图,从中选择满足条件的元组。

2》HAVING短语作用于,从中选择满足条件的组。

理解:要用having的话,前面的语句必须要有having的字段,否则会报错;而where不用

因为having是从前筛选的字段再筛选,而where是从数据表中的字段直接进行的筛选的。

Oracle数据库 SQL语句总结大赏相关推荐

  1. oracle数据库----SQL语句的实践(应用实例)

    oracle数据库----SQL语句的实践(应用实例) 创建表工资表salary,包括员工号emp_id,员工名emp_name,员工月基本工资monthsal,员工月总发工资totalsal. cr ...

  2. Oracle数据库SQL语句(四)—子查询(嵌套查询)

    Oracle数据库SQL语句(四) 子查询(嵌套查询) 1.单行子查询 SELECT * FROM stuWHERE ID > (SELECT ID FROM stu WHERE NAME =' ...

  3. Oracle数据库sql语句练习【emp和dept的连表查询由浅入深】

    Oracle SQL语句练习题 一.表的介绍 Oracle中有几个原始的表,我们可以以其中的三个表为例,来学习一下Oracle中SQL语句的使用.先看下这几个表的结构: 雇员表(emp) 假设该表中的 ...

  4. Oracle数据库SQL语句操作大全汇总

    数据库各个表空间增长情况的检查: SQL >SELECT A.TABLESPACE_NAME,( 1-(A.TOTAL)/B.TOTAL)*100 USED_PERCENTFROM (SELEC ...

  5. Oracle 数据库sql语句查看字符集,PG数据库查询字符集方法

    [Oracle 数据库查询字符集] 查询出 NLS_NCHAR_CHARACTERSET 参数的值即是数据库的字符集. select * from nls_database_parameters; [ ...

  6. Python3读取Oracle数据库sql语句含中文报编码错误

    sql = 'select id from person where name=\''+ data['姓名'][i] +'\'' cursor.execute(sql) data['姓名'][i]是人 ...

  7. Oracle 数据库 - sql语句筛选出符合查询条件的第一条结果实例演示,sql查询结果只显示指定行数的数据方法

    默认看到查询条件有 3 条结果,我想只查询出日期最晚的那一条记录. -- 默认查询条件 select settledate as "日期", syscalculationmny a ...

  8. Oracle数据库 | SQL语句解析

    个人主页:

  9. oracle数据库sql培训,Oracle数据库SQL语言实战培训教程(全面、详细、案例、精讲)套餐...

    风哥oracle数据库SQL语言实战培训教程(案例.精讲)套餐,DBA必备技能. 套餐介绍: 风哥Oracle数据库SQL语言实战培训教程(案例.精讲)套餐,DBA必备技能. 内容: SQL语言基础入 ...

最新文章

  1. 为什么那么多程序员不敢学Python?
  2. SQL标准结构化语言练习,SQL增删查改,SQL实现对bank数据的操作
  3. 差分 c语言,c语言 bmp位图差分
  4. win10恢复经典开始菜单_小编教你电脑如何升级win10
  5. 125KHz 100cm ID 读卡电路_7 个别出心裁的树莓派优质项目集锦(完整代码+电路设计资料)...
  6. 统计vs机器学习,数据领域的“少林和武当”!
  7. java上传图片http错误_上传图片出错
  8. JMS学习九 ActiveMQ的消息持久化到Mysql数据库
  9. Java基础入门笔记-Eclipse快捷操作
  10. 机器视觉光源之LED光源
  11. 手机logging什么意思_手机三轴稳定器的“三轴”是什么意思?
  12. 【c++】函数默认参数
  13. uni-app两种方法解决跨域问题【已验证】
  14. Android UI学习之TextView
  15. linux build文件,从源代码到可执行文件——编译全过程解析
  16. 软件设计师-知识的整理
  17. 计算机输入法在桌面显示不出来的,电脑开机无法正常显示桌面只能看到输入法如何解决...
  18. 斯坦福NLP名课带学详解 | CS224n 第12讲 - NLP子词模型(NLP通关指南·完结)
  19. Axure 9元件使用
  20. 部署Kubernetes单机版

热门文章

  1. 人工智能 机器学习实验总结
  2. js去除url中的localtion.search部分
  3. 用ThoughtWorks.QRCode生成二维码时出现“索引超出了数组界限”的错误
  4. 学生成绩管理系统E-R图
  5. for循环结构(语句)的基本用法
  6. windows MNN 的使用流程(Python版)
  7. Java练习案例之输入一个字符串统计每个字母出现次数
  8. Android磁盘管理-之vold源码分析(2)
  9. Android精品软件汇总(不断更新)
  10. java 相关论坛或网站