1.使用SQL来操作查询结果几乎总是比使用有同样作用的脚本效率更高。
2.当你建立自己的站点时,你会发现使用VARCHAR型字段(不能超过255个字符)要比CHAR型字段方便的多。使用VARCHAR型字段时,你不需要为剪掉你数据中多余的空格而操心。
3.一个TINYINT型数据只占用一个字节;一个INT型数据占用四个字节。这看起来似乎差别不大,但是在比较大的表中,字节数的增长是很快的。
4.一个NUMERIC型数据的整数部分最大只能有28位,小数部分的位数必须小于或等于整数部分的位数,小数部分可以是零。
5.在你创建好一个表之后,你不能向表中添加BIT型字段。如果你打算在一个表中包含BIT型字段,你必须在创建表时完成。
6.空值(NULL)和零是不同的,严格的说,空值表示没有任何值
7.INSERT 语句的完整句法如下:
INSERT [INTO] {table_name|view_name} [(column_list)] {DEFAULT VALUES |
Values_list | select_statement}
8.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]
9.你不是必须在SQL语句中使用BETWEEN或IN,但是,要使你的查询更接近自然语言,这两个表达式是有帮助的。
10.转换数据
SELECT CONVERT(CHAR(8),price)+’US Dollars’ FROM orders
函数CONVERT()带有两个变量。第一个变量指定了数据类型和长度。第二个变量指定了要进行转换的字段。在这个例子中,字段price被转换成长度为8个字符的CHAR型字段。字段price要被转换成字符型,才可以在它后面连接上字符串’US Dollars’。
11.匹配通配符(正则表达公式)
百分号是通配符的例子之一。它代表0个或多个字符。
表达式[A-M],只取出那些首字母在A到M之间的站点。
可以取出那些首字母在C到F之间,或者以字母Y开头的站点:
WHERE site_name LIKE ‘[C-FY]%’
与通配符’%’不同,下划线只代表单个字符。
注意:
如果你想匹配百分号或下划线字符本身,你需要把它们括在方括号中。
SELECT site_name FROM site_directory WHERE site_desc LIKE ‘%[%]%’
12.转换日期和时间
SELECT CONVERT(VARCHAR(30),GETDATE(),9)
9为style值
表11.1 日期和时间的类型
类型值 标准 输出
0 Default mon dd yyyy hh:miAM
1 USA mm/dd/yy
2 ANSI yy.mm.dd
3 British/French dd/mm/yy
4 German dd.mm.yy
5 Italian dd-mm-yy
6 - dd mon yy
7 - mon dd,yy
8 - hh:mi:ss
9 Default + milliseconds--mon dd yyyy
hh:mi:ss:mmmAM(or )
10 USA mm-dd-yy
11 JAPAN yy/mm/dd
12 ISO yymmdd
13 Europe Default + milliseconds--dd mon yyyy
hh:mi:ss:mmm(24h)
14 - hh:mi:ss:mmm(24h)
类型0,9,和13总是返回四位的年。对其它类型,要显示世纪,把style值加上100。类型13和14返回24小时时钟的时间。类型0,7,和13返回的月份用三位字符表示(用Nov代表November).
13.抽取日期和时间
为了抽取日期的特定部分,你可以使用函数DATEPART(),象这样:
SELECT site_name ‘Site Name’,
DATEPART(mm,site_entrydate) ‘Month Posted’ FROM site_directory
表11.2 日期的各部分及其简写
日期部分 简写 值
year yy 1753--9999
quarter qq 1--4
month mm 1--12
day of year dy 1--366
day dd 1--31
week wk 1--53
weekday dw 1--7(Sunday--Saturday)
hour hh 0--23
minute mi 0--59
second ss 0--59
milisecond ms 0--999
SELECT site_name ‘Site Name’
DATENAME(mm,site_entrydate) ‘Month Posted’
FROM site_directory
14.返回日期和时间范围
另一种方法是,你可以使用LIKE来返回正确的记录。通过在日期表达式中包含通配符“%”,你可以匹配一个特定日期的所有时间。这里有一个例子:
SELECT * FROM weblog WHERE entrydate LIKE ‘Dec 25 2000%’
这个语句可以匹配正确的记录。因为通配符“%”代表了任何时间。