一.SQL语句语法
1.ALTER TABLE
ALTER TABLE 用来更新已存在表的结构。
ALTER TABLE tablename (ADD|DROP column datatype [NULL|NOT NULL] [CONSTRAINTS], ... );
2.COMMIT
COMMIT 用来将事物写入数据库。
COMMIT [TRANSACTION];
3.CREATE INDEX
CREATE INDEX 用于在一个或多个列上创建索引。
CREATE INDEX indexname ON tableanme (column,...);
4.CREATE PROCEDURE
CREATE PROCEDURE 用于创建存储过程。
CREATE PROCEDURE AS SQL statement;
5.CREATE TABLE
CREATE TABLE 用于创建新数据库表。更新已经存在的表的结构,使用ALTER TABLE。
CREATE TABLE tablename ( column datatype [NULL|NOT NULL] [CONSTRAINS], column datatype [NULL|NOT NULL] [CONSTRAINS], ... );
6.CREATE VIEW
CREATTE VIEW 用于创建一个或多个表上的新视图。
CREATE VIEW viewname AS SELECT columns, ... FROM tables, ... [WHERE ...] [GROUP BY ...] [HAVING ...];
7.DELETE
DELETE 从表中删除一行多多行。
DELETE FROM tablename [WHERE ...];
8.DROP
DROP 永久删除数据库对象(表,视图,索引等)。
DROP INDEX|PROCEDURE|TABLE|VIEW indexname|procedurename|tablename|viewname;
9.INSERT
INSERT 为表添加一行。
INSERT INTO tablename[(columns, ...)] VALUES (values, ...);
10.INSERT SELECT
INSERT SELECTT 将SELECT结果插入到一个表。
INSERT INTO tablename [(columns, ...)] SELECT columns, ... FROM tablename, ... [WHERE ...];
11.ROLLBACK
ROLLBACK 用于撤销一个事物块。
ROLLBACK [TO savepointname];
12.SELECT
SELECT 用于从一个或多个表(视图)中检索数据。
SELECT columnname, ... FROM tablename, ... [WHERE ...] [UNION ...] [GROUP BY ...] [HAVING ...] [ORDER BY ...];
13.UPDATE
UPDATE 更新表中的一行或多行。
UPDATE tablename SET columnname = value, ... [WHERE ...];
二.SQL语句
1.检索数据
SELECT语句后面跟要检索的列,FROM后跟要检索的表,WHERE用于过滤需要的条件。ORDER BY用于排序(DESC用于降序,ASC用于升序)。SELECT *表示检索所有的列。
SELECT colunmname_1, columnname_2, clunmname_3, ... FROM tablename [WHERE ...] [ORDER BY ... ASC|DESC];
2.过滤数据
WHERE用于过滤数据,后面可跟字句操作符,后跟 NOT 用于否定,后跟AND、OR和IN(完成与OR相同的功能)用于过滤多个条件,后跟LIKE用于通配符过滤(%表示任意字符出现任意次数,_表示匹配单个字符,[]用来指定一个字符集)。例如:
SELECT prod_id, prod_name, prod_price FROM Products WHERE NOT prod_price BETWEN 3.44 AND 5.88 AND prod_name LIKE ‘[JM]%‘;
下表为WHERE字句操作符:
3.拼接字段
MySQL数据库中用Concat来进行拼接字段。AS来取一个别名。RTRIM()来去掉字符串右边的空格,LTRIM()来去掉字符串左边的空格,TRIM()来去掉字符串左右两边的空格。例如:
SELECT Concat( vend_name, ‘(‘ ,RTRIM(vend_country), ‘)‘ ) AS vend_title FROM Vendors ORDER BY vend_name;
4.数据函数
常用数据的处理、汇总函数如下:
例如:
SELECT COUNT(*) AS num_cust FROM Customers;
5.子查询
子查询,即嵌套在其他查询中的查询。例如:
SELECT cust_name,cust_state, (SELECT COUNT(*) FROM Orders WHERE Orders.cust_id=Customer.cust_id) AS orders FROM Customers ORDER BY cust_name;
6.联结表
SQL最强大的功能之一就是能在数据查询的执行中联结(join)表。联结是利用SQL的SELECT能执行的最重要的操作,很好的理解联结及其语法是学习SQL的极为重要的部分。创建联结表非常简单,指定要联结的所有表及关联它们的方式即可。例如:
SELECT vend_name,prod_name,prod_price FROM Vendors, Products WHERE Vendors.vend_id=Products.vend_id;
以上使用的联结称为内联结,也称为等值联结,它基于两个表之间的相等测试。下面的SELECT语句返回与前面例子完全相同的数据:
SELECT vend_name,prod_name,prod_price FROM Vendor INNER JOIN Products ON Vendor.vend_id=Products.vend_id;
7.组合查询
可用UNION操作符来组合多条SQL语句,在各条语句之间放上关键字UNION。UNION从查询结果集中自动去除重复的行,如果显示所有可用UNION ALL表示返回所有的匹配行。例如:
SELECT cust_name, cust_contact,cust_email FROM Customers WHERE cust_state IN(‘IL‘, ‘IN‘ ,‘MI‘) UNION SELECT cust_name, cust_contact,cust_email FROM Customers WHERE cust_name =‘JACK‘;
8.插入数据
可用INSERT操作符对标进行插入操作,后面的INTO是可选的(建议加上)。例如:
INSERT INTO Students(id,name,age,tel) VALUES( ‘001‘, ‘JACK‘ , ‘21‘ , ‘8612345‘; )
以上是SQL相关的常用语法及语句结构,详情可查看相关文档。
参考文献
《SQL必知必会》,Ben Forta ,人民邮电出版社。