查询:select * from table_name where 条件
查询的结果集中使用别名:select 列名 AS 别名 from...,select 列名=别名 from...,select 列名 别名 from...
查询null值和空值: where IS NULL AND 列名=' ' ;
查询中使用常量列:select userid as 用户号,'常量列的值' AS 常量列名 from...;
查询限制返回的行数和百分比:TOP 10(返回前十行) 和 TOP 20 PERCENT(返回前百分之二十)SQL:select top 20(pencent) column_name(s) FROM table_name MySQL:select * from table limit 2; Oracle:select * from table rownom <= 20;
查询的时候排序:select * from table_name where 列名='条件' ORDER BY 列名 ASC(升序)/DESC(降序)
查询的时候分组: select * from table_name where 列名='条件' GROUP BY 列名
WHERE用于分组钱的条件筛选, HAVING用于分组后的条件筛选
插入整行数据:INSERT INTO bookxxb values('值', '值'......)
插入部分列数据:INSERT INTO bookxxb(列名,列名,列名) values ('值','值','值')
插入多行数据:INSERT INTO bookxxb values ('值','值'),('值','值'),('值','值')
插入多行SELECT结果集:INSERT INTO bookxxb SELECT 列 FROM Table UNION ALL SELECT 列 FROM Table 【UNION不允许重复的值,UNION ALL允许重复的值】
删除行:DELETE FROM bookxxb WHERE 条件
更新列的值:UPDATE bookxxb SET 列='值',列='值' WHERE 条件
模糊查询:
通配符:
A LIKE 'C_ ' 符合条件的有:Cs, CD等,_只指代一个字符
B LIKE 'co%' 符合条件的有:comst,cokr, %包含零个或多个字符的任意字符串
C LIKE 'qwo[0-9]' 符合条件的有:qwo1,qwo2等,指定范围0-9或集合[0123]中的任意
D LIKE 'qwo[^1234]' 符合条件的有:qwo5,qwo8, 不在指定范围内的其他
1. 使用LIKE进行模糊查询
SELECT * FROM UserInfo WHERE UserAddress LIKE '%四川%'
2. BETWEEN…AND:查询两个已知值之间的未知值
SELECT * FROM OderInfo WHERE OderTime NOT BETWEEN '2012-1-1' AND '2013-1-1'
3. 使用IN在列举范围内进行查询
SELECT * FROM OderInfo WHERE Payway IN ('网上银行','邮政汇款')
子查询:
简单子查询:
SELECT * FROM CommodityInfo WHERE SortId = (SELECT SortId FROM CommoditySort WHERE SortName = '手机数码' )
特点:a. 子查询必须放在括号内 b. 子查询与比较运算符使用时要求子查询的列只有一个 c. ORDER BY 排序不允许放在子查询中,如果排序只能放在夫查询中
当子查询返回的列的值为多个时,那么久不能用比较运算符=,而需要使用IN 或者 NOT IN,关键字DISTINCT可以去掉重复数据,接于SELECT之后,然后再跟列。
ALL, ANY, SOME子查询:
ALL:在父查询中列必须大于子查询返回的每一个值【Table1(2,3), Table2(1,2,3,4)】
SELECT * FROM Table2 WHERE n > ALL(SELECT n FROM Table1) 返回结果为4
> ANY:在父查询列中的值必须大于子查询返回列表值中的一个,SOME和ANY可互换
SELECT * FROM Table2 WHERE n > ANY (SELECT n FROM Table1) 返回3,4
= ANY 与子查询中IN相同:父查询的列的值必须在子查询返回的值列表中
SELECT * FROM Table2 WHERE n = ANY (SELECT n FORM Table1) 返回2,3
SELECT * FROM Table2 WHERE n IN (SELECT n FORM Table1) 返回2,3
<>ANY 与NOT IN 相同:
SELECT * FROM Table2 WHERE n <> ANY (SELECT n FORM Table1) 返回1,4
SELECT * FROM Table2 WHERE n <> ANY (SELECT n FORM Table1) 返回1,4
子查询还可作列作表使用
EXISTS子查询:
IF EXTSTS(SELECT * FROM OrderInfo WHERE CommodityId IN (SELECT CommodityId FROM CommodityInfo WHERE SortId = (SELECT SortId FROM CommoditySort WHERE SortName = '手机数码')) AND Amount > 3)
BEGIN
UPDATE OrderInfo SET Paymoney = PayMoney * 0.8 WHERE CommodityId IN (SELECT CommodityId FROM OrderInfo WHERE CommodityId =(SELECT CommodityId FROM CommodityInfo WHERE SortId = (SELECT SortId FROM CommoditySort WHERE SortName = '手机数码')) AND Amount > 3)
聚合函数:
1. SUM:对列进行求和
2. AVG:对列求平均值
3. MAX与MIN:对列求最值
4. COUNT:统计用户表中用户数量
内连接查询:
特点:a.两个表存在主外键关系 b.参与查询的两个表地位相同无主次之分
实现方式:a. 使用WHERE语句指定连接条件 b.在from子句中使用INNER JOIN...ON
1. WHERE
SELECT OrderInfo.orderId, UserInfo,UserName, OrderInfo.Amount, OrderInfo.CommdityId FROM OrderInfo, UserInfo WhERE OrderInfo.UserId = UserInfo.UserId
2. 使用INNER JOIN---ON
SELECT OrderId ,UserName, O.Amount, CommodityName FROM UserInfo AS U INNER JOIN OrderInfo AS O ON U.UserId = O.UserId
INNER JOIN CommoditiInfo AS C ON O.commodityId = C.CommodityId
外连接查询:
特点:a.参与外连接的表有主次之分 b.以主表的每行数据所匹配从表的数据列,将符合条件的数据直接返回到结果集中 c.对那些不符合连接条件的列,将填上NULL值,后再返回到结果集中。
左外连接:以左表为主,右边中没有匹配的将用NULL值代替
SELECT * FROM CommoditySort(主表) AS S LEFT JION CommodityInfo AS I ON S.SortId = I.SortId
右外连接:以右表为主
SELECT * FROM CommoditySort(主表) AS S RIGHT JION CommodityInfo AS I ON S.SortId = I.SortId
合并查询:使用UNION合并查询
字符串函数:
1. CHARINDEX:在一个字符串中查找另一个字符串,如果找到返回位置,若没有返回0
SELECT CHARINDEX ('zxw', 'www.51zxw.net') ——返回7
三个参数,第一个是要查找的,第二个是源字符串,第三个是开始位置
SELECT CHARINDEX ('zxw', 'www.51zxw.net', 10) ——返回0
查询“江流儿”的邮箱中“@”符号的位置
SELECT CHARINDEX ('@', Email) FROM UserInfo WHERE UserName = '江流儿' (使用CHARINDEX的目的是想把邮箱中用户名提取出来)
2. LEN:求字符串的长度
SELECT LEN(Email) FROM UserInfo WHERE UserName = '江流儿'
3. LEFT: 从字符串的左边截取指定个数的字符。
SELECT LEFT (Email, CHARINDEX('@', Email)-1) FROM UserInfo WHERE UserName = '江流儿' ——返回@前的字符。
4. REPLACE:替换一个字符串的字符
SELECT REPLACE('我最喜欢的颜色是白色', '白色','绿色') ——将白色替换成绿色,如果最后一个是空格,则将白色删除
5. STUFF:参数1是源字符串,参数2是开始位置,参数3是删除的长度,参数4是插入新字符串
SELECT STUFF ('ABCDE', 2, 3, '时间') ——返回A时间E
日期函数:
1. GETDATE:获取当前系统的时间
SELECT GETDATE() ——返回系统时间