SQL基础语句

查询: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()      ——返回系统时间

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容