一、什么是 SQL ?
SQL 是 Structured Query Language(结构化查询语言)的缩写,是一种专门用来与数据库沟通的语言。
特点:
- 一体化
- 高度非过程化
- 面向集合的操作方式
- 提供多种方式使用
- 语言简洁
二、创建、更新和删除表
用程序创建表,可以使用 SQL 的 CREATE TABLE 语句。下面的 SQL 语句创建本文中所用的 Products 表:
CREATE TABLE Products(
prod id CHAR(10) NOT NULL,
vend id CHAR(10) NOT NULL,
prod name CHAR(254) NOT NULL,
prod price DECIMAL(8,2) NOT NULL DEFAULT 3,
proddesc VARCHAR(1000) NULL
);
更新表定义,可以使用 ALTER TABLE 语句。因为给已有表增加列可能是所有 DBMS 都支持的唯一操作,所以我们举个这样的例子:
ALTER TABLE Vendors ADD vend_phone CHAR(20);
删除表(删除整个表而不是其内容)非常简单,如下所示:
DROP TABLE CustCopy;
三、插入数据
把数据插入表中的最简单方法是使用基本的 INSERT 语法,它要求指定表名和插入到新行中的值。下面举一个例子:
INSERT INTO Customers VALUES('','','');
四、更新和删除数据
更新(修改)表中的数据,可以使用 UPDATE 语句。例子如下:
UPDATE Customers SET cust_contact = 'Sam Roberts', cust_email = 'sam@toyland.cxx' WHERE cust_id = '1000000006';
从一个表中删除数据,使用 DELETE 语句。下面的语句从 Customers 表中删除一行:
DELETE FROM Customers WHERE cust_id = '1000000006';
五、查询SELECT
SELECT的使用:
SELECT columnName1, columnName2 FROM tableName :返回指定列
SLELCT * FROM tableName :返回全部的列
返回的结果被存放在称为“结果集”的对象中。
六.DISTINCT
DISTINCT与SELECT连用,用以查询不同的值:
SELECT DISTINCT columnName1,columnName2 FROM tableName :返回不同的值
在查询过程中,常常会出现同样的值,比方查询一列,这一列中会有同样的值;查询两列,会有两列同一时候同样的值。
DISTINCT就是为了在查询结果中。将那些同样的值去除,仅仅保留一个。
七.WHERE
WHERE子句中用于规定选择的标准。即满足的先决条件。
SELECT 列名 FROM 表名 WHERE 列名运算符 值 :选择满足先决条件“列名 运算符 值”的值
运算符有:=、<>(或!=)、>、<、>=、<=、BETWEEN AND、LIKE
当中,BETWEEN AND是选取某个范围的值,LIKE是按某种模式搜索
八.AND和OR
AND和OR运算符在WHERE子句中使用,目的是把两个或多个条件结合起来。
SELECT 列名 FROM 表名 WHERE 列1 运算符1 值1AND(OR) 列2 运算符2 值2 :选择满足多个先决条件的值
也能够使用圆括号(),来组建复杂的表达式
SELECT 列名 FROM 表名 WHERE (列1 运算符1 值1 OR 列2 运算符2 值2)AND 列3 运算符3 值3
九.ORDER BY
对结果集进行排序,默认是依照升序的规则
SELECT 列名 FROM 表名 ORDER BY 列1 (ASC或DESC), 列2 (ASC或DESC):依照列进行排序,假设是多列。那么先依照列1排序,在列1中有同样的值时,再依照列2排序
当中,ASC升序,DESC为降序。也能够两者都不写,採用默认排序
注意。假设依照多个列排序,每一个列都需指定排序的方式,在指定列的后边加上ASC或DESC。或默认。
十、插入INSERT INTO
INSERT INTO 表名 VALUES (值1, 值2, ...) :向表中的插入一条包括全部列值的数据
INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...) :向表中插入一条仅仅包括指定列的值的数据
注意:在不指定列名的时候,插入的数据必须把表中全部的列的值都写明,否则出错
在mysql 中,INSERT能够不必和INTO连用。没有INTO也正确,不知其它数据库如何的。
十一、TOP
TOP子句是规定要返回的数据的数目。对于拥有千万计条目的大型表来说,TOP字句是很重要的。
概念语法:
SELECT TOP num * FROM 表名 :从表中返回满足条件的前num条记录,或者
SELECT TOP num PERCENT * FROM 表名:从表中返回满足条件的前num%的记录
对于概念语法,每一个数据库软件的用法不同。
Mysql中使用LIMITkeyword:SELECT * FROM 表名 LIMIT num
Oracle中使用ROWNUMkeyword与WHERE连用:SELECT * FROM 表名WHERE ROWNUM<=num
十二、LIKE
LIKEkeyword是为了在WHERE子句中使用。依照某个列的指定模式。搜索对应的条目
用法:
SELECT * FROM 表名 WHERE 列名 LIKE '模式'
模式通常与通配符连用,通配符有%, _, [charlist], [^charlist]或[!charlist]。
比如以%使用:'%str',以str结尾的字符串;'str%'以str开头的字符串;'%str%'包括str的字符串
使用NOTkeyword,选择不符合'模式'的数据
SELECT * FROM 表名 WHERE 列名 NOT LIKE '模式'
注意:假设 列名 LIKE '模式' 中没有通配符,那么就相当于 列名='模式'
十三、IN
SELECT * FROM 表名 WHERE 列名 IN (值1。值2, ...)
INkeyword,给定一个集合,选择列的值在结合中的数据条目。值能够是字符串,也能够是数值,详细依据列的数据类型
十四、BETWEEN AND
SELECT * FROM 表名 WHERE 列名 BETWEEN 值1 AND 值2 :选择指定的列介于值1和值2之间的数据。