SQL语句培训教材
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL语句培训教材
一、SQL概述
1、SQL初识
SQL(Structured Query Language,结构化查询语言)是一种查询、插入、更新和删除数据,生成、修改和删除数据库对象,提供数据库安全控制,完整性及数据保护控制,是面向数据库的通用数据处理语言规范。
数据库对象包括表、视图、索引、同义词、族、触发器、函数、过程、包、数据库链和快照等。
2、SQL数据库的体系统结构
(1)S QL数据库是表的汇集;
(2)S QL表由行集构成,行是列的序列,每列对应一个数据项;
(3)表或者是基本表,或者是视图;
(4)一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。存储文件与物理文件对
应。
(5)用户可以用SQL语句对表进行操作,包括视图和基本表。
(6)S QL的用户可以是应用程序,也可以是终端用户。
3、SQL的组成
SQL由4部份组成:
(1)数据定义:SQL DDL。定义SQL模式、基本表、视图和
索引。
(2)数据操纵:SQL DML。包括数据查询和数据更新(增、删、改)。
(3)数据操制:包括对基本表和视图的授权、完整性规则的描述和事务控制等。
(4)嵌入式SQL的使用规定
二、数据库查询
1、SQL语句符号:
2、简单查询
当我们可以用SQL*PLUS登录到SQL>下后,我们可以用DESC 显示某表的结构,也可以用select 语句简单查询表中的一些列的内容。
例:要查询T_person表中人员的姓名、出生日期及出生地,则:
SQL> select name,dob,natal_place from t_person;
3、伪列及伪表
Oracle系统为了实现完整的关系数据库功能,系统专门提供了一组称为伪列(Pseudocolumn)的数据库列,这些列不是在建立对象(如建表)时由我们完成的,而是在我们建立对象时由自动Oracle完成的。Oracle目前有以下的伪列:
CURRVAL and NEXTVAL 使用序列号的保留字
LEVEL 查询数据所对应的级
ROWID 记录的唯一标识
ROWNUM 限制查询结果集的数量
有关伪列的详细解释和使用见相关章节。
Oracle 还提供了一个DUAL 的伪表,该表主要目的是保证在使用SELECT 语句中语句的完整性而提供的,如:我们要查询当前的系统日期及时间,而系统的日期和时间并是放在一个指定的表里。所以在from 语句后就没有表名给出。为了使用from 后有个表名,我们就用DUAL代替。如:
例1:查询Oracle系统日期及时间:
SQL> select to_char( sysdate,' hh24:mi:ss') from DUAL;
TO_CHAR(SYSDATE,'YY
-------------------
07:28:09
例2:计算一下5000+5000* 的结果是多少,则:
SQL> select 5000+5000* from DUAL;
5000+5000*
-------------------
5500
三、数据基本类型
Oracle数据库的数据类型与其它的数据库系统相比,它的数据类型不多,Oracle在表示数据方面比其他数据库系统来说要省去许多关键字。Oracle只用NUMBER(m,n)就可以表示任何复杂的数字数据。其它如日期类型等也简单得多,只DATE就表示日期和时间。下面以列表形式给出Oracle8i版本以上系统数据类型的表示方法。
例:SQL> create table nchar_tst(name varchar2(10),addr varchar2(16),sal number(9,2));
表已创建。
四、常用函数
1、单记录字符函数
ASCII(
SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;
A a ZERO SPACE
---------- ---------- ---------- ----------
65 97 48 32
SQL> select ascii('赵') zhao,length('赵') leng from dual;
ZHAO LENG
---------- ----------
54740 1
CHR([NCHAR])
给出整数,返回对应字符。如:
SQL> select chr(54740) zhao,chr(65) chr65 from dual;
ZH C
-- -
赵A
||(
SQL> select (‘010-8801 8159’)||'转23' 王五电话from dual;
王五电话
-----------------
010-8801 8159转23
INSTR(
在一个字符串中搜索指定的字符,返回发现指定的字符的位置。C1: 被搜索的字符串
C2: 希望搜索的字符串
I: 搜索的开始位置,缺省是1
J: 出现的位置,缺省是1。
SQL> SELECT INSTR ('Oracle Training', 'ra', 1, 2) "Instring" FROM DUAL;
Instring
----------