📄 orcale技术笔记.txt
字号:
说明:
1.Where 的 conditions 可以是另外一个的 query。
2.EXISTS 在此是指存在与否。
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%’
说明:LIKE 必须和後面的’x%’ 相呼应表示以 x为开头的字串。
Select *
FROM table_name1
Where column1 IN (’xxx’,’yyy’,..)
说明:IN 後面接的是一个集合,表示column1 存在集合里面。
Select *
FROM table_name1
Where column1 BETWEEN xx AND yy
说明:BETWEEN 表示 column1 的值介於 xx 和 yy 之间。
3、更改资料:
Update table_name
SET column1=’xxx’
Where conditoins
说明:
1.更改某个栏位设定其值为’xxx’。
2.conditions 是所要符合的条件、若没有 Where 则整个 table 的那个栏位都会全部被
更改。
4、删除资料:
Delete FROM table_name
Where conditions
说明:删除符合条件的资料。
说明:关于Where条件后面如果包含有日期的比较,不同数据库有不同的表达式。具体如
下:
(1)如果是ACCESS数据库,则为:Where mydate>#2000-01-01#
(2)如果是ORACLE数据库,则为:Where mydate>cast(’2000-01-01’ as date)
或:Where mydate>to_date(’2000-01-01’,’yyyy-mm-dd’)
在Delphi中写成:
thedate=’2000-01-01’;
query1.SQL.add(’select * from abc where mydate>cast(’+’’’’+thedate+’’
’’+’ as date)’);
如果比较日期时间型,则为:
Where mydatetime>to_date(’2000-01-01 10:00:01’,’yyyy-mm-dd hh24:mi:ss’)
Recordset对象一些有用的属性"/> 引用来自 增加一个 :Recordset对象一些有用的属
性
rs.CursorType=
rs.CursorLocation=
rs.LockType =
rs.CacheSize=
rs.Pagesize=
rs.Pagecount=
rs.RecordCount=
''---- CursorType Values ----
Const adOpenForwardOnly = 0 仅向前
Const adOpenKeyset = 1 键集游标
Const adOpenDynamic = 2 动态游标
Const adOpenStatic = 3 静态游标
''---- LockType Values ----
Const adLockReadOnly = 1 默认值,只读
Const adLockPessimistic = 2 保守式记录锁定
Const adLockOptimistic = 3 开放式记录锁定,只在调用Update方法时锁定记录
Const adLockBatchOptimistic = 4 开放式批更新
''---- CursorLocation Values ----
Const adUseServer = 2
Const adUseClient = 3
Set rs=Server.CreateObject("ADODB.Rrecordset")
rs.Open.sqlst,conn,1,1 '读取
rs.Open sqlst,conn,1,2 '新增,修改,或删除)
SQL SERVER的数据类型
1.SQL SERVER的数据类型
数据类弄是数据的一种属性,表示数据所表示信息的类型。任何一种计算机语言都
定义了自己的数据类型。当然,不同的程序语言都具有不同的特点,所定义的数据类型
的各类和名称都或多或少有些不同。SQLServer 提供了 25 种数据类型:
·Binary [(n)]
·Varbinary [(n)]
·Char [(n)]
·Varchar[(n)]
·Nchar[(n)]
·Nvarchar[(n)]
·Datetime
·Smalldatetime
·Decimal[(p[,s])]
·Numeric[(p[,s])]
·Float[(n)]
·Real
·Int
·Smallint
·Tinyint
·Money
·Smallmoney
·Bit
·Cursor
·Sysname
·Timestamp
·Uniqueidentifier
·Text
·Image
·Ntext
(1)二进制数据类型
二进制数据包括 Binary、Varbinary 和 Image
Binary 数据类型既可以是固定长度的(Binary),也可以是变长度的。
Binary[(n)] 是 n 位固定的二进制数据。其中,n 的取值范围是从 1 到 8000。其
存储窨的大小是 n + 4 个字节。
Varbinary[(n)] 是 n 位变长度的二进制数据。其中,n 的取值范围是从 1 到
8000。其存储窨的大小是 n + 4个字节,不是n 个字节。
在 Image 数据类型中存储的数据是以位字符串存储的,不是由 SQL Server 解释的
,必须由应用程序来解释。例如,应用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把数
据存储在 Image 数据类型中。
(2)字符数据类型
字符数据的类型包括 Char,Varchar 和 Text
字符数据是由任何字母、符号和数字任意组合而成的数据。
Varchar 是变长字符数据,其长度不超过 8KB。Char 是定长字符数据,其长度最多
为 8KB。超过 8KB 的ASCII 数据可以使用Text数据类型存储。例如,因为 Html 文档全
部都是 ASCII 字符,并且在一般情况下长度超过 8KB,所以这些文档可以 Text 数据类
型存储在SQL Server 中。
(3)Unicode 数据类型
Unicode 数据类型包括 Nchar,Nvarchar 和Ntext
在 Microsoft SQL Server 中,传统的非 Unicode 数据类型允许使用由特定字符集
定义的字符。在 SQL Server安装过程中,允许选择一种字符集。使用 Unicode 数据类
型,列中可以存储任何由Unicode 标准定义的字符。在 Unicode 标准中,包括了以各种
字符集定义的全部字符。使用Unicode数据类型,所战胜的窨是使用非 Unicode 数据类
型所占用的窨大小的两倍。
在 SQL Server 中,Unicode 数据以 Nchar、Nvarchar 和 Ntext 数据类型存储。
使用这种字符类型存储的列可以存储多个字符集中的字符。当列的长度变化时,应该使
用Nvarchar 字符类型,这时最多可以存储 4000 个字符。当列的长度固定不变时,应该
使用 Nchar 字符类型,同样,这时最多可以存储4000 个字符。当使用 Ntext 数据类型
时,该列可以存储多于 4000 个字符。
(4)日期和时间数据类型
日期和时间数据类型包括 Datetime 和 Smalldatetime两种类型
日期和时间数据类型由有效的日期和时间组成。例如,有效的日期和时间数据包括
“4/01/98 12:15:00:00:00 PM”和“1:28:29:15:01AM 8/17/98”。前一个数据类型是
日期在前,时间在后一个数据类型是霎时间在前,日期在后。在 Microsoft SQL Server
中,日期和时间数据类型包括Datetime 和 Smalldatetime 两种类型时,所存储的日期
范围是从 1753 年 1 月 1 日开始,到9999 年12 月 31 日结束(每一个值要求 8 个存
储字节)。使用 Smalldatetime 数据类型时,所存储的日期范围是 1900年 1 月 1日 开
始,到 2079 年 12 月 31 日结束(每一个值要求 4 个存储字节)。
日期的格式可以设定。设置日期格式的命令如下:
Set DateFormat {format | @format _var|
其中,format | @format_var 是日期的顺序。有效的参数包括 MDY、DMY、YMD、
YDM、MYD 和 DYM。在默认情况下,日期格式为MDY。
例如,当执行 Set DateFormat YMD 之后,日期的格式为年 月 日 形式;当执行
Set DateFormat DMY 之后,日期的格式为日 月有年 形式
(5)数字数据类型
数字数据只包含数字。数字数据类型包括正数和负数、小数(浮点数)和整数
整数由正整数和负整数组成,例如 39、25、0-2 和 33967。在 Micrsoft SQL
Server 中,整数存储的数据类型是 Int,Smallint和 Tinyint。Int 数据类型存
储数据的范围大于 Smallint 数据类型存储数据的范围,而 Smallint 据类型存储数据
的范围大于Tinyint 数据类型存储数据的范围。使用 Int 数据狗昔存储数据的范围是从
-2 147 483 648 到 2 147 483 647(每一个值要求4个字节存储空间)。使用 Smallint
数据类型时,存储数据的范围从 -32 768 到 32 767(每一个值要求2个字节存储空间)
。使用Tinyint 数据类型时,存储数据的范围是从0 到255(每一个值要求1个字节存储
空间)。
精确小娄数据在 SQL Server 中的数据类型是 Decimal 和 Numeric。这种数据所占
的存储空间根据该数据的位数后的位数来确定。
在SQL Server 中,近似小数数据的数据类型是 Float 和 Real。例如,三分之一这
个分数记作。3333333,当使用近似数据类型时能准确表示。因此,从系统中检索到的数
据可能与存储在该列中数据不完全一样。
(6)货币数据表示正的或者负的货币数量 。
在 Microsoft SQL Server 中,货币数据的数据类型是Money 和 Smallmoney
Money数据类型要求 8 个存储字节,Smallmoney 数据类型要求 4 个存储字节。
(7)特殊数据类型
特殊数据类型包括前面没有提过的数据类型。特殊的数据类型有3种,即
Timestamp、Bit 和 Uniqueidentifier。
Timestamp 用于表示SQL Server 活动的先后顺序,以二进投影的格式表示。
Timestamp 数据与插入数据或者日期和时间没有关系。
Bit 由 1 或者 0 组成。当表示真或者假、ON 或者 OFF 时,使用 Bit 数据类型。
例如,询问是否是每一次访问的客户机请求可以存储在这种数据类型的列中。
Uniqueidentifier 由 16 字节的十六进制数字组成,表示一个全局唯一的。当表的
记录行要求唯一时,GUID是非常有用。例如,在客户标识号列使用这种数据类型可以区
别不同的客户。
2.用户定义的数据类型
用户定义的数据类型基于在 Microsoft SQL Server 中提供的数据类型。当几个表
中必须存储同一种数据类型时,并且为保证这些列有相同的数据类型、长度和可空性时
,可以使用用户定义的数据类型。例如,可定义一种称为 postal_code 的数据类型
,它基于 Char 数据类型。
当创建用户定义的数据类型时,必须提供三个数:数据类型的名称、所基于的系统
数据类型和数据类型的可空性。
(1)创建用户定义的数据类型
创建用户定义的数据类型可以使用 Transact-SQL 语句。系统存储过程 sp_addtype
可以来创建用户定义的数据类型。其语法形式如下:
sp_addtype {type},[,system_data_bype][,'null_type']
其中,type 是用户定义的数据类型的名称。system_data_type 是系统提供的数据
类型,例如 Decimal、Int、Char 等等。 null_type 表示该数据类型是如何处理空
值的,必须使用单引号引起来,例如'NULL'、'NOT NULL'或者'NONULL'。
例子:
Use cust
Exec sp_addtype ssn,'Varchar(11)',"Not Null'
创建一个用户定义的数据类型 ssn,其基于的系统数据类型是变长为11 的字符,不
允许空。
例子:
Use cust
Exec sp_addtype birthday,datetime,'Null'
创建一个用户定义的数据类型 birthday,其基于的系统数据类型是 DateTime,允
许空。
例子:
Use master
Exec sp_addtype telephone,'varchar(24),'Not Null'
Eexc sp_addtype fax,'varchar(24)','Null'
创建两个数据类型,即 telephone 和 fax
(2)删除用户定义的数据类型
当用户定义的数据类型不需要时,可删除。删除用户定义的数据类型的命令是
sp_droptype {'type'}。
例子:
Use master
Exec sp_droptype 'ssn'
注意:当表中的列还正在使用用户定义的数据类型时,或者在其上面还绑定有默认
或者规则时,这种用户定义的数据类型不能删除。
以下为SQL SERVER7.0以上版本的字段类型说明。SQL SERVER6.5的字段类型说明请
参考SQL SERVER提供的说明。
字段类型 描述
bit 0或1的整型数字
int 从-2^31(-2,147,483,648)到2^31(2,147,483,647)的整型数字
smallint 从-2^15(-32,768)到2^15(32,767)的整型数字
tinyint 从0到255的整型数字
decimal 从-10^38到10^38-1的定精度与有效位数的数字
numeric decimal的同义词
money 从-2^63(-922,337,203,685,477.5808)到2^63-1(922,337,203,685,477.5807)的
货币数据,最小货币单位千分之十
smallmoney 从-214,748.3648到214,748.3647的货币数据,最小货币单位千分之十
float 从-1.79E+308到1.79E+308可变精度的数字
real 从-3.04E+38到3.04E+38可变精度的数字
datetime 从1753年1月1日到9999年12日31的日期和时间数据,最小时间单位为百分之三
秒或3.33毫秒
smalldatetime 从1900年1月1日到2079年6月6日的日期和时间数据,最小时间单位为分
钟
timestamp 时间戳,一个数据库宽度的唯一数字
uniqueidentifier 全球唯一标识符GUID
char 定长非Unicode的字符型数据,最大长度为8000
varchar 变长非Unicode的字符型数据,最大长度为8000
text 变长非Unicode的字符型数据,最大长度为2^31-1(2G)
nchar 定长Unicode的字符型数据,最大长度为8000
nvarchar 变长Unicode的字符型数据,最大长度为8000
ntext 变长Unicode的字符型数据,最大长度为2^31-1(2G)
binary 定长二进制数据,最大长度为8000
varbinary 变长二进制数据,最大长度为8000
image 变长二进制数据,最大长度为2^31-1(2G)
《SQL语句的基本语法》
一.Select语句的完整语法为:
Select[ALL|DISTINCT|DISTINCTROW|TOP]
{*|talbe.*|[table.]field1[AS alias1][,[table.]field2[AS alias2][,…]]}
FROM tableexpression[,…][IN externaldatabase]
[Where…]
[GROUP BY…]
[HAVING…]
[ORDER BY…]
[WITH OWNERACCESS OPTION]
说明:
用中括号([])括起来的部分表示是可选的,用大括号({})括起来的部分是表示必须从中
选择其中的一个。
1 FROM子句
FROM子句指定了Select语句中字段的来源。FROM子句后面是包含一个或多个的表达式(由
逗号分开),其中的表达式可为单一表名称、已保存的查询或由 INNER JOIN、LEFT JOIN
或 RIGHT JOIN 得到的复合结果。如果表或查询存储在外部数据库,在IN 子句之后指明
其完整路径。
例:下列SQL语句返回所有有定单的客户:
Select orderID,Customer.customerID
FROM orders Customers
Where orders.CustomerID=Customers.CustomeersID
2 ALL、DISTINCT、DISTINCTROW、TOP谓词
(1) ALL 返回满足SQL语句条件的所有记录。如果没有指明这个谓词,默认为ALL。
例:Select ALL FirstName,LastName
FROM Employees
(2) DISTINCT 如果有多个记录的选择字段的数据相同,只返回一个。
(3) DISTINCTROW 如果有重复的记录,只返回一个
(4) TOP显示查询头尾若干记录。也可返回记录的百分比,这是要用 TOP N PERCENT子句
(其中N 表示百分比)
例:返回5%定货额最大的定单
Select TOP 5 PERCENT*
FROM [ order Details]
orDER BY UnitPrice*Quantity*(1-Discount) DESC
3 用 AS 子句为字段取别名
如果想为返回的列取一个新的标题,或者,经过对字段的计算或总结之后,产生了一个
新的值,希望把它放到一个新的列里显示,则用AS保留。
例:返回FirstName字段取别名为NickName
Select FirstName AS NickName ,LastName ,City
FROM Employees
例:返回新的一列显示库存价值
Select ProductName ,UnitPrice ,UnitsInStock ,UnitPrice*UnitsInStock AS
valueInStock
FROM Products
二 .Where 子句指定查询条件
1 比较运算符
比较运算符 含义
= 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
<> 不等于
!> 不大于
!< 不小于
例:返回96年1月的定单
Select orderID, CustomerID, orderDate
FROM orders
Where orderDate>#1/1/96# AND orderDate<#1/30/96#
注意:
Mcirosoft JET SQL 中,日期用‘#’定界。日期也可以用Datevalue()函数来代替。在
比较字符型的数据时,要加上单引号’’,尾空格在比较中被忽略。
例:
Where orderDate>#96-1-1#
也可以表示为:
Where orderDate>Datevalue(‘1/1/96’)
使用 NOT 表达式求反。
例:查看96年1月1日以后的定单
Where Not orderDate<=#1/1/96#
2 范围(BETWEEN 和 NOT BETWEEN)
BETWEEN …AND…运算符指定了要搜索的一个闭区间。
例:返回96年1月到96年2月的定单。
Where orderDate Between #1/1/96# And #2/1/96#
3 列表(IN ,NOT IN)
IN 运算符用来匹配列表中的任何一个值。IN子句可以代替用OR子句连接的一连串的条件
。
例:要找出住在 London、Paris或Berlin的所有客户
Select CustomerID, CompanyName, ContactName, City
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -