关闭

[置顶] 黑马程序员--学习sql server小结

115人阅读 评论(0) 收藏 举报
----------------------Windows Phone 7手机开发.Net培训、期待与您交流!


SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名.

SQL语言包含3个部分:
  数据定义语言Data Definition Language(DDL)定义:definition/ 例如:CREATE、DROP、ALTER等语句。
  数据操作语言Data Manipulation Language(DML),操作:make/ 例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。
  数据控制语言Data Controlling Language(DCL),控制:control/ 例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。
  SQL语言包括三种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)。

功能介绍
  SQL 面向数据库执行查询;SQL 可从数据库取回数据;SQL 可在数据库中插入新的记录;SQL 可更新数据库中的数据;SQL 可从数据库删除记录;SQL 可创建新数据库;SQL 可在数据库中创建新表;SQL 可在数据库中创建存储过程;SQL 可在数据库中创建视图;SQL 可以设置表、存储过程和视图的权限。
编辑本段SQL 是一种标准 - 但是..
  SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。

数据定义语言Data Definition Language(DDL)定义:definition/ 例如:CREATE、DROP、ALTER等语句。
  1 创建表
  CREATE TABLE 表名
  (
    字段1 数据类型,
    字段2 数据类型
    ... ...
    )
    2 修改表
  ALTER TABLE 语句  例如:alter table 表名 add 字段名 数据类型 --向现有的表中添加新的字段
    3 删除表
    DELETE TABLE 表名

DML(Data Manipulation Language) 数据操纵语言 DML 利用 INSERT、SELECT、UPDATE 及 DELETE 等语句来操作数据库对象所包含的数据。
  INSERT 语句 例如: insert into 表名 values(值1,值2,... ...)--向表中添加一行记录


  UPDATE 语句用来更新或修改一行或多行中的值。例如,update 表名 set 字段1=值1,字段2=值2... ...where 条件
  说明
  当您使用 UPDATE 语句时,要确定在 WHERE 子句提供充分的筛选条件,如此才不会不经意地改变了一些不该改变的数据。
  --------------------------------------------------------------------------------
    DELETE 语句
   DELETE 语句用来删除数据表中一行或多行的数据,例如 delete 表名 where 条件
    说明
   当您使用 DELETE 语句时,有Where则删除满足条件的数据,没有则会删除表中所有的数据。
  --------------------------------------------------------------------------------
    SELECT 语句 例如: select * from 表名 --查询表中所以得数据

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

字符型
  VARCHAR和CHAR 他们都可以存储指定长度的字符,但区别在于char存储的字符长度不够指定的长度时会用空格来填充。而varchar不会
    
文本型
  TEXT(Sql Server)
  使用文本型数据,你可以存放超过二十亿个字符的字符串。当你需要存储大串的字符时,应该使用文本型数据。
  注意文本型数据没有长度,而上一节中所讲的字符型数据是有长度的。一个文本型字段中的数据通常要么为空,要么很大。
  当你从HTML FORM的多行文本编辑框(TEXTAREA)中收集数据时,你应该把收集的信息存储于文本型字段中。但是,无论何时,只要你能避免使用文本型字段,你就应该不使用它。文本型字段既大且慢,滥用文本型字段会使服务器速度变慢。文本型字段还会吃掉大量的磁盘空间。
  一旦你向文本型字段中输入了任何数据(甚至是空值),就会有2K的空间被自动分配给该数据。除非删除该记录,否则你无法收回这部分存储空间。

数值型
  SQL支持许多种不同的数值型数据。你可以存储整数 INT 、小数 NUMERIC、和钱数 MONEY。
  INT 和 SMALLINT 和 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 和 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型字段只能取两个值:0或1。

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

删除重复行
  SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。
限制返回的行数
  使用TOP n [PERCENT]选项限制返回的数据行数(Sql Server),TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。
  例如:
  SELECT TOP 2 * FROM testtable --查询testtable表中的前两条数据
  SELECT TOP 20 PERCENT * FROM testtable --查询testtable表中的前20%数据

  WHERE子句可包括各种条件运算符:
  比较运算符(大小比较):>;、>=、=、<;、<=、<>;、!>;、!<
  范围运算符(表达式值是否在指定的范围):BETWEEN…AND…
  NOT BETWEEN…AND…
  列表运算符(判断表达式是否为列表中的指定项):IN (项1,项2……)
  NOT IN (项1,项2……)
  模式匹配符(判断值是否与指定的字符通配格式相符):LIKE、NOT LIKE
  空值判断符(判断表达式是否为空):IS NULL、IS NOT NULL
  逻辑运算符(用于多条件的逻辑连接):NOT、AND、OR
  1、范围运算符例:age BETWEEN 10 AND 30相当于age>=10 AND age<=30
  2、列表运算符例:country IN ('Germany','China')
  3、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。可用于char、varchar、text、ntext、datetime和smalldatetime等类型查询。
  可使用以下通配字符:
  百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%%。
  下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。
  方括号[]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。[^]:其取值也[] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
  例如:
  限制以Publishing结尾,使用LIKE '%Publishing'
  限制以A开头:LIKE '[A]%'
  限制以A开头外:LIKE '[^A]%'
  4、空值判断符例WHERE age IS NULL
  5、逻辑运算符:优先级为NOT、AND、OR
查询结果排序
  使用ORDER BY子句对查询返回的结果按一列或多列排序。ORDER BY子句的语法格式为:
  ORDER BY {column_name [ASC|DESC]} [,…n]
  其中ASC表示升序,为默认值,DESC为降序。ORDER BY不能按ntext、text和image数据类型进行排序。
  例如:
  SELECT * FROM usertable ORDER BY age desc,userid ASC --以表中的age降序排列,userid升序排列

联合查询
  UNION运算符可以将两个或两个以上上SELECT语句的查询结果集合合并成一个结果集合显示,即执行联合查询。UNION的语法格式为:
  select_statement
  UNION [ALL] selectstatement
  [UNION [ALL] selectstatement][…n]
  其中selectstatement为待联合的SELECT查询语句。
  ALL选项表示将所有行合并到结果集合中。不指定该项时,被联合查询结果集合中的重复行将只保留一行。
  联合查询时,查询结果的列标题为第一个查询语句的列标题。因此,要定义列标题必须在第一个查询语句中定义。要对联合查询结果排序时,也必须使用第一查询语句中的列名、列标题或者列序号。
  在使用UNION 运算符时,应保证每个联合查询语句的选择列表中有相同数量的表达式,并且每个查询选择表达式应具有相同的数据类型,或是可以自动将它们转换为相同的数据类型。在自动转换时,对于数值类型,系统将低精度的数据类型转换为高精度的数据类型。
  在包括多个查询的UNION语句中,其执行顺序是自左至右,使用括号可以改变这一执行顺序。例如:
  查询1 UNION (查询2 UNION 查询3)

聚合函数
count() 统计个数
max()    求最大值
min()    求最小值
avg()    求平均数
sum()    求总和

数学函数
ABS() 就绝对值
Ceiling() 舍入到最大整数
Floor() 舍入到最小整数
Round() 四舍五入.select Round(3.1415,2)  结果是 3.1400

字符串函数
Len()  计算字符串的长度  len('abc')  结果 3
Lower() 转小写,Upper()  转大写
Ltrim() 去掉字符串左边的空格,
Rtrim() 去掉字符串右边的空格.
Ltrim(Rtrim(' A '))   去掉两边的空格.
Substring (string,start_position,length) 截取字符串长度,start_position为开始截取的位置,length为截取的长度

日期函数
GetDate() 获取当前日期时间
select DATEADD(mm,1,getdate())   计算增加以后的日期
select DATEDIFF(HH,GETDATE(),DATEADD(DAY,-3,getdate())) 计算两个日期之间的差额.
select DATEPART(YEAR,getdate())  获取指定日期,  结果 指定的年. 2011

类型转换函数
Cast (数据 as 类型)
Convert (类型 , 数据)

连接查询
  通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。
  在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。连接操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型。为不同实体创建新的表,尔后通过连接进行查询。
  连接可以在SELECT 语句的FROM子句或WHERE子句中建立,似是而非在FROM子句中指出连接时有助于将连接操作与WHERE子句中的搜索条件区分开来。所以,在Transact-SQL中推荐使用这种方法。
  SQL-92标准所定义的FROM子句的连接语法格式为:
  FROM join_table join_type join_table
  [ON (join_condition)]
  其中join_table指出参与连接操作的表名,连接可以对同一个表操作,也可以对多表操作,对同一个表操作的连接又称做自连接。

----------------------Windows Phone 7手机开发.Net培训、期待与您交流! ---------------------- 详细请查看:http://net.itheima.com/

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1904次
    • 积分:65
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档