美文网首页
SQL基础语句

SQL基础语句

作者: 約見 | 来源:发表于2018-08-01 22:57 被阅读0次

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

相关文章

  • 每天一SQL语句(01):SQL 语句基础篇

    【开篇】SQL 语句基础篇 【前言】SQL 语法 1、SQL 注意事项 (1)SQL语句对大小写不敏感。 (2) ...

  • MySQL

    数据类型 sql基础 数据库表 SQL SELECT 语句: SQL WHERE 子句: SQL AND & OR...

  • SQL基础及元数据获取(数据类型,表的属性)

    1、SQL基础应用 ①.SQL的介绍SQL标准:SQL-92、SQL-99SQL_MODE:都是为了保证SQL语句...

  • SQL语句

    SQL基础应用 SQL语句自动补全 SQL的介绍 SQL-92标准SQL-99标准 image SQL常用分类 表...

  • MYSQL SQL 语句

    基础sql语句 库管理 表管理 用户管理:

  • SQL语句基础

    一、SQL 基础语句(大小写功能一致):§1 SQL select语句:从表中选取数据★ select * fro...

  • 深入浅出MySQL读书笔记

    SQL基础 SQL分类 SQL语句主要可以划分为以下3个类别。 DDL (Data Definition Lang...

  • SQL基础语句

    SQL 基本语句记录 新建表 删除表: 插入数据: 删除数据: 更新数据: 新增字段: 删除字段: 修改字段: 重...

  • SQL基础语句

    select distinct [字段名] from [表名];用于查询该列不重复的所有值。 where子句中可以...

  • SQL基础语句

    查询:select * from table_name where 条件 查询的结果集中使用别名:select 列...

网友评论

      本文标题:SQL基础语句

      本文链接:https://www.haomeiwen.com/subject/ckxapftx.html