SQL快速入门

SQL 是用于访问和处理数据库的标准的计算机语言。在本教程中,您将学到如何使用 SQL 访问和处理数据系统中的数据,这类数据库包括:MySQL、SQL Server、Access、Oracle、Sybase、DB2 等等。本篇博客告诉大家如果快速入门,学习SQL的增(Insert)、删(Delete)、改(Update)、查(Select)。

SQL配置学习环境

我的策略是:WAMP中的MySQL+ Navicat

如何配置:

可以先参考:使用WampServer搭建本地PHP环境,绑定域名,配置伪静态先自己搭建一个WAMP环境,

然后,安装Navicat软件,网上一大堆。

打开 -> 选择”连接” -> “MySQL” ->

连接名:MyStudy
主机名或IP地址:localhost
端口:3306
用户名:root
密码:(如果设置了,请输入)

-> 连接测试 “OK” -> “确定”

-> 选择表 -> 点击”查询” -> “新建查询” ->就可以开始学习了。

简介

SQL指结构化查询语言,全称是(Structured Query Language)是用于访问和处理数据库的标准的计算机语言。SQL 让您可以访问和处理数据库。SQL 是一种 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语言。

语法

数据表:

[table id=18 /]

上面的表包含五条记录(每一条对应一个客户)和七个列(CustomerID、CustomerName、ContactName、Address、City、PostalCode 和 Country)。

下面的 SQL 语句从 “Customers” 表中选取所有记录:

SELECT * FROM Customers;
  • SQL 对大小写不敏感:SELECTselect 是相同的。
  • 某些数据库系统要求在每条 SQL 语句的末端使用分号。
  • 分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的 SQL 语句。

重要的SQL命令一览:

  • SELECT - 从数据库中提取数据
  • UPDATE - 更新数据库中的数据
  • DELETE - 从数据库中删除数据
  • INSERT INTO - 向数据库中插入新数据
  • CREATE DATABASE - 创建新数据库
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE - 变更(改变)数据库表
  • DROP TABLE - 删除表
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引

SELECT语句

语法:SELECT column_name,column_name FROM table_name;

下面的 SQL 语句从 “Customers” 表中选取 “CustomerName” 和 “City” 列:

SELECT CustomerName,City FROM Customers;

如果需要选中所有的列,使用*

SELECT * FROM Customers;

###SELECT DISTINCT语句

语法:SELECT DISTINCT column_name,column_name FROM table_name;

例如:
SELECT DISTINCT City FROM Customers;

需要说明的是:DISTINCTGROUP BY的区别:

GROUP BY可以使用一些其它的聚合函数:AVG, MAX, MIN, SUMCOUNT。而DISTINCT只是简单的移除重复项。

WHERE子句

子句,是作为SELECT语句来说的。

语法:SELECT column_name,column_name FROM table_name WHERE column_name operator value;

例子:

SELECT * FROM Customers WHERE Country='Mexico';

取得Customers表中,Country为Mexico的所有列。

SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。
如果是数值字段,请不要使用引号。

例子:

SELECT * FROM Customers WHERE CustomerID=1;

下面的运算符可以在 WHERE 子句中使用:

[table id=19 /]

AND & OR运算符

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

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

AND例子:

SELECT * FROM Customers
WHERE Country='Germany'
AND City='Berlin';

OR例子:

SELECT * FROM Customers
WHERE City='Berlin'
OR City='München';

结合 AND & OR

SELECT * FROM Customers
WHERE Country='Germany'
AND (City='Berlin' OR City='München');

INSERT INTO语句

语法1:
INSERT INTO table_name
VALUES (value1,value2,value3,…);

语法2:

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

比如插入新的一行:

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal','Tom B. Erichsen','Skagen 21','Stavanger','4006','Norway');

在指定的列插入数据:

INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');

UPDATE语句

UPDATE 语句用于更新表中已存在的记录。

语法:UPDATE table_name SET column1=value1,column2=value2,...WHERE some_column=some_value;

实例:

UPDATE Customers
SET ContactName='Alfred Schmidt', City='Hamburg'
WHERE CustomerName='Alfreds Futterkiste';

一定要注意,不能省略WHERE子句,否则数据库所有列都会被重写。

DELETE语句

语法:DELETE FROM table_name WHERE some_column=some_value;

实例:

DELETE FROM Customers
WHERE CustomerName='Alfreds Futterkiste' AND ContactName='Maria Anders';

删除所有数据:

DELETE FROM table_name;

or

DELETE * FROM table_name;

SELECT TOP子句

语法:

SELECT TOP number|percent column_name(s)
FROM table_name;

下面的 SQL 语句从 “Customers” 表中选取头两条记录,实例:

SELECT TOP 2 * FROM Customers;

LIKE操作符

语法:

SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;

下面的 SQL 语句选取 City 以字母 “L” 开始的所有客户,例子:

SELECT * FROM Customers
WHERE City LIKE 'L%';

下面的 SQL 语句选取 Country 包含模式 “me” 的所有客户:

SELECT * FROM Customers
WHERE Country LIKE '%me%';

通过使用 NOT 关键字,您可以选取不匹配模式的记录。
下面的 SQL 语句选取 Country 不包含模式 “me” 的所有客户:

SELECT * FROM Customers
WHERE Country NOT LIKE '%me%';

SQL通配符

[table id=20 /]

主要讲[charlist]通配符,下面的 SQL 语句选取 City 以 “b”、”s” 或 “p” 开始的所有客户:

SELECT * FROM Customers
WHERE City LIKE '[bsp]%';

下面的 SQL 语句选取 City 以 “a”、”b” 或 “c” 开始的所有客户:

SELECT * FROM Customers
WHERE City LIKE '[a-c]%';

下面的 SQL 语句选取 City 不以 “b”、”s” 或 “p” 开始的所有客户:

SELECT * FROM Customers
WHERE City LIKE '[!bsp]%';

可以在线测试一下:http://www.w3schools.com/sql/trysql.asp?filename=trysql_select_wildcard_charlist&ss=-1

IN操作符

IN操作符主要是在WHERE子句中去设定多个值

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);

下面的 SQL 语句选取 City 为 “Paris” 或 “London” 的所有客户,例如:

SELECT * FROM Customers
WHERE City IN ('Paris','London');

与下面的句子等价:

SELECT * FROM Customers
WHERE City = 'Paris' OR City='London';

BETWEEN操作符

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

语法:

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

下面的 SQL 语句选取CustomerID介于 1 和 3 之间的所有用户:

SELECT * FROM customers
WHERE CustomerID BETWEEN 1 AND 3;

与下面的语句等价:

SELECT * FROM customers
WHERE CustomerID >=1 AND CustomerID<=3;

1.NOT BETWEEN 操作符

同样对于BETWEEN,我们可以使用NOT非操作符:

SELECT * FROM customers
WHERE CustomerID NOT BETWEEN 1 AND 3;

2.带有 IN 的 BETWEEN 操作符

下面的 SQL 语句选取CustomerID为1到3之间,并且CITY为Berlin的客户:

SELECT * FROM customers
WHERE CustomerID BETWEEN 1 AND 3
AND CITY IN ('Berlin');

3.带有文本值的 BETWEEN 操作符
下面的SQL语句选取了customers中CustomerName介于’A’和’B’之间字母开始的所有用户:

SELECT * FROM customers
WHERE CustomerName BETWEEN 'A' AND 'B';

请注意,在不同的数据库中,BETWEEN 操作符会产生不同的结果!

在某些数据库中,BETWEEN 选取介于两个值之间但不包括两个测试值的字段。

在某些数据库中,BETWEEN 选取介于两个值之间且包括两个测试值的字段。

在某些数据库中,BETWEEN 选取介于两个值之间且包括第一个测试值但不包括最后一个测试值的字段。

因此,请检查您的数据库是如何处理 BETWEEN 操作符!