第4章 SQL语言

一、什么是 SQL ?

SQL 是 Structured Query Language(结构化查询语言)的缩写,是一种专门用来与数据库沟通的语言。

特点:

  1. 一体化
  2. 高度非过程化
  3. 面向集合的操作方式
  4. 提供多种方式使用
  5. 语言简洁

二、创建、更新和删除表

用程序创建表,可以使用 SQL 的 CREATE TABLE 语句。下面的 SQL 语句创建本文中所用的 Products 表:

CREATE TABLE Products( 
prod id		CHAR(10)		NOT NULL,
vend id     CHAR(10)        NOT NULL,        
prod name   CHAR(254)       NOT NULL, 
prod price  DECIMAL(8,2)    NOT NULL  DEFAULT 3,         
proddesc    VARCHAR(1000)   NULL
);

更新表定义,可以使用 ALTER TABLE 语句。因为给已有表增加列可能是所有 DBMS 都支持的唯一操作,所以我们举个这样的例子:

ALTER TABLE Vendors ADD vend_phone CHAR(20);   

删除表(删除整个表而不是其内容)非常简单,如下所示:

DROP TABLE CustCopy;

三、插入数据

把数据插入表中的最简单方法是使用基本的 INSERT 语法,它要求指定表名和插入到新行中的值。下面举一个例子:

INSERT INTO Customers VALUES('','','');

四、更新和删除数据

更新(修改)表中的数据,可以使用 UPDATE 语句。例子如下:

UPDATE Customers SET cust_contact = 'Sam Roberts', cust_email = 'sam@toyland.cxx' WHERE cust_id = '1000000006';

从一个表中删除数据,使用 DELETE 语句。下面的语句从 Customers 表中删除一行:

DELETE FROM Customers WHERE cust_id = '1000000006';

五、查询SELECT

SELECT的使用:

SELECT columnName1, columnName2 FROM tableName :返回指定列

SLELCT * FROM tableName :返回全部的列

返回的结果被存放在称为“结果集”的对象中。

六.DISTINCT

DISTINCT与SELECT连用,用以查询不同的值:

SELECT DISTINCT columnName1,columnName2  FROM tableName :返回不同的值

在查询过程中,常常会出现同样的值,比方查询一列,这一列中会有同样的值;查询两列,会有两列同一时候同样的值。

DISTINCT就是为了在查询结果中。将那些同样的值去除,仅仅保留一个。

七.WHERE 

WHERE子句中用于规定选择的标准。即满足的先决条件。

SELECT 列名 FROM 表名 WHERE 列名运算符 值 :选择满足先决条件“列名 运算符 值”的值

运算符有:=、<>(或!=)、>、<、>=、<=、BETWEEN AND、LIKE

当中,BETWEEN AND是选取某个范围的值,LIKE是按某种模式搜索

八.AND和OR

AND和OR运算符在WHERE子句中使用,目的是把两个或多个条件结合起来。

SELECT 列名 FROM 表名 WHERE 列1 运算符1 值1AND(OR) 列2 运算符2 值2 :选择满足多个先决条件的值

也能够使用圆括号(),来组建复杂的表达式

SELECT 列名 FROM 表名 WHERE (列1 运算符1 值1 OR 列2 运算符2 值2)AND 列3 运算符3 值3

九.ORDER BY

对结果集进行排序,默认是依照升序的规则

SELECT 列名 FROM 表名 ORDER BY 列1 (ASCDESC), 列2 (ASCDESC):依照列进行排序,假设是多列。那么先依照列1排序,在列1中有同样的值时,再依照列2排序

当中,ASC升序,DESC为降序。也能够两者都不写,採用默认排序

注意。假设依照多个列排序,每一个列都需指定排序的方式,在指定列的后边加上ASC或DESC。或默认。

十、插入INSERT INTO

INSERT INTO 表名 VALUES (值1, 值2, ...) :向表中的插入一条包括全部列值的数据

INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...) :向表中插入一条仅仅包括指定列的值的数据

注意:在不指定列名的时候,插入的数据必须把表中全部的列的值都写明,否则出错

在mysql 中,INSERT能够不必和INTO连用。没有INTO也正确,不知其它数据库如何的。

十一、TOP

TOP子句是规定要返回的数据的数目。对于拥有千万计条目的大型表来说,TOP字句是很重要的。

概念语法:

SELECT TOP num * FROM 表名 :从表中返回满足条件的前num条记录,或者

SELECT TOP num PERCENT * FROM 表名:从表中返回满足条件的前num%的记录

对于概念语法,每一个数据库软件的用法不同。

Mysql中使用LIMITkeyword:SELECT * FROM 表名 LIMIT num 

Oracle中使用ROWNUMkeyword与WHERE连用:SELECT * FROM 表名WHERE ROWNUM<=num

十二、LIKE

LIKEkeyword是为了在WHERE子句中使用。依照某个列的指定模式。搜索对应的条目

用法:

SELECT * FROM 表名 WHERE 列名 LIKE '模式' 

模式通常与通配符连用,通配符有%, _, [charlist], [^charlist]或[!charlist]。

比如以%使用:'%str',以str结尾的字符串;'str%'以str开头的字符串;'%str%'包括str的字符串

使用NOTkeyword,选择不符合'模式'的数据

SELECT * FROM 表名 WHERE 列名 NOT LIKE '模式'

注意:假设 列名 LIKE '模式' 中没有通配符,那么就相当于 列名='模式'

十三、IN

SELECT * FROM 表名 WHERE 列名 IN (值1。值2, ...)

INkeyword,给定一个集合,选择列的值在结合中的数据条目。值能够是字符串,也能够是数值,详细依据列的数据类型

十四、BETWEEN AND

SELECT * FROM 表名 WHERE 列名 BETWEEN 值1 AND 值2 :选择指定的列介于值1和值2之间的数据。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值