1、基础语句查询:

SELECT 列名称 FROM 表名称
SELECT * FROM 表名称

2、sql去重问题:

在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。

关键词 DISTINCT 用于返回唯一不同的值。

SELECT DISTINCT 列名称 FROM 表名称

3、条件查询:

SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

运算符

4、and 或者 or

AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。

如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter'SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')
AND LastName='Carter'

5、对结果排序

ORDER BY 语句用于根据指定的列对结果集进行排序。

ORDER BY 语句默认按照升序对记录进行排序。

如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。

SELECT Company, OrderNumber FROM Orders ORDER BY CompanySELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber  //升序SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC ///降序SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC //公司降序  //数字序号顺序

6、top句子

SELECT TOP 2 * FROM Persons //从上面的 "Persons" 表中选取头两条记录SELECT TOP 50 PERCENT * FROM Persons  //从上面的 "Persons" 表中选取 50% 的记录

7、like语句

SELECT * FROM Persons WHERE City LIKE '%g' //从 "Persons" 表中选取居住在以 "g" 结尾的城市里的人SELECT * FROM Persons WHERE City LIKE 'N%' //从上面的 "Persons" 表中选取居住在以 "N" 开始的城市里的人SELECT * FROM Persons WHERE City LIKE '%lon%' //从 "Persons" 表中选取居住在包含 "lon" 的城市里的人SELECT * FROM Persons WHERE City NOT LIKE '%lon%' //从 "Persons" 表中选取居住在不包含 "lon" 的城市里的人

8、通配符

在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。

SQL 通配符必须与 LIKE 运算符一起使用。

(1)%:替代一个或者多个字符

SELECT * FROM Persons WHERE City LIKE 'Ne%' //从上面的 "Persons" 表中选取居住在以 "Ne" 开始的城市里的人SELECT * FROM Persons WHERE City LIKE '%lond%'  //从 "Persons" 表中选取居住在包含 "lond" 的城市里的人

(2)_通配符:仅替代一个字符

SELECT * FROM Persons WHERE FirstName LIKE '_eorge' //从上面的 "Persons" 表中选取名字的第一个字符之后是 "eorge" 的人SELECT * FROM Persons WHERE LastName LIKE 'C_r_er' //从 "Persons" 表中选取的这条记录的姓氏以 "C" 开头,然后是一个任意字符,然后是 "r",然后是任意字符,然后是 "er"

(3) [charlist] 通配符

SELECT * FROM Persons WHERE City LIKE '[ALN]%' //从上面的 "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人SELECT * FROM Persons WHERE City LIKE '[!ALN]%' //从上面的 "Persons" 表中选取居住的城市不以 "A" 或 "L" 或 "N" 开头的人

9、IN操作符

IN 操作符允许我们在 WHERE 子句中规定多个值。

SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...)例子:
SELECT * FROM Persons WHERE LastName IN ('Adams','Carter') //从上表中选取姓氏为 Adams 和 Carter 的人

10、between 操作符

(1)操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。

SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2

(2)以字母顺序显示介于 "Adams"(包括)和 "Carter"(不包括)之间的人

SELECT * FROM Persons
WHERE LastName
BETWEEN 'Adams' AND 'Carter'

注意:

不同的数据库对 BETWEEN...AND 操作符的处理方式是有差异的。某些数据库会列出介于 "Adams" 和 "Carter" 之间的人,但不包括 "Adams" 和 "Carter" ;某些数据库会列出介于 "Adams" 和 "Carter" 之间并包括 "Adams" 和 "Carter" 的人;而另一些数据库会列出介于 "Adams" 和 "Carter" 之间的人,包括 "Adams" ,但不包括 "Carter" 。所以,请检查你的数据库是如何处理 BETWEEN....AND 操作符的!

(3)使用上面的例子显示范围之外的人,请使用 NOT 操作符

SELECT * FROM Persons
WHERE LastName
NOT BETWEEN 'Adams' AND 'Carter'

11、可以为列名称和表名称指定别名(Alias)

(1)表的sql as 语法

SELECT column_name(s)
FROM table_name
AS alias_name

(2)列的sql as语法

SELECT column_name AS alias_name
FROM table_name

实例1:假设我们有两个表分别是:"Persons" 和 "Product_Orders"。我们分别为它们指定别名 "p" 和 "po"。

现在,我们希望列出 "John Adams" 的所有定单。

我们可以使用下面的 SELECT 语句:

SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p, Product_Orders AS po
WHERE p.LastName='Adams' AND p.FirstName='John'

实列2:使用一个列名别名

SELECT LastName AS Family, FirstName AS Name
FROM Persons

12、 JOIN关联(SQL  join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。)

(1)利用条件解决关联

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P 

(2)下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。

  • JOIN: 如果表中有至少一个匹配,则返回行
  • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN: 只要其中一个表中存在匹配,就返回行

(3)内联接:inner join orders(MySQL INNER JOIN子句将一个表中的行与其他表中的行进行匹配) 注意:join与inner join是相同的没有区别

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons  //主表
INNER JOIN Orders  //次表
ON Persons.Id_P = Orders.Id_P  //条件
ORDER BY Persons.LastName     //排序

1)必须指定出现在FROM子句中的主表。
   2)您需要指定要与主表联接的表,该主表出现在INNER JOIN子句中。理论上,您可以连接具有多个表的表。但是,为了更好的查询性能,您应该限制要加入的表的数量。
   3)您需要指定连接条件或连接谓词。连接条件的关键字ON在INNER JOIN语句之后。连接条件是用于在主表和其他表之间匹配行的条件。
(4)LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。

SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

注释:在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。

(5)列出所有的人,以及他们的定购 - 如果有的话

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

特点:LEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行

(6)RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。

SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

注释:在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN。

(7)列出所有的定单,以及定购它们的人 - 如果有的话

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

特点:RIGHT JOIN 关键字会从右表 (Orders) 那里返回所有的行,即使在左表 (Persons) 中没有匹配的行。

(8)full join 全连接(只要其中某个表存在匹配,FULL JOIN 关键字就会返回行)

SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name

注释:在某些数据库中, FULL JOIN 称为 FULL OUTER JOIN。

(9)希望列出所有的人,以及他们的定单,以及所有的定单,以及定购它们的人

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

特点:FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 那里返回所有的行。如果 "Persons" 中的行在表 "Orders" 中没有匹配,或者如果 "Orders" 中的行在表 "Persons" 中没有匹配,这些行同样会列出。

(10)union和union all 操作符(UNION 操作符用于合并两个或多个 SELECT 语句的结果集)

实例:中国和美国的所有的雇员

SELECT E_Name FROM Employees_China
UNION ALL
SELECT E_Name FROM Employees_USA

13、select into 语句 (SQL SELECT INTO 语句可用于创建表的备份复件

使用:

  • SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
  • SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。

(1)select into 语法

1)把所有的列插入新表:

SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename

2)只把希望的列插入新表:

SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename

(2)SELECT INTO 实例 - 制作备份复件

1)制作 "Persons" 表的备份复件

SELECT *
INTO Persons_backup
FROM Persons

2)IN 子句可用于向另一个数据库中拷贝表:(疑问)

SELECT *
INTO Persons IN 'Backup.mdb'
FROM Persons

3)拷贝某些域,可以在 SELECT 语句后列出这些域

SELECT LastName,FirstName
INTO Persons_backup
FROM Persons

(3)SELECT INTO 实例 - 带有 WHERE 子句

1)从 "Persons" 表中提取居住在 "Beijing" 的人的信息,创建了一个带有两个列的名为 "Persons_backup" 的表

SELECT LastName,Firstname
INTO Persons_backup
FROM Persons
WHERE City='Beijing'

(4)SELECT INTO 实例 - 被连接的表

1)创建一个名为 "Persons_Order_Backup" 的新表,其中包含了从 Persons 和 Orders 两个表中取得的信息

SELECT Persons.LastName,Orders.OrderNo
INTO Persons_Order_Backup
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P

sql语句查询——基础篇(1)相关推荐

  1. 数据库sql语句练习 基础篇

    学习数据库,做的练习题记录下来,方便那些想要练习的人 文章目录 数据库建表 1.customer表 2. product 3.order表 4.vendor表 5. recruit表 数据库习题单表查 ...

  2. sql语句(基础篇)

    sql语句 增 插入单条语句 字段的名称和后面的值须一一对应 INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...); 一次插入多条语句 ...

  3. mysql基本sql语句大全(基础用语篇)

    mysql基本sql语句大全(基础用语篇). 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明 ...

  4. SQL常用语句(基础篇)

    SQL常用语句(基础篇) 说明:创建数据库 CREATE DATABASE database-name 说明:删除数据库 drop database dbname 说明:备份sql server -创 ...

  5. thinkphp5基本的一些操作/API友好/获取请求信息(Request)/判断请求类型(GET...)/验证参数数据(Validate)/连接数据库/原生sql语句查询

    文章目录 一.API友好 1.举两个thinkphp5关于API友好的例子 (1)数据输出 (2)错误调试Trace 二.获取请求信息(Request) 1.获取URL信息 2.获取 模块/控制器/操 ...

  6. mongodb模糊查询_我叫Mongo,收了「查询基础篇」,值得你拥有

    这是mongo第二篇「查询基础篇」,后续会连续更新6篇 mongodb的文章总结上会有一系列的文章,顺序是先学会怎么用,在学会怎么用好,戒急戒躁,循序渐进,跟着我一起来探索交流. 通过上一篇基础篇的介 ...

  7. oracle图书操作、sql语句查询+授权、视图、索引、表操作

    oracle图书操作.sql语句查询+授权.视图.索引.表操作 一.创建一张表book,表结构为(总编号,分类号,书名,作者,出版单位,单价),插入若干记录 二.创建一张表reader,表结构为(借书 ...

  8. HIVE:窗口函数,用sql语句查询MySQL安装路径和版本

    数据大师: Jmx's Blog | Keep it Simple and Stupid! 猴子 - 知乎公众号(猴子数据分析)著有畅销书<数据分析思维>科普中国专家 回答数 647,获得 ...

  9. sql--sqlsever--时间相关SQL语句--查询当前时间至前N天的数据

    sql–sqlsever–时间相关SQL语句–查询当前时间至前N天的数据 . . . sql server:取当前时间前10分钟之内的数据 dateadd() 当前时间 select GETDATE( ...

最新文章

  1. java自增运算符与自减运算符
  2. pandas demo 示例
  3. Sketchup Pro(草图大师) 2017中文版 64位
  4. 计算机组成原理:I/O的三大特性
  5. 无法创建t的通用数组_创建通用数组的问题
  6. java线程interu_Intel 10nm服务器U首曝:多线程性能提升118%
  7. 有效的云安全态势始于三个步骤
  8. 企业微信应用设置可信域名_企业微信更新版本 全平台内容可设置成英文
  9. vue -- router路由跳转错误 , NavigationDuplicated
  10. Google Python 编程风格指南
  11. 使用js实现textarea文本域长度,限制输入字数并统计剩余输入字符数
  12. <数据结构>单链表实战之实现两个有序链表的交并差集
  13. ESLint+Prettier+Vetur 统一Vue项目代码风格
  14. JavaScript HTML DOM EventListener
  15. Python-Web前端概述
  16. Python数据分析案例18——化学分子数据模型(机器学习分类问题全流程)
  17. 【半导体先进工艺制程技术系列】SOI技术(下)
  18. python医学图像可视化_可视化医学图像CT
  19. 人工智能教程第四课 yolo入门和案例
  20. 总结恢复百度关键词排名的方法

热门文章

  1. 裕奥在线ER模型设计数据库实战
  2. 存储型XSS原理讲解及实战实验
  3. 电信无线猫连接无线路由器
  4. str.indexOf()的用法
  5. PMP项目管理-[第十章]沟通管理
  6. parallels client Mac 远程连接windows桌面
  7. Java的对象直接输出到底是什么
  8. MySQL--大一下阶段测试题及答案
  9. JAVA多线程实现断点续传
  10. 基于STM32F429网络摄像头实现