SQL

来源:互联网 发布:3ds淘宝 编辑:程序博客网 时间:2024/06/05 20:32

一、SQL语法

1、数据库表

一个数据库通常包含一个或多个表。每个表由一个名字标识(例如“客户”或者“订单”)。表包含带有数据的记录(行)。


2SQL语句

需要在数据库上执行的大部分工作都由SQL语句完成。

下面的语句从表中获取lastname列的数据

SELECT LastName FROM Persons

这样就将数据中的所有lastname字段的数据获取出来了。

注意:SQL对大小写不敏感。

3SQL语句后面的分号;

某些数据库系统要求在每条的SQL命令的末端使用分号。分号是在数据库系统中分隔每条SQL语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的语句。

4SQL DMLDDL

可以把SQL分为两部分:数据操作语言(DML)和数据定义语言(DDL)。SQL(结构化查询语言)是用于执行查询的语法。但是SQL语言也包含用于更新、插入、和删除记录的语法。

查询和更新指令构成了SQLDML部分:

  • SELECT -从数据库表中的获取数据
  • UPDATE -更新数据库表中的数据
  • DELETE -从数据库表中删除数据
  • INSERT INTO -向数据库表中插入数据

SQL的数据定义语言(DDL)部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。

SQL中重要的DDL语句:

  • CREATE DATABASE -创建数据库
  • ALTER DATABASE -修改数据库
  • CREATE TABLE -创建表
  • ALTER TABLE -修改表
  • DROP TABLE -删除表
  • CREATE INDEX -创建索引(搜索键)
  • DROP INDEX -删除索引


二、 SQL SELECT 语句

SELECT 语句用于从表中选取数据。结果被存储在一个结果表中(称为结果集)

语法         SELECT 列名称   FROM 表名称  以及            SELECT * FROM 表名称

注释:SQL 语句对大小写不敏感,SELECT 等效于select


实例:如需获取名为LastName FirstName的列的内容(从名为Persons的数据库)

SELECT LastName,FirstName FROM Persons



SQL SELECT * 实例

现在我们需要从Persons表中获取所有的列。使用符号*取代列的名称

SELECT * FROM Persons


在结果集(result-set)中导航

SQL查询程序获得的结果被存储在一个结果集中,大多数数据库软件系统都允许使用编程函数在结果集中进行导航,比如:Move-To-First-RecordGet-Record-ContentMove-To-Next-Record等等。


三、SQL SELECT DISTINCT语句

在表中,可能会包含重复值。这并不成问题,不过,有时也希望仅仅列出不能(distinct)的值。

关键词DISTINCT 用于返回唯一不同的值。

语法:   SELECT   DISTINCT列名称 FROM表名称

实例:如果要从“Company”列中获取所有的值,我们需要使用SELECT语句:

SELECT Company FROM Orders



注意:在结果集中W3SChool被列了两次。

如需从Company列表中仅选取唯一不同的值,我们需要使用SELECT DISTINCT语句:

SELECT DISTINCT CompanyFROM Orders


现在,在结果集中,W3SChool仅被列出了一次。


四、 SQL    WHERE 语句

WHERE 子句用于规定选择的标准。

WHERE 子句   如需有条件地从表中选取数据,可将WHERE子句添加到SELECT语句。

语法: SELECT 列名称 FROM 表名称 WHERE 运算符

下面的运算符可以在WHERE中使用:

= <>(不等于)、><>=<=BETWEEN(在某个范围内)、 LIKE(搜索某种模式)

注释:在某些版本的SQL中,操作符<>可以写成 !=   

使用WHERE子句

如果只希望选取居住在城市“Beijing”中的人,我们需要向SELECT语句添加WHERE子句:

SELECT * FROM Persons WHERE City=Beijing



引号的使用

请注意,我们在列子中的田间值周围使用的是单引号。SQL使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号

文本值:

SELECT * FROM Persons WHERE FirstName = Bush  这是对的

SELECT *FROM Persons WHERE FirstName= Bush 这是错误的

数值:

SELECT *FROM Persons WHERE Year > 1965  这是对的

SELECT *FROM Persons WHERE Year >1965这是错误的


五、SQL AND & OR 运算符

AND OR运算符 可在WHERE子语句中把两个或多个条件结合起来。如果第一个条件和第二个条件都成立,则AND运算符显示一条记录。如果第一个条件和第二个条件只要一个成立。则OR运算符显示一条记录。


AND 运算符实例:

使用AND来显示所有姓为‘Carter’并且名为‘Thomas’的人:

SELECT *FROM Persons WHERE FirstName=Thomas AND LastName =Carter



OR 运算符实例

使用OR来显示所有姓为‘Carter’或者名为’Thomas‘的人:

SELECT *FROM Persons WHERE  FirstName = Thomas OR LastName=Carter


结合AND OR运算符

我们可以把AND OR结合起来(使用圆括号来组成复杂的表达式)

SELECT * FROM Persons WHERE (FirstName=Thomas OR FirstName=William’) AND LastName=Carter


六、SQL ORDER BY 子句

ORDER BY 语句用于对结果集进行排序。用于根据指定的列对结果进行排序,默认按照升序对记录进行排序;若要降序排,可以使用DESC关键字


实例1   以字母顺序显示公司名称

SELECT Company , OrderNumber FROM Orders ORDER BY Company


实例2   以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):

SELECT Company , OrderNumber FROM Orders ORDER BY Company , OrderNumber


显然上面的显示是以 Company为第一排序规则,OrderNumber为第二排序规则

实例3   以逆字母顺序显示公司名称:

SELECT Company OrderNumber FROM Orders ORDER BY Company DESC


实例 4   以逆字母顺序显示公司名称,并以数字顺序显示排序号:

SELECT Company, OrderNumber  FROM Orders ORDER BY Company DESC,OrderNumber ASC


注意:上面的结果中只有两个相等的公司名称。只有这一次,在第一列中有相同的值时,第二列是以升序排列的。如果第一例中的有些值为Nulls时,情况也是一样的。

七、 SQL INSERT INTO 语句

INSERT INTO 用于向表格中插入新的行。

语法: INSERT INTO表名称 VALUES(值1,值2……)

我们也可以指定所要插入数据的列

INSERT INTO Table_name (列1,列2,)VALUES(值1,值2,...)

插入新的行


INSERT INTO Persons VALUES (‘Gates’,’Bill’,’Xuanwumen 10’,’Beijing’)


在指定的列中插入数据

INSERT INTO Persons(LastName,Address) VALUES (‘Wilson’,’Champs-Elysees’)



八、 SQL   UPDATE语句

Update 语句用于修改表中的数据

语法:  UPDATE 表名称 SET 列名称 =新值  WHERE列名称= 某值


跟新某一行中的列

我们为lastname 是’Wilson‘的人添加 FirstName

UPDate Person SET FirstName = Fred WHERE lastName =Wilson


更新某一行中的若干列

我们会修改地址,并添加city名称

UPDATE Persons SET Address= Zhongshan 23,City=Nanjing WHERE LastName =Wilson


九、 SQL DELETE语句

DELETE 语句用于删除表中的行。

语法:    DELETE FROM表名称 WHERE列名称 =


删除某行

 DELETE FROM Person WHERE LastName = Wilson


删除所有行   可以在不删除表的情况下删除所有的行,这意味着表的结构、属性和索引都是完整的:

DELETE FROM table_name   

或者

DELETE * FROM table_name


原创粉丝点击