一.SQL语句语法

ALTER TABLE

  ALTER TABLE 用来更新已存在表的结构。

ALTER TABLE tablename
(ADD|DROP column datatype [NULL|NOT NULL] [CONSTRAINTS],
...
);

COMMIT

  COMMIT 用来将事物写入数据库。

COMMIT [TRANSACTION];

CREATE INDEX

  CREATE INDEX 用于在一个或多个列上创建索引。

CREATE INDEX indexname
ON tableanme (column,...);

CREATE PROCEDURE

  CREATE PROCEDURE 用于创建存储过程。

CREATE PROCEDURE
AS
SQL statement;

CREATE TABLE

  CREATE TABLE 用于创建新数据库表。更新已经存在的表的结构,使用ALTER TABLE。

CREATE TABLE tablename
(
column datatype [NULL|NOT NULL] [CONSTRAINS],
column datatype [NULL|NOT NULL] [CONSTRAINS], ...
);

CREATE VIEW

  CREATTE VIEW 用于创建一个或多个表上的新视图。

CREATE    VIEW    viewname    AS
SELECT columns, ...
FROM tables, ...
[WHERE ...]
[GROUP BY ...]
[HAVING ...];

DELETE

  DELETE 从表中删除一行多多行。

DELETE    FROM    tablename
[WHERE ...];

DROP

  DROP 永久删除数据库对象(表,视图,索引等)。

DROP    INDEX|PROCEDURE|TABLE|VIEW
indexname|procedurename|tablename|viewname;

INSERT

  INSERT 为表添加一行。

INSERT    INTO    tablename[(columns, ...)]
VALUES (values, ...);

INSERT SELECT

  INSERT SELECTT 将SELECT结果插入到一个表。

INSERT     INTO    tablename    [(columns, ...)]
SELECT columns, ... FROM tablename, ...
[WHERE ...];

ROLLBACK

  ROLLBACK 用于撤销一个事物块。

ROLLBACK    [TO    savepointname];

SELECT

  SELECT 用于从一个或多个表(视图)中检索数据。

SELECT    columnname, ...
FROM tablename, ...
[WHERE ...]
[UNION ...]
[GROUP BY ...]
[HAVING ...]
[ORDER BY ...];

UPDATE

  UPDATE 更新表中的一行或多行。

UPDATE    tablename
SET columnname = value, ...
[WHERE ...];

二.SQL常用语句

检索数据

  SELECT语句后面跟要检索的列,FROM后跟要检索的表,WHERE用于过滤需要的条件。ORDER BY用于排序(DESC用于降序,ASC用于升序)。SELECT *表示检索所有的列。

SELECT colunmname_1, columnname_2, clunmname_3, ...
FROM tablename
[WHERE ...]
[ORDER BY ... ASC|DESC];

过滤数据

  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字句操作符:

  

拼接字段

  MySQL数据库中用Concat来进行拼接字段。AS来取一个别名。RTRIM()来去掉字符串右边的空格,LTRIM()来去掉字符串左边的空格,TRIM()来去掉字符串左右两边的空格。例如:

SELECT    Concat( vend_name, '(' ,RTRIM(vend_country), ')' )
AS vend_title
FROM Vendors
ORDER BY vend_name;

数据函数

  常用数据的处理、汇总函数如下:

  例如:

SELECT    COUNT(*)    AS    num_cust
FROM Customers;

子查询

  子查询,即嵌套在其他查询中的查询。例如:

SELECT    cust_name,cust_state,
(SELECT COUNT(*)
FROM Orders
WHERE Orders.cust_id=Customer.cust_id) AS orders
FROM Customers
ORDER BY cust_name;

  

联结表

  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;

组合查询

  可用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';

插入数据

  可用INSERT操作符对标进行插入操作,后面的INTO是可选的(建议加上)。例如:

INSERT INTO Students(id,name,age,tel)
VALUES(
'',
'JACK' ,
'' ,
'';
)

  

三.主键与外键

  主键是一种特殊的约束,用来保证一列(或一组列)中的值是唯一的,而且永远不改动。换句话说,表中的一列或多个列的唯一标识表中的每一行。这方便了直接或交互处理表中的行。没有主键,要安全的进行UPDATE和DELETE特定行而不影响其他行会非常困难。一种定义主键的方法是创建它,例如下面声明vend_id为主键:

CREATE    TABLE    Vendors
(
vend_id CHAR(10) NOT NULL PRIMARY KEY,
vend_name CHAR(50) NOT NULL,
vend_addr CHAR(50) NULL
);

  外键是表中的一列,其值必须列在另一表的主键中。外键是保证引用完整性的及其重要的部分。例如:

CREATE    TABLE    Orders
(
order_num INTEGER NOT NULL PRIMARY KEY,
order_data DATATIME NOT NULL,
cust_id CHAR(10) NOT NULL REFERENCES Customers(cust_id)
);

  上面语句定义使用了REFERENCES关键字,它表示cust_id中的任何都必须是Customers表的cust_id中的值。

  相同的工作也可以在ALTER  TABLE语句中用CONSTRAINT语法来完成:

ALTER    TABLE    Orders
ADD CONSTRAINT
FROEIGN KEY (cust_id) REFERENCES Customers (cust_id)

四.数据类型

                                  表4.1 字符串数字类型

  

表4.2 数值数据类型

表4.3 日期和时间数据类型

表4.4 二进制数据类型

  以上是SQL相关的常用语法及语句结构,详情可查看SQL及DBMS相关文档。

参考文献

《SQL必知必会》,Ben Forta ,人民邮电出版社。

SQL语法语句总结的更多相关文章

  1. [转]MySQL 最基本的SQL语法/语句

    MySQL 最基本的SQL语法/语句,使用mysql的朋友可以参考下.   DDL-数据定义语言(Create,Alter,Drop,DECLARE) DML-数据操纵语言(Select,Delete ...

  2. 最基本的SQL语法/语句

    DDL—数据定义语言(Create,Alter,Drop,DECLARE) DML—数据操纵语言(Select,Delete,Update,Insert) DCL—数据控制语言(GRANT,REVOK ...

  3. SQL语法语句总结(《SQL必知必会》读书笔记)

    一.SQL语句语法 ALTER TABLE ALTER TABLE 用来更新已存在表的结构. ALTER TABLE tablename (ADD|DROP column datatype [NULL ...

  4. MySQL 最基本的SQL语法/语句

    DDL—数据定义语言(Create,Alter,Drop,DECLARE) DML—数据操纵语言(Select,Delete,Update,Insert) DCL—数据控制语言(GRANT,REVOK ...

  5. 面试必须要知道的SQL语法,语句

    面试必须要知道的SQL语法,语句 收藏 asc 按升序排列desc 按降序排列下列语句部分是Mssql语句,不可以在access中使用.SQL分类: DDL—数据定义语言(Create,Alter,D ...

  6. mysql中SQL执行过程详解与用于预处理语句的SQL语法

    mysql中SQL执行过程详解 客户端发送一条查询给服务器: 服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果.否则进入下一阶段. 服务器段进行SQL解析.预处理,在优化器生成对应的 ...

  7. SQL语法基础之DROP语句

    SQL语法基础之DROP语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看DROP帮助信息 mysql> ? DROP Many help items for yo ...

  8. SQL语法基础之ALTER语句

    SQL语法基础之ALTER语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看ALTER的帮助信息 mysql> ? ALTER Many help items fo ...

  9. SQL语法基础之INSEART语句

    SQL语法基础之INSEART语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看帮助信息 1>.查看INSERT方法的帮助信息 mysql> ? INSERT ...

随机推荐

  1. Android WebView 缓存机制和模式详解

    当我们加载Html时候,会在我们data/应用package下生成database与cache两个文件夹: 我们请求的Url记录是保存在webviewCache.db里,而url的内容是保存在webv ...

  2. javax.el.PropertyNotFoundException:Property 'statisDate' not found on type java.lang.String

    1.错误描述 javax.el.PropertyNotFoundException:Property 'statisDate' not found on type java.lang.String 2 ...

  3. Linux显示inode的信息

    Linux显示inode的信息 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ df -i 文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点 ...

  4. 芝麻HTTP:Python爬虫实战之爬取糗事百科段子

    首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致之前的代码没法用了,会导致无法输出和CPU占用过高的 ...

  5. 【BZOJ4012】开店(主席树)

    [BZOJ4012]开店(主席树) 题面 Description 风见幽香有一个好朋友叫八云紫,她们经常一起看星星看月亮从诗词歌赋谈到 人生哲学.最近她们灵机一动,打算在幻想乡开一家小店来做生意赚点钱 ...

  6. [BZOJ1602] [Usaco2008 Oct] 牧场行走 (LCA)

    Description N头牛(2<=n<=1000)别人被标记为1到n,在同样被标记1到n的n块土地上吃草,第i头牛在第i块牧场吃草. 这n块土地被n-1条边连接. 奶牛可以在边上行走, ...

  7. 前端综合学习笔记---异步、ES6/7、Module、Promise同步 vs 异步

    同步 vs 异步 先看下面的 demo,根据程序阅读起来表达的意思,应该是先打印100,1秒钟之后打印200,最后打印300.但是实际运行根本不是那么回事 console.log(100) setTi ...

  8. 【noip模拟】局部最小值

    TimeLimit: 1000ms               MemoryLimit: 256MB Description 有一个n行m列的整数矩阵,其中1到n×m之间的每个整数恰好出现一次.如果一 ...

  9. Xampp相关命令

    http://www.upwqy.com/details/5.html 1 启动关闭 需要切换目录: # cd /opt/lampp/ 启动 XAMPP # ./lampp start 停止 XAMP ...

  10. 记录一个前端bug的解决过程

    人在江湖飘,哪能不挨刀. 我挨了重重一bug.严格来讲这可能是我职业生涯以来的首个悲惨经历,因为凭我的知识储备和经验,基本上任何可重现的bug都是可解的.然而这个bug却困扰了我三个月之久,它具有以下 ...