PB基本知识 sql语句

PB基本知识 sql语句
PB基本知识 sql语句

目录

一、SQL内部数据导入、导出 (2)

1、数据库备份(BACKUP) (2)

2、备份的执行 (3)

3、恢复数据库(RESTORE) (6)

4、BCP (6)

5、使用DTS导入、导出 (7)

6、单表数据导入、导出实例。 (7)

7、建立计划任务 (7)

二、PB简介 (8)

1、画笔介绍 (8)

2、编译 (10)

3、简单问题查找定位 (11)

三、PB数据导入、导出 (11)

1、打开表,用SA VE AS 将表内数据保存为另一格式 (11)

2、用DATD PIPELINE将当前库中的一个表内的数据导出到另一库中 (12)

3、用ROWS中的IMPORT 导入数据 (13)

4、用SQL 语句生成表 (13)

四、数据操纵语言(DML) (14)

1、SELECT语句 (14)

2、INSERT 语句 (15)

3、DELETE 语句 (16)

4、Update 语句 (16)

数据导入导出、SQL语句简介

一、SQL内部数据导入、导出

1、数据库备份(BACKUP)

●概述

备份就是对SQL Server数据库或事务日志进行备份,数据库备份记录了在进行备份这一操作时数据库中所有数据的状态,以便在数据库遭到破坏时能够及时地将其恢复。

●SQL SERVER 2000 四种备份方式

1)完全数据库备份(Dadabase-complete)

2)差异备份或称增量备份(Dadabase-differential)

3)事务日志备份(Transaction log)

4)数据库文件和文件组备份(File and filegroup)

●创建备份设备

在进行备份以前首先必须指定或创建备份设备,备份设备是用来存储数据库、事务日志或文件和文件组备份的存储介质,备份设备可以是硬盘、磁带或管道。当使用磁盘时,SQL Server允许将本地主机硬盘和远程主机上的硬盘作为备份设备,备份设备在硬盘中是以文件的方式存储的。

●使用SQL Server 企业管理器创建备份设备

图1.使用企业管理器创建备份设备

图2.输入备份设备属性对话框

2、备份的执行

SQL Server系统提供了三种数据库备份操作的方法:

(1)SQL Server 企业管理器

(2)备份向导

(3)Transact-SQL语句(略)

●使用企业管理器进行备份

(1)启动企业管理器,登录到指定的数据库服务器,打开数据库文件夹,用右键单击所要进行备份的数据库图标,在弹出的快捷菜单中选择所有任务,再选择备份数据库。(2)出现SQL Server备份对话框,对话框中有两个页框,即常规和选项页框。

(3)在常规页框中,选择备份数据库的名称、操作的名称、描述信息、备份的类型、备份的介质、备份的执行时间。

(4)通过单击添加按钮选择备份设备。

(5)选择调度复选框,来改变备份的时间安排。

(6 )在选项页框中进行附加设置。

●使用备份向导进行备份

图1 欢迎框

图2 选择数据库对话框

图3输入备份名称和描述信息对话框

图4 选择备份数据库类型对话框

图5设置备份介质类型和属性对话框

图6 备份验证和调度对话框

图7确认执行备份操作对话框

3、恢复数据库(RESTORE)

●概述

数据库备份后,一旦系统发生崩溃或者执行了错误的数据库操作,就可以从备份文件中恢复数据库。数据库恢复是指将数据库备份加载到系统中的过程。系统在恢复数据库的过程中,自动执行安全性检查、重建数据库结构以及完整数据库内容。

●使用企业管理器恢复数据库

(1)打开企业管理器,单击要登录的数据库服务器,然后从主菜单中选择工具,在菜单中选择还原数据库命令。

(2)在还原为数据库旁的下拉列表中选择要恢复的数据库,在还原组中通过单击单选按钮来选择相应的数据库备份类型。

(3)选中选项页框,进行其它选项的设置。

4、BCP

进入dos 运行pdos95 中文环境

(1)导出bcp his221..yk_rk01 out yk_rk01.out –n -Ssvr_pxb -Usa –P

//his221..yk_rk01=his221.dbo.yk_rk01

参数说明:

[-n native type] [-S server name] [-U username][-P password](2)导入bcp test..yk_rk01 in yk_rk01.out –n -Ssvr_pxb -Usa –P //导入前test..yk_rk01 必须先建好,导入时以追加方式添加

A、“HIS221|表|YK_RK01、YK_RK02|所有任务|生成SQL脚本”,创建YK_RK01、YK_RK02的SQL的脚本;

B、建TEST库;

C、根据SQL脚本在TEST库内建YK_RK01、YK_RK02表,

D、将数据导入

(3)批量生成bcp命令

select 'bcp his221..'+NAME+' out'+' e:\back\'+name+'.txt'+' -n -Ssvr_pxb -Usa -P'

from his221..sysobjects

where type='U';

5、使用DTS导入、导出

导入和导出数据采用DTS 导入/导出向导来完成。此向导包含了所有的DTS(Data Transformation Services)工具,提供了在OLE DB数据源之间复制数据的最简捷的方法。

对TEST库中的表YK_RK01创建主键(XTSB+RKFS+RKDH),YK_RK02创建外键。(1)整库导出:”数据库|TEST|所有任务|导出数据|在SQLSERVER数据库之间复制对象和数据”,将TEST导出到AA库,完成后查看目标库主外键情况,将AA库删除。(2)部分表导出:”数据库|TEST|所有任务|导出数据|从源数据库复制表和视图”

将TEST 库中的YK_RK01、YK_RK02表导出到AA库,完成后查看AA库情况。(3)利用SQL 创建主外键:(1)生成SQL 语句(2)执行SQL语句

6、单表数据导入、导出实例。

(1)生成YK_RK02 建表及建索引的SQL语句

(2)将YK_RK02数据导出

(3)删除YK_RK02表

(4)用SQL建表

(5)数据导入

(6)建索引

7、建立计划任务

(1)本机计划任务”管理|数据库维护计划|新建维护计划”,生成一个本机备份计划任务。

根据提示完成一计划任务。

(2)修改备份路径,可以生成一远程备份计划任务。(略)

二、PB简介

1、画笔介绍

主要画笔的功能与作用:

1)应用对象画笔(Application Painter):应用对象画笔创建应用对象以及保存应

用程序所有对象的应用库。应用对象定义应用程序的执行环境,包括三方面的

内容:应用对象名称和相应的图标;应用程序中其它对象使用的缺省文本颜色、

字体以及字型;应用程序用到的各种对象库等。

2)窗口画笔(Window Painter):窗口画笔用于设计应用程序中使用的窗口以及定

义窗口中的控件,实际上也就是定义应用程序与用户交互的人机接口。

PowerBuilder 6.0提供了大量控件供开发人员直接使用,它既包括常见的命令

按钮、单选钮、复选框、编辑框、滚动条、列表框,也包括功能不凡的数据窗

口控件、TreeView(树形列表)控件、ListView(列表视图)控件、标签控件、

各种绘图控件等。

3)菜单画笔(Menu Painter):菜单画笔生成菜单和工具栏对象。菜单对象既可以

直接运用在窗口的菜单栏上,也能够作为应用程序的弹出菜单使用。

4)工程画笔(Project Painter):工程画笔用于建立工程文件、编译应用程序、生

成可执行文件、生成代理对象、产生类用户对象的C++头文件/源代码或目标

库。

5)用户对象画笔(User Object Painter):用户对象画笔用于生成用户对象,包括

可视用户对象和类用户对象,这些对象既可在应用程序内部反复使用,也能够

在整个开发小组里公用。

6)结构画笔(Structure Painter):结构画笔用于定义应用程序中使用的全局结构,

利用结构开发人员能够更有效地组织复杂的变量。该画笔创建全局结构,并作

为一个对象保存到应用库中。

7)函数画笔(Function Painter):开发应用程序时,经常会发生这样的情况:某

段程序需要在多个地方使用,这时就可以用函数画笔生成函数,避免重复编码

并提高代码的可重用性。函数画笔创建的函数是全局函数,在整个应用程序中都能够使用。

8)数据窗口画笔(DataWindow Painter):数据窗口画笔生成能够智能操纵数据库

的数据窗口对象,该对象可以以多种显示风格查询、修改数据库,且不需要复杂的SQL编程。数据窗口对象能够访问多种数据源,包括表、视图、查询、存储过程以及外部数据源等,同时,它有十几种表现风格,极大地丰富了数据的表达能力。数据窗口对象对PowerBuilder6.0的应用程序十分重要,只有做到灵活自如地运用数据窗口,才能说学会了PowerBuilder 6.0。

9)查询画笔(Qurey Painter):查询画笔可使开发人员在图形界面下以交互方式

生成数据库查询语句,并将其作为一个对象进行保存,该对象可为数据窗口对象所用。这样,即使开发人员不十分熟悉数据库操作语句棗SQL语句,利用该画笔也同样能够生成复杂的查询。

10)数据管道画笔(Data Pipeline):数据管道画笔用于把一个数据库的结构和数据

复制到另一个数据库,从而实现数据库之间的数据转换。

11)ODBC配置画笔(Configure ODBC):当PowerBuilder 6.0开发环境通过ODBC

接口连接到数据库时,使用此画笔配置ODBC数据源。

12)数据库连接参数配置画笔(DB Profile):该画笔用于配置PowerBuilder 6.0连

接到数据库时的连接参数。

13)表操作画笔(Table Painter):该画笔用于建立和修改数据库表的定义。

14)数据库画笔(Database Painter):该画笔提供了生成和维护服务器端数据库的

良好环境,开发人员无须查阅SQL语句手册,就能够创建新表、修改老表以及操纵数据。而且,在该画笔的数据操纵(DBAdministration)子画笔中可以执行和测试当前环境所连接数据库支持的任何SQL语句,比如创建用户或用户组等。

15)对象浏览器(Browser):通过对象浏览器可以方便地浏览PowerBuilder环境以

及应用程序中各个对象的事件、属性、函数,并能够查阅系统预定义的枚举类型及其取值,而且能够根据需要生成超文本格式(RTF)文件,或从打印机上打印输出。另外,还可以在对象浏览器中直接启动所选对象的相应画笔编辑、修改对象。当我们需要知道OLE自动化服务器的类类型、使用的枚举类型数据、属性、事件、方法等信息时,同样可以使用对象浏览器查阅。

16)库管理画笔(Library Painter):库管理画笔提供了管理应用程序各个组成部分

的有效手段,利用库管理画笔,我们能够删除、修改、移出、移入、复制、重新生成应用程序中的各种对象(例如,窗口、菜单、数据窗口对象等)。17)文本编辑器(Edit):用于编辑诸如初始文件(.INI)、资源文件(.PBR)等类

型的文本文件。

18)调试画笔(Debug):调试画笔可单步跟踪、断点跟踪应用程序,并可在程序

执行过程中手工修改变量的取值,该画笔用于程序调试及排错。

19)运行窗口画笔(Run Window):它可以直接运行独立的窗口,有利于提高应用

程序的开发效率。

20)报表画笔(Report Painter):报表画笔用于生成各种风格的报表。缺省情况下

(即初始安装情况下),报表画笔没有直接出现在PowerBuilder6.0的画笔工具栏上,但我们可以通过单击画笔栏上带箭头图标(即第一个图标)上的箭头,打开图标列表,单击其中的“Report ”图标,启动报表画笔。

21)运行(Run):在PowerBuilder开发环境中运行应用程序。

2、编译

创建可执行文件应用程序经过设计、开发、调试和试运行,排除了明显的与潜在的错误并达到预期功能后,就到了向用户交付应用程序的时候了。在应用交付之前,还有一件重要工作要做,就是要把应用程序编译成可执行文件,这样用户就能够像运行其它软件那样运行你开发的应用程序了。创建可执行文件的唯一途径是使用PowerBuilder的工程画笔(ProjectPainter),利用该画笔,我们既可以把应用程序中的所有对象都包含到独立的可执行文件中,也能够把应用程序编译成一个可执行文件和多个PowerBuilder动态库。工程画笔能够编译出两类可执行文件:机器代码的可执行文件和伪代码(P-Code)的可执行文件。另外,使用工程画笔,既可以把应用程序中的类用户对象转变成C++代码的源程序或库,也可以生成分布式应用程序中的代理(Proxy)。下面介绍可执行文件的创建方法并说明动态库的作用。12.5.1 创建可执行文件的一般步骤工程画笔是把PowerBuilder应用程序编译成可执行文件的唯一工具。创建可执行文件时,一般需要经过下述步骤:

a.创建新工程或打开已有工程;

b.设置各种编译选项;

c.生成可执行文件。

编译选项:

?“Executable File Name”编辑框用于指定编译后的可执行文件的存放路径及名称。你可以直接键入文件名,也可以单击编辑框后面的标识为三个小点的按钮

后从打开的对话框中选择一个文件名;

?“Resource File Name”编辑框用于指定可执行文件和动态库使用的资源文件名。你可以直接键入文件名,也可以单击编辑框后面的标识为三个小点的按钮

后从打开的对话框中选择一个文件名;

?“Project Build Options ”组框用于设置建立工程的方式,其中,选中“Prompt for Overwrite”复选框后,建立工程过程中有文件被覆盖时,系统将预先给予

提示,否则不提示;“Rebuild”下拉列表框用于指定以增量方式还是完整重建

方式生成工程,选项“Incremental”为增量方式,“Full”为完整重建方式,增

量方式只重新生成上次编译后修改过的对象,因此速度更快一些,而完整重建

方式则重新生成所有对象;选中“Open Server Executable”复选框表示将使用

“OpenClientServer”驱动程序建立分布式服务器应用程序,否则建立普通的

可执行文件。

?“Code Generation Options ”组框用于设置代码生成选项。选中复选框“Machine Code”时后,可以把应用程序编译成机器代码,否则应用程序编译

成PowerBuilder伪代码格式(P-Code)。该组框中其它选项的意义为:

a.“Trace Information”复选框指定是否在可执行代码中包含调试信息,选中

时包含调试信息,否则不包含。该选项只对生成机器代码的可执行文件有

效,对伪代码格式的可执行文件来说,总是包含调试信息。一般来说,最

终交付用户时,不要选中该选项,这样将缩短可执行文件的长度。

b.“Error Context Information”复选框指定程序运行出错时是否显示上下文

相关的出错信息,该选项只对生成机器代码的可执行文件有效。

c.“Excutable Format”下拉列表框指定可执行文件的代码格式。对Windows

系统来说,选择“Native”时编译成本机形式(32位),选择“16-Bit”时

编译成16位格式。对Macintosh系统来说,有效选项为PowerPC、68K、

或Fat(既可以在PowerPC、也可以在68K上运行的可执行文件格式)。

d.“Optimization”下拉列表框指定代码优化方式。其中“Speed”优化运行

速度,当速度对应用程序十分重要时选择该选项;“Space”优化空间,当

内存不宽余时选择该选项;“No Optimization”不做优化,当采用其它优化

方式存在问题时选择该选项,这样有利于发现问题。

?工作区下部“Library”区域列出了应用程序中使用的应用库,如果我们想把某个库编译成PowerBuilder动态库PBD(对编译成伪代码的情况)或DDL(对

编译成机器代码的情况),然后与可执行文件一起发行,那么在“PBD”或“DDL”

列选中相应的复选框。“PBD”或“DDL”列实际上是一个列,如果当前的编

译方式是伪代码方式,则该列显示为“PBD”,如果当前的编译方式是机器代

码方式,则该列显示为“DDL”。

?同样,对每一个动态库,我们也可以在“Resource File Name”列的相应行上指定资源文件的名称,其意义和作用与在“Resource File Name”编辑框中指

定资源文件名相同。

?生成可执行文件按照前面的介绍设置工程的各种选项后,就可以生成可执行文件了,其方法很简单:单击工程画笔工具栏上的“Build”图标,系统显示“Build

Library”对话框,根据工程设置重新生成对象,此时最好不要通过单击“Stop”

按钮停止重新生成对象过程,否则可能会破坏应用库的完整性。稍过片刻,系

统即生成可执行文件,生成过程中如果发现错误,系统会及时给予提示。

3、简单问题查找定位

如何查询”住院系统床位设置维护”程序?

三、PB数据导入、导出

1、打开表,用SAVE AS 将表内数据保存为另一格式

Save Rows As──打开“Save As(另存为)”对话框,用户选择路径、文件名及文件类型后将数据窗口中的数据保存到指定文件中;

2、用DATD PIPELINE将当前库中的一个表内的数据导出到另一个库中

数据管道提供了在数据库内部、数据库之间,甚至不同的数据库管理系统之间快速复制数据的简便途径。利用数据管道复制数据的过程称之为灌入数据(Piping Data)。数据管道可以完成普通方法难以完成的任务,比如:

把一个或多个表中的数据灌入到相同DBMS或不同DBMS的一个表中。例如,它可以把Oracle数据库实例OO的一个或多个表中的数据复制到Oracle数据库另一个实例OR的一个表中,也能够将这些数据灌入到Sybase数据库中。而且,在复制数据时,数据管道可以把表的属性一起复制。

把整个表一次性地复制到另一个数据库中,当然,需要时也可以把PowerBuilder的资源库(Repository Table)复制到另一个数据库中,这在部署使用动态数据窗口的应用程序时特别有用,它使开发环境和应用环境达到高度的一致。

创建一个与原表有相同结构,但不包含数据的表,即复制表结构。

将网络数据库服务器上的数据复制到本地的SQL Anywhere数据库中,这样用户就可以使用客户机本地的数据库而无须每次都使用网络,减轻了网络的通讯压力。提供了在修改表结构的同时保留表中数据的另一种手段。用数据库画笔或表画笔修改表时,有些选项不能修改,比如,大多数数据库不允许把空列(NULL)修改为非空列(NO NULL)。此时,我们可以用数据管道创建一个新表,新表与原表的结构相同,但属性按我们的需要设置。用数据管道复制数据时,可以复制表中所有数据,也可以复制部分数据,甚至还可以复制出加工了的数据。数据管道是PowerBuilder的一个对象,它的使用方法有两种:

(1).用数据管道画笔创建数据管道对象,然后在数据管道画笔中运行数据管道对象;

(2).用数据管道画笔创建并保存数据管道对象,用用户对象画笔定义出基于数据管道

对象的用户对象,编写需要的事件处理程序,在代码中运行管道。无论哪种方法,使用之前

都需要首先创建数据管道对象。创建数据管道对象时,需要确定下述选项:

◆源数据库

◆目的数据库

◆要从中复制数据的源表

◆要存放数据的目的表

◆要执行的数据管道操作类型

◆运行数据管道时事务提交的频率

◆容许出现的最多错误数

◆是否要把表的扩展属性一起传送到目的数据库中

实际上,上述选项的结果都将包含到数据管道对象中(Data Pipeline Painter)。

3、用ROWS中的IMPORT 导入数据

(1). 从“Rows”菜单选择“Import”菜单项,系统显示“Select Import File”对话框,选择用制表符分隔的文本文件类型或Dbase文件类型,然后选择数据文件;

(2). 单击“打开”按钮,数据被插入到数据操作画笔中。

4、用SQL 语句生成表

如当前连接库为HIS221,则使用select * into temp from his221..yk_rk01可产生temp表,内容与his221..yk_rk01相同

四、数据操纵语言(DML)

数据操纵语言是指用来查询、添加、修改和删除数据库中数据的语句,这些语句包括SELECT、INSERT、UPDA TE、DELETE等。在默认情况下,只有sysadmin、dbcreator、db_owner 或db_datawriter等角色的成员才有权利执行数据操纵语言。

1、SELECT语句

SELECT语句的语法形式如下:

SELECT select_list

[ INTO new_table ]

FROM table_source

[ WHERE search_condition ]

[ GROUP BY group_by_expression ]

[ HA VING search_condition ]

[ ORDER BY order_expression [ ASC | DESC ] ]

[COMPUTE clause]

[FOR BROWSE]

几种常用语句的用法

?SELECT子句用于指定所选择的要查询的特定表中的列,它可以是星号(*)、表达式、列表、变量等。

?INTO子句用于指定所要生成的新表的名称。

?FROM子句用于指定要查询的表或者视图,最多可以指定16个表或者视图,用逗号相互隔开。

?WHERE子句用来限定查询的范围和条件。

?GROUP BY子句是分组查询子句。

?HA VING子句用于指定分组子句的条件。

?GROUP BY子句、HA VING子句和集合函数一起可以实现对每个组生成一行和一个汇总值。

?ORDER BY子句可以根据一个列或者多个列来排序查询结果,在该子句中,既可以使用列名,也可以使用相对列号。

?ASC表示升序排列,DESC表示降序排列。

?COMPUTE子句使用集合函数在查询的结果集中生成汇总行。

?COMPUTE BY子句用于增加各列汇总行。

程序清单2-4:显示居住在加利福尼亚州且姓名不为McBadden 的作者列。

SELECT au_fname, au_lname, phone AS Telephone

FROM authors

WHERE state = 'CA' and au_lname <> 'McBadden'

ORDER BY au_lname ASC, au_fname ASC

使用两个相关子查询查找作者姓名,这些作者至少参与过一本受欢迎的计算机书籍的创作。

SELECT au_lname, au_fname

FROM authors

WHERE au_id IN

(SELECT au_id

FROM titleauthor

WHERE title_id IN

(SELECT title_id

FROM titles

WHERE type = 'popular_comp'))

显示含有本年度截止到现在的当前销售额的行,然后按type以递减顺序计算书籍的平均价格和预付款总额。

SELECT CAST(title AS char(20)) AS title, type, price, advance

FROM titles

WHERE ytd_sales IS NOT NULL

ORDER BY type DESC

COMPUTE A VG(price), SUM(advance) BY type

COMPUTE SUM(price), SUM(advance)

●SELECT 计算查询小结

COUNT(*)计算元组的个数

COUNT(列名)对此列中值计算个数

SUM(列名)求此一列值的总和(此列值是数值型)

A VG(列名)求此一列值的平均值(此列值是数值型)

MAX(列名)求此一列值中的最大值

MIN(列名)求此一列值中的最小值

统计选修了课程的学生的人数

SELECT COUNT(DISTINCT ST_NO)

FROM SCORE

注意:这里一定要用DISTINCT ,因为有的学生可能选修了多门课程,但是统计是按一个人统计,所以要用DISTINCT进行过滤

2、INSERT 语句

●语法形式

INSERT INTO 表名(列名1 ,列名2 . . .)V ALUES (列值1,列值2. . .)

将数据插入SQL的基本表有两种方法:

一种是单元组的插入,另种是多元组的插入

●单元组的插入

向基本表SCORE中插入一个成绩元组(100002,C02,95),可以使用下面的语句:INSERT INTO SCORE (ST_NO,SU_NO,SCORE)

V ALUES(‘100002’,’C02’,95)

●多元组的插入

这是一种将SELECT 语句查询结果插入到某个已知的的基本表中的方法

如:需要在表SCORE中求出每个学生的平均成绩,并且保留在某个表中。

INSERT INTO STU_A VGGRADE(ST_NO,AGE_GRADE)

SELECT ST_NO,A VG(SCORE)

FROM SCORE

GROUP BY SCORE//因为要求每一个学生所有课程的平均成绩,必须按学号进行分组进行计算。

3、DELETE 语句

SQL 的删除操作是指从基本表中删除满足WHERE<条件表达式>的记录。如果没有WHERE子句,则删除表中的全部记录,但表结构仍然存在。

DELETE FROM 表名[WHERE 表达式] 包括:

●单元组的删除

●多元组的删除

●带子查询的删除

●单元组的删除

把学号为100002的学生从学生表STUDENT中删除

DELETE FROM STUDENT

WHERE ST_NO = ‘100002’//因为学号为100002的学生在表中只有一个,所以为单元组删除

●多元组删除

学号为100002的成绩从表SCORE中删除

DELETE FROM SCORE

WHERE ST_NO =‘100002’//因为学号为100002的学生SCORE有多个,所以为多元组删除

●带子查询的删除

删除所有不及格学生记录,可用:

DELETE FROM STUDENT

WHERE st_no in

(select st_no from score where score<60)

4、Update 语句

修改语句是按SET子句中的表达式,在指定表中修改满足条件表达式的记录的相应的值。其语句格式如下:

UPDATE 表名SET 列名= 列改变值[WHERE 表达式]

●把课程C02改成课程名英语

update subject set su_subject =‘英语’ where su_no = ‘C02’

●将课程成绩达到70分的学生成绩,再提高10%

UPDATE SCORE SET SCORE = 1.1*SCORE WHERE SCORE >70

SQL 的删除语句和修改语句中的WHERE字句用法与SELECT用法同。

常用SQL语句大全

常用SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 DROP database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2…from tab_old definition only 5、说明:删除新表 DROP table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键:Alter table tabname DROP primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:DROP index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:DROP view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、说明:几个高级查询运算词

SQL Server2000常用语句

SQL Server 2000常用命令,语法使用方法 (1) 数据记录筛选: sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]" sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]" sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]" sql="select * from 数据表 where 字段名 in ('值1','值2','值3')" sql="select * from 数据表 where 字段名 between 值1 and 值2" (2) 更新数据记录: sql="update 数据表 set 字段名=字段值 where 条件表达式" sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式" (3) 删除数据记录: sql="delete from 数据表 where 条件表达式" sql="delete from 数据表" (将数据表所有记录删除) (4) 添加数据记录: sql="insert into 数据表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)" sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表) (5) 数据记录统计函数: AVG(字段名) 得出一个表格栏平均值 COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计 MAX(字段名) 取得一个表格栏最大的值 MIN(字段名) 取得一个表格栏最小的值 SUM(字段名) 把数据栏的值相加 引用以上函数的方法:

最新SAS中的SQL语句大全

SAS中的SQL语句完全教程之一:SQL简介与基本查询功能 本系列全部内容主要以《SQL Processing with the SAS System (Course Notes)》为主进行讲解,本书是在网上下载下来的,但忘了是在哪个网上下的,故不能提供下载链接了,需要的话可以发邮件向我索取,我定期邮给大家,最后声明一下所有资料仅用于学习,不得用于商业目的,否则后果自负。 1 SQL过程步介绍 1.1 SQL过程步可以实现下列功能: 查询SAS数据集、从SAS数据集中生成报表、以不同方式实现数据集合并、创建或删除SAS 数据集、视图、索引等、更新已存在的数据集、使得SAS系统可以使用SQL语句、可以和SAS的数据步进行替换使用。注意,SQL过程步并不是用来代替SAS数据步,也不是一个客户化的报表工具,而是数据处理用到的查询工具。 1.2 SQL过程步的特征 SQL过程步并不需要对每一个查询进行重复、每条语句都是单独处理、不需要print过程步就能打印出查询结果、也不用sort过程步进行排序、不需要run、要quit来结束SQL过程步 1.3 SQL过程步语句 SELECT:查询数据表中的数据 ALTER:增加、删除或修改数据表的列 CREATE:创建一个数据表 DELETE:删除数据表中的列 DESCRIBE:列出数据表的属性 DROP:删除数据表、视图或索引 INSERT:对数据表插入数据 RESET:没用过,不知道什么意思 SELECT:选择列进行打印 UPDATE:对已存在的数据集的列的值进行修改 2 SQL基本查询功能 2.1 SELECT语句基本语法介绍 SELECT object-item <, ...object-item> FROM from-list > >; 这里SELECT:指定被选择的列 FROM:指定被查询的表名 WHERE:子数据集的条件

ORACLE常用SQL语句大全

ORACLE常用SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:/mssql7backup/MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not nul l],..) 根据已有的表创建新表: A:select * into table_new from table_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only<仅适用于Oracle> 5、说明:删除表 drop table tablename

6、说明:增加一个列,删除一个列 A:alter table tabname add column col type B:alter table tabname drop column colname 注:DB2DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、添加主键: Alter table tabname add primary key(col) 删除主键: Alter table tabname drop primary key(col) 8、创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、创建视图:create view viewname as select statement 删除视图:drop view viewname 10、几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、几个高级查询运算词 A:UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B:EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。 C:INTERSECT 运算符 INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。 注:使用运算词的几个查询结果行必须是一致的。 12、使用外连接

数据库基本SQL语句大全

数据库基本SQL语句大全 数据库基本----SQL语句大全 一、基础 1、说明:创建数据库 Create DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1、d at' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 typ e2 [not null],、、) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2…from tab_old definit ion only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的就是增加varchar类型的长度。 7、说明:添加主键: Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col…、) 删除索引:drop index idxname 注:索引就是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement

SAS中的SQL语句大全

S A S中的S Q L语句完全教程之一:S Q L简介与基本查询功能本系列全部内容主要以《SQLProcessingwiththeSASSystem(CourseNotes)》为主进行讲解,本书是在网上下载下来的,但忘了是在哪个网上下的,故不能提供下载链接了,需要的话可以发邮件向我索取,我定期邮给大家,最后声明一下所有资料仅用于学习,不得用于商业目的,否则后果自负。 1SQL过程步介绍 过程步可以实现下列功能: 查询SAS数据集、从SAS数据集中生成报表、以不同方式实现数据集合并、创建或删除SAS数据集、视图、索引等、更新已存在的数据集、使得SAS系统可以使用SQL 语句、可以和SAS的数据步进行替换使用。注意,SQL过程步并不是用来代替SAS数据步,也不是一个客户化的报表工具,而是数据处理用到的查询工具。 过程步的特征 SQL过程步并不需要对每一个查询进行重复、每条语句都是单独处理、不需要print 过程步就能打印出查询结果、也不用sort过程步进行排序、不需要run、要quit来结束SQL过程步 过程步语句 SELECT:查询数据表中的数据 ALTER:增加、删除或修改数据表的列 CREATE:创建一个数据表 DELETE:删除数据表中的列 DESCRIBE:列出数据表的属性 DROP:删除数据表、视图或索引

RESET:没用过,不知道什么意思 SELECT:选择列进行打印 UPDATE:对已存在的数据集的列的值进行修改 2SQL基本查询功能 语句基本语法介绍 SELECTobject-item<,...object-item> FROMfrom-list > >; 这里SELECT:指定被选择的列 FROM:指定被查询的表名 WHERE:子数据集的条件 GROUPBY:将数据集通过group进行分类 HAVING:根据GROUPBY的变量得到数据子集 ORDERBY:对数据集进行排序 语句的特征 选择满足条件的数据、数据分组、对数据进行排序、对数据指定格式、一次最多查询32个表。这里还要提到的就是,在SAS系统中,对于表名和变量名一般不超过32个字符,对于库名,文件引用名,格式等不能超过8个字符 关键字 Validate关键字只存在于select语句中、可以在不运行查询的情况下测试语句的语

SQL常用语法及例子精简——快速入手

sql语言 库表的增删改查常用语及语法 (1)数据记录筛选: sql="select*from 数据表where 字段名=字段值orderby字段名[desc]" sql="select*from 数据表where 字段名like'%字段值%'orderby字段名[desc]" sql="selecttop10*from 数据表where 字段名orderby字段名[desc]" sql="select*from 数据表where 字段名in('值1','值2','值3')" sql="select*from 数据表where 字段名between 值1and 值2" (2)更新数据记录: sql="update 数据表set 字段名=字段值where 条件表达式" sql="update 数据表set 字段1=值1,字段2=值2……字段n=值nwhere条件表达式" (3)删除数据记录: sql="de letefrom数据表where 条件表达式" sql="de letefrom数据表"(将数据表所有记录删除) (4)添加数据记录: sql="insertinto数据表(字段1,字段2,字段3…)values(值1,值2,值3…)" sql="insertinto目标数据表select*from 源数据表"(把源数据表的记录添加到目标数据表) (5)数据记录统计函数: AVG(字段名)得出一个表格栏平均值 COUNT(*|字段名)对数据行数的统计或对某一栏有值的数据行数统计 MAX(字段名)取得一个表格栏最大的值 MIN(字段名)取得一个表格栏最小的值 SUM(字段名)把数据栏的值相加 引用以上函数的方法: sql="selectsum(字段名)as 别名from 数据表where 条件表达式" setrs=conn.excute(sql) 用rs("别名")获取统的计值,其它函数运用同上。 (6)数据表的建立和删除: CREATETABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度)……) 例:CREATETABLEtab01 (namevarchar (50), datetimedefaultnow ()) DROPTABLE 数据表名称(永久性删除一个数据表) 4.记录集对象的方法: rs.movenext将记录指针从当前的位置向下移一行 rs.moveprevious将记录指针从当前的位置向上移一行 rs.movefirst将记录指针移到数据表第一行 rs.movelast将记录指针移到数据表最后一行 rs.absoluteposition=N 将记录指针移到数据表第N 行 rs.absolutepage=N 将记录指针移到第N 页的第一行 rs.pagesize=N 设置每页为N 条记录 rs.pagecount根据pagesize的设置返回总页数 rs.recordcount返回记录总数 rs.bof返回记录指针是否超出数据表首端,true 表示是,false 为否

SQL常用语句+举例

SQL 常用语句+举例 相关表: 1. distinct: 剔除重复记录 例:select distinct stroe_name from Store_information 结果: 2. And / or: 并且/或 例:在表中选出所有sales 高于$1000或是sales 在$275及$500之间的记录 Select store_name ,sales from Store_information Where sales>1000 Or (sales>275 and sales <500) 3. 例:在表中查找store_name 包含 Los Angeles 或San Diego 的记录 Select * from Store_information where store_name in (‘Los Angeles ’,’San Diego ’) 结果: 4. Between : 可以运用一个范围抓出表中的值

与in 的区别:in 依照一个或数个不连续的值的限制抓出表中的值 例:查找表中介于Jan-06-1999 及Jan-10-1999 中的记录 Select * from Store_information where date between ‘Jan-06-1999’ and ‘Jan-10-1999’ 结果: 5. Like : 让我们依据一个套式来找出我们要的记录 套式通常包含: ’A_Z ’: 所有以A 开头,中间包含一个字符,以Z 结尾的字串 ’ABC%’: 所有以ABC 起头的字串 ’%XYZ ’: 所有以XYZ 结尾的字串 ’%AN%’: 所有包含AN 的字串 例:Select * from Store_information where store_name like ‘%An%’ 结果: 6. Order by: 排序,通常与ASC (从小到大,升序)、DESC (从大到小,降序)结合使用 当排序字段不止一个时,先依据字段1排序,当字段1有几个值相同时,再依据字段2排序 例:表中sales 由大到小列出Store_information 的所有记录 Select Store_name, sales,date from Store_information order by sales desc 结果: 7. 函数:AVG (平均值)、COUNT (计数)、MAX (最大值)、MIN (最小值)、SUM(求和) 语句:select 函数名(字段名) from 表名 例:求出sales 的总和 Select sum(sales) from Store_information 结果 8. COUNT (计数) 例:找出Store_information 表中 有几个store_name 值不是空的记录

SQL语句实例

表操作 例1 对于表的教学管理数据库中的表STUDENTS,可以定义如下:CREATE TABLE STUDENTS, ( SNO NUMERIC (6, 0) NOT NULL, SNAME CHAR (8) NOT NULL, AGE NUMERIC(3,0), SEX CHAR(2), BPLACE CHAR(20), PRIMARY KEY(SNO) ) 例2 对于表的教学管理数据库中的表ENROLLS,可以定义如下:CREATE TABLE ENROLLS ( SNO NUMERIC(6,0) NOT NULL, CNO CHAR(4) NOT NULL, GRADE INT, PRIMARY KEY(SNO,CNO), FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO), FOREIGN KEY(CNO) REFERENCES COURSES(CNO), CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100)) ) 例3 根据表的STUDENTS 表,建立一个只包含学号、姓名、年龄的女学生表。CREATE TABLE GIRL AS SELECT SNO, SNAME, AGE FROM STUDENTS WHERE SEX='女'; 例4 删除教师表TEACHER。 DROP TABLE TEACHER 例5 在教师表中增加住址列。 ALTER TABLE TEACHERS ADD (ADDR CHAR(50))

例6 把STUDENTS表中的BPLACE列删除,并且把引用BPLACE列的所有视图和约束也一起删除。 ALTER TABLE STUDENTS DROP BPLACE CASCADE 例7 补充定义ENROLLS表的主关键字。 ALTER TABLE ENROLLS ADD PRIMARY KEY (SNO,CNO); 视图操作(虚表) 例9 建立一个只包括教师号、姓名和年龄的视图FACULTY。(在视图定义中不能包含ORDER BY子句) CREATE VIEW FACULTY AS SELECT TNO, TNAME, AGE FROM TEACHERS 例10 从学生表、课程表和选课表中产生一个视图GRADE_TABLE,它包括学生姓名、课程名和成绩。 CREATE VIEW GRADE_TABLE AS SELECT SNAME,CNAME,GRADE FROM STUDENTS,COURSES,ENROLLS WHERE STUDENTS.SNO=ENROLLS.SNO AND https://www.360docs.net/doc/eb16495378.html,O=https://www.360docs.net/doc/eb16495378.html,O 例11 删除视图GRADE_TABLE DROP VIEW GRADE_TABLE RESTRICT 索引操作 例12 在学生表中按学号建立索引。 CREATE UNIQUE INDEX ST ON STUDENTS (SNO,ASC) 例13 删除按学号所建立的索引。 DROP INDEX ST 数据库模式操作 例14 创建一个简易教学数据库的数据库模式TEACHING_DB,属主为ZHANG。 CREATE SCHEMA TEACHING_DB AUTHRIZATION ZHANG 例15 删除简易教学数据库模式TEACHING_DB。((1)选用CASCADE,即当删除数据库模式时,则本数据库模式和其下属的基本表、视图、索引等全

50个经典SQL查询语句

--一个题目涉及到的50个Sql语句 --(下面表的结构以给出,自己在数据库中建立表.并且添加相应的数据,数据要全面些. 其中Student表中,SId为学生的ID) ------------------------------------表结构-------------------------------------- --学生表tblStudent(编号StuId、姓名StuName、年龄StuAge、性别StuSex) --课程表tblCourse(课程编号CourseId、课程名称CourseName、教师编号TeaId) --成绩表tblScore(学生编号StuId、课程编号CourseId、成绩Score) --教师表tblTeacher(教师编号TeaId、姓名TeaName) --------------------------------------------------------------------------------- --1、查询“001”课程比“002”课程成绩高的所有学生的学号; Select StuId From tblStudent s1 Where (Select Score From tblScore t1 Where t1.StuId=s1.stuId And t1.CourseId='001')> (Select Score From tblScore t2 Where t2.StuId=s1.stuId And t2.CourseId='002') --2、查询平均成绩大于60分的同学的学号和平均成绩; Select StuId,Avg(Score) as AvgScore From tblScore Group By StuId Having Avg(Score)>60 --3、查询所有同学的学号、姓名、选课数、总成绩; Select StuId,StuName, SelCourses=(Select Count(CourseId) From tblScore t1 Where t1.StuId=s1.StuId), SumScore=(Select Sum(Score) From tblScore t2 Where t2.StuId=s1.StuId) From tblStudent s1 --4、查询姓“李”的老师的个数; Select Count(*) From tblTeacher Where TeaName like '李%' --5、查询没学过“叶平”老师课的同学的学号、姓名; Select StuId,StuName From tblStudent Where StuId Not In ( Select StuID From tblScore sc Inner Join tblCourse cu ON sc.CourseId=cu.CourseId Inner Join tblTeacher tc ON cu.TeaId=tc.TeaId Where tc.TeaName='叶平' ) --6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名; Select StuId,StuName From tblStudent st Where (Select Count(*) From tblScore s1 Where s1.StuId=st.StuId And

数据库经典SQL语句大全

数据库经典SQL语句大全 篇一:经典SQL语句大全 下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk','testBack', 'c:mssql7backupMyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2? from tab_old definition only 5、说明: 删除新表: tabname 6、说明: 增加一个列:Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明: 添加主键:Alter table tabname add primary key(col) 说明: 删除主键:Alter table tabname drop primary key(col) 8、说明: 创建索引:create [unique] index idxname on tabname(col?.) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。

SQL语句大全实例

SQL语句实例 表操作 例 1 对于表的教学管理数据库中的表STUDENTS ,可以定义如下:CREATE TABLE STUDENTS (SNO NUMERIC (6, 0) NOT NULL SNAME CHAR (8) NOT NULL AGE NUMERIC(3,0) SEX CHAR(2) BPLACE CHAR(20) PRIMARY KEY(SNO)) 例 2 对于表的教学管理数据库中的表ENROLLS ,可以定义如下: CREATE TABLE ENROLLS (SNO NUMERIC(6,0) NOT NULL CNO CHAR(4) NOT NULL GRADE INT PRIMARY KEY(SNO,CNO) FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO) FOREIGN KEY(CNO) REFERENCES COURSES(CNO) CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100))) 例 3 根据表的STUDENTS 表,建立一个只包含学号、姓名、年龄的女学生表。 CREATE TABLE GIRL

AS SELECT SNO, SNAME, AGE FROM STUDENTS WHERE SEX=' 女'; 例 4 删除教师表TEACHER 。 DROP TABLE TEACHER 例 5 在教师表中增加住址列。 ALTER TABLE TEACHERS ADD (ADDR CHAR(50)) 例 6 把STUDENTS 表中的BPLACE 列删除,并且把引用BPLACE 列的所有视图和约束也一起删除。 ALTER TABLE STUDENTS DROP BPLACE CASCADE 例7 补充定义ENROLLS 表的主关键字。 ALTER TABLE ENROLLS ADD PRIMARY KEY (SNO,CNO) ; 视图操作(虚表) 例9 建立一个只包括教师号、姓名和年龄的视图FACULTY 。( 在视图定义中不能包含ORDER BY 子句) CREATE VIEW FACULTY AS SELECT TNO, TNAME, AGE FROM TEACHERS 例10 从学生表、课程表和选课表中产生一个视图GRADE_TABLE ,它包括学生姓名、课程名和成绩。 CREATE VIEW GRADE_TABLE AS SELECT SNAME,CNAME,GRADE FROM STUDENTS,COURSES,ENROLLS WHERE STUDENTS.SNO =ENROLLS.SNO AND https://www.360docs.net/doc/eb16495378.html,O=https://www.360docs.net/doc/eb16495378.html,O 例11 删除视图GRADE_TABLE DROP VIEW GRADE_TABLE RESTRICT 索引操作 例12 在学生表中按学号建立索引。 CREATE UNIQUE INDEX ST ON STUDENTS (SNO,ASC) 例13 删除按学号所建立的索引。 DROP INDEX ST 数据库模式操作

50个常用sql语句实例(学生表 课程表 成绩表 教师表)

Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 create table Student(S# varchar(20),Sname varchar(10),Sage int,Ssex varchar(2)) 前面加一列序号: if exists(select table_name from information_schema.tables where table_name='Temp_Table') drop table Temp_Table go select 排名=identity(int,1,1),* INTO Temp_Table from Student go select * from Temp_Table go drop database [ ] --删除空的没有名字的数据库 问题: 1、查询“”课程比“”课程成绩高的所有学生的学号; select a.S# from (select s#,score from SC where C#='001') a,(select s#,score from SC where C#='002') b where a.score>b.score and a.s#=b.s#; 2、查询平均成绩大于分的同学的学号和平均成绩; select S#,avg(score) from sc group by S# having avg(score) >60; 3、查询所有同学的学号、姓名、选课数、总成绩; select Student.S#,Student.Sname,count(SC.C#),sum(score) from Student left Outer join SC on Student.S#=SC.S# group by Student.S#,Sname 4、查询姓“李”的老师的个数; select count(distinct(Tname)) from Teacher where Tname like '李%'; 5、查询没学过“叶平”老师课的同学的学号、姓名; select Student.S#,Student.Sname from Student

SQL SEVER 常用语句

整理了一下,希望对大家有用 SQL语句大全 --语句功能 --数据操作 SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中的数据 --数据定义 CREATE TABLE --创建一个数据库表 DROP TABLE --从数据库中删除表 ALTER TABLE --修改数据库表结构 CREATE VIEW --创建一个视图 DROP VIEW --从数据库中删除视图 CREATE INDEX --为数据库表创建一个索引DROP INDEX --从数据库中删除索引 CREATE PROCEDURE --创建一个存储过程 DROP PROCEDURE --从数据库中删除存储过程CREATE TRIGGER --创建一个触发器 DROP TRIGGER --从数据库中删除触发器CREATE SCHEMA --向数据库添加一个新模式DROP SCHEMA --从数据库中删除一个模式CREATE DOMAIN --创建一个数据值域 ALTER DOMAIN --改变域定义 DROP DOMAIN --从数据库中删除一个域 --数据控制 GRANT --授予用户访问权限 DENY --拒绝用户访问 REVOKE --解除用户访问权限 --事务控制 COMMIT --结束当前事务 ROLLBACK --中止当前事务 SET TRANSACTION --定义当前事务数据访问特征--程序化SQL DECLARE --为查询设定游标 EXPLAN --为查询描述数据访问计划 OPEN --检索查询结果打开一个游标 FETCH --检索一行查询结果 CLOSE --关闭游标 PREPARE --为动态执行准备SQL 语句EXECUTE --动态地执行SQL 语句 DESCRIBE --描述准备好的查询

大数据库基本SQL语句大全

数据库基本_SQL语句大全 学会数据库是很实用D~~记录一些常用的sql语句...有入门有提高有见都没见过的...好全...收藏下... 其实一般用的就是查询,插入,删除等语句而已....但学学存储过程是好事...以后数据方面的东西就不用在程序里搞喽..而且程序与数据库只要一个来回通讯就可以搞定所有数据的操作.... 一、基础 1、说明:创建数据库 Create DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice ‘disk‘, ‘testBack‘, ‘c:\mssql7backup\MyNwind_1.dat‘ --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2…from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col)说明:删除主键:Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围

50个常用的SQL语句练习

基本信息Student(`S#`,Sname,Sage,Ssex) 学生表 Course(`C#`,Cname,`T#`) 课程表 SC(`S#`,`C#`,score) 成绩表 Teacher(`T#`,Tname) 教师表 问题: 1、查询“001”课程比“002”课程成绩高的所有学生的学号; select a.`S#` from (select `S#`,score from SC where `C#`='001') a,(select `S#`,score from SC where `C#`='002') b where a.score>b.score and a.`S#`=b.`S#`; ↑一张表中存在多对多情况的 2、查询平均成绩大于60分的同学的学号和平均成绩; 答案一:select `S#`,avg(score) from sc group by `S#` having avg(score) >60; ↑一对多,对组进行筛选 答案二:SELECT s ,scr FROM (SELECT sc.`S#` s,AVG(sc.`score`) scr FROM sc GROUP BY sc.`S#`) rs WHERE rs.scr>60 ORDER BY rs.scr DESC ↑嵌套查询可能影响效率 3、查询所有同学的学号、姓名、选课数、总成绩; 答案一:select Student.`S#`,Student.Sname,count(`C#`),sum(score) from Student left Outer join SC on Student.`S#`=SC.`S#` group by Student.`S#`,Sname ↑如果学生没有选课,仍然能查出,显示总分null(边界情况) 答案二:SELECT student.`S#`,student.`Sname`,COUNT(sc.`score`) 选课数,SUM(sc.`score`) 总分FROM Student,sc WHERE student.`S#`=sc.`S#` GROUP BY sc.`S#` ↑如果学生没有选课,sc表中没有他的学号,就查不出该学生,有缺陷! 4、查询姓“李”的老师的个数; select count(distinct(Tname)) from Teacher where Tname like '李%'; 5、查询没学过“叶平”老师课的同学的学号、姓名; select Student.`S#`,Student.Sname from Student where `S#` not in (select distinct(SC.`S#`) from SC,Course,Teacher where SC.`C#`=Course.`C#` and Teacher.`T#`=Course.`T#` and Teacher.Tname='叶平'); ↑反面思考Step1:先找学过叶平老师课的学生学号,三表联合查询 Step2:在用not in 选出没学过的 Step3:distinct以防叶平老师教多节课;否则若某同学的几节课都由叶平教,学号就会出现重复 6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名; select Student.`S#`,Student.Sname from Student,SC where Student.`S#`=SC.`S#` and SC.`C#`='001'and exists( Select * from SC as SC_2 where SC_2.`S#`=SC.`S#` and SC_2.`C#`='002' ); ↑注意目标字段`S#`关联 exists subquery 可以用in subquery代替,如下 select Student.`S#`,Student.Sname from Student,Sc where Student.`S#`=SC.`S#` and SC.`C#`='001'and sc.`s#` in ( select sc_2.`s#` from sc as sc_2 where sc_2.`c#`='002' ); ↑不同之处,in subquery此处就不需要关联了

相关文档
最新文档