文章目录
- 前言
- MYSQL 最重要的命令
- SELECT选择语句
- SELECT DISTINCT 选择不同语句
- WHERE 查询定位 子句
- AND、OR 和 NOT 运算符
- ORDER BY 关键字
- INSERT INTO 插入语句
- NULL 空值
- UPDATE更新语句
- DELETE删除语句
- TOP、LIMIT、FETCH FIRST 或 ROWNUM限制子句
- MIN() 和 MAX()函数求最大最小值
- COUNT()、AVG() 和 SUM()函数
- LIKE运算符
- 通配符*?!等
- IN运算符
- BETWEEN 之间运算符
- AS 别名使用
- JOIN连接
- INNER JOIN内连接关键字
- LEFT JOIN 左连接 关键字
- RIGHT JOIN右连接 关键字
- FULL OUTER JOIN 关键字
- Self Join自连接 关键字
- GROUP BY语句
- HAVING 子句
- EXISTS 运算符
- 注释
- 运算符
前言
大家可能不习惯SQL大写的习惯,但是真正的规范就是要大写,所以大家要慢慢习惯我用大写的方式讲解。在下面所有的讲解中,我将会以基本语法,案例,联系形式讲解,从而加强对每一个语句的使用和认识。本篇文章是笔者整理了整整一个通宵才写出,希望大家三连好评,谢谢。当然,拥有本篇文章,你将会完全掌握mysql的所有命令使用,不再用去购买或者杂乱学习。本篇内容暂时讲解数据库的筛选部分,因为数据库的最初入门如创建,备份等都有讲过,魔法传送:传送门
该传送门内容有:
MYSQL 最重要的命令
SELECT 从数据库中提取数据 UPDATE 更新数据库中的数据 DELETE 从数据库中删除数据 INSERT INTO 将新数据插入数据库 CREATE DATABASE 创建一个新的数据库 ALTER DATABASE 修改数据库 CREATE TABLE 创建一个新表 ALTER TABLE 修改表 DROP TABLE 删除表 CREATE INDEX 创建索引(搜索键) DROP INDEX 删除索引
SELECT选择语句
该SELECT语句用于从数据库中选择数据。返回的数据存储在一个结果表中,称为结果集。
SELECT 语法:
SELECT column1, column2, ...
此处,column1、column2、… 是要从中选择数据的表的字段名称。如果要选择表中的所有可用字段,请使用以下语法:
SELECT * FROM table_name;
假设我们已经有一个数据库Customers如下:
SELECT 列示例
以下 SQL 语句从“Customers”表中选择“CustomerName”和“City”列:
SELECT CustomerName, City FROM Customers;
SELECT * 示例
以下 SQL 语句从“Customers”表中选择所有列:
SELECT * FROM Customers;
练习题:
1-获取Customers表中的所有列。
SELECT * FROM Customers;
2-编写一条语句,City从Customers表中选择列。
SELECT City FROM Customers;
3-从Customers表中的Country列中选择所有不同的值。(下面会讲,不懂没关系)
SELECT DISTINCT Country FROM Customers;
SELECT DISTINCT 选择不同语句
该SELECT DISTINCT语句仅用于返回不同(不同)的值。在表中,一列通常包含许多重复值;有时您只想列出不同的(不同的)值。
SELECT DISTINCT 语法
SELECT DISTINCT column1, column2, ... FROM table_name;
我们还是假设有这样一个Customers数据库:
没有 DISTINCT 的 SELECT 示例
以下 SQL 语句从“Customers”表的“Country”列中选择所有(包括重复的)值:
SELECT Country FROM Customers;
SELECT DISTINCT 示例
SELECT DISTINCT Country FROM Customers;
以下 SQL 语句列出了不同(不同)客户国家/地区的数量:
SELECT COUNT(DISTINCT Country) FROM Customers;
练习:
1-从表中的Country列中选择所有不同的值Customers。
SELECT DISTINC Country FROM Customers;
WHERE 查询定位 子句
该WHERE子句用于过滤记录。它用于仅提取满足指定条件的记录。
WHERE 语法
SELECT column1, column2, ... FROM table_name WHERE condition;
注: 该WHERE条款不仅在使用 SELECT的语句,它也被用在UPDATE, DELETE等!
我们假设还是有Customers这样一个数据库如下:
WHERE 子句示例
以下 SQL 语句在“Customers”表中选择来自国家“Mexico”的所有客户:
SELECT * FROM Customers WHERE Country='Mexico';
文本字段与数字字段
SQL 需要在文本值周围使用单引号(大多数数据库系统也允许双引号)。但是,数字字段不应包含在引号中:
SELECT * FROM Customers WHERE CustomerID=1;
WHERE 子句中的运算符
可以在WHERE子句中使用以下运算符:
我们可以一一演示这些符号的使用,耐心学
假设我们有一下数据库叫做Product:
选取价格为18的所有产品(=)
SELECT * FROM Products WHERE Price = 18;
选取所有价格大于30的产品(>)
SELECT * FROM Products WHERE Price > 30;
选取所有价格小于30的产品(<)
SELECT * FROM Products WHERE Price < 30;
选取所有价格大于等于30的产品(>= )
SELECT * FROM Products WHERE Price >= 30;
选取所有价格小于等于30的产品( <= )
SELECT * FROM Products WHERE Price <= 30;
选取所有价格不等于18的产品(相当于!=)
SELECT * FROM Products WHERE Price <> 18;
选取所有价格处于50和60之间的产品
SELECT * FROM Products WHERE Price BETWEEN 50 AND 60;
从上面的Customers数据库搜索所有字母s开头的城市
SELECT * FROM Customers WHERE City LIKE 's%';
从Customers数据库中查找所有在Paris和London的用户
SELECT * FROM Customers WHERE City IN ('Paris','London');
以上便是对所有符号的演示。
我们再来一些练习加以巩固(我们用到的是上面的customers)
1-选择City列值为“Berlin”的所有记录。
SELECT * FROM Customers WHERE City='Berlin';
2-使用NOT关键字选择City不是"Berlin"的所有记录。
SELECT * FROM Customers WHERE NOT City ='Berlin';
3-选择CustomerID列值为 32 的所有记录。
SELECT * FROM Customers WHERE CustomerID =12;
AND、OR 和 NOT 运算符
该WHERE子句可以结合 AND,OR和 NOT操作。在AND与OR操作用于基于多个条件筛选记录:
该AND操作显示一个记录,如果所有条件满足 AND 为真。
所述OR操作显示一个记录,如果任何一个条件满足OR为真。
该NOT操作显示,如果条件(S)是不正确的记录。
AND 语法
SELECT column1, column2, ... FROM table_name WHERE condition1 AND condition2 AND condition3 ...;
OR语法
SELECT column1, column2, ... FROM table_name WHERE condition1 OR condition2 OR condition3 ...;
NOT语法
SELECT column1, column2, ... FROM table_name WHERE NOT condition;
我们还是假设有如下“Customers”表:
AND 示例
以下 SQL 语句从Customers中选择国家为"Germany"且city为"Berlin"的所有字段:
SELECT * FROM Customers WHERE Country='Germany' AND City='Berlin';
OR 示例
选取所有"Customers" 中city为"Berlin" OR “München”:
SELECT * FROM Customers WHERE City='Berlin' OR City='München';
NOT 示例
从 “Customers” 选取country不是 "Germany"的字段:
SELECT * FROM Customers WHERE NOT Country='Germany';
结合AND, OR and NOT
从"Customers" 中选择国家为"Germany"”且城市必须为"Berlin" OR "München"的所有字段(使用括号形成复杂的表达式):
SELECT * FROM Customers WHERE Country='Germany' AND (City='Berlin' OR City='München');
从 “Customers"中选择国家不是“Germany” 也不是"USA":的所有字段:
SELECT * FROM Customers WHERE NOT Country='Germany' AND NOT Country='USA';
练习
选择 City 列值为 ‘Berlin’ 且 PostalCode 列值为 12209 的所有记录。
SELECT * FROM Customers WHERE City = 'Berlin' AND PostalCode= 12209;
ORDER BY 关键字
该ORDER BY关键字用于按升序或降序对结果集进行排序。ORDER BY默认情况下,关键字按升序对记录进行排序。要按降序对记录进行排序,请使用 DESC关键字。
ORDER BY 语法
SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... ASC|DESC;
我们还是假设有这个“Customers”表如下:
ORDER BY 示例
从“Customers”表中选择所有客户,按“Country”列排序:
SELECT * FROM Customers ORDER BY Country;
ORDER BY DESC 示例
从“Customers”表中选择所有客户,按“Country”列按 DESCENDING 排序:
SELECT * FROM Customers ORDER BY Country DESC;
ORDER BY 多列示例
从“Customers”表中选择所有客户,按“Country”和“CustomerName”列排序。这意味着它按国家/地区排序,但如果某些行具有相同的国家/地区,则按 CustomerName 排序:
SELECT * FROM Customers ORDER BY Country, CustomerName;
从“Customers”表中选择所有客户,按“Country”升序和“CustomerName”列降序排序:
SELECT * FROM Customers ORDER BY Country ASC, CustomerName DESC;
练习
从Customers表中选择所有记录,按城市列的字母顺序对结果进行排序。
SELECT * FROM Customers ORDER BY City;