1、SQL语句培训教材SQL语句培训教材一、 SQL概述1、 SQL初识SQL(Structured Query Language,结构化查询语言)是一种查询、插入、更新和删除数据,生成、修改和删除数据库对象,提供数据库安全控制,完整性及数据保护控制,是面向数据库的通用数据处理语言规范。 数据库对象包括表、视图、索引、同义词、族、触发器、函数、过程、包、数据库链和快照等。2、 SQL数据库的体系统结构(1) SQL数据库是表的汇集;(2) SQL表由行集构成,行是列的序列,每列对应一个数据项;(3) 表或者是基本表,或者是视图;(4) 一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或
2、多个基本表。存储文件与物理文件对应。(5) 用户可以用SQL语句对表进行操作,包括视图和基本表。(6) SQL的用户可以是应用程序,也可以是终端用户。3、 SQL的组成SQL由4部份组成:(1) 数据定义:SQL DDL。定义SQL模式、基本表、视图和索引。(2) 数据操纵:SQL DML。包括数据查询和数据更新(增、删、改)。(3) 数据操制:包括对基本表和视图的授权、完整性规则的描述和事务控制等。(4) 嵌入式SQL的使用规定二、 数据库查询1、SQL语句符号:操作符用途例子+ - 表示正数或负数,正数可省去 +将两个数或表达式进行相加A=c+b-将两个数或表达式进行相减34-12*将两个
3、数或表达式进行相乘12*34/除以一个数或表达式18*11NULL空值判断Where name is null;|字符串连接101-|tel_num=等于测试Select * from emp where name=王五;!= 或或=不等于测试Select * from emp where name != 王五;小于测试Select * from emp Where sal 大于测试Select * from emp Where sal 5000;=小于等于测试Select * from emp Where sal =大于等于测试Select * from emp Where sal = 50
4、00;Not in测试某值是否在一个指定的结果集中Select name,addr from expertwhere local not in(北京,上海);ANY将一个值与一组值进行比较,返回满足条件的结果。必须跟!=,=select ename,sal from emp where sal= any(select sal from emp where deptno=10)SOME同ANY,必须跟!=,=ALL将一个值与一组值比较,返回满足条件的所有列值。必须跟!=,=Select name,sal from empWhere sal= all ( 500,800,1200);Not bet
5、weenA and B判断某个值是否界于两者之间。Select name,sal from emp Where sal between 500 and 1200;notexists判断某个列是否存在于一组值中。select dname,deptno from dept where exists(select * from emp where =Anotlike bEscape char比较两个模式是否相似,当使用like 语句时Oracle不去访问索引。Select * from empWhere ename like TH%;Is not null 测试值是否为空。Select ename,
6、deptno from empWhere comm. Is null or comm.=0;Not 对结果的否定。Select * from empWhere sal not(sal=1000;AND用于判断两个条件十分都满足。Select * from emp where Ename=SIMTH and sal=1000;OR 用于判断两个条件中是否有一个满足。Select * from emp where Ename=SIMTH or ename=SCOTT;UNION用于返回(组合)两个查询中所有唯一的行。Select ename from emp unionSelect ename f
7、rom emp;UNION ALL用于返回(组合)两个查询中所有所有的行。INTERSECT用于返回两个查询中相同的行。Select ename from emp1 intersect select ename from emp2;MINUS用于返回两个查询中的不同的行。2、简单查询当我们可以用SQL*PLUS登录到SQL下后,我们可以用DESC 显示某表的结构,也可以用select 语句简单查询表中的一些列的内容。例:要查询T_person表中人员的姓名、出生日期及出生地,则:SQL select name,dob,natal_place from t_person;3、伪列及伪表Oracl
8、e系统为了实现完整的关系数据库功能,系统专门提供了一组称为伪列(Pseudocolumn)的数据库列,这些列不是在建立对象(如建表)时由我们完成的,而是在我们建立对象时由自动Oracle完成的。Oracle目前有以下的伪列: CURRVAL and NEXTVAL 使用序列号的保留字 LEVEL 查询数据所对应的级 ROWID 记录的唯一标识 ROWNUM 限制查询结果集的数量有关伪列的详细解释和使用见相关章节。Oracle 还提供了一个DUAL 的伪表,该表主要目的是保证在使用SELECT 语句中语句的完整性而提供的,如:我们要查询当前的系统日期及时间,而系统的日期和时间并是放在一个指定的表
9、里。所以在 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在表示数据方面比其他数据库系统来说要省去许多关键字
10、。Oracle只用NUMBER(m,n)就可以表示任何复杂的数字数据。其它如日期类型等也简单得多,只DATE就表示日期和时间。下面以列表形式给出Oracle8i版本以上系统数据类型的表示方法。数据类型说明Char定长字符,2000个字符Varchar(同Varchar2)可变字符,4000个字符Varchar2变长字符,4000个字符Date固定长度(7字节)的日期型Number数字型,可存放实型和整型Long可变字符,2GB个字符Raw可变二进制数据,4000字节Long raw可变二进制数据,2GBMLSLABEL仅Trusted Oracle 用长度在25字节间Blob大二进制对象,4G
11、BClob大字符串对象,4GBNclob多字节字符集的Clob,4GBBfile外部二进制文件,大小由OS决定例:SQL create table nchar_tst(name varchar2(10),addr varchar2(16),sal number(9,2);表已创建。四、 常用函数1、 单记录字符函数函 数 说 明 ASCII返回对应字符的十进制值 CHR给出十进制返回字符 CONCAT拼接两个字符串,与 | 相同 INITCAT将字符串的第一个字母变为大写 INSTR找出某个字符串的位置 INSTRB找出某个字符串的位置和字节数 LENGTH以字符给出字符串的长度 LENGTH
12、B以字节给出字符串的长度 LOWER将字符串转换成小写 LPAD使用指定的字符在字符的左边填充 LTRIM在左边裁剪掉指定的字符 RPAD使用指定的字符在字符的右边填充 RTRIM在右边裁剪掉指定的字符 REPLACE执行字符串搜索和替换 SUBSTR取字符串的子串 SUBSTRB取字符串的子串(以字节) SOUNDEX返回一个同音字符串 TRANSLATE执行字符串搜索和替换 TRIM裁剪掉前面或后面的字符串 UPPER将字符串变为大写 NVL以一个值来替换空值ASCII()是字符串。返回与指定的字符对应的十进制数。SQL select ascii(A) A,ascii(a) a,ascii
13、(0) zero,ascii( ) space from dual; A a ZERO SPACE- - - -65 97 48 32SQL select ascii(赵) zhao,length(赵) leng from dual; ZHAO LENG- - 54740 1CHR(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转23INSTR(, )在一个字符串中搜索指定的字符,返回发现指定的字符的位置。C1: 被搜索的字符串C2: 希望搜索的字符串I: 搜索的开始位置,缺省是1J: 出现的位置,缺省是1。SQL SELECT INSTR (Oracle Training, ra, 1, 2) Instring FROM DUAL; Instring- 9LENGTH( )返回字符串 c 的长度。SQL l
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1