[计算机软件及应用]SQL语句超详细教程.doc
《[计算机软件及应用]SQL语句超详细教程.doc》由会员分享,可在线阅读,更多相关《[计算机软件及应用]SQL语句超详细教程.doc(42页珍藏版)》请在三一办公上搜索。
1、我们可以在一个 SQL 语句中放入另一个 SQL 语句。当我们在 WHERE 子句或 WHERE 子句或 HAVING 子句中插入另一个 SQL 语句时,我们就有一个 subquery 的架构。 Subquery 的作用是什么呢?第一,它可以被用来连接表格。另外,有的时候 subquery 是唯一能够连接两个表格的方式。 Subquery 的语法如下: SELECT 栏位1 FROM 表格 WHERE 栏位2 比较运算素 (SELECT 栏位1 FROM 表格WHERE 条件) 比较运算素 可以是相等的运算素,例如 =, , =, SQL 中的 substring 函数是用来抓出一个栏位资料中
2、的其中一部分。这个函数的名称在不同的资料库中不完全一样: MySQL: SUBSTR(), SUBSTRING() Oracle: SUBSTR() SQL Server: SUBSTRING() 最常用到的方式如下 (在这里我们用SUBSTR()为例): SUBSTR(str,pos): 由中,选出所有从第位置开始的字元。请注意,这个语法不适用于SQL Server上。 SUBSTR(str,pos,len): 由中的第位置开始,选出接下去的个字元。 假设我们有以下的表格: Geography 表格 region_namestore_nameEastBostonEastNew YorkWes
3、tLos AngelesWestSan Diego例1: SELECT SUBSTR(store_name, 3) FROM Geography WHERE store_name = Los Angeles; 结果: s Angeles 例2: SELECT SUBSTR(store_name,2,4) FROM Geography WHERE store_name = San Diego; 结果: an D SQL 中的 TRIM 函数是用来移除掉一个字串中的字头或字尾。最常见的用途是移除字首或字尾的空白。这个函数在不同的资料库中有不同的名称: MySQL: TRIM(), RTRIM(),
4、 LTRIM() Oracle: RTRIM(), LTRIM() SQL Server: RTRIM(), LTRIM() 各种 trim 函数的语法如下: TRIM(位置 要移除的字串 FROM 字串): 位置 的可能值为 LEADING (起头), TRAILING (结尾), or BOTH (起头及结尾)。 这个函数将把 要移除的字串 从字串的起头、结尾,或是起头及结尾移除。如果我们没有列出 要移除的字串 是什么的话,那空白就会被移除。 LTRIM(字串): 将所有字串起头的空白移除。 RTRIM(字串): 将所有字串结尾的空白移除。 例1: SELECT TRIM(Sample);
5、 结果: Sample 例2: SELECT LTRIM(Sample); 结果: Sample 例3: SELECT RTRIM(Sample); 结果: Sample 表格是数据库中储存资料的基本架构。在绝大部份的情况下,数据库厂商不可能知道您需要如何储存您的资料,所以通常您会需要自己在数据库中建立表格。虽然许多数据库工具可以让您在不需用到 SQL 的情况下建立表格,不过由于表格是一个最基本的架构,我们决定包括 CREATE TABLE 的语法在这个网站中。 在我们跳入 CREATE TABLE 的语法之前,我们最好先对表格这个东西有些多一点的了解。表格被分为栏位 (column) 及列位
6、 (row)。每一列代表一笔资料,而每一栏代表一笔资料的一部份。举例来说,如果我们有一个记载顾客资料的表格,那栏位就有可能包括姓、名、地址、城市、国家、生日等等。当我们对表格下定义时,我们需要注明栏位的标题,以及那个栏位的资料种类。 那,资料种类是什么呢?资料可能是以许多不同的形式存在的。它可能是一个整数 (例如 1),、一个实数(例如 0.55)、一个字串 (例如 sql)、一个日期/时间 (例如 2000-JAN-25 03:22:22)、或甚至是 以二进法 (binary) 的状态存在。当我们在对一个表格下定义时,我们需要对每一个栏位的资料种类下定义。(例如 姓 这个栏位的资料种类是 c
7、har(50)代表这是一个 50 个字符的字串)。我们需要注意的一点是不同的数据库有不同的资料种类,所以在对表格做出定义之前最好先参考一下数据库本身的说明。 CREATE TABLE 的语法是: CREATE TABLE 表格名(栏位 1 栏位 1 资料种类,栏位 2 栏位 2 资料种类,. ) 若我们要建立我们上面提过的顾客表格,我们就打入以下的 SQL: CREATE TABLE customer(First_Name char(50),Last_Name char(50),Address char(50),City char(50),Country char(25),Birth_Date
8、 date) 视观表 (Views) 可以被当作是虚拟表格。它跟表格的不同是,表格中有实际储存资料,而视观表是建立在表格之上的一个架构,它本身并不实际储存资料。 建立一个视观表的语法如下: CREATE VIEW VIEW_NAME AS SQL 语句SQL 语句 可以是任何一个我们在这个教材中有提到的 SQL。来看一个例子。假设我们有以下的表格: TABLE Customer(First_Name char(50),Last_Name char(50),Address char(50),City char(50),Country char(25),Birth_Date date)若要在这个表
9、格上建立一个包括 First_Name, Last_Name, 和 Country 这三个栏位的视观表,我们就打入, CREATE VIEW V_CustomerAS SELECT First_Name, Last_Name, CountryFROM Customer现在,我们就有一个叫做 V_Customer 的视观表: View V_Customer(First_Name char(50),Last_Name char(50),Country char(25)我们也可以用视观表来连接两个表格。在这个情况下,使用者就可以直接由一个视观表中找出她要的资讯,而不需要由两个不同的表格中去做一次连接
10、的动作。假设有以下的两个表格: Store_Information 表格 store_nameSalesDateLos Angeles$1500Jan-05-1999San Diego$250Jan-07-1999Los Angeles$300Jan-08-1999Boston$700Jan-08-1999Geography 表格 region_namestore_nameEastBostonEastNew YorkWestLos AngelesWestSan Diego我们就可以用以下的指令来建一个包括每个地区 (region) 销售额 (sales) 的视观表: CREATE VIEW V
11、_REGION_SALESAS SELECT A1.region_name REGION, SUM(A2.Sales) SALESFROM Geography A1, Store_Information A2WHERE A1.store_name = A2.store_nameGROUP BY A1.region_name这就给我们有一个名为 V_REGION_SALES 的视观表。这个视观表包含不同地区的销售哦。如果我们要从这个视观表中获取资料,我们就打入, SELECT * FROM V_REGION_SALES结果:REGIONSALESEast$700West$2050索引 (Inde
12、x) 可以帮助我们从表格中快速地找到需要的资料。举例来说,假设我们要在一本园艺书中找如何种植青椒的讯息。若这本书没有索引的话,那我们是必须要从头开始读,直到我们找到有关种直青椒的地方为止。若这本书有索引的话,我们就可以先去索引找出种植青椒的资讯是在哪一页,然后直接到那一页去阅读。很明显地,运用索引是一种有效且省时的方式。 从资料库表格中寻找资料也是同样的原理。如果一个表格没有索引的话,资料库系统就需要将整个表格的资料读出 (这个过程叫做table scan)。若有适当的索引存在,资料库系统就可以先由这个索引去找出需要的资料是在表格的什么地方,然后直接去那些地方抓资料。这样子速度就快多了。 因此
13、,在表格上建立索引是一件有利于系统效率的事。一个索引可以涵盖一或多个栏位。建立索引的语法如下: CREATE INDEX INDEX_NAME ON TABLE_NAME (COLUMN_NAME)现在假设我们有以下这个表格, TABLE Customer(First_Name char(50),Last_Name char(50),Address char(50),City char(50),Country char(25),Birth_Date date)若我們要在 Last_Name 這個欄位上建一個索引,我們就打入以下的指令,CREATE INDEX IDX_CUSTOMER_LAST
14、_NAMEon CUSTOMER (Last_Name)若我们要在 Last_Name 这个栏位上建一个索引,我们就打入以下的指令,CREATE INDEX IDX_CUSTOMER_LOCATIONon CUSTOMER (City, Country)索引的命名并没有一个固定的方式。通常会用的方式是在名称前加一个字首,例如 IDX_ ,来避免与资料库中的其他物件混淆。另外,在索引名之内包括表格名及栏位名也是一个好的方式。 请读者注意,每个资料库会有它本身的 CREATE INDEX 语法,而不同资料库的语法会有不同。因此,在下指令前,请先由资料库使用手册中确认正确的语法。 在表格被建立在资料
15、库中后,我们常常会发现,这个表格的结构需要有所改变。常见的改变如下: 加一个栏位 删去一个栏位 改变栏位名称 改变栏位的资料种类 以上列出的改变并不是所有可能的改变。ALTER TABLE 也可以被用来作其他的改变,例如改变主键定义。 ALTER TABLE 的语法如下: ALTER TABLE table_name改变方式 改变方式 的详细写法会依我们想要达到的目标而有所不同。再以上列出的改变中,改变方式 如下: 加一个栏位: ADD 栏位 1 栏位 1 资料种类 删去一个栏位: DROP 栏位 1 改变栏位名称: CHANGE 原本栏位名 新栏位名 新栏位名资料种类 改变栏位的资料种类:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机软件及应用 计算机软件 应用 SQL 语句 详细 教程
链接地址:https://www.31ppt.com/p-4561672.html