结构化查询语言简称SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
SQL语句结构(结构化查询语言包含六个部分):
1、数据查询语言(简称DQL):其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序中给出。保留字SELECT是DQL(也是所有SQL)中用的最多的动词,其他DQL常用的保留字有WHERE、ORDER BY、GROUP BY和HAVING。这些DQL保留字常和其他的SQL语句一起使用。
2、数据操作语言(简称DML):其语句包括动词INSERT、UPDATE和DELETE。他们分别用于添加、修改和删除表中的行。也称为动作查询语言。
3、事物处理语言(简称TPL):它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL的语句包括BEGIN TRANSACTION、COMMIT和ROLLBACK。
4、数据控制语言(简称DCL):它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANK或REVOKE控制对表单个列的访问。
5、数据定义语言(简称DDL):其语句包括动词CREAT和DROP。在数据库中创建表或者删除表(CREAT TABLE或DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留关键字。它也是动作查询的一部分。
6、指针控制语言(简称CCL):它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE CURRENT用于对一个表或者多个表单独行的操作。
SQL语法规则:
1、SQL语句总是以关键字开始;
2、SQL语句以分号结尾;
3、SQL不区分大小写,意味着update与UPDATE相同。
数据库表:
数据库表通常包含一个或多个表。每个表都用一个名称表示(例如“Customers”或“Orders”)。该表中带有数据行的记录。
以著名的Northwind示例数据库中的“Customers”表为例:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
上表中包含5条记录(每一条对应一个客户)和七个列(CustomerID、CustomerName、ConactName、Address、City、PostalCode、Country)
SQL语句:
一些重要的SQL命令:
SELECT :从数据库中提取数据;
UPDATE :更新数据库中的数据;
DELETE:从数据库中删除数据;
INSERT INTO:向数据库中插入新数据;
CREAT DATABASE:创建新数据库;
ALTER DATABASE:修改数据库;
CREAT TABLE:创建新表;
ALTER TABLE:变更(改变)数据库表;
DROP TABLE:删除表;
CREATE INDEX:创建索引;
DROP INDEX:删除索引;
用法举例:
SELECT语句:
SELECT column_name(s) FROM table_name
从table_name表中选择column_name(s)列;
SELECT语句和WHERE子句:
SELECT [*] FROM [Table_name] WHERE [condition1]
选择Table_name中满足条件condition1的所有语句;
SELECT语句与WHERE和/或子句:
SELECT [*] FROM [table_name] WHERE [condition1] [ANDOR] [condition2]...
选择table_name中所有满足条件condition1和/或condition2的所有语句;
SELECT语句与ORDER BY:
SELECT column_name
FROM table_name
ORDER BY column1_name ASC OR DESC
选择table_name表,根据column1_name列升序或降序对column_name进行排列;
ASC:升序;DESC:降序;默认按照升序排列
INSERT INTO 语句:
INSERT INTO table_name (column1,column2....)
VALUES (value1,value2...)
向表table_name中为column1,column2列插入新记录,值为value1,value2;
表单没有指定要插入数据列的名称时,只提供要插入的值;
UPDATE语句:
UPDATE table_name
SET column=value,column1=value1...
WHERE someColumn = someValue
选择table_name表中的someColumn等于someValue的地方的行,设置该column列值为value,column1列值为value1;
DELETE语句:
DELETE FROM table_name
WHERE someColumn = someValue
删除table_name表中,列someColumn的值为someValue的记录(即表中的行);
SELECT DISTINCT语句:
SELECT DISTINCT column1,column2...
FROM table_name
选择table_name中的列column1,column2中的不同的值,去除掉其中重复的值;
NOT语法:
SELECT column1,column2
FROM table_name
WHERE NOT condition;
选择table_name表中不符合condition条件的column1,column2,,,列;
注意事项:
使用IS NULL和IS NOT NULL判断 表中是数值是否为空,而不使用数值运算符判断;
SQL中UPDATE语句不使用WHERE语句时,即忽略WHERE语句,所有记录都会更新;
SQL DELETE语句中,省略了WHERE语句,所有记录都会被删除;