VFP9.0中SQL语句基础
(三)、查询排序 当需要对查询结果排序时,应该在SELECT语句中使用ORDER BY子句。 ORDER BY 子句包括了一个或多个用于指定排序顺序的列名,排序方式 可以指定,DESC为降序,ASC为升序,缺省时为升序。ORDER BY子句必 须出现在其他子句之后。 例8 查询bm表中的数据,并按bmxh字段排序。 SELECT * FROM bm ORDER BY bmxh 说明:ORDER BY在默认情况下为升序,若要降序排列,命令应改为: SELECT * FROM bm ORDER BY bmxh DESC。 当然也可以增加查询条件:比如查询bmxh前4位为“1701”的数据并 按升序排列,则命令如下: SELECT * FROM bm WHERE bmxh='1701' ORDER BY bmxh 例9 多列指定排序。查询会考成绩库,按会考证号和课程号排序。 SELECT * FROM 085卧龙会考成绩 ORDER BY 会考证号,课程号
(二)、条件查询 当要在表中找出满足某些条件的行时,则需使用WHERE子句指定查询条件。 例3 查询wbk中所有网报日期为2008年8月20日的数据。 SELECT * FROM wbk WHERE wbrq='2008-08-20' 说明:由于这个表中的wbrq字段是字符型的,所以‘2008-08-20’用了引号。 如果wbrq字段是日期型的,则需改为wbrq={^2008-08-20} 例4 查询08年5月卧龙区会考成绩库中课程号为01、等在1-3之间的数据。 SELECT * FROM 085卧龙会考成绩 WHERE 课程号='01' AND 等级 between "1" AND "3" 说明:这里使用了SQL中一个特殊的运算符:between,使用方法是: 字段名称 between 值1 AND 值2
(四)、分组查询 1、GROUP BY子句可以将查询结果按列进行分组。 例10 在会考成绩库中,按会考证号分组查询。 SELECT 会考证号 FROM 085卧龙会考成绩 GROUP BY 会考证号 若要想查到每个考生各报考了几门课程,则需要使用一个聚合函数:COUNT() SELECT 会考证号,COUNT(会考证号) as 报考科数 FROM 085卧龙会考成绩 GROUP BY 会考证号
例5 查询08年5月卧龙区会考成绩库中课程号为01或者02的数据。 SELECT * FROM 085卧龙会考成绩 WHERE 课程号='01' OR 课程号='02' 说明:这里使用了另一个运算符:or,表示或者运算。 例6 查询wbk中xm字段包括“张”的所有数据。 SELECT * FROM wbk WHERE "张"$xm 说明:这里使用了VFP中的一个字符运算符:$,表示在后面的字符表达式 中寻找前面的字符表达式。 例7 查询08年5月卧龙区会考成绩库中会考证号从第5位到第8位为:0206 (即06级八中)的数据。 SELECT * FROM 085卧龙会考成绩 WHERE SUBSTR(会考证号,5,4)='0206' 说明:这里使用了VFP中的一个字符函数:SUBSTR(字符串,起始位置,长 度)。
例13:将会考成绩的纵向表转换为横向表。
SELECT 会考证号,MAX(IIF(课程号='01',等级,'')) as zh,MAX(IIF(课程号='02', 等级,'')) as yw,MAX(IIF(课程号='03',等级,'')) as sx,; MAX(IIF(课程号='04',等级,'')) as wy,MAX(IIF(课程号='05',等级,'')) as wl,MAX(IIF(课程号='06',等级,'')) as hx,; MAX(IIF(课程号='07',等级,'')) as sw,MAX(IIF(课程号='08',等级,'')) as ls,MAX(IIF(课程号='09',等级,'')) as dl; FROM 085卧龙会考成绩 GROUP BY 会考证号
SQL命令主要包括有: ※ 数据查询命令,例如:SELECT语句 ※ 数据定义命令,例如:CREATE、ALTER等语句。 ※ 数据操作命令,例如:INSERT、UPDATE、DELETE 语句。 结合我们在工作中的实际情况,今天我们重点学习一 下SELECT语句和UPDATE语句。
一、SELECT语句 SELECT语句的基本格式:
例15:将课程库中kcdm2字段的内容用课程代码字段的内容前面加上一个 ‘0’替换。 UPDATE kc SET kcdm2 = '0'+ALLTRIM(课程代码) 说明:此语句可用VFP中的REPLACE命令替代: REPLACE kcdm2 WITH '0'+ALLTRIM(课程代码) ALL 例16:将报考库的课程名称字段用课程库中的课程名称字段更新。 SELECT 0 USE j:\所有科目.dbf ALIAS bk SELECT 0 USE j:\kc.dbf UPDATE bk SET bk.总顺序号 = kc.课程名称 from kc WHERE bk.课程 = kc.课程代码
下面我们通过一些具体的例子来了解SELECT查询语句的用法。
(一)、无条件查询 最基本的 SELECT 语句仅有两个部分:要返回的列,和这些列源于的 表。也就是说查询均为不使用WHERE子句的无条件查询。 例1 查询一个表中所有数据。 SELECT * FROM wbk 说明:*号表示返回这个表所有的列。 例2 查询一个表中的某几列数据。 SELECT wbxh,xm,sfzh FROM wbk 说明:可以在列名称后加上AS来为列指定别名。我们想把上个语句中的 wbxh列显示为“网报序号”,xm列显示为“姓名”,sfzh列显示为“身份 证号”,可以将上面的语句修改为: SELECT wbxh as 网报序号,xm as 姓名,sfzh as 身份证号 FROM wbk
表1
函数名称 功能 MIN 求一列中 的最小值 MAX 求一列中的 最大值
常用的聚合函数
SUM 按列计算值 的总和 AVG 按列计算 平均值 COUNT 按列值计个 数 COUNT(*) 返回表中的所 用行数
下面用一个例子说明各个聚合函数的使用方法。
例11 在会考成绩库中,分别计算每一门课程报考了多少人,最高等级,最低 等级,平均等级值,等级总和。 SELECT 课程号,MAX(等级),MIN(等级),AVG(VAL(等级)),SUM(VAL(等级 )),COUNT(会考证号) FROM 085卧龙会考成绩 GROUP BY 课程号 说明:由于表中的等级字段为字符型,所以用了一个VFP的类型转换函数: VAL(),将字符型的值转换为数值型的值进行计算。 2、GROUP BY子句和HAVING子句联合使用,可在分组后按照一定的条件进行筛选。 例12 这个例子是我们在工作中经常遇到的问题,就是查询出wbk中身份证号重 复的数据。 SELECT MAX(wbxh),MAX(xm),sfzh,COUNT(sfzh) as cfs FROM wbk GROUP BY sfzh HAVING cfs>1
二、UPDATE语句 UPDATE语句的基本格式:
UPDATE Target SET Column_Name1 = eExpression1 [, Column_Name2 =eExpression2 ...] [FROM Table] WHERE FilterCondition1 [AND | OR FilterCondition2 ...] 参数说明如下: UPDATE子句用于指定要更新的表。 SET子句指定要进行更新的表中的列及其新值。 WHERE子句用来限定查询的范围和条件。如果省略 WHERE 子句,表 中的每一行都用相同的值更新。
参数说明如下: SELECT子句用于指定所选择的要查询的特定表中的列,它可以是星号(*)、 表达式、聚合函数、变量等。 FROM子句用于指定要查询的表,可以指定多个表,用逗号相互隔开。 WHERE子句句是分组查询子句。 HAVING子句用于指定分组子句的条件。 ORDER BY子句可以根据一个列或者多个列来排序查询结果。 ASC表示升序排列,DESC表示降序排列。 INTO子句用于指定查询结果所存储的方式。
SELECT [Alias.] Select_Item [[AS] Column_Name] FROM Table [[AS] Local_Alias] [WHERE FilterCondition ] [Group By GroupColumn [, GroupColumn ...]] [HAVING FilterCondition] [Order By Order_Item [ASC | DESC] [INTO dbf new_table |cursor temp_table |array array_name]
Visual FoxPro 中SQL命令
卧龙区招生办 尹炳超
SQL概述
SQL全称是“结构化查询语言(Structured Query Language) 。 SQL(Structured Query Language)是一种数据库查询 和程序设计语言,用于存取数据以及查询、更新和管 理关系数据库系统。 SQL语句可以嵌套,这使他具有极大的灵活性和强大的 功能,在多数情况下,在Visual FoxPro中需要一大段 程序实现的功能只需要一个SQL语句就可以达到目的。 Visual FoxPro 支持 SQL 命令。SQL 命令在 Visual FoxPro 9.0 中进一步被充分地予以增强 ,例如支持 多重子查询 ,支持 UPDATE 命令相互关联的更新等。 今天所讲的内容均在Visual FoxPro 9.0环境中运行。
Visual FoxPro 应用基础的sql语言课件
• TO SCREEN:输出到系统屏幕
目的子句实例
SELECT 学号,姓名,性别,出生日期 FROM 学 籍表 INTO CURSOR temp1
• SELECT 学号,姓名,性别,出生日期 FROM 学籍表 INTO table temp2
• SELECT 学号,姓名,性别,出生日期 FROM 学籍表 INTO array temp3
• 格式3: ALTER TABLE <表名> DROP <字段名> – 功能:删除已有字段及其属性,添加或删除主索引、 候选索引、外部关键字、有效性规则,改变表中字 段名称
• 例如:在课程表中加入字段kcxz,类型:字符型,长度:8 – ALTER TABLE kc ADD kcxz C(8)
• 例如:删除课程表中的字段备注bz – ALTER TABLE kc DROP bz
举例
图2
SELECT [ALL | DISTINCT][<别名>.]<SELECT表达式> [AS <列标
题>] FROM [<数据库名!>]<表名> …
举例
图3
图4
图5
常用列函数
• AVG(字段或表达式): 计算列中数值的平均值。 • COUNT(字段或表达式): 计算列中选定项的个数。 • MIN(字段或表达式):计算列中数值的最小值。 • MAX(字段或表达式):字段或表达式最大值。 • SUM(字段或表达式): 计算列中数值的和。 • 例:SELECT SUM(语文),AVG(语文),max(语
SELECT-SQL命令的简化格式
• 格式 SELECT <SELECT表达式> FROM <表子句> [<目标子句>] [<条件子句>] [<分组子句>] [<排序子句>]
第三章 Visual FoxPro 9.0语言基础
制作人:刘 鹏
5
3.2 数据类型
3.2.1字符型
字符型数据包括普通字符型和二进制 字符型两种。
(1)普通字符型
普通字符型简称字符型。它是由ASCⅡ 字符集组成的一个字符串,其长度不超 过254个字节。普通字符型数据若作为 常量使用时,必须用定界符括起来。定 界符分为半角双引号(“”)、半角单引号(‘’) 和半角方括号([])。定界符虽然不作为 常量本身的内容,但它规定了常量的类 型以及常量的起始和终止界限。
制作人:刘 鹏
图3-3 日期型
14
3.2 数据类型
当月或日小于10的时候,写成一位数字或两位都可以, 如上述?{^2010/05/09},也可以简略写成 ?{^2010/5/9}
显示格式可以用一些指令进行设置,如命令“set century on”,可以把年份的格式设成4位,命令执行的 结果将是:05/09/2010。 “set date ymd”命令可以 将显示形式设为yyyy/mm/dd 的显示形式,之后执行 命令“?{^2010/05/09}”,则执行结果将是: 2010/05/09 。同理如再用 “set date ydm”, 则 ?{^2010/05/09} 的执行结果将是:2010/09/05 。
制作人:刘 鹏
18
3.3 常量与变量
3.3.1 常量
常量包括备注型和通用型以外的所有数据类型,主 要有以下几种。
1.数值型常量
由数字、小数点和正负号组成,数据最大长度为20位, 其中小数点占1位,如-18.2、119等,正数可以省略+ 号。
制作人:刘 鹏
19
3.3 常量与变量
2.字符型常量
2、VF基本命令及SQL语句
视图的定义
Create view <视图名> as <查询语句>
视图的删除 Drop view <视图名>
SQL的数据查询功能 嵌套查询
格式:Select 目标列1,目标列2,…… from 表名1 where 字段名; In(select 字段名 from 表名2 where 筛选条件……) 等价于格式: Select 目标列1,目标列2,…… from 表名1 where exists; (select * from 表名2 where 联接条件) SQL的数据查询功能 分组与计算查询 格式:Select <目标列>… from <表名或视图名>… ; [where <筛选条件>] [ order by <排序列> [ASC | DESC] ; [group by <分组列> [having <分组条件>] ]
3.设置当前索引: Set order to [<数值表达式>] 注:0关闭索引,1第一个索引 Set order to [<单索引文件名>] 选择表所在工作区: select <工作区号>|<别名> 功能:从工作区中选择一个作为当前工作区。 说明:Select 0为 选择编号最小且没有使用的工作区为当前工 作区。 (即空闲的最小号工作区)
数据库操作相关命令 表结构的操作相关命令 表记录的操作相关命令基 本 命ຫໍສະໝຸດ 令表记录指针移动的相关命令
索引文件操作相关命令
物理排序 关联的建立: (临时联系)
数据库操作相关命令
建立数据库:create database [Database Name|?] 打开数据库:open database [Filename|?] [exclusive | shared] 修改数据库:modify database [DatabaseName |?] 删除数据库:delete database DatabaseName |? [DeleteTables][Recycle] 关闭数据库:close database
VF中常用SQL命令使用方法
VF中常用SQL命令使用方法SQL(结构化查询语言)是关系型数据库管理系统中最常用的查询语言。
在VF中,使用SQL命令可以对数据库进行增删改查等操作。
以下是VF中常用的SQL命令使用方法:1.创建表格(CREATETABLE):用于创建数据库中的表格。
语法如下:```sqlCREATE TABLE table_namecolumn1 data_type,column2 data_type,...```例如:```sqlCREATE TABLE customersid INT PRIMARY KEY,name VARCHAR(50),age INT,email VARCHAR(100)```2.插入数据(INSERTINTO):用于向表格中插入新的数据。
语法如下:```sqlINSERT INTO table_name (column1, column2, ...)VALUES (value1, value2, ...);```例如:```sqlINSERT INTO customers (id, name, age, email)```3.更新数据(UPDATE):用于更新表格中的数据。
语法如下:```sqlUPDATE table_nameSET column1 = value1, column2 = value2, ...WHERE condition;```例如:```sqlUPDATE customersSET age = 26WHERE id = 1;```4.删除数据(DELETEFROM):用于从表格中删除数据。
语法如下:```sqlDELETE FROM table_name WHERE condition;```例如:```sqlDELETE FROM customers WHERE id = 1;```5.查询数据(SELECT):用于从表格中查询数据。
语法如下:```sqlSELECT column1, column2, ...FROM table_nameWHERE condition;```例如:```sqlSELECT * FROM customers WHERE age > 25;```6.排序数据(ORDERBY):用于按照指定列对查询结果进行排序。
09VFP复习2-sql、查询与视图
14
一、创建本地视图 先打开数据库
1.使用命令: 使用命令: 使用命令 Creat view <视图名 as <select 查询语句 视图名> 查询语句> 视图名
2.用视图设计器 用视图设计器 通过“项目管理器” 通过“项目管理器”打开视图设计器 通过“新建对话框” 通过“新建对话框”打开视图设计器
17
例二52.2 例二
1.创建数据库,添加表。 创建数据库,添加表。 创建数据库 2.打开视图设计器,添加表,选择字段。 打开视图设计器, 打开视图设计器 添加表,选择字段。 3.筛选条件 3.筛选条件: 筛选条件: 字段名 条件 实例 逻辑 chengji.数学 < 60 or 数学 chengji.英语 < 60 or 英语 chengji.信息技术 < 60 信息技术 4.排序依据:xuesheng.学号 降序 排序依据: 排序依据 学号 5.保存视图 保存视图view1。 保存视图 。 6.利用查询设计器对视图 利用查询设计器对视图view1创建查询,查询去向为 创建查询, 利用查询设计器对视图 创建查询 表table2。 。
SELECT … FROM … WHERE <字段名 ; 字段名>; 字段名 BETWEEN <初值 AND <终值 初值> 终值> 初值 终值 查询条件中字段的取值范围 SELECT … FROM … WHERE <C型字段名 ; 型字段名>; 型字段名 [NOT] LIKE <通配符表达式 通配符表达式> 通配符表达式 通配符” 表示0个或任意多个字符 个或任意多个字符; 通配符”%” 表示 个或任意多个字符; 通配符” 表示任意1个字符 个字符。 通配符”_ ” 表示任意 个字符。
VFsql基本语句普通连接
用order关键字对查询结果排序
SELECT …; FROM …; ORDER BY <字段名1> [ASC|DESC] , <字段名2> [ASC|DESC] , … ]
(注:字段名可以用字段序号代替,两种情况)
SELECT * FROM 学生; ORDER BY 年4 龄
SELECT * FROM 学生; ORDER BY 年4龄 DESC
学生.dbf
课程.dbf
教师.dbf
选课.dbf
1.无条件联接查询
学号
学生
姓名 性别 入学成绩
001 李小华 女 525
002 王艳芳 女 510
003 吴海洋 男 508
select * from 学生,选课
学号 001 001 002 003 003
选课
课程号 C001 C004 C001 C001 C003
性别 男 女 男 女
年龄 23 22 22 21
姓名 Tom Alice Bob Bob
Select 性别,学号+姓名;
性别 男
From 学生
女 男
女
Exp_2 001Tom 002Alice 003Bob 004Bob
Where 后接条件表达式,用来指定查询结果包含哪些行。 例:Where 年龄>20 Where 学生.学号=选课.学号
一.简单查询(对单表的查询 )
Select … From …
From 后接表名,指定查询的信息来自于哪些表。
例:From 学生
From 学生,选课,课程
Select 字段名(*)、表达式,用来指定查询结果有那些列。
例:Select * Select 学号,姓名 Select 性别,学号+姓名
在FoxPro如何使用SQL
結果
name Wendy Tobe Eric Patty Kevin Bobby Aaron :
class 1B 1B 1C 1C 1C 1A 1A :
dob 07/09/86 10/17/86 05/05/87 08/13/87 11/21/87 02/16/86 08/02/86 :
II 比較
Class
1A 1A 1B 1A 1B :
逐一檢查
Class
1A
class="1A"
1A 1B
1A
1B
:
I 一般語法
Class
1A
1A
1B
1A
1B
:
選擇三欄
name Peter Mary Johnny Luke Bobby :
Class
1A 1A 1A 1A 1A :
結果
hcode R Y G G B :
結果
name Aaron Janet Paula
class 1A 1B 2A
hcode R R R
III 群組
SELECT ...... FROM ...... WHERE condition ; GROUP BY groupexpr [HAVING requirement]
群組函數: COUNT( ), SUM( ), AVG( ), MAX( ), MIN( )
例8
求出1A班的學生名字,其數學測驗分數 界乎於80至90分之間。
SELECT name, mtest FROM student ; WHERE class="1A" AND ; mtest BETWEEN 80 AND 90
VFP的SQL命令和语句大全
VFP的SQL命令和语句大全SQL——标准的结构化查询语言关系模型数据库管理系统(DBMS)一、数据定义1.CREATE TABLE——定义表结构该命令的一般格式为:CREATE TABLE |dbf <表文件名>(字段名1 字段类型[(字段宽度[,小数位数])][,字段名2 字段类型[(字段宽度[,小数位数])]]……)例:自由表CREATE TABLE xscj(xh c(8),xm c(6),xb c(2),cj n(5,1),ksrq d ,csrq d, bj n(10))例:数据库表CREATE TABLE xscj(xh c(8) primary key ,xm c(6),xb c(2),cj n(5,1),ksrq d,zp g )2.ALTER TABLE (修改表结构)命令格式示例(1)添加字段:ALTER TABLE xscj ADD COLUMN kcmc C(14)(2)重命名字段ALTER TABLE xscj RENAME COLUMN kcmc TO kc(3)删除字段ALTER TABLE xscj DROP COLUMN kc .3.DROP TABLE <表名> //删除表文件(.dbf)二、数据操作语句4.INSERT-SQL命令该命令的一般格式为:INSERT INTO <表名>[(字段名1[,字段名2 ])] VALUES (表达式1[,表达式2 …])例:INSERT INTO xscj(xh,xm,cj)VALUES ("81991001", "张良", 85.5)5.UPDATE-SQL 命令。
功能:对符合条件的记录修改字段的值命令格式:UPDATE <表名> SET 字段 1 = 表达式 1 [,字段 2 = 表达式 2 …] [ WHERE 条件表达式][ WHERE 条件表达式]缺省,默认当前一条记录例:UPDATE xscj SET cj = cj*1.05 WHERE cj>805.DELETE-SQL 命令。
VFP的SQL命令和语句大全
VFP的SQL命令和语句大全VFP的SQL命令和语句大全SQL——标准的结构化查询语言关系模型数据库管理系统(DBMS)一、数据定义1.CREATE TABLE——定义表结构该命令的一般格式为:CREATE TABLE |dbf <表文件名>(字段名1 字段类型[(字段宽度[,小数位数])][,字段名2 字段类型[(字段宽度[,小数位数])]]……)例:自由表CREATE TABLE xscj(xh c(8),xm c(6),xb c(2),cj n(5,1),ksrq d ,csrq d, bj n(10))例:数据库表CREATE TABLE xscj(xh c(8) primary key ,xm c(6),xb c(2),cj n(5,1),ksrq d,zp g )2.ALTER TABLE (修改表结构)命令格式示例(1)添加字段:ALTER TABLE xscj ADD COLUMN kcmc C(14)(2)重命名字段ALTER TABLE xscj RENAME COLUMN kcmc TO kc(3)删除字段ALTER TABLE xscj DROP COLUMN kc .3.DROP TABLE <表名> //删除表文件(.dbf)二、数据操作语句4.INSERT-SQL命令该命令的一般格式为:INSERT INTO <表名>[(字段名1[,字段名2 ])] VALUES (表达式1[,表达式2 …])例:INSERT INTO xscj(xh,xm,cj)VALUES ("81991001", "张良", 85.5)5.UPDATE-SQL 命令。
功能:对符合条件的记录修改字段的值命令格式:UPDATE <表名> SET 字段 1 = 表达式 1 [,字段 2 = 表达式2 …] [ WHERE 条件表达式][ WHERE 条件表达式]缺省,默认当前一条记录例:UPDATE xscj SET cj = cj*1.05 WHERE cj>805.DELETE-SQL 命令。
VF常用SQL语句大全
VF常用SQL语句大全(1)SQL是结构化查询语言,查询是SQL语言的重要组成部分,但不是全部,SQL还包括数据定义,数据操纵和数据控制功能等部分.如今SQL已成为关系数据库的标准数据语言,所以现在的关系数据库管理系统都支持SQL.FOXPRO从2.5 FOR DOS版式就开始支持SQL,现在VISUAL FOXPRO当然在之方面更加完善,以下是VF经常用到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 --定义当前事务数据访问特征--程序化SQLDECLARE --为查询设定游标EXPLAN --为查询描述数据访问计划OPEN --检索查询结果打开一个游标FETCH --检索一行查询结果CLOSE --关闭游标PREPARE --为动态执行准备SQL 语句EXECUTE --动态地执行SQL 语句DESCRIBE --描述准备好的查询---局部变量declare @id char(10)--set @id = 10010001select @id = 10010001---全局变量---必须以@@开头--IF ELSEdeclare @x int @y int @z intselect @x = 1 @y = 2 @z=3if @x > @yprint x > y --打印字符串x > yelse if @y > @zprint y > zelse print z > y--CASEuse panguupdate employeeset e_wage =casewhen job_level = ’1’ then e_wage*1.08when job_level = ’2’ then e_wage*1.07when job_level = ’3’ then e_wage*1.06else e_wage*1.05end--WHILE CONTINUE BREAKdeclare @x int @y int @c intselect @x = 1 @y=1while @x < 3beginprint @x --打印变量x 的值while @y < 3beginselect @c = 100*@x + @yprint @c --打印变量c 的值select @y = @y + 1endselect @x = @x + 1select @y = 1end--WAITFOR--例等待1 小时2 分零3 秒后才执行SELECT 语句waitfor delay ’01:02:03’select * from employee--例等到晚上11 点零8 分后才执行SELECT 语句waitfor time ’23:08:00’select * from employee***SELECT***select *(列名) from table_name(表名) where column_name operator valueex:(宿主)select * from stock_information where stockid = str(nid)stockname = str_namestockname like % find this %stockname like [a-zA-Z]% --------- ([]指定值的范围)stockname like [^F-M]% --------- (^排除指定范围)--------- 只能在使用like关键字的where子句中使用通配符)or stockpath = stock_pathor stocknumber < 1000and stockindex = 24not stock*** = manstocknumber between 20 and 100stocknumber in(10,20,30)order by stockid desc(asc) --------- 排序,desc-降序,asc-升序order by 1,2 --------- by列号stockname = (select stockname from stock_information where stockid = 4)--------- 子查询--------- 除非能确保内层select只返回一个行的值,--------- 否则应在外层where子句中用一个in限定符select distinct column_name form table_name --------- distinct指定检索独有的列值,不重复select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_nameselect stockname , "stocknumber" = count(*) from table_name group by stockname--------- group by 将表按行分组,指定列中有相同的值having count(*) = 2 --------- having选定指定的组select *from table1, table2where table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null表示table1.id =* table2.id -------- 右外部连接select stockname from table1union [all] ----- union合并查询结果集,all-保留重复行select stockname from table2***insert***insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")value (select Stockname , Stocknumber from Stock_table2)---value为select语句***update***update table_name set Stockname = "xxx" [where Stockid = 3]Stockname = defaultStockname = nullStocknumber = Stockname + 4***delete***delete from table_name where Stockid = 3truncate table_name ----------- 删除表中所有行,仍保持表的完整性drop table table_name --------------- 完全删除表***alter table*** --- 修改数据库表结构alter table database.owner.table_name add column_name char(2) null .....sp_help table_name ---- 显示表已有特征create table table_name (name char(20), age smallint, lname varchar(30))insert into table_name select ......... ----- 实现删除列的方法(创建新表)alter table table_name drop constraint Stockname_default ---- 删除Stockname的default约束***function(/*常用函数*/)***----统计函数----AVG --求平均值COUNT --统计数目MAX --求最大值MIN --求最小值SUM --求和--AVGuse panguselect avg(e_wage) as dept_avgWagefrom employeegroup by dept_id--MAX--求工资最高的员工姓名use panguselect e_namefrom employeewhere e_wage =(select max(e_wage)from employee)。
