SQL非常全面的入门教程


    SQL语言快速入门


    入门教程 2
    SQL语言快速入门 2
    SQL语言快速入门二 3
    SQL语言快速入门三 5
    基础教程 10
    SQL数操作基础(初级)1 10
    SQL数操作基础(初级)2 13
    SQL数操作基础(初级)3 16
    SQL数操作基础(初级)4 20
    SQL数操作基础(初级)5 25
    SQL数操作基础(中级) 27
    SQL数操作基础(中级)1 27
    SQL数操作基础(中级)2 28
    SQL数操作基础(中级)3 31
    SQL数操作基础(中级)4 35
    SQL数操作基础(中级)5 39
    全面接触SQL 44
    全面接触SQL语法(1) 44
    全面接触SQL语法(2) 46
    全面接触SQL语法(3) 47
    全面接触SQL语法(4) 49
    全面接触SQL语法(5) 51
    全面接触SQL语法(6) 53
    全面接触SQL语法(7) 55
    SQL语法详解 59
    SQL语句详解(1) 59
    SQL语句详解(2) 63
    SQL语法参考手册 67
    SQL实践 71
    SQL实践(1) 71
    SQL实践(2) 75
    Sql连接查询 80



    入门教程
    SQL语言快速入门
    SQL英文Structured Query Language缩写意思结构化查询语言SQL语言功种数库建立联系进行沟通ANSI(美国国家标准协会)规定SQL作关系型数库理系统标准语言SQL语句执行种样操作例更新数库中数数库中提取数等目前绝数流行关系型数库理系统Oracle Sybase Microsoft SQL Server Access等采SQL语言标准然数库SQL语句进行开发扩展包括Select Insert Update Delete CreateDrop标准SQL命令然完成数库操作面详细介绍SQL语言基知识
    数库表格
    典型关系型数库通常称作表格象组成数库中数信息保存数库表格中数库中表格具唯表格名称行列组成中列包括该列名称数类型列属性等信息行具体包含某列记录数名天气数库表格实例
    城市 高气温 低气温
    北京 10 5
    海 15 8
    天津 8 2
    重庆 20 13
    该表格中城市 高气温低气温三列表格中行包含具体表格数
    数查询
    众SQL命令中select语句应该算频繁Select语句数库进行查询返回符合户查询标准结果数Select语句语法格式:
    select column1 [ column2etc] from tablename
    [where condition]
    ([]表示选项)
    select语句中位select关键词列名决定列作查询结果返回户需选择意列通配符*设定返回表格中列
    select语句中位from关键词表格名称决定进行查询操作目标表格
    Select语句中where选句规定数值行作查询结果返回显示
    where条件句中运算符设定查询标准:

    >
    <
    >等
    <等
    <>等
    面提运算符外LIKE运算符where条件句中非常重LIKE运算符功非常强通LIKE运算符设定选择户规定格式相记录外通配符代字符串举例:
    select firstname lastname city
    from employee
    where firstname LIKE E’
    (注意字符串必须包含单括号)
    述SQL语句会查询名称E开头姓名者通语句:
    select * from employee
    where firstname May’
    查询名称May行
    SQL语言快速入门二
    创建表格
    SQL语言中create table语句建立新数库表格Create table语句格式:
    create table tablename
    (column1 data type
    column2 data type
    column3 data type)
    果户希建立新表格时规定列限制条件选条件选项:
    create table tablename
    (column1 data type [constraint]
    column2 data type [constraint]
    column3 data type [constraint])
    举例:
    create table employee
    (firstname varchar(15)
    lastname varchar(20)
    age number(3)
    address varchar(30)
    city varchar(20))
    简单说创建新表格时关键词create table面加入建立表格名称然括号次设定列名称数类型选限制条件等注意SQL语句结尾处符号
    SQL语句创建数库表格表格中列名称必须字母开头面字母数字划线名称长度超30字符注意户选择表格名称时SQL语言中保留关键词select create insert等作表格列名称
    数类型设定某具体列中数类型例姓名列中采varcharchar数类型number数类型
    SQL语言中较常数类型:
    char(size):固定长度字符串中括号中size设定字符串长度Char类型长度255字节
    varchar(size):变长度字符串长度size设定
    number(size):数字类型中数字位数size设定
    Date:日期类型
    number(sized):数字类型size决定该数字总位数d设定该数字数点位数
    创建新表格时需注意点表格中列限制条件谓限制条件特定列输入数时必须遵守规例unique限制条件求某列中存两值相记录记录值必须唯unique外较常列限制条件包括not nullprimary key等Not null规定表格中某列值空Primary key表格中记录规定唯标识符
    表格中插入数
    SQL语言insert语句数库表格中插入添加新数行Insert语句格式:
    insert into tablename
    (first_columnlast_column)
    values (first_valuelast_value)
    例:
    insert into employee
    (firstname lastname age address city)
    values (Li’ Ming’ 45 No77 Changan Road’ Beijing)
    简单说数库表格中添加新记录时关键词insert into面输入添加表格名称然括号中列出添加新值列名称关键词values面前面输入列序应输入添加记录值
    更新记录
    SQL语言update语句更新修改满足规定条件现记录Update语句格式:
    update tablename
    set columnname newvalue [ nextcolumn newvalue2]
    where columnname OPERATOR value [and|or column OPERATOR value]
    例:
    update employee
    set age age+1
    where first_name Mary’and last_name Williams’
    update语句时关键点设定进行判断where条件句
    删记录
    SQL语言delete语句删数库表格中行记录Delete语句格式:
    delete from tablename
    where columnname OPERATOR value [and|or column OPERATOR value]
    例:
    delete from employee
    where lastname May
    简单说需删某行某记录时delete from关键词输入表格名称然where句中设定删记录判断条件注意果户delete语句时设定where句表格中记录全部删
    删数库表格
    SQL语言中drop table命令删某表格该表格中记录Drop table命令格式:
    drop table tablename
    例:
    drop table employee
    果户希某数库表格完全删需drop table命令输入希删表格名称Drop table命令作删表格中记录删表格中全部记录该表格然存表格中列信息会改变drop table命令会整数库表格信息全部删
    SQL语言命令语句进行较详细介绍应该说SQL语句语法结构风格相简单直观户结合实践加练定会短期迅速掌握
    SQL语言快速入门三
    日常SQL语言工作程中已建立数库中查询信息面详细介绍SQL语言实现种数库查询操作
    SELECT…FROM
    方便讲解数库中创建名Store_Information数表
    Store_Information
    Store_Name
    Sales
    Date
    Los Angeles
    1500
    Jan102000
    San Diego
    250
    Jan112000
    Los Angeles
    300
    Jan122000
    Boston
    700
    Jan122000
    SQL语言中数库查询简单命令SELECT…FROM语法格式:
    SELECT column_name FROM table_name
    例果希查询Store_Information数表中商店名称时命令:
    SELECT store_name FROM Store_Information
    查询结果显示:
    Store_Name
    Los Angeles
    San Diego
    Los Angeles
    Boston
    果户希次查询字段查询字段名称次加入SELECT关键字中间隔开
    DISTINCT
    SELECT关键字支持户查询数表中指定字段数样时会避免出现重复信息果户希查询具记录值信息话SQL语言DISTINCT关键字语法格式:
    SELECT DISTINCT column_name
    FROM table_name
    例命令查询Store_Information数表具记录值记录
    SELECT DISTINCT Store_Name FROM Store_Information
    查询结果:
    Store_Name
    Los Angeles
    San Diego
    Boston
    WHERE
    选择具记录值记录外时会需根某条件数库中数进行查询例需查询Store_Information数表中销售额超1000美圆商店SQL语言WHERE关键字设定查询条件语法格式:
    SELECT column_name
    FROM table_name
    WHERE condition
    命令查询销售额超1000美圆商店信息:
    SELECT store_name FROM Store_Information WHERE Sales > 1000
    查询结果显示:
    store_name
    Los Angeles
    运算函数
    现已解SQL语言进行数库查询操作时通数值判断设定灵活查询条件增强运算支持力SQL提供众实运算函数供广户例直接SQL命令中调SUMAVG两分计算总数均数函数语法格式:
    SELECT function type(column_name)
    FROM table_name
    果希查询Store_Information数表中商店总销售额话命令:
    SELECT SUM(Sales) FROM Store_Information
    查询结果显示:
    SUM(Sales)
    2750
    COUNT
    SUMAVG函数外COUNT函数SQL语言中较常运算函数COUNT函数计算数表中指定字段包含记录数目语法格式:
    SELECT COUNT(column_name)
    FROM table_name
    例果希查询Store_Information数表中关商店记录条数时命令:
    SELECT COUNT(store_name)
    FROM Store_Information
    查询结果显示:
    Count(store_name)
    4
    COUNT函数DISTINCT关键字起查询数表中指定字段中具记录值记录数目例果希查询Store_Information数表中商店数目时命令:
    SELECT COUNT(DISTINCT store_name)
    FROM Store_Information
    查询结果显示:
    Count(DISTINCT store_name)
    3
    GROUP BY
    面进步SQL语言中集合函数文中SUM函数计算商店销售总额果希计算家商店总销售额时该办呢?实现目需做两件事:首先需查询商店名称销售额两字段然SQL语言GROUP BY命令销售额商店进行分组计算出商店销售总额GROUP BY命令语法格式:
    SELECT column_name1 SUM(column_name2)
    FROM table_name
    GROUP BY column_name1
    命令实现述查询目:
    SELECT store_name SUM(Sales)
    FROM Store_Information
    GROUP BY store_name
    查询结果显示:
    store_name SUM(Sales)
    Los Angeles 1800
    San Diego 250
    Boston 700
    注:
    GROUP BY关键字般应时查询字段字段进行算术运算SQL命令中
    HAVING
    户SQL语言程中希解决问题sum集合函数运算结果输出进行限制例希Store_Information数表中销售总额超1500美圆商店信息时需HAVING句语法格式:
    SELECT column_name1 SUM(column_name2)
    FROM table_name
    GROUP BY column_name1
    HAVING (arithematic function condition)
    (GROUP BY句选)
    命令实现述查询目:
    SELECT store_name SUM(sales)
    FROM Store_Information
    GROUP BY store_name
    HAVING SUM(sales) > 1500
    查询结果显示:
    store_name SUM(Sales)
    Los Angeles 1800
    注:
    SQL语言中设定集合函数查询条件时HAVING句WHERE句通常情况HAVING句放置SQL命令结尾处
    ALIAS
    面重点介绍SQL命令中设定名SQL语言中般两种类型名分字段名数表名
    简单说字段名帮助效组织查询输出结果例文列举实例中计算商店销售总额时显示结果中会出现SUM(sales)然SUM(sales)会理解查询结果带便果需查询中项复杂运算时显示结果会直观果时字段名会极提高查询结果读性
    数表名通名直接放置FROM句中数表名称面设定数表名面讲述连接数表进行查询操作中极
    字段数表名语法格式:
    SELECT table_aliascolumn_name1 column_alias
    FROM table_name table_alias
    名直接放置应名称面中间空格分开
    Store_Information数表例GROUP BY节中SQL命令中设置字段数表名:
    SELECT A1store_name Store SUM(Sales) Total Sales
    FROM Store_Information A1
    GROUP BY A1store_name
    查询结果显示:
    Store Total Sales
    Los Angeles 1800
    San Diego 250
    Boston 700
    连接数表
    果SQL语言连接数表实现数表查询方便讲解数库中分创建两名Store_InformationRegion数表
    Store_Information
    Store_Name
    Sales
    Date
    Los Angeles
    1500
    Jan102000
    San Diego
    250
    Jan112000
    Los Angeles
    300
    Jan122000
    Boston
    700
    Jan122000
    Region
    Region_Name
    Store_Name
    East
    Boston
    East
    New York
    West
    Los Angeles
    West
    San Diego
    面通数表连接实现区域查询销售额
    注意名Region数表中包含区域商店两字段信息名Store_Information数表中包含家商店销售信息区域划分销售信息需两数表信息结合起进行查询通述两数表分析发现数表中包含名Store_Name字段命令实现查询目:
    SELECT A1region_name REGION SUM(A2Sales) SALES
    FROM Geography A1 Store_Information A2
    WHERE A1store_name A2store_name
    GROUP BY A1region_name
    查询结果显示:
    REGION SALES
    East 700
    West 2050
    说明:
    述查询命令前两行指定查询目标字段分Region数表中Region_Name字段Store_Information数表中Sales字段记录值总数里设定两字段名分REGIONSALES两数表名分A1A2果字段名设定数表名话述SQL命令第行变成 形式:
    SELECT RegionRegion_Name REGION SUM(Store_InformationSales) SALES
    出效数表名极简化数表进行操作SQL命令
    述查询命令第3行WHERE句正该句设定两数表连接条件希确保Region数表中Store_Name字段够Store_Information数表中名字段相应规定两字段记录值应相等连接数表时定准确设定数表连接条件果WHERE句设定正确导致查询结果中出现众相关数
    基础教程
    SQL数操作基础(初级)1
    建立交互站点需数库存储访问者信息例建立职业介绍服务站点需存储诸简历感兴趣工作等等样信息创建动态网叶需数库果想显示符合访者求工作需数库中取出份工作信息会发现许情况需数库
    章里学会样结构化查询语言(SQL〕操作数库SQL语言数库标准语言Active SeverPages中时访问数库SQL语言掌握SQLASP编程非常重
    注意:
    SQL读作sequel单字母读音读作S-Q-L 两种发音正确种发音量支持者书里认SQL读作sequel
    通章学理解样SQL实现数库查询学会样种查询数表中取出信息学会样设计建立数库
    注意:
    通面章SQL介绍SQL足够解效Active Sever PagesSQL种复杂语言书包括全部细节全面掌握SQL语言需学Microsoft SQL Sever中SQL附书店买Microsoft SQL Sever 65
    SQL介绍:
    书假设SQL操作Microsoft SQL Sever数库SQL操作许类型数库SQL操作数库标准语言(事实关SQL语言专门ANSI标准〕
    注意:
    站点试图Microsoft Access代Microsoft SQL SeverSQL Sever时服务许户果希站点较高访问率MS Access胜
    学SQL细节前需理解两特点特点容易掌握掌握起点困难
    第特点SQL数库中数存储表中表行列组成例面简单表包括nameemail
    address:
    Name Email Address

    Bill Gates billg@microsoftcom
    president Clinton president@whitehousecom
    Stephen Walther swalther@somewherecom
    表两列(列称字段域〕:NameEmail Address三行行包含组数行中数组合起称条记录
    时表中添加新数添加条新记录数表十记录千甚十亿记录然许永远需存储十亿Email址知道样做总许天会样需
    数库包含十表存储数库中信息存储表中考虑样信息存储数库中时应该考虑样存储表中
    SQL第二特点难掌握种语言设计允许某种特定序取出记录样做会降低SQL Sever取记录效率SQL查询条件读取记录
    考虑表中取出记录时然会想记录位置读取例许会尝试通循环逐记录扫描选出特定记录SQL时必须训练种思路
    假想选出名字Bill Gates记录果传统编程语言许会构造循环逐查表中记录名字域否Bill Gates
    种选择记录方法行效率高SQL说选择名字域等Bill Gates记录SQL会选出符合条件记录SQL会确定实现查询佳方法
    建设想取出表中前十记录传统编程语言做循环取出前十记录结束循环标准SQL查询实现SQL角度说表中存前十记录种概念
    开始时知道SQL实现某感觉应该实现功会受挫折许会头撞墙甚想写恶毒信件SQL设计者会认识SQL特点仅限制反长处SQL根位置读取记录读取记录快
    综述SQL两特点:数存储表中SQL角度说表中记录没序节学会样SQL表中选择特殊记录
    SQL表中取记录
    SQL功实现数库查询果熟悉Internet引擎已熟悉查询查询取满足特定条件信息例果想找ASP信息全部站点连接 Yahoo执行Active Sever Pages搜索输入查询会收列表表中包括描述中包含搜索表达式站点
    数Internet引擎允许逻辑查询逻辑查询中包括特殊运算符ANDORNOT运算符选择特定记录例AND限制查询结果果执行Active Sever Pages AND SQL搜索描述中时包含Active Sever PagesSQL记录需限制查询结果时AND
    果需扩展查询结果逻辑操作符OR例果执行搜索搜索描述中包含Active Sever Pages OR SQL站点收列表中包括描述中时包含两表达式中表达式站点
    果想搜索结果中排特定站点NOT例查询Active Sever Pages AND NOT SQL返回列表列表中站点包含Active Sever Pages包含SQL必须排特定记录时NOT
    SQL执行查询Internet搜索引擎执行搜索非常相似执行SQL查询时通包括逻辑运算符查询条件记录列表时查询结果表
    SQL查询句法非常简单假设名email_table表包含名字址两字段Bill Gatese_mail址面查询:
    SELECT email from email_table WHERE nameBill Gates
    查询执行时名email_table表中读取Bill Gatese_mail址简单语句包括三部分:
    ■ SELECT语句第部分指名选取列例中email列选取执行 时显示email列值 billg@microsoftcom
    ■ SELECTT语句第二部份指明()表中查询数例中查询表名email_table
    ■SELECT语句WHERE子句指明选择满足什条件记录例中查询条件name列值Bill Gates记录选取
    Bill Gates拥止email址果表中包含Bill Gatesemail址述SELECT语句读取email址SELECT语句表中取出name字段值Bill Gates记录email字段值
    前面说查询查询条件中包含逻辑运算符假想读取Bill GatesClinton总统email址面查询语句:
    SELECT email FROM email_table WHERE nameBill Gates OR
    namepresident Clinton
    例中查询条件前复杂点语句表email_table中选出name列Bill Gatespresident Clinton记录果表中含Bill Gatespresident Clinton址址读取
    SELECT语句结构起直观果请朋友表中选择组记录许非常相似方式提出求SQL SELECT语句中SELECT特定列FROM表WHERE某列满足特定条件
    节介绍样执行SQL查询选取记录帮助熟悉SELECT语句表中取数种方法

    SQL数操作基础(初级)2
    ISQL执行SELECT查询
    安装SQL Sever时时安装作ISQLw应程序ISQLw允许执行交互SQL查询查询包括ASP网页中前ISQLw进行测试非常
    注意:
    书第部份学样安装配置Microsoft SQL Sever果没安装SQL Sever者SQL Sever运行请参阅第三章安装SQL Sever
    选择务SQL Sever程序组中ISQL_w启动该程序程序启动时首先会出现话框求输入服务器信息登录信息Sever框中输入SQL服务器名字果服务器正运行计算机服务器名字计算机名字登录信息框中输入登录帐号密码选择信连接然单击Connect钮
    注意:
    果SQL Sever配置完整安全混合安全信连接果标准安全需提供户帐号密码解更信息参见第三章
    果切正常单击连接钮会出现查询窗口(果异常请参考第三章)
    执行查询前需选择数库安装 SQL Sever时已创建数库SQL Sever许系统数库mastermodelmsdbtempdb
    方便SQL Sever带特殊名pubs例子数库库 pubs中包含供虚拟出版商表文档中例子程序针库设计书中许例子数库
    查询窗口顶部DB拉框中选择数库pubs样选择数库查询针库中表执行现执行第查询真兴奋
    第查询针名autrors表表中包含某虚拟出版商工作作者相关数单击查询窗口输入语句:
    SELECT phone FROM authors WHERE au_nameRinger
    输入完成单击执行查询钮(绿色三角形起VCR播放键)单击钮出现查询窗口中语句均会执行查询窗口会动变成结果显示窗口查询结果
    SQL Sever版中库pubs中数会SQL Sever 65说会找两条记录结果显示窗口中应显示容:
    phone
    ………………
    801 826_0752
    801 826_0752
    (2 row(s) affected)
    执行SELECT语句表authors中取出名字Ringer作者电话号码通WHERE子句中特殊选择条件限制查询结果忽略选择条件表中取出作者电话号码做点单击Query标签返回查询窗口输入SELECT语句:
    SELECT Phone FROM authors
    查询执行会取出表authors中电话号码(没特定序)果表authors中包含百电话号码会百记录取出果表中十亿电话号码十亿条记录会取出(许需时间)
    表authrs字段包括姓名字电话号码址城市州邮政编码通SELECT语句第部份指定表中取出字段SELECT语句中次取出字段:
    SELECT au_fname au_lname phone FROM authors
    SELECT语句执行取出三列值面查询结果示例(节省纸张显示查询结果部分余记录省略号代):
    au_fname au_lname phone
    …………………………………………………………………………
    Johnson White 408 496_7223
    Marjorie Green 415 986_7020
    Cheryl Carson 415 548_7723
    Michael O’Leary 408 286_2428

    (23 row(s) affected)
    SELECT语句中需列出少字段列出少忘字段名逗号隔开星号(*)表中取出字段里星号例子:
    SELECT * FROM authors
    SELECT语句执行表中字段值取出会发现SQL查询中频繁星号
    技巧:
    星号查表列名字做点需执行完SELECT语句查询结果列标题
    操作表
    现止尝试句SQL查询表中取出数SELECT语句时表中取出数需SELECT语句FROM句中列出中取出数表名称:
    SELECT au_lname title FROM authors titles
    SELECT语句执行时时表authors表titles中取出数表authors中取出作者名字表titles中取出书名ISQLw程序中执行查询查询结果会发现奇怪出意料情况:作者名字没著书相匹配出现作者名字书名组合许希见
    出什差错?问题没指明两表间关系没通方式告诉SQL表表关联起知道关联两表服务器简单返回取两表中记录组合
    两表中选出意义记录组合需通建立两表中字段关系关联两表做点途径创建第三表专门描述外两表字段间关系
    表authors名au_id字段包含作者唯标识表titles名title_id字段包含书名唯标识果字段au_id字段title_id间建立关系关联两表数库pubs中名titleauthor表正完成工作表中记录包括两字段表titles表authors关联起面SELECT语句三表正确结果:
    SELECT au_nametitle FROM authorstitlestitleauthor
    WHERE authorsau_idtitleauthorau_id
    AND titlestitle_idtitleauthortitle_id
    SELECT语句执行时作者正确书名相匹配表titleauthor指明表authors表titles关系通包含分两表字段实现点第三表唯目外两表字段间建立关系身包含附加数
    注意例子中字段名书写区表authors表titles中相字段名au_id字段名前面加表名前缀句号名authorau_id字段属表authors名titleauthorau_id字段属表titleauthor两者会混淆
    通第三表两表字段间建立种类型关系例作者许写许书者书许许作者完成两表字段间种关系时需第三表指明种关系
    许情况两表间关系复杂需指明表titles表publishers间关系书名出版商相匹配需通第三表指明两表间关系指明表titles表publishers间关系两表公字段数库pubs中表titles表publishers名pub_id字段果想书名出版商列表语句:
    SELECT titlepub_name FROM titlespublishers
    WHERE titlespub_idpublisherspub_id
    然果书两出版商联合出版需第三表代表种关系
    通常予先知道两表字段间存关系时第三表关联两表反果两表字段间关系公字段关联门
    SQL数操作基础(初级)3
    操作字段
    通常表中取出字段值时该值创建该表时定义字段名联系起果表authors中选择作者名字值会字段名au_lname相联系某情况需字段名进行操作SELECT语句中缺省字段名面仅新名字取代例更直观易读名字Author Last Name代字段名au_lname:
    SELECT au_lname Author Last Name FROM authors
    SELECT语句执行时字段au_lname值会Author Last Name相联系查询结果样:
    Author Last Name
    ……………………………………………………………………
    White
    Green
    Carson
    O’Leary
    Straight

    (23 row(s) affected)
    注意字段标题au_lnameAuthor Last Name取代
    通执行运算操作表返回字段值例果想表titles中书价格加倍面SELECT语句:
    SELECT price*2 FROM titles
    查询执行时书价格表中取出时会加倍通种途径操作字段会改变存储表中书价字段运算会影响SELECT语句输出会影响表中数时显示书原始价格涨价新价格面查询:
    SELECT price Original price price*2 New price FROM titles
    数表titles中取出时原始价格显示标题Original price面加倍价格显示标题New price面结果样:
    original price new price
    ………………………………………………………………
    3998
    1195 2390
    598
    3998

    (18 row(s) affected)
    数标准数学运算符操作字段值加(+)减()(*)()次字段进行运算例:
    SELECT price*ytd_sales total revenue FROM titles
    例子中通价格销售量相计算出种书总销售额SELECT语句结果样:
    total revenue
    ……………………………………………
    8185905
    4631820
    5597878
    8185905
    4061968

    (18 row(s) affected)
    连接运算符(起加号)连接两字符型字段:
    SELECT au_fname+ +au_lname author name FROM authors
    例子中字段au_fname字段au_lname粘贴起中间逗号隔开查询结果标题指定author name语句执行结果样:
    author names
    …………………………………………………………
    Johnson White
    Marjorie Green
    Cheryl Carson
    Michael O’Leary
    Dean Straight

    (23 row(s) affected)
    SQL提供查询结果许控制应该ASP编程程中充分利优点SQL操作查询结果总样作脚效率更高
    排序查询结果
    章介绍中强调SQL表没序例表中取第二记录没意义SQL角度没记录记录前
    然操SQL查询结果序缺省情况记录表中取出时记录特定序出现例表authors中取出字段au_lname时查询结果显示成样:
    au_lname
    ……………………………………
    White
    Green
    Carson
    O’Leary
    Straight

    (23 row(s) affected)
    列没特定序名字方便果名字字母序排列读起会容易通ORDER BY子句强制查询结果升序排列样:
    SELECT au_lname FROM authors ORDER BY au_lname
    SELECT语句执行时作者名字显示字母序排列ORDER BY子句作者名字升序排列
    时列ORDER BY子句例果想时升序显示字段au_lname字段au_fname需两字段进行排序:
    SELECT au_lnameau_fname FROM authors ORDER BY au_lname au_fname
    查询首先结果au_lname字段进行排序然字段au_fname排序记录序取出:
    au_lname au_fname
    ……………………………………………………………………
    Bennet Abraham
    Ringer Albert
    Ringer Anne
    Smith Meander

    (23 row(s) affected)
    注意两作者相名字Ringer名Albert Ringer作者出现名Anne Ringer作者前姓Albert字母序应排姓Anne前
    果想查询结果相反序排列关键字DESC关键字DESC查询结果降序排列例示:
    SELECT au_lnameau_fname FROM authors
    WHERE au_lnameRinger ORDER BY au_lname au_fname DESC
    查询表authors中取出名字Ringer作者记录ORDER BY子句根作者名字姓查询结果降序排列结果样:
    au_lname au_fname
    ………………………………………………………………………………………
    Ringer Anne
    Ringer Albert
    (2 row(s) affectec)
    注意表中姓Anne出现姓Albert前作者名字降序显示
    数值型字段查询结果进行排序例果想降序取出书价格SQL查询:
    SELECT price FROM titles ORDER BY price DESC
    SELECT语句表中取出书价格显示结果时价格低书先显示价格高书显示
    警告:
    特需时查询结果进行排序服务器完成项工作费力气意味着带ORDER BY子句SELECT语句执行起般SELECT语句花时间长
    取出互相记录
    表列中重复值例数库pubs表authors中两作者名字Ringer果表中取出名字名字Ringer会显示两次
    特定情况兴趣表中取出互相值果字段重复值许希值选取次关键字DISTINCT做点:
    SELCET DISTINCT au_lname FROM authors WHERE au_lnameRinger
    SELECT语句执行时返回记录通SELECT语句中包含关键字DISTINCT删重复值例假设关新闻组信息发布表想取出新闻组中发布信息名字关键字DISTINCT户名字取次——户发布止篇信息
    警告:
    ORDER BY子句样强制服务器返回互相值会增加运行开销福气花费时间完成项工作必须时候关键字DISTINCT
    创建新表
    前面说数库中数存储表中数表包括行列列决定表中数类型行包含实际数
    例数库pubs中表authors九字段中字段名au_lname字段存储作者名字信息次表中添加新作者时作者名字添加字段产生条新记录
    通定义字段创建新表字段名字特定数类型(数类型面字段类型节中讲述)例字段au_lname存储字符型数字段存储类型数
    SQL Sever创建新表方法执行SQL语句SQL事务理器(SQL Enterprise Manager)创建新表节里学会SQL语句创建新表
    SQL数操作基础(初级)4
    SQL创建新表
    注意:
    果没建立数库现跳回第三章创建库绝mastertempdb系统数库中添加数
    SQL Sever程序组(务栏中)中启动ISQLw程序出现查询窗口窗口顶部拉列表中选择第三章创建数库步查询窗口中键入面SQL语句单击执行查询钮执行语句:
    CREATE TABLE guestbook (visitor VARCHAR(40)comments TEXTentrydate
    DATETIME)
    果切正常会结果窗口中文字(果出现异常请参阅第三章):
    This command dit not return data and it did not return any rows
    祝贺已建立第表
    创建表名guestbook表存储字站点访问者信息REEATE TABLE语句创建表语句两部分:第部份指定表名子第二部份括括号中字段名称属性相互间逗号隔开
    表guestbook三字段:visitorcommentsentrydatevisitor字段存储访问者名字comments字段存储访问者站点意见entrydate字段存储访问者访问站点日期时间
    注意字段名面专门表达式例字段名comments面表达式TEXT表达式指定字段数类型数类型决定字段存储什样数字段comments包含文信息数类型定义文型
    字段许数类型节讲述SQL支持重数类型
    字段类型
    字段类型存放类型数创建表时更应该理解五种常字段类型:字符型文型数值型逻辑性日期型
    字符型数
    字符型数非常需存储短字符串信息时总字符型数例HTML form文框中搜集信息放字符型字段中
    建立字段存放变长度字符串信息表达式 VARCHAR考虑前面创建表guestbook:
    CREATE TABLE guestbook (visitor VARCHAR(40)comments TEXTentrydate
    DATETIME)
    例子中字段visitor数类型VARCHAR注意数类型面括号中数字数字指定字段允许存放字符串长度例子中字段visitor存放字符串长四十字符果名字太长字符串会截断保留四十字符
    VARCHAR类型存储字符串长255字符存储更长字符串数文型数(节中讲述)
    种字符型数存储固定长度字符数面种数类型例子:
    CREATE TABLE guestbook (visitor CHAR(40)comments TEXTentrydate
    DATETIME)
    例子中字段visitor存储四十字符固定长度字符串表达式CHAR指定字段应该固定长度字符串
    VARCHAR型CHAR型数差细微非常重假长度四十字符VARCHAR型字段中输入数Bill Gates字段中取出数时取出数长度十字符——字符串Bill Gates长度
    现假字符串输入长度四十字符CHAR型字段中取出数时取出数长度四十字符字符串面会附加余空格
    建立站点时会发现VARCHAR型字段CHAR型字段方便VARCHAR型字段时需剪掉数中余空格操心
    VARCHAR型字段突出处CHAR型字段占更少存硬盘空间数库时种存磁盘空间节省会变非常重
    文型数
    字符型数限制字符串长度超255字符文型数存放超二十亿字符字符串需存储串字符时应该文型数
    里文型数例子:
    CREATE TABLE guestbook (visitor VARCHAR(40)comments TEXTentrydate
    DATETIME)
    例子中字段comments存放访问者站点意见注意文型数没长度节中讲字符型数长度文型字段中数通常空
    HTML form行文编辑框(TEXTAREA)中收集数时应该收集信息存储文型字段中时避免文型字段应该适文型字段慢滥文型字段会服务器速度变慢文型字段会吃掉量磁盘空间
    警告:
    旦文型字段中输入数(甚空值)会2K空间动分配该数非删该记录否法收回部分存储空间
    数值型数
    SQL Sever支持许种数值型数存储整数数钱数
    通常需表中存放数字时整型(INT)数INT型数表数范围21474836472147483647整数面INT型数例子:
    CREATE TABLE visitlog (visitor VARCHAR(40)numvisits INT)
    表记录站点访问次数没访问站点超2147483647次nubvisits字段存储访问次数
    节省存空间SMALLINT型数SMALLINT型数存储3276832768整数种数类型方法INT型完全相
    果实需节省空间TINYINT型数样种类型方法INT型相种类型字段存储0255整数TINYINT型字段存储负数
    通常节省空间应该整型数TINYINT型数占字节INT型数占四字节起似差较表中字节数增长快方面旦已创建字段修改困难安全起见应该预测字段需存储数值然选择适数类型
    字段存放数更控制NUMERIC型数时表示数整数部分数部分NUMERIC型数表示非常数——INT型数NUMERIC型字段存储10381038范围数NUMERIC型数表示数部分数例NUMERIC型字段中存储数314
    定义NUMERIC型字段时需时指定整数部分数部分里种数类型例子:
    CREATE TABLE numeric_data (bignumber NUMERIC(280)
    fraction NUMERIC (54) )
    语句执行时创建名numeric_data包含两字段表字段bignumber存储直28位整数字段fraction存储五位整数部分四位数部分数
    NUMERIC型数整数部分28位数部分位数必须等整数部分位数数部分零
    INT型NUMERIC型数存储钱数专门外两种数类型目果希网点挣钱MONEY型数果野心SMALLMONEY型数MONEY型数存储92233720368547758089223372036854775807钱数果需存储金额NUMERIC型数
    SMALLMONEY型数存储21474836482147483647钱数样果话应该SMALLMONEY型代MONEY型数节省空间面例子显示两种表示钱数类型:
    CREATE TABLE products (product VARCHAR(40)price MONEY
    Discount_price SMALLMONEY)
    表存储商品折扣普通售价字段price数类型MONEY字段discount_price数类型SMALLMONEY
    存储逻辑值
    果复选框(CHECKBOX)网页中搜集信息信息存储BIT型字段中BIT型字段取两值:01里种字段例子:
    CREATE TABLE opinion (visitor VARCHAR(40)good BIT)
    表存放网点进行民意调查信息访问者投票表示否喜欢网点果投YESBIT型字段中存入1反果投NO字段中存入0(章里学会计算投票)
    心创建表表中添加BIT型字段果算表中包含BIT型字段必须创建表时完成
    存储日期时间
    建立网点时许需记录段时间访问者数量够存储日期时间需DATETIME型数例示:
    CREATE TABL visitorlog( visitor VARCHAR (40) arrivaltime DATETIME
    departuretime DATETIME)
    表记录访问者进入离开网点时间日期DATETIME型字段存储日期范围1753年1月1日第毫秒9999年12月31日毫秒
    果需覆盖范围日期时间SMALLDATETIME型数DATETIME型数样表示日期时间范围DATETIME型数DATETIME型数精确SMALLDATETIME型字段够存储1900年1月1日2079年6月6日日期精确秒
    DATETIME型字段输入日期时间前包含实际数认识点重章学样量SQL函数读取操作日期时间(参见面缺省值节)VBScriptJScript中日期时间函数DATETIME型字段中输入日期时间
    字段属性
    节介绍建立包含类型字段表节中学会字段三属性属性允许控制空值缺省值标识值
    允许禁止空值
    数字段接受空值(NULL)字段接受空值果改变直保持空值空值(NULL)零严格说空值表示没值
    允许字段接受空值字段定义面表达式NULL例面表中两字段允许接受空值:
    CREATE TABLE empty (empty1 CHAR (40) NULLempty2 INT NULL(
    注意:
    BIT型数空值种类型字段必须取0者1
    时需禁止字段空值例假设表存储着信卡号码信卡效日期会希输入信卡号码输入效日期强制两字段输入数面方法建立表:
    CREATE TABLE creditcards (creditcard_number CHAR(20) NOT NULL
    Creditcard_expire DATETIME NOT NULL)
    注意字段定义面表达式NOT NULL通包含表达式NOT NULL禁止字段中插入数输入字段数
    会发现建设网点程中种禁止空值力非常果指定字段接受空值试图输入空值时会错误警告错误警告程序调试提供价值线索
    缺省值
    假设存储址信息表表字段包括街道城市州邮政编码国家果预计址部分美国值作country字段缺省值
    创建表时指定缺省值表达式DEFAULT请面创建表时缺省值例子:
    CREATE TABLE addresses (street VARCHAR(60) NULL
    city VARCHAR(40) NULL
    state VARCHAR(20) NULL
    zip VARCHAR(20) NULL
    country VARCHAR(30) DEFAULT USA’)
    例子中字段country缺省值指定美国注意单引号引号指明字符型数非字符型字段指定缺省值该值扩引号中:
    CREATE TABLE orders(price MONEY DEFAULT 3800
    quantity INT DEFAULT 50
    entrydate DATETIME DEFAULT GETDATE())
    CREATE TABLE语句中字段指定缺省值注意DATETIME型字段entrydate指定缺省值该缺省值函数Getdate()返回值该函数返回前日期时间
    标识字段
    表标识字段标识字段唯标识表中条记录特殊字段例数库pubs中表jobs包含唯标识工作标识字段:
    job_id job_desc
    ……………………………………………………………
    New Hire Job not specified
    Chief Executive officer
    Bushness Operations Manager
    Chief Financial Officier
    Publisher
    字段job_id工作提供唯数字果决定增加新工作新增记录job_id字段会动赋新唯值
    建立标识字段需字段定义面加表达式IDENTITYNUMERIC型INT型字段设标识字段里例子:
    CREATE TABLE visitorID (theID NUBERIC(18) IDENTITYname VARCHAR(40))
    语句创建表包含名theid标识字段新访问者名字添加表中时字段动赋新值表站点户提供唯标识
    技巧:
    建立标示字段时注意足够数类型例TINYINT型数表中添加255记录果预计表会变应该NUMERIC型数
    标识字段存会想尝试许事情例许想利标识字段记录进行基表中位置运算应该抛弃种意图记录标识字段值互相禁止标识字段标识数字间存间隔例永远试图利表标识字段取出表中前十记录种操作会导致失败说6号记录7号记录根存
    SQL数操作基础(初级)5
    SQL事务理器创建新表
    前面节讲方法创建新表事务理器创建新表会更容易节介绍程序创建新表
    务栏SQL Sever程序组中选择SQL Enterprise Manager启动该程序浏览服务理器窗口中树形结构选择名Database文件夹开文件夹Database选择第三章中建立数库
    注意:
    果没创建数库回第三章创建决mastertempdb系统数库中添加数
    选择数库会名Groupusers文件夹名objects文件夹开文件夹objects会许文件夹中名Tables右键单击文件夹Tables选择New table
    Manager Tables窗口创建新表Manager Tables窗口7列:KeyColumnNameDatatypeSizeNullsDefaultManager Tables窗口中行标明表中字段信息
    建立新表少输入行信息名Column Name列面键入mycolumn步选择Datatype列拉列表中选择CHAR两列中输入信息
    已建立字段简单表单击保存扭保存新表求输入新表名字时输入mytable单击OK现表已保存数库中
    果开服务理器窗口中文件夹Tables会建立新表列出双击该表图表编辑时Manager Tables窗口会重新出现增加新字段重新保存
    SQL事务理器做工作SQL语句实现事务理器建表程变更加简单
    表中添加数
    章讨SQL表中插入数果需表中添加许条记录SQL语句输入数方便幸运Microsoft SQL Sever带称Microsoft Query客户端应程序程序表中添加数变容易
    启动位务栏SQL Sever程序组中Microsoft Query程序窗口顶部菜单中选择File|New Query时会显示Select Data Source话框选择数源名字单击Use
    输入登录帐号密码程序求选择表数库选择节中建立表(mytable )单击钮Add然单击钮Close关闭该话框
    窗口左角会出现话框框中取表mytable列字段名双击字段添加窗口中果双击星号(*)字符字段会添加窗口中
    果表中记录现已出现窗口字段标题面刚刚建立表表空添加新记录选择Records|Allow Editing窗口中会出现条新记录输入行数完成记录表中添加条新记录
    转条新记录时条记录中输入值会动保存果需Microsoft Query表中输入百条记录
    删修改表
    应该建立表前仔细设计改变已存表时会受限制例旦已建立表删表中字段者改变字段数类型种情况做删表然重头开始(参见第十章中级SQL中SQL创建记录表节)
    删表SQL语句DROP TABLE例数库中彻底删表mytable语句:
    DROP TABLE mytable
    警告:
    DROP TABLE命令时定心旦表删法恢复
    建设站点时需数库中输入测试数准备世界提供网点时会想清空表中测试信息果想清表中数删表TRUNCATE TABLE语句例面SQL语句表mytable中删数:
    TRUNCATE TABLE mytable
    然删修改已存字段增加新字段容易实现方法SQL事务理器中Manager Tables窗口SQL语句ALTER TABLE面种语句例子:
    ALTER TABLE mytable ADD mynewcolumn INT NULL
    语句表mytable中增加新字段mynewcolumn增加新字段时必须允许接受空值表中原已许记录
    总结
    章介绍SQLSQL操作Microsoft SQL Sever数库已学会SELECT语句数库中取出数学会样CREATE TABLE语句SQL事务理器创建新表学会指明系列重字段属性
    章介绍索引增强SQL查询操作通许SQL语句函数SQL知识进步扩充
    SQL数操作基础(中级)
    SQL数操作基础(中级)1
    第十章SQL基础初步介绍SQL学会SELECT语句进行查询学会建立表章里加深SQL知识学建立索引加快查询速度学会果更SQL语句函数操作表中数
    建立索引
    假设想找书中某句子页页逐页搜索会花时间通书索引快找搜索题
    表索引附书面索引非常相似极提高查询速度较表说通加索引通常花费时完成查询分钟完成没理需频繁查询表增加索引
    注意:
    存容量硬盘空间足时许想表增加索引包含索引数库SQL Sever需观额外空间例建立聚簇索引需约12倍数空间表索引数库中占空间系统存储程sp_spaceused象名指定索引表名
    聚簇索引非聚簇索引
    假设已通书索引找句子页码旦已知道页码漫目翻寻书直找正确页码通机翻寻终达正确页码种找页码更效方法
    首先书翻概半方果找页码半书处页码书翻四分处否书翻四分三方通种方法继续书分成更部分直找正确页码附找书页非常效种方法
    SQL Sever表索引类似方式工作表索引组页组成页构成树形结构根页通指外两页表记录逻辑分成两部分根页指两页分记录分割成更部分页记录分成更分割直达叶级页
    索引两种类型:聚簇索引非聚簇索引聚簇索引中索引树叶级页包含实际数:记录索引序物理序相非聚簇索引中叶级页指表中记录:记录物理序逻辑序没必然联系
    聚簇索引非常象目录表目录表序实际页码序致非聚簇索引更象书标准索引表索引表中序通常实际页码序致书许索引例许时题索引作者索引样表非聚簇索引
    通常情况聚簇索引应该两种类型索引优缺点理解
    表聚簇索引表中记录种物理序存放通常表标识字段建立聚簇索引类型字段建立聚簇索引字符型数值型日期时间型字段
    建立聚簇索引表中取出数建立非聚簇索引表快需取出定范围数时聚簇索引非聚簇索引例假设表记录访问者网点活动果想取出定时间段登录信息应该表DATETIME型字段建立聚簇索引
    聚簇索引限制表建立聚簇索引表止非聚簇索引实际表建立249非聚簇索引表时建立聚簇索引非聚簇索引
    假仅想根日期想根户名网点活动日志中取数种情况时建立聚簇索引非聚簇索引效日期时间字段建立聚簇索引户名字段建立非聚簇索引果发现需更索引方式增加更非聚簇索引
    非聚簇索引需量硬盘空间存外然非聚簇索引提高表中 取数速度会降低表中插入更新数速度改变建立非聚簇索引表中数时必须时更新索引表建立非聚簇索引时慎重考虑果预计表需频繁更新数建立太非聚簇索引外果硬盘存空间限应该限制非聚簇索引数量
    索引属性
    两种类型索引两重属性:两者中种类型时字段建立索引(复合索引)两种类型索引指定唯索引
    字段建立复合索引甚复合聚簇索引假表记录网点访问者姓名字果希根完整姓名表中取数需建立时姓字段名字字段进行索引分两字段建立单独索引希时止字段进行查询时应该建立字段索引果希字段进行分查询应该字段建立独立索引
    两种类型索引指定唯索引果字段建立唯索引字段输入重复值标识字段会动成唯值字段类型字段建立唯索引假设表保存网点户密码然希两户相密码通强制字段成唯值字段防止种情况发生
    SQL数操作基础(中级)2
    SQL建立索引
    表建立索引启动务栏SQL Sever程序组中ISQLw程序进入查询窗口输入面语句:
    CREATE INDEX mycolumn_index ON mytable (myclumn)
    语句建立名mycolumn_index索引索引起名字应该索引名中包含索引字段名弄清楚建立该索引意图帮助
    注意:
    书中执行SQL语句会收信息:
    This command did not return dataand it did not return any rows
    说明该语句执行成功
    索引mycolumn_index表mytablemycolumn字段进行非聚簇索引非唯索引(索引缺省属性)
    果需改变索引类型必须删原索引重建 建立索引面SQL语句删:
    DROP INDEX mytablemycolumn_index
    注意DROP INDEX语句中包含表名字例子中删索引mycolumn_index表mytable索引
    建立聚簇索引关键字CLUSTERED)记住表聚簇索引(里表建立聚簇索引例子:
    CREATE CLUSTERED INDEX mycolumn_clust_index ON mytable(mycolumn)
    果表中重复记录试图语句建立索引时会出现错误重复记录表建立索引关键字ALLOW_DUP_ROW点告诉SQL Sever:
    CREATE CLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn)
    WITH ALLOW_DUP_ROW
    语句建立允许重复记录聚簇索引应该量避免表中出现重复记录果已出现种方法
    表建立唯索引关键字UNIQUE聚簇索引非聚簇索引关键字里例子:
    CREATE UNIQUE COUSTERED INDEX myclumn_cindex ON mytable(mycolumn)
    常索引建立语句时应该量表建立唯聚簇索引增强查询操作
    建立字段索引──复合索引──索引建立语句中时包含字段名面例子firstnamelastname两字段建立索引:
    CREATE INDEX name_index ON username(firstnamelastname)
    例子两字段建立单索引复合索引中16字段进行索引
    事务理器建立索引
    事务理器建立索引SQL语句容易事务理器已建立索引列表通图形界面选择索引选项
    事务理器两种方式建立索引:Manage Tables窗口Manage Indexes窗口
    Manage Tables窗口建立新索引单击钮Advanced Options(起象前面加号表)样开Advanced Options话框话框部分标名Primary Key
    建立新索引拉列表中选择想建立索引字段名果想建立字段索引选择字段名选择索引聚簇非聚簇保存表信息索引会动建立Manage Tables窗口中字段名旁边会出现钥匙
    已表建立索引索引必须包含空值字段建立外索引强制字段成唯值字段
    建立没限制索引需Manage Indexes窗口菜单中选择Manage|Indexes开Manage Indexes窗口Manage Indexes窗口中通拉框选择表特定索引建立新索引Index拉框中选择New Index然选择建立索引字段单击钮Add字段加索引中
    索引选择许选项例选择该索引聚簇非聚簇指定该索引唯索引设计索引单击钮Build建立该索引
    注意:
    唯索引指该字段重复值建立索引
    SQL核心语句
    第十章学会SQL SELECT语句表中取数现止没讨添加修改删表中数节中学容
    插入数
    表中添加新记录SQL INSERT语句里种语句例子:
    INSERT mytable (mycolumn) VALUES (some data’)
    语句字符串’some data’插入表mytablemycolumn字段中插入数字段名字第括号中指定实际数第二括号中出
    INSERT语句完整句法:
    INSERT [INTO] {table_name|view_name} [(column_list)] {DEFAULT VALUES |
    Values_list | select_statement}
    果表字段通字段名字段值逗号隔开字段中插入数假设表mytable三字段first_columnsecond_columnthird_column面INSERT语句添加条三字段值完整记录:
    INSERT mytable (first_columnsecond_columnthird_column)
    VALUES (some data’’some more data’’yet more data’)
    注意:
    INSERT语句文型字段中插入数果需输入长字符串应该WRITETEXT语句部分容书说太高级加讨解更信息请参考Microsoft SQL Sever文档
    果INSERT语句中指定两字段数会样呢?换句话说表中插入条新记录字段没提供数种情况面四种:
    果该字段缺省值该值会例假设插入新记录时没字段third_column提供数字段缺省值’some value’种情况新记录建立时会插入值’some value’
    果该字段接受空值没缺省值会插入空值
    果该字段接受空值没缺省值会出现错误会收错误信息:
    The column in table mytable may not be null
    果该字段标识字段会动产生新值标识字段表中插入新记录时忽略该字段标识字段会赋新值
    注意:
    标识字段表中插入新记录SQL变量@@identity访问新记录
    标识字段值考虑SQL语句:
    INSERT mytable (first_column) VALUES(some value’)
    INSERT anothertable(another_firstanother_second)
    VALUES(@@identity’some value’)
    果表mytable标识字段该字段值会插入表anothertableanother_first字段变量@@identity总保存次插入标识字段值
    字段another_first应该字段first_column相数类型字段another_first应该标识字段Another_first字段保存字段first_column值
    删记录
    表中删记录需SQL DELETE语句DELETE语句提供WHERE子句WHERE子句选择删记录例面DELETE语句删字段first_column值等’Delete Me’记录:
    DELETE mytable WHERE first_column’Deltet Me’
    DELETE语句完整句法:
    DELETE [FROM] {table_name|view_name} [WHERE clause]
    SQL SELECT语句中条件DELECT语句WHERE子句 中例面DELETE语句删first_column字段值’goodbye’second_column字段值’so long’记录:
    DELETE mytable WHERE first_column’goodby’ OR second_column’so long’
    果DELETE语句提供WHERE子句表中记录删应该种想法果想删应该表中记录应第十章讲TRUNCATE TABLE语句
    注意:
    什TRUNCATE TABLE语句代DELETE语句?TRUNCATE TABLE语句时记录删作记录说意味着TRUNCATE TABLEDELETE快
    SQL数操作基础(中级)3
    更新记录
    修改表中已存条条记录应SQL UPDATE语句DELETE语句样UPDATE语句WHERE子句选择更新特定记录请例子:
    UPDATE mytable SET first_column’Updated’ WHERE second_column’Update Me’
    UPDATE语句更新second_column字段值’Update Me’记录选中记录字段first_column值置’Updated’
    面UPDATE语句完整句法:
    UPDATE {table_name|view_name} SET [{table_name|view_name}]
    {column_list|variable_list|variable_and_column_list}
    [{column_list2|variable_list2|variable_and_column_list2}…
    [{column_listN|variable_listN|variable_and_column_listN}]]
    [WHERE clause]
    注意:
    文型字段UPDATE语句果需更新长字符串应UPDATETEXT语句部分容书说太高级加讨解更信息请参考Microsoft SQL Sever文档
    果提供WHERE子句表中记录更新时例果想表titles中书价格加倍UPDATE语句:
    时更新字段例面UPDATE语句时更新first_columnsecond_columnthird_column三字段:
    UPDATE mytable SET first_column’Updated’
    Second_column’Updated’
    Third_column’Updated’
    WHERE first_column’Update Me1’
    技巧:
    SQL忽略语句中余空格SQL语句写成容易读格式
    SELECT创建记录表
    许已注意INSERT语句DELETE语句UPDATE语句点次操作记录然方法INSERT语句次添加记录作点需INSERT语句SELECT语句结合起象样:
    INSERT mytable (first_columnsecond_column)
    SELECT another_firstanother_second
    FROM anothertable
    WHERE another_first’Copy Me’
    语句anothertable拷贝记录mytable表anothertable中字段another_first值’Copy Me’记录拷贝
    表中记录建立备份时种形式INSERT语句非常删表中记录前先种方法拷贝表中
    果需拷贝整表SELECT INTO语句例面语句创建名newtable新表该表包含表mytable数:
    SELECT * INTO newtable FROM mytable
    指定特定字段创建新表做点需字段列表中指定想拷贝字段外WHERE子句限制拷贝新表中记录面例子拷贝字段second_columnd值等’Copy Me’记录first_column字段
    SELECT first_column INTO newtable
    FROM mytable
    WHERE second_column’Copy Me’
    SQL修改已建立表困难例果表中添加字段没容易办法外果心字段数类型错没办法改变节中讲述SQL语句绕两问题
    例假设想表中删字段SELECT INTO语句创建该表拷贝包含删字段删该字段保留想删数
    果想改变字段数类型创建包含正确数类型字段新表创建该表结合UPDATE语句SELECT语句原表中数拷贝新表中通种方法修改表结构保存原数
    集合函数
    现止学根特定条件表中取出条条记录假想表中记录进行数统计例果想统计存储表中次民意测验投票结果者想知道访问者站点均花费少时间表中类型数进行统计需集合函数
    Microsoft SQL支持五种类型集合函数统计记录数目均值值值者求集合函数时返回数该数值代表统计值
    注意:
    ASP网页中集合函数返回值需该值起名字作点SELECT语句中集合函数面紧字段名例示:
    SELECT AVG(vote) the_average’ FROM opinion
    例子中vote均值命名 the_average现ASP网页数库方法中名字
    统计字段值数目
    函数COUNT()许集合函数函数统计表中少条记录里例子:
    SELECT COUNT(au_lname) FROM authors
    例子计算表authors中名字(last name)数目果相名字出现止次该名字会计算次果想知道名字某特定值作者少WHERE子句例示:
    SELECT COUNT(au_lname) FROM authors WHERE au_lname’Ringer’
    例子返回名字’Ringer’作者数目果名字表authors中出现两次次函数返回值2
    假想知道名字作者数目通关键字DISTINCT该数目例示:
    SELECT COUNT(DISTINCT au_lname) FROM authors
    果名字’Ringer’出现止次计算次关键字DISTINCT决定互相值计算
    通常COUNT()时字段中空值忽略般说正希果仅仅想知道表中记录数目需计算表中记录─否包含空值面做点例子:
    SELECT COUNT(*) FROM authors
    注意函数COUNT()没指定字段语句计算表中记录数目包括空值记录需指定计算特定字段
    函数COUNT()情况例假设表保存站点质量进行民意调查结果表名vote字段该字段值010表示反票1表示赞成票确定赞成票数量面SELECT语句:
    SELECT COUNT(vote) FROM opinion_table WHERE vote1
    计算字段均值
    函数COUNT()统计字段中少值时需计算值均值函数AVG()返回字段中值均值
    假站点进行次较复杂民意调查访问者110间投票表示喜欢站点程度投票结果保存名voteINT型字段中计算户投票均值需函数AVG():
    SELECT AVG(vote) FROM opinion
    SELECT语句返回值代表户站点均喜欢程度函数AVG()数值型字段函数计算均值时忽略空值
    计算字段值
    假设站点出售卡片已运行两月该计算赚少钱时候假设名orders表记录访问者定购信息计算定购量总函数SUM():
    SELECT SUM(purchase_amount) FROM orders
    函数SUM()返回值代表字段purchase_amount中值均值字段purchase_amount数类型许MONEY型数值型字段函数SUM()
    返回值值
    次假设表保存站点进行民意调查结果访问者选择110值表示站点评价果想知道访问者站点高评价语句:
    SELECT MAX(vote) FROM opinion
    许希站点予高评价通函数MAX()知道数值型字段值中值果站点投数字10函数MAX()返回该值
    方面假想知道访问者站点低评价函数MIN()例示:
    SELECT MIN(vote) FROM opinion
    函数MIN()返回字段值中值果字段空函数MIN()返回空值
    常SQL表达式函数程
    节介绍SQL技术学表中取出数某字段值处定范围学字段值种类型转换成种类型操作字符串日期时间数学会发送邮件简单方法
    通匹配定范围值取出数
    假设表保存站点进行民意调查结果现想站点评价710间访问者发送书面感谢信名字SELECT语句:
    SELECT username FROM opinion WHERE vote>6 and vote<11
    SELECT语句会实现求面SELECT语句样结果:
    SELECT username FROM opinion WHERE vote BETWEEN 7 AND 10
    SELECT语句语句等价种语句编程风格问题会发现表达式BETWEEN语句更易读
    现假设想取出站点投1者10访问者名字表opinion中取出名字SELECT语句:
    SELECT username FROM opinion WHERE vote1 or vote
    SELECT语句会返回正确结果没理存种等价方式SELECT相结果:
    SELECT username FROM opinion WHERE vote IN (110)
    注意表达式INSELECT语句取出vote值等括号中值记录
    IN匹配字符数例假设想取出Bill GatesPresident Clinton投票值SELECT语句:
    SELECT vote FROM opinion WHERE username IN (Bill Gates’’President Clinton’)
    BETWEENIN时表达式NOT例取出投票值710间名字SELECT语句:
    SELECT username FROM opinion WHERE vote NOT BETWEEN 7 and 10
    选取某字段值列值中记录时NOTIN例示:
    SELECT vote FROM opinion
    WHERE username NOT IN (Bill Gates’’President Clinton’)
    必须SQL语句中BETWEENIN查询更接然语言两表达式帮助
    SQL数操作基础(中级)4
    转换数
    SQL Sever足够强需时候部分数值种类型转换种类型例较SMALLINT型INT型数需进行显式类型转换SQL Sever会完成项工作想字符型数类型数间进行转换时确需进行转换操作例假设想MONEY型字段中取出值结果面加字符串US Dollars需函数CONVERT()例示:
    SELECT CONVERT(CHAR(8)price)+’US Dollars’ FROM orders
    函数CONVERT()带两变量第变量指定数类型长度第二变量指定进行转换字段例子中字段price转换成长度8字符CHAR型字段字段price转换成字符型面连接字符串’US Dollars’
    BIT型DATETIME型INT型者NUMERIC型字段添加字符串时需进行样转换操作例面语句SELECT语句查询结果中加入字符串’The vote is’该SELECT语句返回BIT型字段值
    SELECT The vote is’+CONVERT(CHAR(1)vote) FROM opinion
    面语句结果示例:
    The vote is 1
    The vote is 1
    The vote is 0
    (3 row(s) affected)
    果进行显式转换会收错误信息:
    Implicit conversion from datatype varchar’ to bit’ is not allowec
    Use the CONVERT function to run this query
    操作字符串数
    SQL Sever许函数表达式字符串进行趣操作包括种样模式匹配字符转换节中学重字符函数表达式
    匹配通配符
    假设想建立Yahoo功相似Internet目录建立表保存系列站点名称统资源定位器(URL)描述类允许访问者通HTML form中输入关键字检索容
    假访问者想目录中描述中包含关键字trading card站点列表取出正确站点列表许试图样查询:
    SELECT site_name FROM site_directory WHERE site_desc’trading card’
    查询工作返回描述中trading card字符串站点例描述We have the greatest collection of trading cards in the world站点会返回
    字符串字符串部分相匹配需通配符通配符关键字LIKE实现模式匹配面语句通配符关键字LIKE重写面查询返回正确站点名字:
    SELECT SITE_name FROM site_directory
    WHERE site_desc LIKE trading cark’
    例子中描述中包含表达式trading card站点返回描述We have the greatest collection of trading cards in the world站点返回然果站点描述中包含I am trading cardboard boxes online该站点名字返回
    注意例中百分号百分号通配符例子代表0字符通trading card括百分号中中嵌字符串trading card字符串匹配
    现假设站点目录变太页中完全显示决定目录分成两部分第页想显示首字母AM间站点第二页想显示首字母NZ间站点第页站点列表SQL语句:
    SELECT site_name FROM site_directory WHERE site_name LIKE [AM]’
    例子中表达式[AM]取出首字母AM间站点中括号([])匹配处指定范围单字符第二页中显示站点应语句:
    SELECT site_name FROM site_directory
    WHERE site_name LIKE [NZ]’
    例子中括号中表达式代表处NZ间单字符
    假设站点目录变更现需目录分成更页果想显示ABC开头站点面查询实现:
    SELECT site_name FROM site_directory WHERE site_name LIKE [ABC]’
    例子中括号中表达式指定范围出字符名字字符中开头站点返回
    通括号表达式中时包含范围指定字符两种方法结合起例面查询取出首字母CF间者字母Y开头站点:
    SELECT site_name FROM site_directory WHERE site_name LIKE [CFY]’
    例子中名字CollegescapeYahoo站点会选取名字Magicw3站点会选取
    脱字符(^)排特定字符例名字Y开头站点查询:
    SELECT site_name FROM site_directory WHERE site_name LIKE [^Y]’
    定字符字符范围均脱字符
    通划线字符(_)匹配单字符例面查询返回名字第二字符字母站点:
    SELECT site_name FROM site_directory WHERE site_name LIKE M_crosoft’
    例子返回名Microsoft站点返回名Macrosoft站点名字Moocrosoft站点返回通配符’%’划线代表单字符
    注意:
    果想匹配百分号划线字符身需括方括号中果想匹配连字符()应指定方括号中第字符果想匹配方括号应括方括号中例面语句返回描述中包含百分号站点:
    SELECT site_name FROM site_directory WHERE site_desc LIKE []’
    匹配发音
    Microsoft SQL两允许发音匹配字符串函数函数SOUNDEX()字符串分配音标码函数DIFFERENCE()发音较两字符串知道名字确切拼写少知道点发音时两函数助取出该记录
    例果建立Internet目录许想增加选项允许访问者站点名发音搜索站点名字拼写考虑语句:
    SELECT site_name FROM site_directory
    WHERE DIFFERENCE(site_name Microsoft’>3
    语句函数DEFFERENCE()取名字发音Microsoft非常相似站点函数DIFFERENCE()返回04间数字果该函数返回4表示发音非常相果该函数返回0说明两字符串发音相差
    例面语句返回站点名MicrosoftMacrosoft两名字发音Microsoft相似果语句中3改2名ZicrosoftMegasoft站点返回果需差等级1名PicosoftMinisoft站点匹配
    深入解函数DIFFERENCE()工作函数SOUNDEX()返回函数DIFFERENCE()音标码里例子:
    SELECT site_name site name’SOUNDEX(site_name) sounds like’
    语句选取字段site_name数音标码面查询结果:
    site name sounds like
    ………………………………………………………………
    Yahoo Y000
    Mahoo M000
    Microsoft M262
    Macrosoft M262
    Minisoft M521
    Microshoft M262
    Zicrosoft Z262
    Zaposoft Z121
    Millisoft M421
    Nanosoft N521
    Megasoft M221
    Picosoft P221
    (12 row(s) affected)
    果仔细音标码会注意音标码第字母字段值第字母相例YahooMahoo音标码第字母发现MicrosoftMacrosoft音标码完全相
    函数DIFFERENDE()较两字符串第字母辅音字母该函数忽略元音字母(包括y)非元音字母字符串第字母
    幸SOUNDEX()DIFFERENCE()欠缺WHERE子句中包含两函数查询执行起效果应该心两函数
    删空格
    两函数TTRIM()LTRIM()字符串中剪掉空格函数LTRIM()应该字符串前面空格函数RTRIM()字符串尾部空格里函数RTRIM()例子:
    SELECT RTRIM(site_name) FROM site_directory
    例子中果站点名字尾部余空格余空格查询结果中删
    嵌套两函数字符串前空格时删:
    SELECT LTRIM(RTRIM(site_name) FROM site_directory
    会发现CHAR型字段中剪掉余空格时两函数非常记住果字符串保存CHAR型字段中该字符串会追加余空格匹配该字段长度两函数掉空格解决问题
    SQL数操作基础(中级)5
    操作日期时间
    日期时间函数建立站点非常站点表中数时更新感兴趣通日期时间函数毫秒级踪表改变
    返回前日期时间
    通函数GETDATE()获前日期时间例语句SELECT GETDATE()返回结果:
    ……………………………
    NOV 30 1997 329AM
    (1 row(s) affected)
    显然果函数日期时间晚者梗早
    函数GETDATE()作DATEDIME()型字段缺省值插入记录时保存时时间例假设表保存站点活动日志访问者访问站点时表中添加条新记录记访问者名字活动进行访问时间建立表中记录包含前日期时间添加DATETIME型字段指定缺省值函数GETDATE()返回值象样:
    CREATE TABLE site_log (
    username VARCHAR(40)
    useractivity VARCHAR(100)
    entrydate DATETIME DEFAULT GETDATE())
    转换日期时间
    许已注意节例子中函数GETDATE()返回值显示时显示秒实际SQL Sever部时间精确毫秒级(确切说精确333毫秒)
    格式日期时间需函数CONVERT()例面语句执行时显示时间包括毫秒:
    SELECT CONVERT(VARCHAR(30)GETDATE()9)
    注意例子中数字9数字指明显示日期时间时种日期时间格式语句执行时显示日期时间:
    …………………………………
    Nov 30 1997 32955170AM
    (1 row(s) affected)
    函数CONVERT()中许种风格日期时间格式表111显示格式
    表111日期时间类型
    类型值 标准 输出
    0 Default mon dd yyyy hhmiAM
    1 USA mmddyy
    2 ANSI yymmdd
    3 BritishFrench ddmmyy
    4 German ddmmyy
    5 Italian ddmmyy
    6 dd mon yy
    7 mon ddyy
    8 hhmiss
    Default + millisecondsmon dd yyyy
    hhmissmmmAM(or )
    10 USA mmddyy
    11 JAPAN yymmdd
    12 ISO yymmdd
    13 Europe Default + millisecondsdd mon yyyy
    hhmissmmm(24h)
    14 hhmissmmm(24h)
    类型0913总返回四位年类型显示世纪style值加100类型1314返回24时时钟时间类型0713返回月份三位字符表示(Nov代表November)
    表111中列种格式类型值加100显示世纪年(例00年显示2000年)例日标准显示日期包括世纪应语句:
    SELECT CONVERT(VARCHAR(30)GETDATE()111)
    例子中函数CONVERT()日期格式进行转换显示19971130
    抽取日期时间
    许情况许想日期时间部分完整日期时间例假设想列出站点目录中站点查询月份时希完整日期时间网页弄乱抽取日期特定部分函数DATEPART()象样:
    SELECT site_name Site Name’
    DATEPART(mmsite_entrydate) Month Posted’ FROM site_directory
    函数DATEPART()参数两变量第变量指定抽取日期部分第二变量实际数例子中函数DATEPART()抽取月份mm代表月份面SELECT语句输出结果:
    Site Name Month Posted
    ………………………………………………………………
    Yahoo 2
    Microsoft 5
    Magicw3 5
    (3 row(s) affected)
    Month Posted列显示站点查询月份函数DATEPART()返回值整数函数抽取日期部分表112示
    表112日期部分简写
    日期部分 简写 值
    year yy 17539999
    quarter qq 14
    month mm 112
    day of year dy 1366
    day dd 131
    week wk 153
    weekday dw 17(SundaySaturday)
    hour hh 023
    minute mi 059
    second ss 059
    milisecond ms 0999
    需进行日期时间较时函数DATEPART()返回整数例中查询结果(25)十分易读更易读格式部分日期时间函数DATENAME()例示:
    SELECT site_name Site Name’
    DATENAME(mmsite_entrydate) Month Posted’
    FROM site_directory
    函数DATENAME()函数DATEPART()接收样参数返回值字符串整数面例该DATENAME()结果:
    Site Name Month Postec
    …………………………………………………………………
    Yahoo February
    Microsoft June
    Magicw3 June
    (3 row(s) affected)
    函数DATENAE()抽取星期中某天面例子时抽取周中某天日期中月份:
    SELECT site_name Site Name’
    DATENAME(dwsite_entrydate)+ ’ + DATENAME(mmsite_entrydate)
    Day and Month Posted’ FORM site_directory
    例子执行时返回结果:
    Site Name Day and Month Posted
    ………………………………………………………………………
    Yahoo Friday February
    Microsoft Tuesday June
    Magicw3 Monday June
    (3 row(s) affected)
    返回日期时间范围
    分析表中数时许希取出某特定时间数许特定某天中――说2000年12月25日――访问者站点活动感兴趣取出种类型数许会试图样SELECT语句:
    SELECT * FROM weblog WHERE entrydate122520000
    样做SELECT语句会返回正确记录――返回日期时间12252000 120000000AM记录换句话说刚午夜零点输入记录返回
    注意:
    节讨中假设字段entrydateDATETIME型SMALLDATETIME型节讨SMALLDATETIME型字段适SMALLDATETIME型字段精确秒
    问题SQL Sever完整日期时间代部分日期时间例输入日期输入时间时SQL Sever加缺省时间12:00:00:000AM输入时间输入日期时SQL Sever加缺省日期Jan 1 1900
    返回正确记录需适日期时间范围止种途径做点例面SELECT语句返回正确记录:
    SELECT * FROM weblog
    WHERE entrydate>12252000 AND entrydate<12262000
    语句完成务选取表中日期时间等12252000 120000000AM12262000 120000000AM记录换句话说正确返回2000年圣诞节天输入条记录
    种方法LIKE返回正确记录通日期表达式中包含通配符%匹配特定日期时间里例子:
    SELECT * FROM weblog WHERE entrydate LIKE Dec 25 2000’
    语句匹配正确记录通配符%代表时间
    两种匹配日期时间范围函数选择某月某天某年某时某分钟某秒甚某毫秒输入记录果LIKE匹配秒毫秒首先需函数CONVERT()日期时间转换更精确格式(参见前面转换日期时间节)
    较日期时间
    两日期时间函数根日期时间取出记录函数DATEADD()DATEDIFF()较日期早晚例面SELECT语句显示表中条记录已输入少时:
    SELECT entrydate Time Entered’
    DATEDIFF(hhentrydateGETDATE()) Hours Ago’ FROM weblog
    果前时间2000年11月30号午6点15分会返回结果:
    Time Entered Hours Ago
    …………………………………………………
    Dec 30 2000 409PM 2
    Dec 30 2000 413PM 2
    Dec 1 2000 409PM 698
    (3 row(s) affected)
    函数DADEDIFF()参数三变量第变量指定日期某部分例子中时日期进行较(解日期部分详细容请参考表112)日期2000年11月1日2000年11月30日指定时间间689时外两参数进行较时间返回正数较早时间应该先
    函数DATEADD()两日期相加需计算截止日期类数时函数处例假设访问者必须先注册站点注册免费站点月确定什时候免费时间会完SELECT语句:
    SELECT username User Name’
    DATEADD(mm1firstvisit_date) Registration Expires’
    FROM registration_table
    函数DATEADD()参数三变量第变量代表日期某部分例子代表月份mm第二变量指定时间间隔――例中月变量日期例子中日期取DATETIME型字段firstvisit_date假设前日期June 302000语句返回容:
    User Name Registration Expires
    ……………………………………………………………………………
    Bill Gates Jul 30 2000 409PM
    President Clinton Jul 30 2000 413PM
    William Shakespeare Jul 1 2000 409PM
    (3 row(s) affected)
    注意:
    预料相反函数DATEADD()日期加月加30天函数简单月份值加1意味着11月注册2月注册2天3天时间避免问题函数DATEADD()直接增加天数月份
    发送邮件
    SQL Sever发送简单e_mail信息做点需系统中安装邮件服务器Microsoft Exchange Sever(参见第四章Exchange Active SeverIndex SeverNetShow)需配置SQL Sever识邮件服务器
    SQL Sever识邮件服务器启动事务理器菜单中选择Sever|SQL Mail|Configue时会出现图113示话框输入邮件服务器中注册户名口令然单击OK
    注意:
    果Microsoft Exchange Sever配置SQL Sever程会需(域)户帐号运行Microsoft SQL SeverExchange Sever需安装SQL Sever机器安装Exchange Cliect帐号创建配置文件完成SQL Mail Configuration话框中输入该配置文件名字
    图113
    发送邮件前先启动SQL Mail菜单中选择Sever|SQL Mail|Start果邮件服务器配置正确输入正确户名口令SQL Mail会成功启动
    注意:
    SQL Sever配置动启动邮件服务做点Set Sever Optons话框(菜单中选择Sever|SQL Sever|Configure)中选择Auto Start Mail Client
    发送邮件名xp_sendmail扩展存储程里程例子:
    masterxp_sendmail president@whitehousegovHello Mr President
    程调e_mail址president@whitehousegov发送简单email信息:Hello Mr Presidentemail址信息取代例中相应容发送信息超255字符长度
    想时解站点数库状态时存储程xp_sendmail处例页面理程序发送信息果站点出什问题马知道章讲述更关存储程容
    总结
    章加深SQL知识学会建立索引查询速度更快学会插入删更新表中数集合函数表中数统计信息学会许价值表达式函数程操作字符串日期时间邮件
    章进步加深Microsoft SQL Sever掌握学SQL进行程序设计建立存储程触发器执行计划更兴奋学会SQL Sever动创建网页简单方法
    全面接触SQL
    全面接触SQL语法(1)
    SQL功特性
    实前面文章中已提SQL命令基功然通SQL命令程序设计师数库理员(DBA):
    ()建立数库表格(包括设置表格空间)
    (二)改变数库系统环境设置
    (三)针某数库表格授予户存取权限
    (四)数库表格建立索引值
    (五)修改数库表格结构(新建删修改表格字段)
    (六)数库进行数新建
    (七)数库进行数删
    (八)数库进行数修改
    (九)数库进行数查询
    项便通SQL命令完成事情起起查询两字代表功呢?
    SQL语法分类
    实SQL命令非常SQL出神入化需短短命令便够SQL命令针关系型数库建立出语法叙述SQL类数库中发挥功非常强针VB中常SQL语法基命令加分类介绍说明SQL命令语法前SQL做分类致SQL语法类型说已包含类中
    第类属性词(Predicates)
    SQL命令中指明选择记录方式ALLTOPDISTINCT等等
    第二类声明(Declaration)
    针SQL ParameterParameter Query名称数类型做声明PARAMETERS声明等等
    第三类条件子句(Clause)
    SQL查询中利表达式定义出查询条件缩寻找范围WHERE
    第四类运算符(Operator)操作数(Operation)
    SQL查询中Operation组成表达式(Expression)BETWEENAND运算符INNER JOIN操作数
    第五类函数(Function)
    SQL常见函数AVG()求算数均数函数
    第六类SQL语句(Statement)
    SQL语句说SQL语法体某特定数库发出指示返回相关数SQL语法结构基利面
    式子表示:命令+条件子句
    例:
    SELECT*FROM TAB WHERE TABNAME'A'
    中FROMWHERE便条件子句实SQL语法难您需记住样规相信快解SQL法
    SQL语法命令
    SELECT语句
    SELECT[predicate]{*|table*|[table]field [[table]field2[]]} [AS alias1 [alias2[]]]
    FROM tableexpression [][IN externaldatabase]
    [WHERE]
    [GROUP BY]
    [HAVING]
    [ORDER BY]
    [WITH OWNERACCESS OPTION]
    SELECT语句包括面部分
    predicate
    前面述包括ALLDISTINCTDISTINCTROWTOP利样语句限制查询结果
    *
    指定表格中指定字段
    table
    针选择出记录字段指定表格名称
    field1field2
    想读取数字段名称果包含字段会列出序读取数
    alias1alias2
    代表格实际字段名称化名
    tableexpression
    表格名称包含想数表格
    externaldatabase
    目前数库名字定义externaldatabase中
    ALLDISTINCTDISTINCTROWTOP属性词法
    SELECT [ALL|DISTINCT|DISTINCTROW|[TOP n[PERCENT]]] FROM table
    ALL
    您指定字段数Microsoft Jet数库引擎(database engine)会选择字段定条件查询出需求数集
    全面接触SQL语法(2)
    例面两例子会具相效果会职员表格中返回字段数
    例:
    查询出职员表格中记录通面语句完成
    SELECT ALL* FROM职员表格 DISTINCT
    某表格选择字段数略重复情况说针某字段查询出记录结果唯例许存放职员表格职员
    数许会具相姓名SQL语句中SELECT DISTINCT查询出结果会针样姓名加筛选您
    DISTINCT加省略样查询会显示记录
    DISTINCTROW
    整条记录重复记录忽略掉针某字段数
    table
    指定查询记录需表格
    例:
    SELECT DISTINCTROW公司名称
    FROM顾客表格 INNER JOIN订单表格
    ON顾客表格顾客ID=订单表格顾客ID
    ORDER BY公司名称
    果您忽略 DISTINCTROW会公司产生行订单数外DISTINCTROW表格中会省略掉
    TOP
    第条条开始(利ORDER BY条件子句)返回特定条数数
    例:
    您想知道2000年班前25名学生姓名数时您输入样语句:
    SELECT TOP 25学生姓名
    FORM学生表格
    WHERE毕业年份1994
    ORDER BY毕业成绩均分数 DESC
    果您没加ORDER BY行条件话您数会机数外TOP语句加数字外利保留
    字PERCENT查询
    例:
    SELECT TOP 10 PERCENT学生姓名
    FROM学生表格
    WHERE毕业年份1994
    ORDER BY毕业成绩均DESC
    PARAMETERS(参数)声明法
    参数型查询语法中参数名称数类型作 声明操作
    PARAMETERS name datatype[name datatype[]]
    name
    PARAMETERS名称您参数名称作字符串名称中包含空字符串利中括号处理例:VBeden
    datatype
    输入参数数类型
    例:
    您查询时需机动输入姓名 利列方式完成:
    PARAMETERS 输入姓名 Text
    SELECT*
    FROM职员表格
    WHERE姓名输入姓名:
    全面接触SQL语法(3)
      ORDER BY条件语句
      条件子句通常SELECT语句合目查询结果指定字段加排序
      SELECT fieldlist
      FROM table
      WHERE selectcriteria
      ORDER BY field[ASC|DESC][field2[ASC|DESC][]]
      fieldlist
      欲查询字段名称中ALLDISTINCTDISINCTROWTOP起
      table
      欲查询表格名称
      selectcriteria
      查询标准设置
      field1
      指定字段作排序没加ORDER BY查询出数集会作排序操作
      ASC
      递增序类(默认值)
      DESC
      递减序类
      例:
      输出数出生先次序排列利面命令
      SELECT姓名生日
      FROM职员表格
      ORDER BY生日
      SELECT LastNameFirstName
      FROM Employees
      ORDER BY LastName ASC
      IN条件子句
      指定速胜外部数库表格(必须Microsoft Jet数库引擎连接数库dBaseParadox等等)
      
    SELECT|INSERT]INTO destination IN
    {path|[path type]|[[typeDATABASEpath]]}
    FROM tableexpression IN
    {path|[path type]|[[typeDATABASEpath]]}
    destination
      欲插入数外部表格名称
      tableexpression
      表格名称读取数表格名称参数单表格名称段已存储SQL查询等
      path
      包含该表格完整路径名称
      type
      数库类型名称 通常数库部属Jet database时会(例:dBASE IIIdBASE IVParadox 3xParadox 4x Btrieve)
      例:面两段意义相
    PartAFROM Table
    IN [dBASE IVDATABASEC\DBASE\DATA\SALES]
    PartBFROM Table
    IN C\DBASE\DATA\SALES dBASE IV
      例:Microsoft Jet database
    SELECT顾客编号
    FROM顾客表格
    IN CUSTOMERMDB
    WHERE顾客编号 Like A*
    中CUSTOMERMDBOJet database数库名称中包含顾客表格
    例:dBASE III or IV
    SELECT顾客编号
    FROM顾客表格
    IN C\DBASE\DATA\SALES dBASE IV
    WHERE顾客编号 Like A*
    ACCESS数库时必须指明该数库类型名称

    全面接触SQL语法(4)
    HAVING条件子句
    指定特定分组记录满足HAVING指定条件状态条件针分组条件设置
    SELECT fieldlist
    FROM table
    WHERE selectcriteria
    GROUP BY groupfieldlist
    HAVING groupcriteria
    fieldlist
    显示查询字段名称(ALLDISTINCTDISTINCTROWTOP相结合)
    table
    欲查询数表格名称
    selectcriteria
    选取标准
    groupfieldlist
    分组记录字段名称10字段字段序决定高低分组阶层
    groupcriteria
    决定什样分组记录显示
    HAVINGWHERE法相类似处HAVING必须GROUP分组数
    例:
    SELECT分类编Sum(库存数量)
    FROM产品表格
    GROUP BY分类编号
    HAVING Sum(库存数量)>100 AND产品名称 LIKE *纸
    GROUP BY条件子句
    指定字段具相数值记录合成条
    SELECT fieldlist
    FROM table
    WHERE criteria
    GROUP BY groupfieldlist
    fieldlist
    欲读取字段名称(ALLDISTINCTDISTINCTROWTOP合)
    table
    查询表格名称
    groupfieldlist
    分组记录字段名称10字段字段序决定高低分组层次
    例:
    SELECT姓名Count(姓名)AS职员姓名
    FROM职员表格
    WHERE部门名称'业务部'
    GROUP BY姓名
    FROM条件子句
    指定表格名称查询中包含列SELECT语句字段数
    SELECT fieldlist
    FROM tableexpression[IN externaldatabase]
    fieldlist
    表格中字段名称(ALLDISTINCTDISTINCTROWTOP相结合)
    tableexpression
    表格名称表格算式
    externaldatabase
    该表格参考外部数库时完整路径名称记
    例:
    职员表格查询出姓名字段数(姓名字段查询显示)
    SELECT姓名 FROM职员表格
    WHERE条件子句
    指定查询条件限制
    SELECT fieldlist
    FROM tableexpression
    WHERE criteria
    fieldlist
    字段名称(ALLDISTINCTDISTINCTROWTOP相结合)
    tableexpression
    表格名称表格算式
    criteria
    查询结果必须限制标准
    例:
    查询出职员表格中姓氏李数面语句
    SELECT姓名
    FROM职员表格
    WHERE姓氏'李'
    全面接触SQL语法(5)
    BETWEENAND运算符
    决定某数值否介特定范围运算符SQL语句中
    expr[Not]BETWEEN value1 AND value2
    expr
    指定加计算字段表达式组合
    value1value2
    指明数值范围
    例:
    职员表格查询出年龄介2530岁员工利面程序做
    SELECT姓名年龄 BETWEEN 25 AND 30
    FROM职员表格
    LIKE操作数
    字符串特定字符串样式(pattern)较符合该字符串样式记录滤出
    expression LIKE pattern
    expression
    WHERE条件子句SQL表达式
    pattern
    较字符串样式
    例:
    查询出李首姓氏利面式子
    Like 李*
    LIKE操作数种范例:
    1字符:
    (1)a*a
    筛选:aaaBaaBBBa筛选:aBC
    (2)*ab*
    筛选:abcAABBXab筛选:aZbbac
    2特殊字符:
    a*a
    筛选:a*a筛选:aaa
    3单字符:
    aa
    筛选:aaaa3aaBa筛选:aBBBa
    4单数字:
    a#a
    筛选:a0aa1aa2a筛选:aaaa10a
    5字符范围:
    az
    筛选:fpj筛选:2&
    6指定字符外部范围:
    az
    7指定非数字:
    09
    筛选:Aa&~筛选:019
    8组合式结构:
    abm#
    筛选:An9az0a99筛选:abcaj0
    SQL数字函数
    1AVG:算数均数
    AVG(expr)
    expr
    字段名称表达式
    例:
    计算职员身高超165厘米职员均身高利面SQL语句完成
    SELECT Avg(身高)
    AS均身高
    FROM职员表格 WHERE身高>165
    2COUNT:计算记录条数
    COUNT(expr)
    expr
    字段名称表达式
    例:
    统计出业务部门职员数查询出职员姓名利面程序
    SELECT Count(姓名) AS职员姓名
    FROM职员表格
    WHERE部门名称'业务部'
    3FIRSTLAST:返回某字段第条数条数
    FIRST(expr)
    LAST(expr)
    expr
    字段名称表达式
    例:
    找出货品数量字段第条数货品价格字段条数时利面查询方式
    SELECT FIRST(货品数量)LAST(货品价格)
    FROM订单表格
    4MAXMIN:返回某字段值值
    法FIRSTLAST
    5SUM:返回某特定字段运算总数值
    SUM(expr)
    expr
    字段名称表达式
    例:
    计算出货品总价面程序
    SELECT
    Sum(单位价格*货品数量)
    AS货品总价 FROM订单表格
    层SQL查询
    顾名思义层SQL查询便:SQL语句中包含SQL查询语句形成部嵌套查询类型
    comparison[ANY|ALL|SOME](sqlstatement)
    expression[NOT]IN (sqlstatement)
    [NOT]EXISTS(sqlstatement)
    comparison
    表达式层查询结果较操作
    expression
    层查询结果作搜索表达式
    sqlstatement
    SELECT语句构成SQL查询必须()该语句括起
    例:
    先订单表格中查询出单位产品表格中单位查询出高订单表格单位价格记录
    SELECT * FROM产品表格
    WHERE单位价格>ANY (SELECT单位价格 FROM订单表格 WHERE折扣>25)
    全面接触SQL语法(6)
    SQL数库维护
    表格建立
    SQL中基语法作番介绍偏数库数查询滤实际通SQL命令做事接介绍便利SQL语法命令建立数库中表格
    CREATE TABLE语句
    利命令建立全新表格前提:数库必须已存
    CREATE TABLE table(field1 type[(size)][index1][field2 type[(size)][index2][]][nultifieldindex[]])
    table
    欲建立新表格名称
    field1field2
    新表格中新字段名称少字段
    type
    字段数类型
    size
    字段
    index1index2
    利CONSTRAINT条件子句定义单字段索引名称
    multifieldindex
    利CONSTRAINT条件子句定义重字段索引名称
    例:
    建立拥职员姓名部门字段表格
    CREATE TABLE职员表格 (姓名TEST部门TEST职员编号 INTEGER CONSTRAINT职员字段索引PRIMARY KEY)
    范例中建立表格名称职员表格表格定义该表格键值限制数重复输入
    表格索引建立
    CREATE INDEX语句
    命令已存表格建立索引法:
    CREATE[UNIQUE]INDEX index ON table(field[ASC|DESC][field[ASC|DESC]])
    [WITH {PRIMARY|DISALLOWNULL|IGNORENULL}]
    index
    欲建立索引名称
    table
    欲建立索引表格名称
    field
    欲建立索引字段名称通DESC保留字决定索引序
    例:
    职员表格中建立索引
    CREATE INDEX新索引名称
    ON职员表格(姓名部门)
    表格字段更新
    CONSTRAINT条件子句
    CONSTRAINT功类似索引(INDEX)然CONSTRAINT建立表格间关联性
    单字段索引:
    CONSTRAINT name{PRIMARY KEY|UNIQUE|REFERENCES foreigntable[(foreignfield1foreignfield2)]}
    字段索引:
    CONSTRAINT name
    {PRIMARY KEY(primary1[primary2[]])
    |UNIQUE(unique1[unique2[]])
    |FOREIGN KEY (ref1[ref2[]])
    |REFERENCES foreigntable[(foreignfield1[foreignfield2[]])]}
    name
    建立CONSTRAINT名称
    primary1primary2
    设计成键值字段名称()
    unique1unique2
    设计成唯键值字段名称()
    foreign key
    字段名称参考表格中字段字段名称
    foreigntable
    前述参考表格
    foreignfield1foreignfield2
    参考表格中ref1ref2字段指定字段果参考字段参考表格中键值省略条件子句
    例:
    建立新职员数表格表格包含姓名部门名称生日三字段三字段建立唯索引时面段SQL语句
    CREATE TABLE职员数表格
    (姓名 TEST部门名称 TEST生日 DATETIMECONSTRAINT职员数表格限制 UNIQUE(姓名部门名称生日))
    SQL中数库表格建立相关命令利命令通SQL语句数库表格完整建立出接章节针数库建立维护增删SQL语句作介绍
    全面接触SQL语法(7)
    表删
    DELETE语句
    利DELETE语句表格中记录删(注意:记录删法复原条件设置正确)
    DELETE[table*]
    FROM tableexpression
    WHERE criteria
    table
    欲删记录表格名称*取代
    tableexpression
    表格名称参数单表格名称INNER JOINLEFT JOINRIGHTJOIN等运算结果
    criteria
    决定表格中记录删标准
    例:
    职员表格中姓名姓名做'李名'记录删利面SQL语句完成
    DELETE * FROM职员表格
    WHERE姓名'李名'
    数库表格相关操作命令
    SQL作查询数库表格建立工具外数库表格新建删修维护具相错功读者SQL命令宜整效率提高着帮助SQL语句带优势常常会遇情况:表格作复杂步骤处理时许SQL语句完成需求目标乍许觉玄妙接章节会解中妙处
    SELECTINTO语句
    通命令利存表格查询建立新表格查询语句
    SELECT field1[field2[]]INTO newtable[IN externaldatabase]
    FROM source
    field1field2
    欲拷贝新表格字段名称
    newtable
    欲建立新表格名称已存表格
    externaldatabase
    该表格外外部数库时该数库名称
    source
    记录数拷贝源表格名称单表格段SQL查询语句
    例:
    通面SQL语句建立新训练名册表格
    SELECT职员表格姓名职员表格部门
    INTO训练名册 FROM职员表格
    WHERE职称'新进员'
    INNER JOIN操作数
    某字段数相等时两表格记录加组合
    SELECT fields
    FROM table1 INNER JOIN table2
    ON table1field1 compopr table2field2
    table1table2
    欲进行记录组合表格名称
    field1field2
    欲组合字段名称(必须具相数类型)
    compopr
    较关系运算符:<><<>等
    例:
    分类表格产品表格作组合参考面SQL语句
    SELECT分类名称产品名称
    FROM分类表格 INNER JOIN产品表格
    ON分类表格分类编号产品表格分类编号
    UNION操作数
    通UNION操作数建立连接查询条件UNION操作数两表格查询结果组合起
    [TABLE]query1 UNION [ALL][TABLE]query2 [UNION [ALL]
    [TABLE]queryn []]
    query1query2queryn
    SELECT语句已存查询名称已存表格名称
    例:
    利面SQL语句订单数量超1000顾客表格记录新客户表格作UNION操作
    TABLE新客户表格 UNION ALL
    SELECT *
    FROM顾客表格
    WHERE订单数量>1000
    ALTER语句
    表格建立利ALTER语句修改表格字段设计
    ALTER TABLE table
    {ADD {COLUMN field type[(size)][CONSTRAINT index]
    |CONSTRAINT multifieldindex}
    |DROP {COLUMN field|CONSTRAINT indexname}}
    table
    欲ALTER表格名称
    field
    增加删字段名称
    type
    字段数类型
    size
    字段
    index
    字段索引
    例:
    职员表格中新建薪水字段
    ALTER TABLE职员表格
    ADD COLUMN薪水 CURRENCY
    例:
    职员表格中删薪水字段
    ALTER TABLE职员表格 DROP COLUMN薪水
    DROP语句
    针指定表格字段加删索引删
    DROP {TABLE table|INDEX index ON table}
    table
    欲删表格索引附表格名称
    index
    欲表格中删索引名称
    例:
    职员表格中删编号索引
    DROP INDEX MyIndex ON Employees
    例:
    数库中删整表格
    DROP TABLE职员表格
    INSERT INTO语句
    新建条数表格中
    条记录新建查询:
    INSERT INTO target [IN externaldatabase][(field1[field2[]])]
    SELECT [source]field1[field2[]
    FROM tableexpression
    单条记录新建查询:
    INSERT INTO target[(field1[field2[]])]
    VALUES(value1[value2[])
    target
    新建记录表格名称
    externaldatabase
    外部数库路径搭配IN条件子句
    source
    记录表格中拷贝时指明该表格名称
    field1field2
    欲增加数字段名称
    tableexpression
    表格名称描述记录表格中插入表格名称配合INNER JOINLEFT JOIN RIGHT JOIN运算符起
    value1value2
    欲插入表格中数值
    例:
    客户数表格中新表格插入数
    INSERT INTO客户数表格
    SELECT新客户数表格*
    FROM新客户数表格
    例:
    职员表格中插入数
    INSERT INTO职员表格(姓名生日职称)
    VALUES(王荣571211理)
    例:
    训练员表格中职员雇时间超30天者加入正式职员表格中
    INSERT INTO职员表格
    SELECT训练员表格*
    FROM训练员表格
    WHERE雇天数>30
    UPDATE语句
    建立UPDATE查询通条件限制修改特定数
    UPDATE table
    SET newvalue
    WHERE criteria
    table
    欲修改数表格名称
    newvalue
    欲修改成数值(该项数值插入特定字段中)
    criteria
    查询条件决定修改记录
    例:
    订单表格中订单数量修改成11倍运费103倍利列SQL语句完成
    UPDATE订单表格
    SET订单数量订单数量 * 11运费运费 * 103倍
    WHERE运达点'美国'
    完成修改利 SELECT语句配合样 WHERE条件子句察修改数否正确
    事实利SQL完成某似复杂操作需繁琐SQL命令组合许许步骤完成实重活SQL命令会精简SQL语句里获高效率
    SQL语法详解
    SQL语句详解(1)
    1 CREATE DATABASE database_name [WITH LOG IN pathname]
    创建数库
    database_name:数库名称
    pathname:事务处理日志文件
    创建database_namedbs目录存取权限GRANT设定日志文件
    BEGIN WORK等事务语句(START DATABASE语句改变)
    选定前数库日志文件
    :select dirpath form systables where tabtype L
    例:create databse customerdb with log in usrjohnlogcustomerlog
    1 DATABASE databsename [EXCLUSIVE]
    选择数库
    database_name:数库名称
    EXCLUSIVE:独占状态
    存取前目录DBPATH中指定目录数库事务中处理程中语句
    例:dtabase customerdb
    3 CLOSE DATABASE
    关闭前数库
    database_name:数库名称
    语句列语句合法:
    CREATE DATABASE DATABASE DROP DATABSE ROLLFORWARD DATABASE
    删数库前必须语句
    例:close database
    4 DROP DATABASE database_name
    删指定数库
    database_name:数库名称
    户DBA表拥者删文件包括数库目录允许删前数库(须先关闭前数库)事务中处理程中语句通ROLLBACK WORK数库恢复
    例:drop databse customerdb
    5 CREATE [TEMP] TABLE tablename(column_name datatype [NOT NULL] …)
    [IN pathname]
    创建表时表
    tablename:表名称
    column_name:字段名称
    datatype:字段数类型
    pathname:指定表存放位置
    TEMP指定建立时表表名唯字段唯CONNECT权限户建立时表创建表缺省允许CONNECT户存取ALTER
    例:create table user
    ( c0 serial not null c1 char (10)
    c2 char(2)
    c3 smallint
    c4 decimal(63)
    c5 date
    ) in usrjohncustomerdbsuser
    6 ALTER TABLE
    ALTER TABLE tablename
    {ADD (newcol_name newcol_type [BEFORE oldcol_name] …) | DROP (oldcol_name …)
    | MODIFY (oldcol_name newcol_type [NOT NULL] … )} …
    修改表结构
    tablename:表名称
    newcol_name:新字段名称
    newcol_type:新字段类型
    oldcol_name:老字段名称
    单ADD子句DROP子句MODIFY子句某字句失败操作中止原字段NULL允许MODIFYNOT NULL非NULL字段中均非空反ALTER者表拥者拥DBA权限授权事务中处理程中语句
    例:alter table user
    add ( c6 char(20) before c5)
    7 RENAME TABLE oldname TO newname
    修改表名
    oldname:原名称
    newname:新名称
    RENAME者表拥者拥DBA权限授权事务中处理程中语句
    例:rename user to bbb
    8 DROP TABLE tablename
    删表
    tablename:表名称
    删表意味着删中数字段索引表赋权视图等户删系统目录表语句者表拥者拥DBA权限事务中处理程中语句
    9 RENAME COLUMN tableoldcolumn TO newcolumn
    修改字段名
    tableoldcolumn:表名原字段名称
    newcolumn:新字段名称
    语句者表拥者拥DBA权限ALTER权限户事务中处理程中语句
    例:rename column userc6 to c7
    10CREATE VIEW viewname columnlist
    CREATE VIEW viewname columnlistAS select_statement [WITH CHECK OPTION]
    创建视图
    viewname:视图名称
    columnlist:字段列表
    select_statement:SELECT语句
    语句视图:ALTER TABLEDROP INDEXALTER INDEXLOCK TABLECREATE INDEX RENAME TABLE视图延基表字段名表达式等虚字段表间字段重名必须指明标识字段名视图中某字段命名字段必须命名视图中数类型延基表中数类型虚字段起诀表达式ORDER BYUNION子句视图中字段SELECT权限事务中处理程中语句事务回滚视图建立恢复
    例:create view v_user as select * from user where c1 B1
    11DROP VIEW viewname
    删视图
    viewname:视图名称
    户删建立视图视图代视图删事务中处理中语句
    例:drop view v_user
    12CREATE INDEX
    CREATE [UNIQUEDISTINCT] [CLUSTER] INDEX index_name ON table_name
    ([column_name ASCDESC]…)
    创建索引
    index_name:索引名称
    table_name:表名称
    column_name:字段名称
    UNIQUEDISTINCT:唯索引
    CLUSTER:表物理存放序索引排列
    ASCDESC:升序降序缺省升序
    语句执行时表状态置EXCLUSIVE复合索引包含8字段字段长度120字节事务中处理程中语句事务回滚索引建立恢复
    例:create cluster index ix_user on user(c5)
    13ALTER INDEX indexname TO [NOT] CLUSTER
    修改索引性质
    indexname:索引名称
    TO [NOT] CLUSTER:掉加CLUSTER属性
    语句执行时表状态置EXCLUSIVE事务中处理程中语句事务回滚索引性质改变恢复
    例:alter index ix_user to not cluster
    14DROP INDEX indexname
    删索引
    indexname:索引名称
    语句者索引拥者拥DBA权限事务中处理程中语句否事务法恢复
    例:drop index ix_user
    15CREATE SYNONYM synonym FOR tablename
    创建义名
    synonym:义名
    tablename:表名称
    数库创建者义名没赋予义名权限户义名义名表名相事务中处理程中语句
    例:create synonym user_alias for user
    16DROP SYNONYM synonym
    删义名
    synonym:义名
    删建立义名事务中处理程中语句否法恢复
    例:drop synonym user_alias
    17UPDATE STATISTICS [FOR TABLE tablename]
    更新数库统计数字
    tablename:表名称
    语句仅作前数库提高查询效率执行语句改变统计数
    例:update statistics for table user
    SQL语句详解(2)
    1 GRANT {DBA|RESOURCE|CONNECT} TO {PUBLIC|userlist}
    授权命令
    PUBLIC|userlist:全部指定户
    三种权限居仅居事务处理程中执行GRANT语句
    例:grant resource to pulbic
    GRANT tabprivilege ON tablename TO {PUBLIC|userlist} [WITH GRANT OPTION]
    授表级权限
    tabprivilege:表级权限
    tablename:表名称
    PUBLIC|userlist:全部指定户
    [WITH GRANT OPTION]:表示授权户否权限进行二次授权
    户建立表达式[WITH GRANT OPTION]准许表中进行赋权限定越权限优先级越高
    例:grant update(c1c6) on user to dick with grant option
    附(INFORMIX权限)
    (1)数库权限(控制数库访问数库中表创建删)
    DBA权限:全部权利修改系统表建立删表索引增加恢复表数授予户数库权限等
    RESOURCE权限:允许数库表中数进行存取建立永久性表索引
    CONNECT权限:允许数库表中数进行存取建立删视图时表
    (2)表级权限(表建立修改检索更新等权限)
    ALTER:更改权限
    DELETE:删权限
    INDEX:索引权限
    INSERT:插入权限
    SELECT [(cols)]:指定字段字段查询权限指明字段缺省字段
    UPDATE [(cols)]:指定字段字段更新权限指明字段缺省字段
    ALL [PRIVILEGES]:表级权限
    2 REVOKE {DBA|RESOURCE|CONNECT} FROM {PUBLIC|userlist}
    收权命令
    PUBLIC|userlist:全部指定户
    三种权限居仅居事务处理程中执行GRANT语句
    例:revoke resource from john
    REVOKE tabprivilege ON tablename FROM {PUBLIC|userlist}
    收表级权限
    tabprivilege:表级权限
    tablename:表名称
    PUBLIC|userlist:全部指定户
    [WITH GRANT OPTION]:表示授权户否权限进行二次授权
    户取消赋予户表级存取权限取消权限SELECTUPDATE作取消时取消表中字段SELECTUPDATE权限
    例revoke update on user from dick
    3 LOCK TABLE tablename IN {SHARE|EXCLUSIVE} MODE
    记录级加锁表级加锁文件加锁
    tablename:表名称
    SHARE:允许读表中数允许作修改
    EXCLUSIVE:禁止形式访问表
    次表琐定次事务处理程中BEGIN WORK立执行LOCK TABLE取代记录级加锁COMMIT WORKROLLBACK WORK语句取消表加锁没事务处理锁保持户退出执行UNLOCK止
    例:lock table user in exclusive mode
    4 UNLOCK TABLE tablename
    取消记录级加锁表级加锁文件加锁
    tablename:表名称
    例:unlock user
    5 SET LOCK MODE TO [NOT] WAIT
    改变锁定状态
    TO [NOT]:等解锁死锁等提示错误信息表示记录锁缺省值
    访问EXCLUSIVE状态记录返回错误
    6 START DATABSE db_name [WITH LOG IN pathname]
    启动事务处理
    pathname:事务处理日志文件
    执行该语句前需先关闭前数库
    例clost database
    start databse customer with log in usrjohnlogcustomerlog
    7 BEGIN WORK
    开始事务例:begin work
    8 COMMIT WORK
    提交(正常结束)事务例:commit work
    9 ROLLBACK WORK
    回滚(非正常结束)事务例:rollback work
    10 SELECT
    SELECT select_list FROM tab_name|view_name
    WHERE condition
    GROUP BY column_name
    HAVING condition
    ORDER BY column_list
    INTO TEMP table_name
    查询语句
    select_list:选择表*
    tab_name:表名称
    view_name:视图名称
    condition:查询条件BETWEENINLIKEIS NULLLIKEMATCHESNOT
    ANDOR<>> ><column_name:分组字段名称
    condition:群聚条件
    column_list:排序字段列表缺省ASC指定DSC排序时NULL值非零值
    table_name:时表名称
    例:略
    附(常函数)
    (1)集合函数:
    count(*)
    sum(数项表达式)avg(数项表达式)max(数项表达式)min(数项表达式)
    count(distinct数项表达式)sum(distinct数项表达式)avg(distinct数项表达式)
    (2)代数函数三角函数
    HEX(数项表达式)ROUND(数项表达式)TRUNC(数项表达式)
    TAN(数项表达式)ABS(数项表达式)MOD(数数)
    (3)统计函数
    标准差stdev()方差variance()范围rang()
    (4)时间函数
    DAY(日期时间表达式):返回数字型
    MONTH(日期时间表达式):返回整数
    WEEKDAY(日期时间表达式):0�<星期天1星期返回整数
    YEAR(日期时间表达式)返回整数
    DATE(非日期表达式):返回日期型
    EXTEND(日期时间表达式[第]):返回指定整数
    MDY(月日年):返回日期型
    CURRENT:返回日期型
    (5)时间函数
    ROUND()四舍五入:ROUND(1095position)position进行四舍五入前位置
    TRUNC()截取:TRUNC(10950)position截取位置
    INFORMIX时表列情况动取消:
    A退出数库访问工具(DBACCESS)
    BSQL通话结束(DISCONNECT)
    C发出取消表语句
    D退出程序时
    11 INSERT
    INSERT INTO view_name|table_name [(column_list)] VALUES (value_list)
    INSERT INTO view_name|table_name [(column_list)] select_statement
    插入数
    view_name|table_name:视图名表名称
    column_list:数项列表
    value_list:值列表
    select_statement:查询语句
    例:略
    12 DELETE FROM view_name|table_nameWHERE searchconditions
    删语句
    view_name|table_name:视图名表名称
    searchconditions删条件
    例:略
    13 UPDATE
    UPDATE view_name|table_nameSET column_1 value_1istWHERE search_conditions
    UPDATE view_name|table_nameSET column_1|* value_1istWHERE search_conditions
    更新数语句
    view_name|table_name:表名称视图表名称
    value_1ist:字段值
    search_conditions:更新数条件
    例:略
    14 CHECK TABLE tablename
    检查索引语句
    语句者表拥者拥DBA权限systable语句
    例:略
    15 REPAIR TABLE tablename
    修复索引
    语句者表拥者拥DBA权限systable语句
    例:略
    16 LOAD FROM filename INSERT INTO table_name [(column_name[…])]
    文数栽入表中
    例:load form aatxt insert into user
    17 UNLOAD TO pathname
    表中数卸文
    例:unload to aatxt select * from user
    18 INFO
    系统信息查询
    INFO TABLES:前数库表名字
    INFO columns FOR table_name:指定表字段信息
    INFO INDEXES FOR table_name:指定表索引信息
    INFO [ACCESS|PRIVILEGES] FOR table_name:指定表存取权限
    INFO STATUS FOR table_name:指定表状态信息
    例: info tables
    SQL语法参考手册
    DB2提供关连式资料库查询语言 SQL (Structured Query Language) 种非常口语化易学易懂语法语言资料库系统必须提供表示关连式操作包含资料定义(DDL)资料 处理(DML)SQL原拼成 SEQUEL语言原型系统 R名 字 IBM圣荷西实验室完成 IBM部许性效率测试结果相令满意决定系统R技术基础发展出 IBM产品美国国家标准学会(ANSI)国际标准化组织(ISO  1987遵循 IBM SQL基础标准关连式资料语言定义
    资料定义 DDL(Data Definition Language)
    资料定语言指资料格式形态定义语言资料库建立时候 时首先面举资料分表格关系表格什麽栏位键表格表格间互相参考关系等等开始时候必须规划
    建表格:
    语法:
    CREATE TABLE table_name(
    column1 DATATYPE [NOT NULL] [NOT NULL PRIMARY KEY]
    column2 DATATYPE [NOT NULL]

    说明 
    DATATYPE 资料格式详见表
    NUT NULL 允许资料空(尚未资料填入)
    PRIMARY KEY 表键
    更改表格 
    ALTER TABLE table_name
    ADD COLUMN column_name DATATYPE
    说明 增加栏位(没删某栏位语法)
    ALTER TABLE table_name
    ADD PRIMARY KEY (column_name)
    说明 更改表定义某栏位设键
    ALTER TABLE table_name
    DROP PRIMARY KEY (column_name)
    说明 键定义删
    建立索引 
    CREATE INDEX index_name ON table_name (column_name)
    说明 某表格栏位建立索引增加查询时速度
    删 
    DROP table_name
    DROP index_name
    资料形态 DATATYPE
    SQL 资料形态 DATATYPEs
    smallint
    16位元整数
    interger
    32位元整数
    decimal(ps)
    p精确值 s十进位整数精确值 p指全部数(digits)
    值 s指数点後位数
    果没特指定系 统会设 p5 s0
    float
    32位元实数
    double
    64位元实数
    char(n)
    n长度字串n超 254
    varchar(n)
    长度固定长度 n字串n超 4000
    graphic(n)
    char(n)样单位两字元 doublebytes n超 127形态支援两字元长度字体例中文字
    vargraphic(n)
    变长度长度 n双字元字串n超 2000
    date
    包含 年份月份日期
    time
    包含 时分钟秒
    timestamp
    包含 年月日时分秒千分秒
    资料操作 DML (Data Manipulation Language)
    资料定义後接资料操作资料操作外增加资料(insert) 查询资料(query)更改资料(update)删资料(delete)四种模式分介绍语法:
    增加资料:
    INSERT INTO table_name (column1column2) VALUES ( value1value2 )
    说明:
    1没指定column系统会表格栏位序填入资料
    2栏位资料形态填入资料必须吻合
    3table_name景观 view_name
    INSERT INTO table_name (column1column2) SELECT columnxcolumny FROM another_table
    说明:子查询(subquery)表格资料填入
    查询资料:
    基查询
    SELECT column1columns2 FROM table_name
    说明:table_name 特定栏位资料全部列出
    SELECT *
    FROM table_name
    WHERE column1 xxx
    [AND column2 > yyy] [OR column3 <> zzz]
    说明:
    1'*'表示全部栏位列出
    2WHERE後接条件式符合条件资料列出
    SELECT column1column2
    FROM table_name
    ORDER BY column2 [DESC]
    说明:
    ORDER BY指定某栏位做排序[DESC]指排列
    没指明排列
    组合查询
    组合查询指查询资料源单表格联合表格够结果
    SELECT *
    FROM table1table2
    WHERE table1colum1table2column1
    说明:
    1查询两表格中中 column1值相资料
    2然两表格相互较栏位资料形态必须相
    3复杂查询动表格会
    整合性查询:
    SELECT COUNT (*)
    FROM table_name
    WHERE column_name xxx
    说明:
    查询符合条件资料笔
    SELECT SUM(column1)
    FROM table_name
    说明:
    1计算出总选栏位必须数数字形态
    2外 AVG()计算均MAX()MIN()
    计算值整合性查询
    SELECT column1AVG(column2)
    FROM table_name
    GROUP BY column1
    HAVING AVG(column2) > xxx
    说明:
    1GROUP BYcolumn1组计算 column2均值
    必须 AVGSUM等整合性查询关键字起
    2HAVING 必须 GROUP BY起作整合性限制
    复合性查询
    SELECT *
    FROM table_name1
    WHERE EXISTS (
    SELECT *
    FROM table_name2
    WHERE conditions )
    说明:
    1WHERE conditions外 query
    2EXISTS指存否
    SELECT *
    FROM table_name1
    WHERE column1 IN (
    SELECT column1
    FROM table_name2
    WHERE conditions )
    说明 
    1 IN後面接集合表示column1存集合里面
    2 SELECT出资料形态必须符合 column1
    查询
    SELECT *
    FROM table_name1
    WHERE column1 LIKE 'x'
    说明:
    1LIKE必须後面'x'相呼应表示 x开头字串
    SELECT *
    FROM table_name1
    WHERE column1 IN ('xxx''yyy')
    说明 
    1 IN後面接集合表示column1存集合里面
    SELECT *
    FROM table_name1
    WHERE column1 BETWEEN xx AND yy
    说明 
    1 BETWEEN表示 column1值介於 xx yy间
    更改资料:
    UPDATE table_name
    SET column1'xxx'
    WHERE conditoins
    说明:
    1更改某栏位设定值'xxx'
    2conditions符合条件没 WHERE
    整 table栏位会全部更改
    删资料:
    DELETE FROM table_name
    WHERE conditions
    说明:删符合条件资料
    SQL实践
    SQL实践(1)
    1 NULL值
    RDSQL中字段缺省值空数值型0空值字符型空白空值区
    数值表达式中某变空整表达式值空
    聚合函数中空值忽略计全部空值COUNT(*)返回0外余返回空值
    布尔表达式中结果未知(见表)TRUE AND NULL结果 未知
    未知结果RDSQL中作符合查询条件
    and
    T
    F


    or
    T
    F


    not

    T
    T
    F


    T
    T
    T
    T

    T
    F
    F
    F
    F


    F
    T
    F


    F
    T


    F



    T





    结合表分析列子句 中n120n2空n330结果右
    where n1*n2 < 1000 and n3 30结果:符合查询条件
    where n1*n2 < 1000 or n3 30结果:符合查询条件
    ORDER BY子句中空值空值组
    INSERTUPDATE时关键字NULLnull表示空值
    字段否空CREATE TABLE语句中否NOT NULL指定ALTER修改
    Q:select count(*) from t1select count(c1) from t1否样
    2 字符查找LIKEMATCHES
    LIKE
    MATCHES
    意义

    *
    匹配0字符


    匹配字符


    转义字符

    []
    选择匹配
    例:matches *Sp’匹配字符开始Sp结束字段值
    matches l*’ 匹配第字符意第二字符l余字符意字段值
    matches [AN]*’ 匹配AN字符开始余字符意字段值
    matches *[sS]*’ 匹配含sS字段值扩展case insensitive查询
    like \’ 匹配含字段值
    3 SQL语句求表中关name少num结果表二
    4 表:                     表二:
    5 id   name   num              name    count1
    6 1   AA   1               CC       2
    7 2   AA   2               BB       2
    8 3   AA   3               AA      3
    9 4   AA   1
    10 5   AA   2
    11 6   BB   4
    12 7   BB   5
    13 8   BB   4
    14 9   BB   5
    15 10   CC   6
    16 11   CC   6
    17 12   CC   7
    SQL语句:
    create table t1
    (
    id smallint
    name char(10)
    num smallint
    )
    insert into t1 values(1'AA'1)
    insert into t1 values(2'AA'2)
    insert into t1 values(3'AA'3)
    insert into t1 values(4'AA'1)
    insert into t1 values(5'AA'2)
    insert into t1 values(6'BB'4)
    insert into t1 values(7'BB'5)
    insert into t1 values(8'BB'4)
    insert into t1 values(9'BB'5)
    insert into t1 values(10'CC'6)
    insert into t1 values(11'CC'6)
    insert into t1 values(12'CC'7)
    A:select name count(distinct num) from t1 group by name
    4)旋转矩阵表中关id月份费变横
    中表id某月份记录数>1表:
    id  d1 fee费(分)
    1 20000124 100
    1 20000424 100
    2 20000224 200
    2 20000624 200
    3 20000424 400
    4 20000424 400
    5 20000524 500
    6 20000624 600
    7 20000924 900
    8 20001124 1100
    表二:
    id 1月份费 2月份费 …… … …12月份费
    1 100 0 0 100 0 0 0 0 0 0 0  0
    2 0 200 0 0  0 200 0  0 0 0 0  0
    3 0 0 0 400 0 0 0 0 0 0 0  0
    4 0 0 0 400 0 0 0 0 0 0 0  0
    5 0 0 0 0  500 0 0 0 0 0 0  0
    6 0 0 0 0  0 600 0 0 0 0 0  0
    7 0 0 0 0  0 0 0 0 900 0 0  0
    8 0 0 0 0  0 0 0 0 0 0 1100 0
    SQL语句:
    create table t3
    (
    id smallint
    d1 datetime year to day
    fee int
    )
    insert into t3 values(120000124 100)
    insert into t3 values(120000424 100)
    insert into t3 values(220000224 200)
    insert into t3 values(220000624 200)
    insert into t3 values(320000424 400)
    insert into t3 values(420000424 400)
    insert into t3 values(520000524 500)
    insert into t3 values(620000624 600)
    insert into t3 values(720000924 900)
    insert into t3 values(820001124 1100) 
    create table t4 –旋转矩阵
    (
    m_code smallint
    y1 smallint
    y2 smallint
    y3 smallint
    y4 smallint
    y5 smallint
    y6 smallint
    y7 smallint
    y8 smallint
    y9 smallint
    y10 smallint
    y11 smallint
    y12 smallint
    )
    insert into t4 values(1 100000000000)
    insert into t4 values(2 010000000000)
    insert into t4 values(3 001000000000)
    insert into t4 values(4 000100000000)
    insert into t4 values(5 000010000000)
    insert into t4 values(6 000001000000)
    insert into t4 values(7 000000100000)
    insert into t4 values(8 000000010000)
    insert into t4 values(9 000000001000)
    insert into t4 values(10000000000100)
    insert into t4 values(11000000000010)
    insert into t4 values(12000000000001)
    方法
    select idmonth(d1) monthsum(fee) fei from t3 group by 12 into temp aa
    select id
    sum(y1*fei) y1sum(y2*fei) y2sum(y3*fei) y3sum(y4*fei) y4
    sum(y5*fei) y5sum(y6*fei) y6sum(y7*fei) y7sum(y8*fei) y8
    sum(y9*fei) y9sum(y10*fei) y10sum(y11*fei) y11sum(y12*fei) y12
    from aa t4 where aamonth t4m_code
    group by id order by id
    方法二
    select id
    sum(y1*fee) y1sum(y2*fee) y2sum(y3*fee) y3sum(y4*fee) y4
    sum(y5*fee) y5sum(y6*fee) y6sum(y7*fee) y7sum(y8*fee) y8
    sum(y9*fee) y9sum(y10*fee) y10sum(y11*fee) y11sum(y12*fee) y12
    from t3 t4 where month(d1) t4m_code
    group by id order by id
    方法方法二结果样区:
    方法中先id某月钱进行累加然进行旋转
    方法二中表id某月份记录数>1情况时先条记录进行旋转然
    累加求
    SQL实践(2)
    19 SPL写UPPER函数
    INFORMIX中没UPPER函数存储程实现
    例方法
    SPL Upper()

    Procedure GetCharAt()
    Get a character from a string at a specified position

    DROP PROCEDURE GetCharAt
    CREATE PROCEDURE GetCharAt(str VARCHAR(255) pos INTEGER)
    RETURNING VARCHAR(1)
    DEFINE i INTEGER
    IF pos < 1 THEN
    FOR i 2 TO pos
    LET str str[2255]
    END FOR
    END IF
    RETURN str[11]
    END PROCEDURE

    Procedure Upper()
    Convert a string to uppercase

    DROP PROCEDURE Upper
    CREATE PROCEDURE Upper(str VARCHAR(255))
    RETURNING VARCHAR(255 0)
    DEFINE i INTEGER
    DEFINE len INTEGER
    DEFINE retstr VARCHAR(255)
    IF str IS NULL THEN
    RETURN NULL
    ELSE
    LET len LENGTH(str)
    LET retstr ''
    FOR i 1 TO len
    LET retstr retstr||ToUpper(GetCharAt(str i))
    END FOR
    LET retstr retstr[2255] BUG req'd to strip off leading blank
    RETURN retstr
    END IF
    END PROCEDURE

    Procedure ToUpper()
    Convert a single character to upper case

    DROP PROCEDURE ToUpper
    CREATE PROCEDURE ToUpper(fromchar VARCHAR(11))
    RETURNING VARCHAR(11)
    IF fromchar 'a' THEN
    RETURN 'A'
    ELIF fromchar 'b' THEN
    RETURN 'B'
    ELIF fromchar 'c' THEN
    RETURN 'C'
    ELIF fromchar 'd' THEN
    RETURN 'D'
    ELIF fromchar 'e' THEN
    RETURN 'E'
    ELIF fromchar 'f' THEN
    RETURN 'F'
    ELIF fromchar 'g' THEN
    RETURN 'G'
    ELIF fromchar 'h' THEN
    RETURN 'H'
    ELIF fromchar 'i' THEN
    RETURN 'I'
    ELIF fromchar 'j' THEN
    RETURN 'J'
    ELIF fromchar 'k' THEN
    RETURN 'K'
    ELIF fromchar 'l' THEN
    RETURN 'L'
    ELIF fromchar 'm' THEN
    RETURN 'M'
    ELIF fromchar 'n' THEN
    RETURN 'N'
    ELIF fromchar 'o' THEN
    RETURN 'O'
    ELIF fromchar 'p' THEN
    RETURN 'P'
    ELIF fromchar 'q' THEN
    RETURN 'Q'
    ELIF fromchar 'r' THEN
    RETURN 'R'
    ELIF fromchar 's' THEN
    RETURN 'S'
    ELIF fromchar 't' THEN
    RETURN 'T'
    ELIF fromchar 'u' THEN
    RETURN 'U'
    ELIF fromchar 'v' THEN
    RETURN 'V'
    ELIF fromchar 'w' THEN
    RETURN 'W'
    ELIF fromchar 'x' THEN
    RETURN 'X'
    ELIF fromchar 'y' THEN
    RETURN 'Y'
    ELIF fromchar 'z' THEN
    RETURN 'Z'
    END IF
    RETURN fromchar
    END PROCEDURE
    方法二
    SPL Upper()

    Procedure Upper()
    Convert a string to uppercase

    DROP PROCEDURE upper
    CREATE PROCEDURE upper (str VARCHAR(255)) RETURNING VARCHAR(255)
    DEFINE i INTEGER
    DEFINE l INTEGER
    DEFINE retstr VARCHAR(255)
    IF str IS NULL THEN
    RETURN NULL
    ELSE
    LET l LENGTH(str)
    LET retstr ''
    FOR i 1 TO l
    IF str[11] BETWEEN a AND z THEN
    IF str[11] 'a' THEN
    LET retstr retstr || 'A'
    ELIF str[11] 'b' THEN
    LET retstr retstr || 'B'
    ELIF str[11] 'c' THEN
    LET retstr retstr || 'C'
    ELIF str[11] 'd' THEN
    LET retstr retstr || 'D'
    ELIF str[11] 'e' THEN
    LET retstr retstr || 'E'
    ELIF str[11] 'f' THEN
    LET retstr retstr || 'F'
    ELIF str[11] 'g' THEN
    LET retstr retstr || 'G'
    ELIF str[11] 'h' THEN
    LET retstr retstr || 'H'
    ELIF str[11] 'i' THEN
    LET retstr retstr || 'I'
    ELIF str[11] 'j' THEN
    LET retstr retstr || 'J'
    ELIF str[11] 'k' THEN
    LET retstr retstr || 'K'
    ELIF str[11] 'l' THEN
    LET retstr retstr || 'L'
    ELIF str[11] 'm' THEN
    LET retstr retstr || 'M'
    ELIF str[11] 'n' THEN
    LET retstr retstr || 'N'
    ELIF str[11] 'o' THEN
    LET retstr retstr || 'O'
    ELIF str[11] 'p' THEN
    LET retstr retstr || 'P'
    ELIF str[11] 'q' THEN
    LET retstr retstr || 'Q'
    ELIF str[11] 'r' THEN
    LET retstr retstr || 'R'
    ELIF str[11] 's' THEN
    LET retstr retstr || 'S'
    ELIF str[11] 't' THEN
    LET retstr retstr || 'T'
    ELIF str[11] 'u' THEN
    LET retstr retstr || 'U'
    ELIF str[11] 'v' THEN
    LET retstr retstr || 'V'
    ELIF str[11] 'w' THEN
    LET retstr retstr || 'W'
    ELIF str[11] 'x' THEN
    LET retstr retstr || 'X'
    ELIF str[11] 'y' THEN
    LET retstr retstr || 'Y'
    ELSE
    LET retstr retstr || 'Z'
    END IF
    ELSE
    LET retstr retstr || str[11]
    END IF
    LET str str[2255]
    END FOR
    LET retstr retstr[2255] BUG req'd to strip off leading blank
    RETURN retstr
    END IF
    END PROCEDURE
    说明
    某INFORMIX版中语句
    DEFINE retstr VARCHAR(255)
    LET retstr ''
    LET retstr retstr || 'A'
    返回' A'两字符果确定系统没问题
    SPL中语句 LET retstr retstr[2255]
    BUG req'd to strip off leading blank掉
    20 表中重复键值记录删
    假定keycol唯(关某键值>2条记录时保留条)
    表未分区没户正删表记录语句
    delete from sometable as a
    where rowid <> (select min(rowid) from sometable where keycol akeycol)
    条件满足没ROWID语句
    BEGIN WORK
    SELECT DISTINCT * FROM Table INTO TEMP Temp1
    DELETE FROM Table WHERE 1 1
    INSERT INTO Table SELECT * FROM Temp1
    COMMIT WORK
    说明适记录数时空间足够情况
    21 样语句错误时停止SQL脚

    dbaccess

    BEGIN WORK
    INSERT INTO history
    SELECT *
    FROM current
    WHERE momth 11
    DELETE FROM current
    WHERE month 11
    COMMIT WORK
    插入语句错误(字段momth没找)脚会继续执行回带严重错误
    通设置环境变量DBACCNOIGN1错误发生立停止继续运行
    22 设置运算结果返回位数
    例未DBDLTMASK环境变量时
    CREATE TEMP TABLE t
    (
    col_a DECIMAL(84) NOT NULL
    col_b DECIMAL(84) NOT NULL
    col_c DECIMAL(84) NOT NULL
    )
    INSERT INTO t VALUES(12345 34567 56789)
    SELECT (col_a + col_b) col_c AS value FROM t
    设置环境变量DBDLTMASK前   value 082607547236261
    设置环境变量DBDLTMASK6  value 0826075
    Sql连接查询
    连接查询
    通连接运算符实现表查询连接关系数库模型特点区类型数库理系统标志
    关系数库理系统中表建立时数间关系必确定常实体信息存放表中检索数时通连接操作查询出存放表中实体信息连接操作户带灵活性时候增加新数类型实体创建新表尔通连接进行查询
    连接SELECT语句FROM子句WHERE子句中建立似非FROM子句中指出连接时助连接操作WHERE子句中搜索条件区分开TransactSQL中推荐种方法
    SQL92标准定义FROM子句连接语法格式:
    FROM join_table join_type join_table
    [ON (join_condition)]
    中join_table指出参连接操作表名连接表操作表操作表操作连接称做连接
    join_type指出连接类型分三种:连接外连接交叉连接连接(INNER JOIN)较运算符进行表间某()列数较操作列出表中连接条件相匹配数行根较方式连接分等值连接然连接等连接三种
    外连接分左外连接(LEFT OUTER JOINLEFT JOIN)右外连接(RIGHT OUTER JOINRIGHT JOIN)全外连接(FULL OUTER JOINFULL JOIN)三种连接外连接列出连接条件相匹配行列出左表(左外连接时)右表(右外连接时)两表(全外连接时)中符合搜索条件数行
    交叉连接(CROSS JOIN)没WHERE子句返回连接表中数行笛卡尔积结果集合中数行数等第表中符合查询条件数行数第二表中符合查询条件数行数
    连接操作中ON (join_condition)子句指出连接条件连接表中列较运算符逻辑运算符等构成
    种连接textntextimage数类型列进行直接连接三种列进行间接连接例:
    SELECT p1pub_idp2pub_idp1pr_info
    FROM pub_info AS p1 INNER JOIN pub_info AS p2
    ON DATALENGTH(p1pr_info)DATALENGTH(p2pr_info)
    ()连接
    连接查询操作列出连接条件匹配数行较运算符较连接列列值连接分三种:
    1等值连接:连接条件中等号()运算符较连接列列值查询结果中列出连接表中列包括中重复列
    2等连接: 连接条件等运算符外较运算符较连接列列值运算符包括>><<><<>
    3然连接:连接条件中等()运算符较连接列列值选择列表指出查询结果集合中包括列删连接表中重复列
    例面等值连接列出authorspublishers表中位城市作者出版社:
    SELECT *
    FROM authors AS a INNER JOIN publishers AS p
    ON acitypcity
    然连接选择列表中删authorspublishers表中重复列(citystate):
    SELECT a*ppub_idppub_namepcountry
    FROM authors AS a INNER JOIN publishers AS p
    ON acitypcity
    (二)外连接
    连接时返回查询结果集合中仅符合查询条件( WHERE搜索条件 HAVING条件)连接条件行采外连接时返回查询结果集合中仅包含符合连接条件行包括左表(左外连接时)右表(右外连接时)两边接表(全外连接)中数行
    面左外连接坛容作者信息连接起:
    SELECT a*b* FROM luntan LEFT JOIN usertable as b
    ON ausernamebusername
    面全外连接city表中作者user表中作者城市:
    SELECT a*b*
    FROM city as a FULL OUTER JOIN user as b
    ON ausernamebusername
    (三)交叉连接
    交叉连接带WHERE子句返回连接两表数行笛卡尔积返回结果集合中数行数等第表中符合查询条件数行数第二表中符合查询条件数行数
    例titles表中6类图书publishers表中8家出版社列交叉连接检索记录数等
    6*848行
    SELECT typepub_name
    FROM titles CROSS JOIN publishers
    ORDER BY type

    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 6 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    非常全面的工厂规章制度

    规 章 制 度目 录前 言 3第一章 总 则 3第二章 员工守则 3第三章 员工薪酬制度 6第四章 安全生产管理制度 6第五章 人事制度 7第一节 员工的招聘 ...

    10年前   
    370    0

    非常全面的工厂规章制度 (1)

    规 章 制 度目 录前 言 2第一章 总 则 2第二章 员工守则 2第三章 安全生产管理制度 3第四章 人事制度 4第一节 员工的招聘 4第二节 员工的录用 4...

    12年前   
    428    0

    非常全面的工厂规章制度-员工手册

     武穴市建达船舶制造有限公司 规 章 制 度目 录前 言 3第一章 总 则 3第二章 员工守则 3第三章 员...

    9年前   
    374    0

    DBA常用Sql语句

    查看表空间的名称及大小: SQL>select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from dba_ta...

    5年前   
    1271    0

    SQL上机练习

    创建如下数据表并插入如下数据: create table S (SNO CHAR(6) NOT NULL, SNAME CHAR(8) NOT NULL, SSEX CHAR(2), ...

    5年前   
    1184    0

    Excel VBA入门教程

    VBA入门系列讲座1.1 VBA是什么 直到90年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得不学习一种不同的自动化语言.例如:可以用excel的宏语言来...

    2年前   
    851    0

    《PS快速入门教程》

    PS抠图方法.  一、魔术棒法——最直观的方法  适用范围:图像和背景色色差明显,背景色单一,图像边界清晰。  方法意图:通过删除背景色来获取图像。  方法缺陷:对散乱的毛发没有用。  使用方...

    3年前   
    682    0

    SQL语言学习总结

    SQL语言学习总结  暑假过的真快总感觉昨天才刚放假,还想着这个暑假怎么过时,暑假就已经去了。  这个暑假一开始我们看了浙大的sql的视频,老师给我们的要求是只要看一遍就行。刚开始看的时候还能...

    9年前   
    743    0

    Photoshop-6.0入门教程4

    第4单元 使用图层样式图层样式用于在图层上添加特殊效果,在本单元中我们将学习如何使用图层样式以及它的设置方法。第一课 图层样式的基本用法一、 任务对于图层对象可以直接使用样式,本课的主要...

    4年前   
    800    0

    Photoshop-6.0入门教程5

    路径是Photoshop软件中引入的矢量技术,它不仅可以绘出各种线条、图形,也可以制作选区、填充色彩或描边。在本单元中,我们将学习路径的基本用法以及绘制路径的方法。

    4年前   
    922    0

    钢笔行书入门教程

    钢笔行书入门教程 一,钢笔行书的特征 行书之称始于西晋卫恒《四体绝书》.张怀在《书断》中是这样阐述行书产生原因的:行书者.后汉刘德升所造也.既正书之小伪.务从简易,相间流行.帮谓之行书.在...

    5年前   
    1900    0

    Photoshop-6.0入门教程1

    Photoshop 6.0是美国Adobe公司推出的功能强大的图像处理软件,它相对于前面的版本发生了较大的变化,不仅新增了许多功能,同时在界面上也有许多不同。Photoshop 是一个图像处理软...

    4年前   
    922    0

    Photoshop-6.0入门教程3

    第3单元 图层的使用图层是Photoshop为用户提供的非常重要的处理图像工具,用户大多数的操作都离不开它。简单地说,图层可以将一个图像中的各个部分独立开,用户在对其中的任一部分处理时,不会...

    4年前   
    756    0

    电磁仿真CST入门教程

    电磁仿真CST入门教程1.1 软件介绍CST公司总部位于德国达姆施塔特市,成立于1992年。它是一家专业电磁场仿真软件的提供商。CST软件采用有限积分法(Finite Integration)...

    2年前   
    758    0

    《硬笔书法入门教程》

    写字姿势与执笔方法一、写字姿势书写的姿势对于练习写字非常重要。正确的写字姿势不仅能保证书写自如,减轻疲劳,提高书写水平,而且还能促进少年儿童身体的正常发育,预防近视、斜视、脊椎弯曲等多种疾病的...

    2年前   
    469    0

    Photoshop-6.0入门教程6

    通道是Photoshop中非常重要的工具,它与各种特效配合可以制作出非常精美的图像,但是通道比较难以理解、使用起来不易把握。本单元中我们将学习通道的用法。

    4年前   
    841    0

    Photoshop-6.0入门教程2

    Photoshop中的工具非常多,使用它们不仅会涉及工具栏,同时还涉及了控制面板、图层等一系列知识。在本单元中,我们将通过制作例图来学习这些工具的用法以及相应的控制面板和菜单的应用。

    4年前   
    647    0

    少儿围棋入门教程

    知道棋盘的基础知识:是方的有横竖各19道线,361个点。认得星和天元。知道胜负的基础知识:黑棋185子为胜,白棋177子为胜。知道围棋术语六个:气,连,断,打吃,长,提。

    4年前   
    836    0

    Photoshop-6.0入门教程7

    第7单元 调节图像在Photoshop中,我们经常要对图像的尺寸、色调以及画布进行调节,这些工作都要由图像菜单来完成。本单元主要学习图像菜单的基本用法。第一课 图像模式转换一、 任务在绪...

    4年前   
    648    0

    党支部必备的70个台账模板,非常齐全!

    党支部必备的70个台账模板,非常齐全!

    3年前   
    17017    1