sql语句查询——基础篇(1)
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)相关推荐
- 数据库sql语句练习 基础篇
学习数据库,做的练习题记录下来,方便那些想要练习的人 文章目录 数据库建表 1.customer表 2. product 3.order表 4.vendor表 5. recruit表 数据库习题单表查 ...
- sql语句(基础篇)
sql语句 增 插入单条语句 字段的名称和后面的值须一一对应 INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...); 一次插入多条语句 ...
- mysql基本sql语句大全(基础用语篇)
mysql基本sql语句大全(基础用语篇). 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明 ...
- SQL常用语句(基础篇)
SQL常用语句(基础篇) 说明:创建数据库 CREATE DATABASE database-name 说明:删除数据库 drop database dbname 说明:备份sql server -创 ...
- thinkphp5基本的一些操作/API友好/获取请求信息(Request)/判断请求类型(GET...)/验证参数数据(Validate)/连接数据库/原生sql语句查询
文章目录 一.API友好 1.举两个thinkphp5关于API友好的例子 (1)数据输出 (2)错误调试Trace 二.获取请求信息(Request) 1.获取URL信息 2.获取 模块/控制器/操 ...
- mongodb模糊查询_我叫Mongo,收了「查询基础篇」,值得你拥有
这是mongo第二篇「查询基础篇」,后续会连续更新6篇 mongodb的文章总结上会有一系列的文章,顺序是先学会怎么用,在学会怎么用好,戒急戒躁,循序渐进,跟着我一起来探索交流. 通过上一篇基础篇的介 ...
- oracle图书操作、sql语句查询+授权、视图、索引、表操作
oracle图书操作.sql语句查询+授权.视图.索引.表操作 一.创建一张表book,表结构为(总编号,分类号,书名,作者,出版单位,单价),插入若干记录 二.创建一张表reader,表结构为(借书 ...
- HIVE:窗口函数,用sql语句查询MySQL安装路径和版本
数据大师: Jmx's Blog | Keep it Simple and Stupid! 猴子 - 知乎公众号(猴子数据分析)著有畅销书<数据分析思维>科普中国专家 回答数 647,获得 ...
- sql--sqlsever--时间相关SQL语句--查询当前时间至前N天的数据
sql–sqlsever–时间相关SQL语句–查询当前时间至前N天的数据 . . . sql server:取当前时间前10分钟之内的数据 dateadd() 当前时间 select GETDATE( ...
最新文章
- java自增运算符与自减运算符
- pandas demo 示例
- Sketchup Pro(草图大师) 2017中文版 64位
- 计算机组成原理:I/O的三大特性
- 无法创建t的通用数组_创建通用数组的问题
- java线程interu_Intel 10nm服务器U首曝:多线程性能提升118%
- 有效的云安全态势始于三个步骤
- 企业微信应用设置可信域名_企业微信更新版本 全平台内容可设置成英文
- vue -- router路由跳转错误 , NavigationDuplicated
- Google Python 编程风格指南
- 使用js实现textarea文本域长度,限制输入字数并统计剩余输入字符数
- <数据结构>单链表实战之实现两个有序链表的交并差集
- ESLint+Prettier+Vetur 统一Vue项目代码风格
- JavaScript HTML DOM EventListener
- Python-Web前端概述
- Python数据分析案例18——化学分子数据模型(机器学习分类问题全流程)
- 【半导体先进工艺制程技术系列】SOI技术(下)
- python医学图像可视化_可视化医学图像CT
- 人工智能教程第四课 yolo入门和案例
- 总结恢复百度关键词排名的方法