SQL 语言学习笔记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL 语言学习笔记
《脑动力SQL语言实务速查效率手册》第二章SQL中的数据类型和运算符:
数据类型
SQL支持的数据类型主要包括预定义的数据类型和用户自定义的数据类型。其中,SQL 预定一的数据类型主要包括数值类型、字符串类型、日期类型和布尔值等数据类型。
数值类型之小数类型——NUMBER
如果形式为Number(size),则表明最大数字的位数由括号中的参数size设置;如果形式为Number(size,d),则表明最大数字的位数由括号中的参数size设定,而括号中的参数d是设置小数点的位数。
注意:不同的数据库管理系统所支持的数据类型不尽相同,例如在SQL Server 中Number数据类型被写成Decimal或Numeric。
字符串类型
字符串类型是最常用的数据类型之一。
字符型变量可分为固定长度字符和可变长度字符两种。
固定长度字符变量的字符数在数据表创建时就指定了,并分配了存储空间。例如,指定通信录表姓名的字符数为10,如果输入的字符数超过10,那么数据库只记录前10个字符,如果输入的字符数少于10个,那数据库会自动在字符右边以空格填补到10个字符。
可变长度字符串类型——V archar 、Text
固定长度字符串类型——Char 长度为n个字节,n的取值范围为不超过255个字节。例如:C_Name char(8)如果C_Name只有4个字符,那么其余4个字符将是空格。
日期类型
Datetime和smalldatetime是最常见的两种日期数据类型。
Datetime 数据类型所占用的存储空间为8字节。其中一个4字节存储“基础日期”(即1900年1月1日)之前或之后的天数;另一个4字节存储日期的时间(以午夜后经过的毫秒数表示)。
Smalldatetime的值是存储为4字节的整数。其中一个2字节存储1900年1月1日后的天数;另一个2字节存储午夜后经过的分钟数。
日期输入格式
(1)英文+数字格式:月份可用英文全名或缩写,且不区分大小写;年和月日之间可不用逗号;年份可为4位或2位,当其为2位时,若值小于50,则视为20XX年,若大于或等于50,则视为19XX年;若日部分省略,则视为当月的1号。如
June 18 2010 Oct 1 2001 January 2010 2011 February
(2)数字+分隔符格式:允许把斜杠(/)、连接符(-)和小数点(.)作为数字表示的年、月、日之间的分隔符。格式如下
YMD:2012/1/22 2012-1-22 2012.1.22
MDY : 3/5/2010 3-5-2011 31.12.2011
(3)纯数字格式:是以连续的4位、6位或8位数字来表示日期
时间输入格式
在输入时间时,必须按“小时、分钟、秒、毫秒”的顺序来输入,在其间用冒号“:”隔开。
《脑动力SQL语言实务速查效率手册》第二章SQL中的数据类型和运算符:
运算符
在SQL语句中,可以运用各种运算符和函数直接对查询列的数据进行一些处理。将处
理后的结果显示给用户。
算术运算符
“+”:表示数值相加运算
“-”:表示数值想减运算
“*”:表示数值相乘运算
“/”:表示相除运算
以上运算符的优先级顺序与算数运算中的优先级顺序基本相同。例如
Select s_title, s_value, s_trans, s_value+ s_trans as all_values from t _sale
其中的as all_values是s_value+ s_trans的别名
算术运算符的组合使用
如从销售信息表(t_sale)中查询货物名称(s_title)和销售获取总金额(s_value 与s_trans之和再乘以s_nums)信息
Select s_title,( s_value+ s_trans)* s_nums from t_sale
逻辑运算符
包括逻辑与(AND)运算符和逻辑或(OR)运算符
逻辑与(AND)运算符表示查询在表达式中既符合条件1又符合条件2的数据。也就是只有同时满足两个查询条件,才能查询出符合条件的记录。如果不同时满足,则查询的结果为空值(NULL)
说明:AND运算符也可以连接两个以上的查询条件。如condition1 AND condition2 AND condition3,此时需要同时满足3个查询条件。
在一个where子句中,可以同时使用多个AND运算符连接多个查询条件。此时,必须满足所有的查询条件记录,才能查询出所需的数据信息。
逻辑或(OR)运算符表示在表达式中查询符合条件1或符合条件2的数据
说明:与AND运算符一样,OR运算符也可以连接两个以上的查询条件,此时,只要满足一个条件即可。
逻辑运算符的组合使用
AND和OR可以单独使用,也可以组合使用,但会涉及运算符的优先级问题,在SQL中,AND运算符的优先级要高于OR运算符。
注意:括号()的优先级要高于AND运算符和OR运算符的优先级。在将AND运算符与OR运算符进行组合使用时,建议采用括号()来表现需要的执行顺序,这样可以增强程序的可读性。
《SQL技术与网络数据库开发详解》
第08章高级条件查询
组合WHERE子句
使用IN运算符
NOT运算符
实现模糊查询
8.1组合WHERE 子句
使用AND和OR运算符设置高级查询条件的具体方法。AND和OR两个运算符可以将单
独的条件表达式组合在一起。
8.1.1 AND运算符
AND运算符只有当两边操作均为True 时,最后结果才为True。
使用AND描述“与”(而且)的关系,即,既满足第一个条件且满足第二个条件时才会通过审核。
如:从Student表中查询计算机系的所有女生,并将结果按学号升序排序
Select * from student where 所属院系=‘计算机系’AND 性别=‘女’order by 学号
如:从Student表中查询1975年出生的所有学生,并将结果按出生日期升序排序。
(1)如果SQL运行环境为Access,则因为日期型数据中没有时间,可以使用如下SELECT 语句查询:
Select * from student where 出生日期﹥=#01/01/1975# AND 出生日期﹤=#12/31/1975# order by 出生日期
(2)如果SQL运行环境为SQL Server,则因为日期型数据中有时间,可以使用如下SELECT 语句查询:
Select * from student where 出生日期﹥=‘01/01/1975’AND 出生日期﹤‘01/01/1976’order by 出生日期
(3)如果SQL运行环境为Oracle,也因为日期型数据中有时间,可以使用如下SELECT语句查询:
Select * from student where 出生日期﹥=‘01/JAN/1975’AND 出生日期﹤‘01/JAN/1976’order by 出生日期
根据需要可以使用多个AND组合条件,如下题
从Student表中查询1975年出生的所有女生,并将结果按出生日期升序排序。假设SQL运行环境为SQL Server。
Select * from student where 出生日期﹥=‘01/01/1975’AND 出生日期﹤‘01/01/1976’AND性别=‘女’order by 出生日期
8.1.2 OR运算符
OR运算符只有当两边操作数均为False时,最后结果才为False,只有一边是True,则最后结果为True。根据OR的这种运算规则,使用OR运算符描述“或”(或者)的关系,即当满足任何一个条件就可以通过审核。
从Student表中查询中文系的所有学生和外语系的所有学生,并将结果按学号升序排序
分析:本题两个条件的关系其实是“或”,因为满足任何一个条件就可以通过审核
Select * from student where 所属院系=‘中文系’OR所属院系=‘外语系’order by 学号8.1.3AND与OR的优先顺序问题
WHERE子句中可以包含任意数量的AND和OR运算符,并且允许两者结合使用。如
从Student表中查询中文系和外语系的所有女生
Select *
from student
where 所属院系=‘中文系’
OR所属院系=‘外语系’
AND 性别=‘女’
order by 学号
如果按上面的语句,可能会造成查询结果的错误,根源是运算符的优先级问题,在表达式中,如果出现了AND和OR两种运算符,则并非从左到右按顺序运算,而是优先执行AND,然后执行OR运算符。