以下语法是存储流程。
sp_server_info; //服务器信息
sp_spaceused; //空间使用情况
sp_helplogins; //登录用户查询
sp_helpuser; //用户信息
sp_statistics; //统计信息
sp_databases; //数据库
sp_tables; //表
sp_columns; //列
以下为一些查询语法
SELECT 列[,列,列]
FROM 表;
限制:
DISTINCT 不显示重复
TOP(n) 加PERCENT为百分比
SET ROWCOUNT n; 老版本语句,新版本兼容,意义同上,不建议使用
TABLESAMPLE (n) 指定检索行数的百分比
完全限定表名要注意 数据库.所有者.表名
ORDER BY 排序,加DESC逆序,多个跟在需逆序列后
排序不区分大小写,除非DBMS有相关设置
ORDER BY 只能排在最后
过滤数据
WHERE
=
<>
!=
>
>=
!<
<
<=
!>
BETWEEN 例:WHERE NUM BETWEEN 5 AND 10
IS NULL
范围查找
数据过滤组合WHERE子句
AND OR 操作符,顺序先AND后OR,注意使用括号
IN 指定范围,例 WHERE num IN(1,5)
NOT 否定WHERE后面的条件
使用通配符进行过滤
LIKE 'EXA%' 以EXA开头的数据
'%AMP%'中间是AMP的数据
'EX%LE'以EX开头LE结尾的数据
'%LE'以LE结尾的数据
'%'也不能匹配空值NULL,注意空格。
'_'与'%'一类似,但'_'只匹配一个字符
[]数据某个位置单个字符若是[]中的任意一个,成功匹配,加^则为非[]中的一个,例:[^a]非a
不要过度使用,比较慢,为了效率要放在搜索最后,一定要注意位置。
计算字段
拼接字段的例子:
SELECT vend_name+'(' + vend_country + ')'
FROM vendors
ORDER BY vend_name;
由于SQL server以定长列存储数据,检索出的列全都补充空格以达到最大长度。可通过RTrim()函数来完成 as可为拼接字段指定别名
SQL server上AS是可选的,但使用时应该加上AS
[]可用来界定列名,比如当列名有空格的时候,但最好是设置别名
SELECT prod_id,
quantity,
item_price,
quantity*item_price AS expanded_price
FROM orderitems
WHERE order_num=20005;
也可以通过计算获得自己想要的数据
+ - * / %多经典的运算符
数据库常用函数
RTrim() 去除右边空格
LTrim() 去除左边空格
Upper() 变大写
Lower() 变小写
CharIndex() 返回字符串中指定字符的位置
Left () 返回字符串左边的字符
Right() 右边字符
Len()
Min()
Max()
Replace() 替换
Soundex() 返回字符串的Soundex值(读音类似值)
Str() 数值转换字符串
SubString() 返回字符串中的字符
常用的日期和时间处理函数
DateAdd() 添加日期(天、周)
DateDiff() 计算两个日期的差
DateName() 返回部分日期的字符串表示
DatePart() 返回日期的一部分(星期几、月、年等)
Day() 返回日期中的天
GetDate() 返回当前日期和时间
Month() 返回日期中的月
Year() 返回日期中的年
所支持的日期成分和缩写
天 dd或d
年中的天 dy或y
时 hh
毫秒 ms
分 mi或n
月份 m或mm
季度 q或qq
秒 ss或s
周 wk或ww
周中的天(仅用于DatePart()) dw
年 yy或yyyy
数值处理函数
Abs() 返回绝对值
Cos() 返回一个角度的余弦
Exp() 返回一个数的指数值
Pi() 返回圆周率
Rand() 返回一个随机数
Round() 返回四舍五入为特定长度或精度的数值
Sin() 返回一个角度的正弦
Sqrt() 返回一个数的平方根
Square() 返回一个数的平方
Tan() 返回一个角度的正切
分组数据
数据分组
SELECT Count(*) AS num_prods
FROM products
GROUP BY vend_id; *
SELECT cust_id,Count(*) AS orders
FROM orders
GROUP BY cust_id
HAVING Count(*) >=2;
子查询类似嵌套
EXISTS类似 in