`
abidsky
  • 浏览: 9157 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQL简介(引)

阅读更多
SQL是一种资料库查询和程式设计语言,用於存取资料以及查询、更新和管理关联式资料库系统。美国国家标準局(ANSI)与国际标準化组织(ISO)已经制定了 SQL 标準。ANSI 是一个美国工业和商业集团组织,发展美国的商务和通讯标準。ANSI 同时也是 ISO 和 International Electrotechnical Commission(IEC)的成员之一。ANSI 发佈与国际标準组织相应的美国标準。1992年,ISO 和 IEC 发佈了 SQL 的国际标準,称為 SQL-92。ANSI 随之发佈的相应标準是 ANSI SQL-92。ANSI SQL-92 有时被称為 ANSI SQL。儘管不同的关联式资料库使用的 SQL 版本有一些差异,但大多数都遵循 ANSI SQL 标準。SQL Server 使用 ANSI SQL-92 的扩展集,称為 T-SQL,其遵循 ANSI 制定的 SQL-92 标準。

      SQL 语言包括两种主要程式设计语言别的陈述式: 资料定义语言 (DDL)与资料操作语言 (DML)。下面我们将介绍这两类语言。

DDL
 

      DDL 用於定义和管理物件,例如资料库、资料表以及检视表( 第18章 将会解释何谓检视表)。DDL 陈述式通常包括每个物件的CREATE、ALTER 以及 DROP 命令。举例来说,CREATE TABLE、ALTER TABLE 以及 DROP TABLE 这些陈述式便可以用来建立新资料表、修改其属性(如新增或删除资料行)、删除资料表等,下面我们会一一介绍。

CREATE TABLE 陈述式
 

使用 DDL 在 MyDB 资料库建立一个名為 Customer_Data 的范例资料表,本章后面的例子我们会使用到这个资料表。如前所述,CREATE TABLE 陈述式可以用来建立资料表。这个范例资料表被定义成四个资料行,如下所示:

Use MyDB
CREATE TABLE Customer_Data
(customer_id smallint,
first_name char(20),
last_name char(20),
phone char(10))
GO
这个陈述式能產生 Customer_Data 资料表,这个资料表会一直是空的直到资料被填入资料表内。

ALTER TABLE 陈述式
 

ALTER TABLE 陈述式用来变更资料表的定义与属性。在下面的例子中,我们利用 ALTER TABLE 在已经存在的 Customer_Data 资料表中新增 middle_initial 资料行。

ALTER TABLE Customer_Data
ADD middle_initial char(1)
GO
现在资料表的定义包括了五个资料行,而不是之前的四个资料行。关於使用ALTER TABLE 的更多细节,请参阅 第15章 。

DROP TABLE 陈述式
 

DROP TABLE 陈述式用来删除资料表定义以及所有的资料、索引、触发程序、条件约束以及资料表的权限。要删除我们的 Customer_Data 资料表,可利用下列命令:

DROP TABLE Customer_Data
GO
关於 DROP TABLE 陈述式的详细内容,请参阅 第15章 。

DML
 

DML 利用 INSERT、SELECT、UPDATE 及 DELETE 等陈述式来操作资料库物件所包含的资料。

INSERT 陈述式
 

INSERT 陈述式用来在资料表或检视表中插入一列资料。例如,如果要在Customer_Data 资料表中新增一个客户,可使用类似以下的 INSERT 陈述式:

INSERT INTO Customer_Data
(customer_id, first_name, last_name, phone)
VALUES (777, "Frankie", "Stein", "4895873900")
请注意 SQL 陈述式中第二行的资料行名称清单,清单上资料行名称的次序决定了资料数值将被放在哪个资料行。举例来说,第一个资料数值将被放在清单列出的第一个资料行 customer_id、第二个资料数值放在第二个资料行,依此类推。由於我们在建立资料表时,定义资料资料行填入数值的次序与现在相同,因此我们不必特意指定栏位名称。我们可以用以下的 INSERT 陈述式代替:

INSERT INTO Customer_Data
VALUES (777, "Frankie", "Stein", "4895873900")

注意

如果使用这种形式的 INSERT 陈述式,但被插入的数值次序上与建立资料表时不同,数值将被放入错误的资料行。如果资料的型别与定义不符,则会收到一个错误讯息。


--------------------------------------------------------------------------------

SELECT 陈述式
 

SELECT 陈述式用来检索资料表中的资料,而哪些资料被检索由列出的资料行与陈述式中的 WHERE 子句决定。例如,要从之前建立的 Customer_Data 资料表中检索 customer_id 以及 first_name 资料行的资料,并且只想取出每列中 first_name 资料行值為 Frankie 的资料,那麼可以利用以下的 SELECT 陈述式:

SELECT customer_id, first_name FROM Customer_Data
WHERE first_name = "Frankie"
如果有一列符合 SELECT 陈述式中的标準,则结果将显示如下:

customer_id     first_name
-------------    ------------
777              Frankie
UPDATE 陈述式
 

UPDATE 陈述式用来更新或改变一列或多列中的值。例如,一位名称為 Frankie Stein 的客户想要在记录中改变他的姓氏為 Franklin,可使用以下 UPDATE 陈述式:

UPDATE Customer_Data
SET first_name = "Franklin"
WHERE last_name = "Stein" and customer_id= 777
我们在 WHERE 子句中加入 customer_id 的项目来确定其他名称為 Stein 的客户不会被影响-只有customer_id為777的客户,姓氏会有所改变。

--------------------------------------------------------------------------------

说明

当您使用 UPDATE 陈述式时,要确定在 WHERE 子句提供充份的筛选条件,如此才不会不经意地改变了一些不该改变的资料。


--------------------------------------------------------------------------------

DELETE 陈述式
 

DELETE 陈述式用来删除资料表中一列或多列的资料,您也可以删除资料表中的所有资料列。要从 Customer_Data 资料表中删除所有的列,您可以利用下列陈述式:

DELETE FROM Customer_Data

DELETE Customer_Data
资料表名称前的 FROM 关键字在 DELETE 陈述式中是选择性的。除此之外,这两个陈述式完全相同。

要从 Customer_Data 资料表中删除 customer_id 资料行的值小於100的列,可利用下列陈述式:

DELETE FROM Customer_Data
WHERE customer_id < 100
现在我们已经快速瀏览了 SQL 提供的 DDL 与 DML 陈述式,接著,下面将介绍 T-SQL。

SQL中的五种数据类型 

简要描述一下SQL中的五种数据类型:字符型,文本型,数值型,逻辑型和日期型

字符型

VARCHAR VS CHAR

VARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要。他们都是用来储存字符串长度小于255的字符。

假如你向一个长度为四十个字符的VARCHAR型字段中输入数据BIll GAtES。当你以后从这个字段中取出此数据时,你取出的数据其长度为十个字符——字符串Bill Gates的长度。 现在假如你把字符串输入一个长度为四十个字符的CHAR型字段中,那么当你取出数据时,所取出的数据长度将是四十个字符。字符串的后面会被附加多余的空格。

当你建立自己的站点时,你会发现使用VARCHAR型字段要比CHAR型字段方便的多。使用VARCHAR型字段时,你不需要为剪掉你数据中多余的空格而操心。

VARCHAR型字段的另一个突出的好处是它可以比CHAR型字段占用更少的内存和硬盘空间。当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要

文本型

TEXT

使用文本型数据,你可以存放超过二十亿个字符的字符串。当你需要存储大串的字符时,应该使用文本型数据。

注意文本型数据没有长度,而上一节中所讲的字符型数据是有长度的。一个文本型字段中的数据通常要么为空,要么很大。

当你从HTML fORM的多行文本编辑框(TEXTAREA)中收集数据时,你应该把收集的信息存储于文本型字段中。但是,无论何时,只要你能避免使用文本型字段,你就应该不适用它。文本型字段既大且慢,滥用文本型字段会使服务器速度变慢。文本型字段还会吃掉大量的磁盘空间。

一旦你向文本型字段中输入了任何数据(甚至是空值),就会有2K的空间被自动分配给该数据。除非删除该记录,否则你无法收回这部分存储空间。

数值型

SQL支持许多种不同的数值型数据。你可以存储整数 INT 、小数 NUMERIC、和钱数 MONEY。

INT VS SMALLINT VS TINYINT

他们的区别只是字符长度:

INT型数据的表数范围是从-2,147,483,647到2,147,483,647的整数

SMALLINT 型数据可以存储从-32768到32768的整数

TINYINT 型的字段只能存储从0到255的整数,不能用来储存负数

通常,为了节省空间,应该尽可能的使用最小的整型数据。一个TINYINT型数据只占用一个字节;一个INT型数据占用四个字节。这看起来似乎差别不大,但是在比较大的表中,字节数的增长是很快的。另一方面,一旦你已经创建了一个字段,要修改它是很困难的。因此,为安全起见,你应该预测以下,一个字段所需要存储的数值最大有可能是多大,然后选择适当的数据类型。

MUNERIC

为了能对字段所存放的数据有更多的控制,你可以使用NUMERIC型数据来同时表示一个数的整数部分和小数部分。NUMERIC型数据使你能表示非常大的数——比INT型数据要大得多。一个NUMERIC型字段可以存储从-1038到1038范围内的数。NUMERIC型数据还使你能表示有小数部分的数。例如,你可以在NUMERIC型字段中存储小数3.14。

当定义一个NUMERIC型字段时,你需要同时指定整数部分的大小和小数部分的大小。如:MUNERIC(23,0)

一个 NUMERIC型数据的整数部分最大只能有28位,小数部分的位数必须小于或等于整数部分的位数,小数部分可以是零。

MONEY VS SMALLMONEY

你可以使用 INT型或NUMERIC型数据来存储钱数。但是,专门有另外两种数据类型用于此目的。如果你希望你的网点能挣很多钱,你可以使用MONEY型数据。如果你的野心不大,你可以使用SMALLMONEY型数据。MONEY型数据可以存储从-922,337,203,685,477.5808到922,337,203,685,477.5807的钱数。如果你需要存储比这还大的金额,你可以使用NUMERIC型数据。

SMALLMONEY型数据只能存储从-214,748.3648到214,748.3647 的钱数。同样,如果可以的话,你应该用SMALLMONEY型来代替MONEY型数据,以节省空间。

逻辑型

BIT

如果你使用复选框( CHECKBOX)从网页中搜集信息,你可以把此信息存储在BIT型字段中。BIT型字段只能取两个值:0或1。

当心,在你创建好一个表之后,你不能向表中添加 BIT型字段。如果你打算在一个表中包含BIT型字段,你必须在创建表时完成。

日期型

DATETIME VS SMALLDATETIME

一个 DATETIME型的字段可以存储的日期范围是从1753年1月1日第一毫秒到9999年12月31日最后一毫秒。

如果你不需要覆盖这么大范围的日期和时间,你可以使用SMALLDATETIME型数据。它与DATETIME型数据同样使用,只不过它能表示的日期和时间范围比DATETIME型数据小,而且不如DATETIME型数据精确。一个SMALLDATETIME型的字段能够存储从1900年1月1日到2079年6月6日的日期,它只能精确到秒。

DATETIME型字段在你输入日期和时间之前并不包含实际的数据,认识这一点是重要的。

分享到:
评论

相关推荐

    ado.net+SQL2005的网上购物系统论文

    引 言 5 第一章 建设购物网站的分析 7 1.1看清现在消费趋势 7 1.2建立个性化的平台 7 1.3重物流配送,发挥网络优势 7 1.4注意支付方式的安全、便捷 7 1.5有针对性地加强宣传,扩大影响 7 1.6加强售后服务 7 1.7 创新...

    在线教学质量评价系统的设计与实现.doc

    2.2.2 SQL简介 3 2.3 运行环境 3 2.3.1 软件准备 3 2.3.2 环境变量的配置 3 2.3.3 测试默认服务器 4 2.3.4 测试项目 4 3 需求分析 4 3.1系统功能设计 4 3.2 系统设计思想 4 3.3 数据库分析 5 3.3.1 数据库需求分析 5...

    Java在线教学质量评价系统毕业论文

    2.2.2 SQL简介 3 2.3 运行环境 3 2.3.1 软件准备 3 2.3.2 环境变量的配置 3 2.3.3 测试默认服务器 4 2.3.4 测试项目 4 3 需求分析 4 3.1系统功能设计 4 3.2 系统设计思想 4 3.3 数据库分析 5 3.3.1 数据库...

    学生管理系统 VB&SQL

    1.1引 言 1.2 开发目的、背景与意义 1.3 系统概述 1.4 开发工具简介 1.5 Visual Basic 系统在程序应用中的几个常用名词 第2章 系统分析 2.1 系统及需求分析 2.2系统方案确定 2.3 可行性分析 2.4系统流程设计 2.5功能...

    基于B/S的计算机等级考试系统的设计与实现

    2.2.2 SQL Sever 2005简介 3系统分析 3.1需求分析 3.1.1系统需要解决的主要问题 3.1.2系统应该具备的基本功能 3.2可行性分析 3.2.1技术可行性分析 3.2.2 经济可行性分析 3.2.3 社会因素方面的可行性分析 4...

    JSP教师教学评价管理系统毕业论文

    2.2.2 SQL简介 4 第三章 需求分析 5 3.1 系统功能分析 5 3.2 系统设计思想 5 3.3 可行性分析 6 第四章 总体设计 7 4.1 功能需求分析设计图 7 4.2 系统功能图 …………………………………………………………...

    ASP基于BS的考试报名信息处理系统

    引 言 VI 第一章 系统可行性及需求分析 1 1.1 系统可行性研究 1 1.2 系统需求分析 1 第二章 系统的初步设计 4 2.1 系统调查 4 2.2 系统开发准备 5 第三章 开发该系统中所使用的技术的介绍 6 3.1 系统中用到的网页...

    公益新闻发布管理系统的设计与实现(论文+源码).doc

    引 言 第一章绪 论 1.1 课题背景 1.2 课题意义 1.3 本文的主要工作 第二章 系统分析 2.1 系统运行环境 2.2 系统需求分析 2.2.1 功能需求 2.2.2 性能需求 2.2.3 数据库需求 2.3 可行性分析 第三章 系统设计 3.1 系统...

    Oracle 10g 开发与管理

    1. SQL简介 31 2. SQL分类 31 3. PL/SQL (Procedure Language) 31 二. SQL*Plus 31 1.启动 SQL*Plus 单行编辑 31 2.启动iSQL*Plus 多行编辑 31 3.退出 32  直接关闭 32  输入:Exit 或 quit 32 三. 本书所使用...

    .net在线商城系统 源码+论文+翻译

    引 言 1 1 概述 2 1.1 网上购物商城的发展 2 1.2 网上购物的现状 2 1.3 网上购物商城的构建 2 2 系统环境 3 2.1 ASP.NET简介 3 2.2 ASP.NET访问SQL SERVER 3 2.3 语言环境 4 3 系统需求分析 4 3.1 需求分析 4 3.2 ...

    毕业设计论文-都市供求信息网的设计与实现

    数据库sqlserver2000 框架Struts1.2 --------------------------------------- 目录 摘 要 I Abstract II 第 1 章 引 言 1 1.1 课题的研究目的和意义 1 1.2 国内外发展状况 1 1.3 研究内容及目标 2 第 2 章 开发方法...

    毕业设计:基于jsp的学生网络教学系统

    本系统语言选择jsp,具体采用JSP +SQL Server开发。系统的实现是在SQL Server数据库上并基于B/S结构。整个系统界面简洁、操作方便,包含了用户操作模块:注册用户登录;文字资料,用户注册,学习视频,讨论答疑,资料下载...

    电子病历管理系统.doc

    摘 要 信息技术推动者社会的进步,已经给人们的生活、工作、学习带来革命性的变化。目前 国内外的医疗部门正在积极地参加到这场变化中来,我国多家医院已经建立医疗信息... 关键字:病历管理B/S JSP 引 言 1 课题简介 2

    Hbase+Spring boot实战分布式文件存储

    Sqoop帮助我们快速的将关系库的数据导入到HBase,而Phoenix实现通过SQL对HBase进行数据查询功能,降低了我们学习HBase的门槛。 6-1 Phoenix简介 6-2 Phoenix安装 6-3 Phoenix实战:shell命令操作Phoenix 6-4 Phoenix...

    视频点播系统的设计与实现【毕业作品】.doc

    video on demand 引 言 1. 课题背景 随着宽带网络系统的建成和发展,视频点播(Video On Demand,简称V0D)系统被广泛应用于在线电影点播、多媒体课件点播、图书馆视频资料 查询等用途。视频点播是综合了计算机技术、...

    c#图书管理系统+详细数据库设计文档+程序说明

    SQL Server 2005 Windows Xp (sp3) 4系统总体框架图 图4.1 系统总体框架图 5 数据库设计说明 5.1、需求分析 1.1信息需求 在数据库Library中需要设计如下所示的数据字段和数据表: 图书信息表---dbo.libary,...

    用100多行python代码写一个数据库

    要支持SQL,别闹了,100行代码怎么支持SQL呀。 现在查询是直接传入一个lambada表达式,系统遍历指定时间范围内的数据行时,满足用户的lambada条件才会返回给用户。 当然这样会多读取很多用户不需要的数据,而且每...

    基于Web的学生信息管理系统的设计与实现

    引 言 1 第1章 绪 论 2 1.1 选题的背景与意义 2 1.2 国内外研究概况 2 1.3 本文研究的主要问题 3 第2章 相关技术介绍 4 2.1 ASP.NET简介 4 2.1.1 什么是ASP.NET 4 2.1.2 ASP.NET技术优势 4 2.2 其他技术介绍 5 2.2.1...

Global site tag (gtag.js) - Google Analytics