栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 数据挖掘与分析

数据库语法语句基本基础

数据库语法语句基本基础

oracle(一)概述,环境,sql,查询,条件 1 数据库 1.1 历史
  • 人工管理阶段
  • 文件管理阶段
  • 数据库系统阶段

人工管理阶段

  • 数据不保存
  • 没有对数据进行管理的软件系统
  • 没有文件的概念
  • 一组数据对应一个程序,数据是面向应用的

文件管理阶段

  • 数据需要长期保存在外存上供反复使用
  • 程序之间有一定的独立性
  • 文件的形式已经多样化
  • 数据的存取基本上以记录为单位

数据库系统阶段

  • 采用复杂的结构化的数据模型

    数据库不仅要描述数据本身,还要描述数据之间的联系。这种联系是通过存取路径来实现的

  • 较高的数据独立性

  • 最低的冗余度

1.2特点

数据库的主要特点:

  1. 实现数据共享

    ​ 数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数 据库,并提供数据共享。

  2. 减少数据的冗余度

    ​ 同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量 重复数据,减少了数据冗余,维护了数据的一致性。

  3. 数据的独立性

    ​ 数据的独立性包括数据库中数据库的逻辑结构和应用程序相互独立,也包括数据物理结构的变化 不影响数据的逻辑结构。

  4. 数据实现集中控制

    ​ 文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫 无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数 据间的联系。

  5. 数据一致性和可维护性,以确保数据的安全性和可靠性

    • 安全性控制:以防止数据丢失、错误更新和越权使用;
    • 完整性控制:保证数据的正确性、有效性和相容性;
    • 并发控制:使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常 交互作用;
    • 故障的发现和恢复:由数据库管理系统提供一套方法,可及时发现故障和修复故障;
  6. 故障恢复 由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系 统能尽快恢复数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。比如对系统的误 操作造成的数据错误等。

2 oracle环境 2.1概述 2.2 服务
  • OrcaleServiceXE服务,如果不启动的话,Oracle无法正常使用,也不能sqlplus登录到oracle数据库中

  • OracleXETNSListener服务,如果不启动的话,就无法使用oracle自带管理系统登录到数据库中,之 后也无法在代码中使用JDBC连接到数据库中

2.3界面

Oracle自带管理系统登录地址:http://127.0.0.1:8080/apex/

  • 成功安装oracle
  • 相关服务已经启动
  • 8080端口没有被占用
2.4 登录

sqlplus 是oracle自带的工具,可以使用其命令登录到oracle数据中,并执行用户编写的sql语句。

查看系统中sqlplus命令行的所在位置:

win+r cmd
where sqlplus

在sqlplus中,使用指定账号,登录到oracle数据库中

sqlplus 用户名/密码
//普通用户登录
sqlplus briup/密码
//管理员用户登录
sqlplus system/密码
//使用DBA的身份登录,这种情况不需要密码,但是这种情况需要当操作系统的用户有权限才行
sqlplus "/as sysdba"

登录成功后,可以查看当前登录的账号是谁

show user

清屏

//Windows系统中
$CLS
//或者
$cls
//Ubuntu系统中
!clear

退出

exit
2.5会话

登录成功后,默认的会话是中文的

会话修改为英文环境

alter session set in nls_langage=english;

改回中文

alter session set in nls_langage='simpified chinese';
2.6 用户

创建用户:

使用管理员登录后,还可以使用命令创建一个新的用户,并设置密码以及授权

//创建用户toto,设置密码toto
create user toto identified by toto;
//把角色connect和resources授权给toto账号
grant connect,resource to toto;
  • connect 角色,基本的连接
  • resource角色,程序开发
  • DBA角色,数据库管理

切换用户

conn
//或者
conn 用户名/密码

删除用户

drop user toto cascade;
2.7 导入

s_region,区域表:

s_emp,员工表

s_dept,部门表

查看当前用户有哪些表:

show user;

select table_name from user_tables;

需要导入的sql文件:table.sql

alter session set nls_language=english;
CREATE TABLE s_dept(
id NUMBER(7) ConSTRAINT s_dept_id_nn NOT NULL,
name VARCHAr2(25) ConSTRAINT s_dept_name_nn NOT NULL,
region_id NUMBER(7),
ConSTRAINT s_dept_id_pk PRIMARY KEY (id),
ConSTRAINT s_dept_name_region_id_uk UNIQUE (name, region_id)
);
INSERT INTO s_dept VALUES (10, 'Finance', 1);
INSERT INTO s_dept VALUES (31, 'Sales', 1);
INSERT INTO s_dept VALUES (32, 'Sales', 2);
INSERT INTO s_dept VALUES (33, 'Sales', 3);
INSERT INTO s_dept VALUES (34, 'Sales', 4);
INSERT INTO s_dept VALUES (35, 'Sales', 5);
INSERT INTO s_dept VALUES (41, 'Operations', 1);
INSERT INTO s_dept VALUES (42, 'Operations', 2);
INSERT INTO s_dept VALUES (43, 'Operations', 3);
INSERT INTO s_dept VALUES (44, 'Operations', 4);
INSERT INTO s_dept VALUES (45, 'Operations', 5);
INSERT INTO s_dept VALUES (50, 'Administration', 1);
COMMIT;
/
CREATE TABLE s_emp(
id NUMBER(7) ConSTRAINT s_emp_id_nn NOT NULL,
last_name VARCHAr2(25) ConSTRAINT s_emp_last_name_nn NOT NULL,
first_name VARCHAr2(25),
userid VARCHAr2(8),
start_date DATE,
comments VARCHAr2(255),
manager_id NUMBER(7),
title VARCHAr2(25),
dept_id NUMBER(7),
salary NUMBER(11, 2),
commission_pct NUMBER(4, 2),
ConSTRAINT s_emp_id_pk PRIMARY KEY (id),
ConSTRAINT s_emp_userid_uk UNIQUE (userid),
ConSTRAINT s_emp_commission_pct_ck
CHECK (commission_pct IN (10, 12.5, 15, 17.5, 20)));
//
INSERT INTO s_emp VALUES (1, 'Velasquez', 'Carmen', 'cvelasqu',to_date('03-MAR90 8:30', 'dd-mon-yy hh24:mi'), NULL, NULL, 'President',50, 2500, NULL);
INSERT INTO s_emp VALUES (2, 'Ngao', 'LaDoris', 'lngao','08-MAR-90', NULL, 1,
'VP, Operations',41, 1450, NULL);
//
INSERT INTO s_emp VALUES (3, 'Nagayama', 'Midori', 'mnagayam','17-JUN-91', NULL,
1, 'VP, Sales',31, 1400, NULL);
INSERT INTO s_emp VALUES (4, 'Quick-To-See', 'Mark', 'mquickto','07-APR-90',
NULL, 1, 'VP, Finance',10, 1450, NULL);
INSERT INTO s_emp VALUES (5, 'Ropeburn', 'Audry', 'aropebur','04-MAR-90', NULL,
1, 'VP, Administration',50, 1550, NULL);
INSERT INTO s_emp VALUES (6, 'Urguhart', 'Molly', 'murguhar','18-JAN-91', NULL,
2, 'Warehouse Manager',41, 1200, NULL);
INSERT INTO s_emp VALUES (7, 'Menchu', 'Roberta', 'rmenchu','14-MAY-90', NULL,
2, 'Warehouse Manager',42, 1250, NULL);
INSERT INTO s_emp VALUES (8, 'Biri', 'Ben', 'bbiri','07-APR-90', NULL, 2,
'Warehouse Manager',43, 1100, NULL);
INSERT INTO s_emp VALUES (9, 'Catchpole', 'Antoinette', 'acatchpo','09-FEB-92',
NULL, 2, 'Warehouse Manager',44, 1300, NULL);
INSERT INTO s_emp VALUES (10, 'Havel', 'Marta', 'mhavel','27-FEB-91', NULL, 2,
'Warehouse Manager',45, 1307, NULL);
INSERT INTO s_emp VALUES (11, 'Magee', 'Colin', 'cmagee','14-MAY-90', NULL, 3,
'Sales Representative',31, 1400, 10);
INSERT INTO s_emp VALUES (12, 'Giljum', 'Henry', 'hgiljum','18-JAN-92', NULL, 3,
'Sales Representative',32, 1490, 12.5);
INSERT INTO s_emp VALUES (13, 'Sedeghi', 'Yasmin', 'ysedeghi','18-FEB-91', NULL,
3, 'Sales Representative',33, 1515, 10);
INSERT INTO s_emp VALUES (14, 'Nguyen', 'Mai', 'mnguyen','22-JAN-92', NULL, 3,
'Sales Representative',34, 1525, 15);
INSERT INTO s_emp VALUES (15, 'Dumas', 'Andre', 'adumas','09-OCT-91', NULL, 3,
'Sales Representative',35, 1450, 17.5);
INSERT INTO s_emp VALUES (16, 'Maduro', 'Elena', 'emaduro','07-FEB-92', NULL, 6,
'Stock Clerk',41, 1400, NULL);
INSERT INTO s_emp VALUES (17, 'Smith', 'George', 'gsmith','08-MAR-90', NULL, 6,
'Stock Clerk',41, 940, NULL);
INSERT INTO s_emp VALUES (18, 'Nozaki', 'Akira', 'anozaki','09-FEB-91', NULL, 7,
'Stock Clerk',42, 1200, NULL);
INSERT INTO s_emp VALUES (19, 'Patel', 'Vikram', 'vpatel','06-AUG-91', NULL, 7,
'Stock Clerk',42, 795, NULL);
INSERT INTO s_emp VALUES (20, 'Newman', 'Chad', 'cnewman','21-JUL-91', NULL, 8,
'Stock Clerk',43, 750, NULL);
INSERT INTO s_emp VALUES (21, 'Markarian', 'Alexander', 'amarkari','26-MAY-91',
NULL, 8, 'Stock Clerk',43, 850, NULL);
INSERT INTO s_emp VALUES (22, 'Chang', 'Eddie', 'echang','30-NOV-90', NULL, 9,
'Stock Clerk',44, 800, NULL);
INSERT INTO s_emp VALUES (23, 'Patel', 'Radha', 'rpatel','17-OCT-90', NULL, 9,
'Stock Clerk',34, 795, NULL);
INSERT INTO s_emp VALUES (24, 'Dancs', 'Bela', 'bdancs','17-MAR-91', NULL, 10,
'Stock Clerk',45, 860, NULL);
INSERT INTO s_emp VALUES (25, 'Schwartz', 'Sylvie', 'sschwart','09-MAY-91',
NULL, 10, 'Stock Clerk',45, 1100, NULL);
COMMIT;
---------------------------------------------------
CREATE TABLE s_region(
id NUMBER(7) ConSTRAINT s_region_id_nn NOT NULL,
name VARCHAr2(50) ConSTRAINT s_region_name_nn NOT NULL,
ConSTRAINT s_region_id_pk PRIMARY KEY (id),
ConSTRAINT s_region_name_uk UNIQUE (name)
);
INSERT INTO s_region VALUES (1, 'North America');
INSERT INTO s_region VALUES (2, 'South America');
INSERT INTO s_region VALUES (3, 'Africa / Middle East');
INSERT INTO s_region VALUES (4, 'Asia');
INSERT INTO s_region VALUES (5, 'Europe');
COMMIT;

将 table.sql 文件放置在桌面上,并且使用 sqlplus 命令从桌面路径下登录到oracle:

然后使用导入sql文件命令: @table.sql

也可以直接拖到窗口
3.数据库对象

数据库对象是数据库的组成部分,常常用 CREATE 命令进行创建,可以使用 ALTER 命令修改,用 DROp 执行删除操作。常见的数据库对象有:

  • 用户(user)
  • 表(table)
  • 视图(view)
  • 索引(index)
  • 触发器(trigger)
  • 存储过程(procedure)
  • 同义词(synonym)
  • 序列(sequence)
4sql

SQL(Structured Query Language),结构化查询语言,是专门操作关系型数据库的一种语言

sql语句的分类:

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

    用于检索数据库中的数据,主要是select语句

  • DML(Data Manipulation language)数据操纵语言

    用于改变数据库中的数据,主要是INSERT ,UPDATE,DELETE语句

  • DDL(Date Define Language)数据操纵语言

    用来建立,修改,删除数据库对象,主要是create,alter,drop,truncate语句

  • TCL (Transaction Control Language),事务控制语言

    用于维护数据的一致性,主要是 COMMIT , ROLLBACK , SAVEPOINT 语句

  • DCL(Data Control Language),数据控制功能

    用于执行权限授予和权限收回操作,主要是 GRANT , REVOKE 语句

sql,sqlplus,p;/sql的区别:;

  • sql,结构化的查询语句,操作关系型数据库的语言
  • SQL plus,oracle数据库软件自带工具,可以接收用户输入的sql语句,然后将sql执行结果显示出来
  • pl/sql,程序化的sql语句,在sql语句的基础上加入一定的逻辑操作,如if for等
5 select 5.1 基础

select 语句,可以通过列名,把一行行的数据给查询出来

注意1:语法中出现的[],表示该部分可有可无。

注意2:* 号表示所有列

注意3:col_name1,col_name2代表列名,如果有多个可以逗号隔开

查看表中的所有记录

select * from 表名

查看s_dept表中的三个字段:id, name,region_id

select id,name,region_id
from s_dept;
5.2 运算

查看每个员工的员工id,名字和年薪,月薪加200后的年薪

select id,name,salary*12 from s_emp

sselect id,name,(salary+200)*12 from s_emp
5.3 别名
在需要起别名的后面加 as 别名或者不用as

select id, last_name as ln from s_emp;
select id,last_name ln from s_emp;
5.4 拼接

语法:

dual哑表,Oracle中独有的表,表示一张虚拟的表,可以用来进行运算等等

select 'xx'||'yy'
from dual;
结果:xxyy
5.5 nvl

使用nvl函数可以将null进行替换

select id,last_name,nvl(commission_pct,0) commission_pct
from s_emp;
5.6 distinct

使用关键字可以将重复数据去除

distinct关键字只可以放在select后面

查看所有员工的职位和部门id,同职位同部门的只显示一次

select distinct dept_id,title
from s_emp;
6sqlplus

Oracle中的插件

  • buff中只能存储一条失去了语句,但是这条sql语句可能有很多行
  • 每次放入其中的语句会把之前的sql语句覆盖
  • 每次执行sql语句,都会把这个sql语句放到buff里面

sqlplus相关的语法:

  • l 查看缓存中的sql语句
  • a 在[定位]的那一行后面追加新的内容
  • i 在[定位]的那一行下面插入新的一行
  • c 替换[定位]的那一行中的某些字符串 ,格式为:c/老的字符串/新的字符串
  • del 删除[定位]的那一行内容
  • n 后面加内容可以重写这一行
  • $ 后面跟一个终端命令,例如$cls清屏,linux中使用!
  • / 执行缓存sql命令
  • 清空buff里面的缓存: clear buffer
7 排序

升序

asc:默认不写

desc:降序,必须写

8条件查询

语法

select xx
from 表名
where 比较操作表达式

select last_name,id
from s_emp
where id<5;

between and 操作符,表示在两个值之间

select * 
from 表名
where xx between yy and yy1;

like,模糊查询,在值不精确的时候用

  • %,通配0到多个字符
  • -,通配一个字符,并且是一定要有一个字符
  • ,转义字符,需要使用 escape 关键字指定,转义字符只能转义后面的一个字符

is null ,判断值为null的时候使用,null值的判断不能使用等号

查看员工提成为为空的员工的id和名字

select id,last_name,commission_pct
from s_emp
where commission_pct is null;

and 、 or ,逻辑操作符,当条件有多个的时候可以使用:and 的优先级比or高

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/278885.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号