sql语言教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL(Structured Query Language)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。SQL同时也是数据库脚本文件的扩展名。
基本语法
数据库的相关名称:数据库、表、字段、记录
SQL语言的最基本功能是增、删、查、改。
增:INSERT INTO 表名(字段1,字段2) V ALUES (值1,值2)
其中——值如果是字符串如:’名字’。如果是变量——字符串:’” & 变量& ”‘;
删:DELETE 表名从数据库中的删除表
DELETE FROM 表名WHERE 条件
查:SELECT *(或:字段1,字段2) FROM 表名WHERE 条件ORDER BY 字段ASC(或:DESC-降序) 改:UPDA TE 表名SET 字段=值WHERE 条件
几个子句:
WHERE子句可包括各种条件运算符:比较运算符(大小比较):>、>=、=、<、<=、<>、!>、!<
范围运算符(表达式值是否在指定的范围):BETWEEN…AND…或NOT BETWEEN…AND…
例:范围运算符例:age BETWEEN 10 AND 30相当于age>=10 AND age<=30
列表运算符(判断表达式是否为列表中的指定项):IN (项1,项2……) 或NOT IN (项1,项2……)
例:列表运算符例:country IN ('Germany','China')
模式匹配符(判断值是否与指定的字符通配格式相符):LIKE、NOT LIKE
模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。可用于char、varchar、text、ntext、datetime和smalldatetime等类型查询。
可使用以下通配字符:
百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%%。
下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。
方括号[]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。[^]:其取值也[] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
例如:
限制以Publishing结尾,使用LIKE '%Publishing'
限制以A开头:LIKE '[A]%'
限制以A开头外:LIKE '[^A]%'
空值判断符(判断表达式是否为空):IS NULL、NOT IS NULL
例:空值判断符例WHERE age IS NULL
逻辑运算符(用于多条件的逻辑连接):NOT、AND、OR。优先级为NOT、AND、OR
高级语法
1. case when条件表达式
SQL CASE 表达式是一种通用的条件表达式,类似于其它语言中的if/else 语句。
例子:
select CONCA T(case click when 0 then 'nan' end,case aid when 132 then 'yi' end) from dede_addoninfos(可以用函数)
2.UNION(联合查询)
[SQL 语句2] 假设我们有以下的两个表格,
Store_Information 表格store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999
Internet Sales 表格Date Sales
Jan-07-1999 $250
Jan-10-1999 $535
Jan-11-1999 $320
Jan-12-1999 $750
而我们要找出来所有有营业额(sales) 的日子。要达到这个目的,我们用以下的SQL 语句:
SELECT Date FROM Store_Information
UNION
SELECT Date FROM Internet_Sales 结果:
Date
Jan-05-1999
Jan-07-1999
Jan-08-1999
Jan-10-1999
Jan-11-1999
Jan-12-1999
有一点值得注意的是,如果我们在任何一个SQL 语句(或是两句都一起) 用"SELECT DISTINCT Date" 的话,那我们会得到完全一样的结果。
SQL Union All
UNION ALL 这个指令的目的也是要将两个SQL 语句的结果合并在一起。UNION ALL 和UNION 不同之处在于UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复。UNION ALL 的语法如下:[SQL 语句1]
UNION ALL
[SQL 语句2] 我们用和上一页同样的例子来显示出UNION ALL 和UNION 的不同。同样假设我们有以下两个表格:
Store_Information 表格store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999
Internet Sales 表格Date Sales
Jan-07-1999 $250
Jan-10-1999 $535
Jan-11-1999 $320
Jan-12-1999 $750
而我们要找出有店面营业额以及网络营业额的日子。要达到这个目的,我们用以下的SQL语句:
SELECT Date FROM Store_Information
UNION ALL
SELECT Date FROM Internet_Sales 结果:
Date
Jan-05-1999
Jan-07-1999
Jan-08-1999
Jan-08-1999
Jan-07-1999
Jan-10-1999
Jan-11-1999
Jan-12-1999
表1
A B
a 1
b 0
c 3