网络专业吧 关注:38贴子:162
  • 5回复贴,共1
SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名。


IP属地:山东1楼2012-02-22 16:13回复
    简介
    SQL是高级的非过程化编程语言,是沟通数据库服务器和客户端的重要工具,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以,具有完全不同底层结构的不同数据库系统,可以使用相同的SQL语言作为数据输入与管理的接口。它以记录**作为操作对象,所有SQL语句接受**作为输入,返回**作为输出,这种**特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语句可以嵌套,这使它具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。   结构化查询语言(Structured Query Language)最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。如今无论是像Oracle、Sybase、DB2、Informix、SQL Server这些大型的数据库管理系统,还是像Visual Foxpro、PowerBuilder这些PC上常用的数据库开发系统,都支持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语言包含4个部分:   数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。   数据操作语言(DML),例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。   数据查询语言(DQL),例如:SELECT语句。   数据控制语言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。   SQL语言包括三种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)。   SQL 是用于访问和处理数据库的标准的计算机语言。
    


    IP属地:山东2楼2012-02-22 16:30
    回复
      功能介绍
      SQL 面向数据库执行查询;SQL 可从数据库取回数据;SQL 可在数据库中插入新的记录;SQL 可更新数据库中的数据;SQL 可从数据库删除记录;SQL 可创建新数据库;SQL 可在数据库中创建新表;SQL 可在数据库中创建存储过程;SQL 可在数据库中创建视图;SQL 可以设置表、存储过程和视图的权限。 SQL 是一种标准
      SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。不幸地是,存在着很多不同版本的 SQL 语言,但是为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。
      注释:除了 SQL 标准之外,大部分 SQL 数据库程序都拥有它们自己的私有扩展! SQL扩展语言
      T-SQL: SQL 程式设计语言的增强版,它是用来让应用程式与 SQL Server 沟通的主要语言。T-SQL 提供标准 SQL的DDL 和 DML 功能,加上延伸的函数、系统预存程序以及程式设计结构(例如 IF 和 WHILE)让程式设计更有弹性。
      PL/SQL:   PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL就是把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语言。
      在您的网站中使用 SQL
      要创建发布数据库中数据的网站,您需要以下要素:
      RDBMS 数据库程序(比如 MS Access,SQL Server,MySQL);   服务器端脚本语言(比如 PHP 或 ASP,JSP);   SQL;   HTML / CSS。 RDBMS
      RDBMS 指的是关系型数据库管理系统(Relationship Data Base Management System)。   RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server,IBM DB2,Oracle,MySQL 以及 Microsoft Access。   RDBMS 中的数据存储在被称为表(tables)的数据库对象中。   表是相关的数据项的**,它由列和行组成。


      IP属地:山东3楼2012-02-22 16:32
      回复
        SQL发展历史
        1970:E.J. Codd 发表了关系数据库理论(relational database theory);
        1974-79:IBM 以Codd的理论为基础开发了“Sequel”,并重命名为"SQL";
        1979:Oracle 发布了商业版SQL
        1981-84:出现了其他商业版本,分别来自 IBM(DB2),Data General(DG/SQL),Relational Technology(INGRES);
        SQL/86:ANSI 跟 ISO的第一个标准;
        SQL/89:增加了引用完整性(referential integrity);
        SQL/92(aka SQL2):被数据库管理系统(DBMS)生产商广发接受;
        1997+:成为动态网站(Dynamic web content)的后台支持;
        SQL/99:Core level跟其他8种相应的level,包括递归查询,程序跟流程控制,基本的对象(object)支持包括oids;
        SQL/2003:包含了XML相关内容,自动生成列值(column values);
        2005-09-30:“Data is the next generation inside...SQL is the new HTML”! Tim O'eilly提出了Web 2.0理念,称数据将是核心,SQL将成为“新的HTML";
        SQL/2006:定义了SQL与XML(包含XQuery)的关联应用;
        2006:Sun公司将以SQL基础的数据库管理系统嵌入Java V6
        2007 :SQL Server 2008(Katmi)在过去的SQL2005基础上增强了它的安全性,主要在:简单的数据加密,外键管理,增强了审查,改进了数据库镜像,加强了可支持性。


        IP属地:山东4楼2012-02-22 16:33
        回复
          DDL  数据库模式定义语言DDL (Data Definition Language)用于定义和管理对象,例如数据库、数据表以及视图。DDL 语句通常包括每个对象的CREATE、ALTER 以及 DROP 命令。举例来说,CREATE TABLE、ALTER TABLE 以及 DROP TABLE 这些语句便可以用来建立新数据表、修改其属性(如新增或删除资料行)、删除数据表等,下面我们会一一介绍。   CREATE TABLE 语句   使用 DDL 在 MyDB 资料库建立一个名为 Customer_Data 的范例数据表(注:以下语句都必须在Sql Server数据库中执行),本章后面的例子我们会使用到这个数据表。如前所述,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   DROP TABLE 语句    DROP TABLE 语句用来删除数据表定义以及所有的数据、索引、触发程序、条件约束以及数据表的权限。要删除我们的 Customer_Data 数据表,可利用下列命令:   DROP TABLE Customer_Data   GO DML  DML(Data Manipulation Language)数据操纵语言 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 语句,但**入的数值次序上与建立数据表不同时,数值将被放入错误的数据列。如果数据的类型与定义不符,则会收到一个错误讯息。 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 语句,接著,下面将介绍 DCL。 DCL  DCL,即Data Control Language,数据控制语言。   DCL用于控制对数据库对象操作的权限,它使用GRANT和REVOKE语句对用户或用户组授予或回收数据库对象的权限。   -------------------------------------------------------------------------------- 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 SQL中的五种数据类型  简要描述一下SQL中的五种数据类型:字符型,文本型,数值型,逻辑型和日期型 字符型  VARCHAR VS CHAR   VARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要。


          IP属地:山东5楼2012-02-22 16:34
          回复
            他们都是用来储存字符串长度小于255的字符(?sql server中varchar类型最大长度可以到8000,oracle中可以到4000)。   假如你向一个长度为四十个字符的VARCHAR型字段中输入数据Bill Gates。当你以后从这个字段中取出此数据时,你取出的数据其长度为十个字符——字符串Bill Gates的长度。现在假如你把字符串输入一个长度为四十个字符的CHAR型字段中,那么当你取出数据时,所取出的数据长度将是四十个字符。字符串的后面会被附加多余的空格。   当你建立自己的站点时,你会发现使用VARCHAR型字段要比CHAR型字段方便的多。使用VARCHAR型字段时,你不需要为剪掉你数据中多余的空格而操心。   VARCHAR型字段的另一个突出的好处是它可以比CHAR型字段占用更少的内存和硬盘空间。当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要   但是VARCHAR型字段在读取得效率上却比不上CHAR,对于已经限定字符长度的字段来说用char则优于varchar,因为可以获得更快的读取速度。例如日期字段固定格式为yyyy-MM-dd型的字段,固定长度是10了,那么用CHAR则读取速度会更快。 文本型  TEXT(Sql Server)   使用文本型数据,你可以存放超过二十亿个字符的字符串。当你需要存储大串的字符时,应该使用文本型数据。   注意文本型数据没有长度,而上一节中所讲的字符型数据是有长度的。一个文本型字段中的数据通常要么为空,要么很大。   当你从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型数据占用四个字节。这看起来似乎差别不大,但是在比较大的表中,字节数的增长是很快的。另一方面,一旦你已经创建了一个字段,要修改它是很困难的。因此,为安全起见,你应该预测一下,一个字段所需要存储的数值最大有可能是多大,然后选择适当的数据类型。   NUMERIC   为了能对字段所存放的数据有更多的控制,你可以使用NUMERIC型数据来同时表示一个数的整数部分和小数部分。NUMERIC型数据使你能表示非常大的数——比INT型数据要大得多。一个NUMERIC型字段可以存储从-1038到1038范围内的数。NUMERIC型数据还使你能表示有小数部分的数。例如,你可以在NUMERIC型字段中存储小数3.14。   当定义一个NUMERIC型字段时,你需要同时指定整数部分的大小和小数部分的大小。如:NUMERIC(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。 日期型  DATETIME VS SMALLDATETIME(Sql Server)   一个 DATETIME型的字段可以存储的日期范围是从1753年1月1日第一毫秒到9999年12月31日最后一毫秒。如果你不需要覆盖这么大范围的日期和时间,你可以使用SMALLDATETIME型数据。它与DATETIME型数据同样使用,只不过它能表示的日期和时间范围比DATETIME型数据小,而且不如DATETIME型数据精确。一个SMALLDATETIME型的字段能够存储从1900年1月1日到2079年6月6日的日期,它只能精确到秒。DATETIME型的字段用8个字节存储日期时间值,而SMALLDATETIME型的字段只使用4个字节存储精确到1分钟的日期时间。   DATETIME型字段在你输入日期和时间之前并不包含实际的数据,认识这一点是重要的。
            


            IP属地:山东6楼2012-02-22 16:34
            回复