SQL语言简易教程基础.docx

上传人:b****7 文档编号:9575090 上传时间:2023-02-05 格式:DOCX 页数:22 大小:29.41KB
下载 相关 举报
SQL语言简易教程基础.docx_第1页
第1页 / 共22页
SQL语言简易教程基础.docx_第2页
第2页 / 共22页
SQL语言简易教程基础.docx_第3页
第3页 / 共22页
SQL语言简易教程基础.docx_第4页
第4页 / 共22页
SQL语言简易教程基础.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

SQL语言简易教程基础.docx

《SQL语言简易教程基础.docx》由会员分享,可在线阅读,更多相关《SQL语言简易教程基础.docx(22页珍藏版)》请在冰豆网上搜索。

SQL语言简易教程基础.docx

SQL语言简易教程基础

SQL语言教程

一、什么是SQL语言?

 

  SQL是结构化查询语言的缩写(StructureQueryLanguage),简单的说,SQL是一种关系数据库语言,它可以访问以逻辑集的形式有序地储存在数据库的数据,这些逻辑集称为表。

实际上SQL是一种计算机编程语言,但它比传统的编程语言,如,BASIC,FORTRAN等简单的多。

另外SQL是关系数据库语言,了解了SQL也就理解了关系数据库,因此在整个关系数据库体系中SQL是最基础、也是最重要的部分。

 其显著的优点:

1、它是一种非过程化的交互式语言,它对数据的处理是以集合为单位的,即每次处理一个记录集而不是每次处理一个单个记录。

SQL对数据提供导航,这意味着用户在高层的数据结构上工作,而不必指定数据的存取方法。

2、SQL是一种所有用户都可以使用的语言,这些用户包括系统管员、数据库管理员,程序开发人员,应用程序员及其它许多的终端用户,SQL可在任何Oracle产品中使用,它可以用于数据库的操作。

如数据查询、修改和删除,对表进行插入、修改和删除行。

控制对数据库和数据对象的存取,保证数据库的一致性和完整性。

3、SQL是所有关系数据库的公共语言。

它是世界公认的标准的关系数据库语言。

用户可方便地移植用SQL语言编写的程序。

ORACLE支持SQL语言的执行。

ORALCE在标准SQL语言的基础上新增加了许多功能,使的它功能更加强大,使用起来更加灵活。

在以后的学习中,如不特殊说明,提到的SQL指ORALCE化的SQL

1.1、SQL与SQL*PLUS、PL/SQL几个概念的区别

  SQL*PLUS:

SQL*PLUS是ORACLE提供的一个用来处理ORACLE数据和生成报表的工具,主要实现二个功能

   A、 它提供给用户与ORACLE交互式的界面,在此环境下可自由、灵活、方便的实现ORACLE的SQL对关系数据的处理活动。

   B、 输出格式化报表

  PL/SQL:

从V6开始,ORACLE实现了一种过程处理语言,称为PL/SQL,它具有与大多数其它程序设计语言相似的编程结构,它是在SQL的基础上扩充形成的,可以理解为PL/SQL=SQL+过程控制、功能扩充语句。

 1.2、其它几个需明确的常用术语

  ORACLE中的对象:

   是一个有意义的事务,可在其内部存放信息,我们常谈到的对象类型中表和视图是最常见的。

   函数:

是施加于数据的操作,它改变数据的特性。

   提交:

使用COMMIT语句将已修改的数据保存到数据库中。

在此之前对数据库的数据修改只存在各自的缓存区内。

COMMIT是将在缓存区中以修改的内容写到数据库文件中。

   回滚:

ROLLBACK当为了某各个对话更改数据库之后,由于某种原因不想提交此更改,ORALCE所采取的操作,这是一个把信息恢复到更改前的操作。

   保留字:

被ORACLE使用的具有特殊含义的字符,不能用做变量名。

1.3、SQL语言的组成

  1、数据定义语言 create,drop,alter

  2、数据查询语言 select

  3、数据操作语言 update,insert,delete

  4、数据控制语言 grant,revoke(撤消权限)

二、SQL语言的数据类型

   CHAR            存放定长字符数据         最长2000

   VARCHAR2       存放可变长字符数据       最长4000

   NUMBER(L,D)存放数值数据,L代表总位数D代表小数点后位数

   DATE            日期 范围公元前4712年1月1日到公元后4712年12月31日

   NCHAR            与CHAR类似,只不过最大长度由数据库使用的字符集决定

   BLOB             二进制大对象,最大长度4GB

   LONG             存放可变字符数据,最大为2GB

   RAW              纯二进制对象,最大长度为2000字节

    VARCHAR         目前等同于CHAR

一、字符型

   char和varchar2数据类型用来存储字符、数据,具有比二种类型的列可以存储任何一个字符。

由于Oracle的空格填充值(即在字符中尾问用空格填充时的空格值)只存储在char列中,而不存varchar2列中,所以用varchar2存数要比用char存数占用的空间少,由于这个理由,在含varchar2列的大表在进行全表扫描比在char列中存储相同数据的表上,进行全表扫描的数据块较少,若应用程序经常需要在含字数大表中扫描时,应存在varchar2中而不存储在char列中,这样可改善程序的性能。

但在决定使用什么数据类型时,性能不是唯一决定的因素,例如,在比较字符串的值时,希望Oracle忽略掉尾部空格,则必须把这些值存储在char列中,因而选什么数据类型,应该关心应用程序关心的语义间的不同。

   1、char

    用来存储固定长度的字符串,在建立具有char列的表时,必须说明该列长度(以字节为单位)。

列的长度1-255间,default值为1。

注意:

如果指定的值比较短,则用空格填充该值固定长度,则Oracle返回一个错误信息。

  若两个char型字符串比较大小时,若两值长度不同,则在较短值中插入空格。

直到值有相同的长度。

比较时,只有尾部空格数不同,其它部分相同的二个值被认为相等。

  2、varchar2

    存储可变长度的字符串,建立具有varchar2列的表时,说明该列长度(以字节为单位)。

最大长度1-2000之间,对每条记录,该列的每一值都可作为可变长字段来存储,例如,一个列被说明为varchar2数据类型,长度为50,若一条特定记录中类varchar2列给出10个单字节,字符,则就在该列中存储10个字符而不最50个。

两个varchar

(2)列比较值时,只须在二个值须相同的字符,且还有相同的长度时才认为相等。

  3、varchar

    目前与varchar2数据类型相同,但在Oracle未来版中,varchar数据类型可能会使用不同的比较语义,所以最好用varchar2数据类型。

二、数字型

     即number用来存储0,正负,定点数长正负浮点数。

用number数据类型的数字(精度最多为38位十进制数)保证能在运行Oracle的不同系统中移值。

存储在number列中的数字范围。

   说明数字列的方法:

   1)column_namenumber

   2)column_namenumber(精度,小数位数)若没有指出小数的位数,则隐含为没有小数,小数的位数范围。

-84<=x<=127。

注意:

若给出的小数位数是负数,则实际数被舍入到小数点左边指定的位数,如,说明为(7,-2)就意味着舍入到最接近的百位数。

三、日期型

    即date数据类型,用来存储表中的日期和时间,存储的内部有年(包括世纪)、月、日、时、分和秒。

对应于世纪、年、月、日、分和秒。

输入、输出日期时,标准缺省格式,DD-MON-YY。

   如:

’04-JAN-98’

   如果输入一个不当前缺省日期格式的日期,则用带有格式掩码的函数to_date。

   如,to_date(‘november,13,1992’,’month,dd,yyyy’)dd_mon_yy则yy表示20世纪中的年。

   例31-DEC-92表示1992.12.31。

   存储时间格式(24小时):

HH:

MM:

SS,若没有输时间,则日期字中时间取缺省值:

12:

00:

00A.M,若没有输日期,只输入了时间,则日期部分取缺省值为当月的第一天,为了输入日期的时间部分,可以使用带有指出时间部分的格式掩码的函数to_date。

如:

insertintobirthdays(bname,bday)values(‘annie’,to_date(‘13-nov-3210:

56am,’dd_mov_yynn:

miam’);

   要比较一个含有时间数据的日期,而不希望比较,则可使用函数据trunc,SQL函数sysdate返回系统的时期和时间。

四、long数据类型

  用long定义的列可以存储可变长字符数据,最多特性相同,根据式作站的可用内存量可以限制long值的长度。

long数据的使用:

  在数据字典中用long数类定义的列存储定义视图的稿文,可以在select,update语句中的set子句和insert语句的values子句中使用由long定义的列。

long和lognraw数据的限制。

  long和longraw列有许多作用,但使用它们时有限制。

  1)每个表中只允许有一个long列。

  2)long列不能出现在完整性约束中。

  3)在子句where,orderby,groupby或connectby以及在select语句的distinct操作符中不能使用long列。

  4)在sql函数(如substr可insert)中不能引用long列。

  5)在子查询的select中或有操作符union,onionall或minus的select中不能使用long列。

  6)sql的表达式中不能使用long列。

  7)用查询创立表时(createtable...asselect)或用查询插入一个表或视图(insertinto...select...)时不能引用long列。

  8)不能用long数据类型说明PL/SQL程序单元的变量。

  在设计包含有long或longraw数据的一些表时,把long或longraw列放入一个表中,与它们有关的数据放入另一个表中,然后用完整性约束把二个表连起来,这样设计的结果就能使sql语句只访有关的数据,避免去读整个long或longraw数据,从而提高速度。

例:

为了存储有关杂志的信息(包括每篇文本的稿文),可建两个表。

五、Raw和LongRaw数据类型。

  对Oracle不能解释的数据,即在不同的系统间传输它们时不能被转换的数据可以使用数据类型Raw和LongRaw。

扩充这两种数据开的目的是将它们用于二进制数和字节串。

  Raw相同于Varchar2而LongRaw相同于LongVarchar,但对Raw和LongRaw数据不进行字符集转换,对于Char,Varchar2,Logn数据。

   Oracle会自动把它们从数据字符集转换到通过参数Nls_Lang由用户会话所定的字符集,这些就是它们的不同之处。

   Oracle在Raw(LognRaw)数据与Char数据进行互相转换时,把数据看成一个能表示成每4个二进制位为一个位图的十六进制数。

   例如,输入或显示一个字节的Raw数据。

‘11001011’时,把它看作’cb’。

   LongRaw列不可被索引,Raw可以。

六、空与不空(NULL、NOTNULL)——另一类数据类型

    空(NULL)在PL*SQL代表另一类数据类型,它们表示缺少任何值换句话是没有数据或是无信息。

空值不同于零,很小的值,空白或其它任何数据,SQL*PLUS对NULL进行特殊处理。

  PL*SQL应用这一特殊数据类型是为了正确处理SQL*PLUS中的一些函数,如平均值的统计或找最大、最小值。

  空值(NULL)的使用:

ISNULL、ISNOTNULL

三、SQL*Plus的工作环境

   SQL*Plus为用户提供了很方便的界面环境,使得用户可在SQL*Plus环境中输入、编辑和运行SQL、SQL*Plus命令和PL/SQL块,也可随时获得帮助信息。

  3.1SQL*Plus程序

     ORACLE_HOME\BIN\PLUS**w.EXE或PLUS**.EXE(区别:

PLUS**.EXE  DOS环境下的PLUS)

     ORACLE_HOME:

95工作站ORAWIN95 NT服务器 ORANT 

     **代表版本号,常用的有PLUS33W.EXE、PLUS80W.EXE

  3.2SQL*Plus的进入和退出

   1、 直接运行。

EXE文件

   2、 菜单程序|ORACLEFORWIN95|SQL*PLUS

   3、 登录 输入:

用户、口令。

  登录成功后,显示成功登录信息并出现SQL提示符 SQL>

   4、 退出 输入:

EXIT

  3.3利用SQL缓冲区进行命令编辑和运行。

   1) 输入SQL语句时可多行输入,语句以‘;’作为结束时

   2) SQL*PLUS缓冲区:

运行SQL*PLUS时,ORACLE在缓冲区保留最后执行的命令,在SQL提示符下,输入斜杠“/”并输入“ENTER”,这个操作可再次执行保留在缓冲区里的SQL语句。

利用系统文本编辑器,可以对缓冲区内容进行编辑,也称全屏幕编辑。

命令是:

Edit

   3) 很多情况下,在输入命令时会发现输入错误,需要修改,这种情况下,使用SQL*PLUS命令行编辑器将使得输入更容易些,它可以很快的修改SQL缓冲区内的SQL语句。

          提示:

在使用LIST命令,可看到*号,有*号的行即可进行编辑的当前行。

                                     SQL*PLUS行编辑命令 

编辑器命令

       目       的

(a)ppend

填加文本到当前行尾

(c)hange/old/nes/

在当前行以新的文本代替旧的文本

(c)hange/text/

从当前行删除文本

Del

删除当前行

(i)nputtext

在当前行之后填加一行

(L)ist

显示在缓冲区所有的行

(L)ist N

显示缓冲区的第N行

   4)SQL*PLUS提供的一个有用的命令describe用desc(describe)命令显示一个指定表的每一个列的定义。

语法:

DESC

四、SQL语言的运算符

   算术+、-、*、/、正、负。

   字符||(用于连接两个字符串)例:

'jackis'||'aboy'等操作。

   比较 >、<、=、!

=(或)<>、<=、>=、IN、BETWEEN。

AND、LIKE

   逻辑 not(逻辑非)、and(与)、or(或)。

   集合 union(并)、intersect(交)、minus(差)。

五、创建练习用表

  5.1CREATE 

  功能:

在数据库中定义一新表

  语法:

CTEATE TABLE 

        

        )

  例:

CREATETABLEDJ_NSRJB(

      NSRSBH VARCHAR2(15)NOTNULL,

      NSRMC  VARCHAR2(80));

  分析:

由四部分组成

   1、 CREATE 通知ORACLE创建结构

   2、 TABLE   通知ORACLE创建对象的类型,这里指表

    3、 表名是唯一且合法的表名

   4、 COLUMNS创建时需指出列名、数据类型及长度定义如有NULL说明,则在类型后做非空说明

  附:

数据命名规则如下(适用于其它对象):

   1)长度在1-30个字符之间。

   2)首字符必需为字母(A-Z)。

   3)数据对象不能同已存在的名字冲突。

   A、 在数据库中表名和视图名必需唯一。

   B、  在同一张表中,列名必须是唯一。

   4)在命名中不可使用ORACLE的保留字。

  5.2  ALTER

  功能一:

用来向已存在表中增加列

  语法:

ALTER TABLE  ADD(

  例:

ALTERTABLEDJ_NSRJBADD(JLX VARCHAR2(4),HY   VARCHAR2(4));

  分析:

1)关键字ALTERTABLE。

               2)所要修改的表名。

               3)关键字ADD表明增加列

               4)COLUMN定义略

  功能二:

用来修改已存在表中的列修改列的宽度、重新定义空值说明。

  语法:

ALTER TABLE  MODIFY(

  例:

ALTERTABLEDJ_NSRJBMODIFY(NSRSBH VARCHAR2(15)NOTNULL);

         ALTERTABLEDJ_NSRJBMODIFY(NSRMC  VARCHAR2(120));

  分析:

        1)关键字ALTERTABLE

        2)〈TABLE_NAME>所要修改的表名

        3)关键字MODIFY表明修改列

        4)COLUMN定义略

5.3、DROP 

  功能:

从数据库中删除一个现存表。

  语法:

DROP TABLE 

  5.4、录入练习用表中的数据

      INSERT

      语法:

INSERTINTO〈TABLENAME〉(COL1,COL2,CL3。

)VALUES(VAL1,VAL2,VAL2。

);

      分析:

   1)SQL关键字INSERTINTO和VALUES

   2)变量〈TABLENAME〉必须是数据库已存在的一个表,是准备插入数据的一个表。

   3)变量(COL1,COL2,COL3。

)指表中已存在的列

   4)值表(VAL1,VAL2,VAL2。

)由SQL把表中每个值分配给它们相对应的列名插入数据必须在三个方面与它们的列定义相匹配数据类型必须相同。

数据必须在它们特定的列大小要求范围之内数值和列必须是一一对应的(第一个值与第一个列相对应,以此类推)

   提示:

在向表中插入一行数据时,如果该表中定义了不为空的列,则在每一条插入语句都必须有该列的值。

   例:

INSERTINTODJ_NSRJB(NSRSBH,NSRMC,FGKS,FGR)VALUES(‘14020010010001’,‘通达器材’,‘ZG’,HYK’);

      语法二:

INSERTINTO 表名1(列1,列2,。

)查询语句

     分析:

一次插入多行数据

   例:

INSERTINTODJ_NSRJB(NSRSBH,NSRMC)SELECTNSRSBH,NSRMCFROMDJ_NSRJBBAK;比较单行插入,用SELECT语句的值代替VALUES子句。

练习

    1、创建第一个练习表dj_nsrjb  纳税人基本信息

        NSRSBH   VARCHAR2(15)  --纳税人识别号

        NSRMC   VARCHAR2(80)   --纳税人名称

        FGKS     VARCHAR2(4)     --分管科室

        FGR      VARCHAR2(5)     --分管人

        JJLX     VARCHAR2(3)      --经济类型(注册类型)

        ZZSNSLX VARCHAR2

(1)     --增值税纳税类型

    2、向表中增加下面的列

        HY      VARCHAR2

(2)     --行业

        BZRQ    DATE            --办证日期

     3、修改表中字段NSRMC到120位长度,同时加NSRSBH约束不能为空。

     4、 修改表中字段ZZSNSLX增加缺省值‘0’ 小规模

     5、 创建第二个练习用表ZSJB

     6、 插入练习数据

六、数据查询语句SELECT

   功能:

SELECT命令用于从ORACLE数据库中检索数据。

   语法:

SELECT〈列名〉FROM〈表名〉WHERE〈条件〉ORDERBY〈列名〉

   分析:

SELECT(什么?

)子句,体现用户检索的信息,表中一个或多个列的名字。

如果选择多个列,列名之间必须用逗号分隔开,但最后的列名后面没有逗号,即与FROM相临的列名之间没有逗号。

(必须)   FROM(哪里?

)子句,正确的表名(必须)WHERE〈条件〉子句,后面跟条件ORDERBY(排序)子句,排序列

   提示:

查看所有的列时,SELECT语句使用SELECT*

   6.1简单查询,只有必须的查询子句

   1、 查询表中部分字段的值。

      例:

SELECTNSRSBH,NSRMCFROMDJ_NSRJB;

   2、 查询表中的所有字段的值。

      例:

SELECT*FROMDJ_NSRJB;

   3、 消除冗余行的查询

      例:

SELECT DISTINCTNSRSBH FROM ZS_JB;/*有几户申报*/

      例:

SELECT DISTINCTJJLX FROM DJ_NSRJB;/*DJ_NSRJB表中有几种注册类型的纳税户*/

   4、 用被选择列的别名来指定显示选择结果时的列名

      例:

SELECTNSRMC‘MC‘ FROM DJ_NSRJB;在显示结果时用MC代替NSRMC

   5、 虚表DUAL的使用(选学内容)

       DUAL用于测试函数或完成快速计算,是一个小而有用的ORACLE表,ORACLE只为其提供一行一列的内容。

SQL〉DESCDUAL;

     DUMMY    CHAR

(1)

     DUAL的作用:

在ORACLE的许多函数即可以用于列也可以用于常量,通过DAUL可以发现某些函数只能用于常量,在下面的列子中SELECT语句没有指明是表中的哪一行,哪一列。

     例:

计算POWRE(4,3) 即4的3次方

SQL〉SELECT POWRE(4,3)FROMDUAL;

    结果显示:

64

   提示:

也可以把DUAL表理解成是一块随时可用内存。

   6.2条件查询

     比较运算符

     单值测试

          YBSE〉1000         应补税额大于1000

          YBSE〈1000         应补税额小于1000

          YBSE

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1