结构化查询语言包含6个部分:
数据查询语言(DQL) 其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用数据操作语言(DML) 其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。事务处理语言(TPL) 它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK数据控制语言(DCL) 它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。数据定义语言(DDL) 其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。指针控制语言(CCL) 它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。
字符型 VARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要。他们都是用来储存字符串长度小于255的字符 。VARCHAR会将字符串后面多余的空格删去。 当建立自己的站点时,不需要为剪掉你数据中多余的空格而操心。 VARCHAR型字段的另一个突出的好处是它可以比CHAR型字段占用更少的内存和硬盘空间。当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要。
文本型 使用文本型数据,你可以存放超过二十亿个字符的字符串。当你需要存储大串的字符时,应该使用文本型数据。 注意文本型数据没有长度,而上一节中所讲的字符型数据是有长度的。//一个文本型字段中的数据通常要么为空,要么很大。 但是,无论何时,只要你能避免使用文本型字段,你就应该不使用它。文本型字段既大且慢,滥用文本型字段会使服务器速度变慢。文本型字段还会吃掉大量的磁盘空间。 一旦你向文本型字段中输入了任何数据(甚至是空值),就会有2K的空间被自动分配给该数据。除非删除该记录,否则你无法收回这部分存储空间。
数值型(整数INT、小数NUMERIC、钱数MONEY) MONEY型数据可以存储从-922,337,203,685,477.5808到922,337,203,685,477.5807的钱数。如果你需要存储比这还大的金额,你可以使用NUMERIC型数据。 SMALLMONEY型数据只能存储从-214,748.3648到214,748.3647 的钱数。同样,如果可以的话,你应该用SMALLMONEY型来代替MONEY型数据,以节省空间。逻辑型如果你使用复选框(CHECKBOX)从网页中搜集信息,你可以把此信息存储在BIT型字段中。BIT型字段只能取两个值:0或1。 注意:在你创建好一个表之后,你不能向表中添加 BIT型字段。如果你打算在一个表中包含BIT型字段,你必须在创建表时完成。
日期型(DATETIME 和 SMALLDATETIME) 一个 DATETIME型的字段可以存储的日期范围是从1753年1月1日第一毫秒到9999年12月31日最后一毫秒。 DATETIME型数据小,而且不如DATETIME型数据精确。一个SMALLDATETIME型的字段能够存储从1900年1月1日到2079年6月6日的日期,它只能精确到秒。 (DATETIME型字段在你输入日期和时间之前并不包含实际的数据,认识这一点是重要的。)
SQL 是用于访问和处理数据库的标准的计算机语言。
要创建一个显示数据库中数据的网站,您需要: - RDBMS 数据库程序(比如 MS Access、SQL - Server、MySQL) - 使用服务器端脚本语言,比如 PHP 或 ASP - 使用 SQL 来获取您想要的数据 - 使用 HTML / CSS
RDBMS 指关系型数据库管理系统,全称 Relational Database Management System。 RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server、IBM DB2、Oracle、MySQL 以及 Microsoft Access。 RDBMS 中的数据存储在被称为表的数据库对象中。 表是相关的数据项的集合,它由列和行组成。
某些数据库系统要求在每条SQL语句的末端使用分号。
分号是在数据库系统中分隔语句的标准方法,这样可以在对服务器的相同请求中执行一条以上的SQL语句。
SELECT 语句用于从数据库中选取数据。 结果被存储在一个结果表中,称为结果集
与
SELECT * FROM table_name;SELECT DISTINCT用于返回唯一不同的值。
WHERE 子句用于过滤记录,提取那些满足指定标准的记录。
或
SELECT * FROM table_name WHERE value;ps: SQL使用单引号来环绕文本值(大部分数据库系统也接受双引号)。 如果是数值字段,不要使用引号。
SELECT * FROM Customers WHERE CustomerID=1; SELECT * FROM Customers WHERE Country='Mexico';下面的运算符可以在WHERE子句中使用:
运算符描述=等于<>不等于(在SQL的一些版本中,也可写!=)>大于<小于>=大于等于<=小于等于BETWEEN在某个范围内LIKE搜索某种格式IN指定针对某个列的多个可能值如果第一个条件和第二个条件都成立,则AND运算符显示一条记录。 如果第一个条件和第二个条件只有一个 ,则OR运算符显示一条记录。
下面的 SQL 语句从 “Customers” 表中选取国家为 “Germany” 且城市为 “Berlin” 的所有客户:
SELECT * FROM Customers WHERE Country = 'Germany' AND City = 'Berlin';下面的 SQL 语句从 “Customers” 表中选取城市为 “Berlin” 或者 “München” 的所有客户:
SELECT * FROM Customers WHERE City = 'Berlin' OR city = 'München';下面的 SQL 语句从 “Customers” 表中选取国家为 “Germany” 且城市为 “Berlin” 或者 “München” 的所有客户:
SELECT * FROM Customers WHERE Country = 'Germany' AND (City = 'Berlin' OR City = 'München');ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。 ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。
从 “Customers” 表中选取所有客户,并按照 “Country” 列排序:
SELECT * FROM Customers ORDER BY Country;SELECT * FROM Customers ORDER BY Country,CustomerName;
用于向表中插入新纪录
第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
INSERT INTO table_name VALUES (value1,value2,value3,...);第二种形式需要指定列名及被插入的值:
INSERT INTO table_name(column1,column2,column3,...) VALUES (value1,value2,value3,...)UPDATE语句用于更新表中的记录。
删除表中的行。
用于在WHERE子句中搜索列中的指定模式。
PS:”%” 符号用于在模式的前后定义通配符(缺省字母)。
通过NOT关键字,你可以选取不匹配模式的记录。
可代替字符串中的任何其他字符。 在SQL 中,通配符与 SQL LIKE 操作符一起使用。 SQL 通配符用于搜索表中的数据