




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MS Sql server 2008 基础知识详细介绍sqlserver2008分析器中显示行号-工具-选项-文本编辑器-所有语言-常规-显示-行号SQL server 中 sql 语句怎么创建次要数据库文件?我看的书里面没有将怎么创建次要数据库文件,这个次要数据库文件是干什么用的?和主要数据库文件之间的关系?sql 语句如何创建!优化数据库1、将数据文件和事务文件错放在不同磁盘上。这样在对数据库进行读写的时候,可以从多个不同的磁盘驱动器并发执行,提高了系统的运行效率,从而也提高了数据的使用效率。2、利用文件组实现平衡负荷与并行(注意:文件组只能提高系统的性能而不能提高系统的稳定性)假设数据库
2、名称为 pubs,添加一个名为 pubs_data2 的次要数据文件,代码为ALTER DATABASEpubs ADD FILE(NAME = pubs_data2, FILENAME =pubs_data2.ndf , SIZE = 10mb ,FILEGROWTH = 1mb )TO FILEGROUP PRIMARY次要数据文件与主数据文件作用基本一样,当你的主数据文件空间不足而且由于磁盘限制无法增长时,就只能添加新的数据文件了。1:SQL 与 T-SQL1.1SQL 语言SQL 是 Structured Query Language 的缩写,翻译为”结构化SQL 语言可以分为四类:数
3、据语言(Data Query Language)如: select数据定义语言(Data Definition Language)如: create ,alter,drop语言”数据语言(Data Manipulation Language)如:insert ,update,delete数据控制语言(Data Control Language)如:grant,revoke1.2 T-SQL 语言Transact-SQL 即事务 SQL,也简称为 T-SQL,它是微软公司对 SQL 语言的扩充,是SQL 语言的超集,是应用程序与SQLServer 数据库引擎以下几个部分组成.的主要语言.主要由1
4、.2.1 数据定义语言 Data Definition Language ,DDL 主要用于创建数据库及相关对象,修改及删除数据库对象.如:Create 创建数据库对象Alter 修改数据库对象Drop 刪除数据库对象1.2.2 数据控制语言 Data Control Language,DCL 用于设置或者更改用户对数据库的权限.Grant 赋予用户权限Deny数据库对象,且无法从其他继承权限Revoke 收回权限1.2.3 数据Select1.2.4 数据数据语言 Data Query Language,DQL语言 Data Manipulation Language,DML 直接或间接操作
5、表中的使表中数据发生变化Insert数据Update 更新数据Delete 删除数据1.2.5 系统中.过程 System Stored Procedure 以 SP_开头,保存在 master 数据库1.2.6 一些附加的语言元素 注释单行注释-(两个连续的减号) 多行注释/* */如:declare I int -定義編量set i=9999/*賦值*/ 变量局部变量 如: declare I int全局变量 如: select version 运算符 函数 流程控制语句2:T-SQL 执行方式2.1 直接调用执行2.2
6、执行2.3 模块绑定执行2.4 通过调用层接口(CLI)执行3:批处理3.1 概念:是同时从应用程序句.到MSSQL 并得以执行的一组单条或者多条的T-SQL 语MSSQL 将批处理语句编译成单个可执行的单元,称为执行计划,执行计划中的语句每次执行一条.在 T-SQL 中通常遇到两类错误:编译错误与运行时错误编译错误:是编译时产生的错误,如语法错误会导致编译错误create table tb(ID)/*訊息 173,層級 15,狀態 1,行 1資料行ID 的定義必須包含資料類型。*/运行时错误:在运行时候才产生的错误(编译已经通过)如:算术溢出等select 13/0/*訊息 8134,層級
7、16,狀態 1,行 1發現除以零的錯誤。*/注意:批处理对编译错误与运行时候错误处理方式不一样如果在批处理里出现编译错误,则批处理中任何一条语句都执行.因为先将批处理的语句编译成一个可执行的单元,如果存在编译错误,就无法生成可执行但与,更不能执行了.如果在批处理里存在运行时错误,则在大多数情况下会停止执行批处理中当前错误语句之后的语句,但也有些运行时错误,仅停止执行当前语句,而继续执行其他语句.但是如果批处理位于事务中,那么在遇到运行时候错误则需要视事务的定义来决定.后续将介绍.3.2 示例use db_studygo-第 1 个批处理select * from tb -第 2 个批处理gos
8、elect error-第 3 个批处理3.3 批处理使用规则3.3.1 Create 语句不能在批处理中与其他语句结合使用;如果包含 Create 语句, 则批处理必须以 Create 语句开始;所有跟在批处理后的其他语句将被解释为第一个Create 语句定义的一部分.这写语句包括 createdefault,function,proc,rule,schema,trigger,view3.3.2 不能在同一个批处理中更改表然后新列3.3.3 如果execute 语句是批处理中第一条语句则不需要execute 关键字反之必须有.P -过程名此处省略 executeSQL1、显示行号显示行号、随
9、机、取指定行数据如果数据没有删除的情况下主键与行号是一致的,但在删除某些数据,行号就与主键不一致了,这时需要行号就需要用新的方法,在 SQL Server2005 之前,需要使用临时表,但在 SQL Server2005 中,使用 ROW_NUMBER()非常方便。select row_number() over (order by UseriD) as rowNum,* from UserInfo结果:2、随机有的时候我们需要出的数据是随机排序的,newid()函数在扫描每条时会生成一个随机值,这个随机数没有大小写顺序,因此根据这个数排序,就可以将数据进行随机排序。?select *,new
10、id() random from UserInfo order by random结果:3、取指定行数据我们这里需要的不是主键编号在某一取值范围内的数据,而是行号在指定范围内,还是上面的 Row_Number()函数。?select * from (select row_number() over (order by UseriD)?UserInfo)?as t where rowNum between 10 and 20这样我们就取出 10 到 20 行共 11 行的数据了。as rowNum,*from数据库中常用的概念Sql 本身是一个服务器,没有界面,Management 工具而已,不
11、是服务器。Sql server 在管理工具下面的服务 SQL ServerStudio只是一个 SQL Server 管理(MSSQLSERVER)主键:就是唯一的一条数据的列。有重复的列才能当主键, 一个表可以没有主键,但是会非常难以处理,因此建议都要设主键。两种主键:业务主键:使用有业务意义的字段做主键,如号、职工编号。逻辑主键:使用任何没有意义的字段做主键,完全给程序看的。推荐用逻辑主键常识:1、sql 语句中字符串是用单引号2、 sql 语句大小写不敏感的。分类备注和说明类型说明二进制数据类型非字符和文本的数据Image可用来图像文本数据类型字符数据包括任意字母、符号或数字字符的组合C
12、har固定长度的非Unicode 字符数据Varchar可变长度非 Unicode数据Nchar固定长度的 Unicode数据Nvarchar可变长度 Unicode数据Text长文本信息(指针,2G)保存的是字节数据Ntext可变长度的长文本Guid 算法是一种可以产生唯一标识的高效算法,它使用网卡 MAC、地址、纳秒级时间、ID 码等算出来的,这样保证每次生成的 GUID 永远是不同的计算机。/数据库的类型 unique identifier重复,无论是同一个计算机上还SQLServer 中生成 GUID 的函数 newid(),.Net 中生成 Guid 的方法:Guid.NewGuid
13、() use 数据库名,打开该数据库,有时候在新建时没选择对应的数据库,所以用这条语句。或者手动选择该数据库Insert 语句可以省略表名后的列名,但是不推荐如果的行中有些字段的值不确定,那么 Insert 的时候不指定那些列即可。当不提供字段名时,值需要加入默认值 defaulf 也就默认值用 defaulf 表示数据insertinto 表名 (字段名) values(值)例:insert into student (name,age,sex,birthday) values (张三,21,1,1995-02-26)日期和时间日期和时间在单引号内输入Datetime日期和时间数字数据该数据
14、仅包含数字, 包括正数、负数以及分数int smallint整数float real数字货币数据类型用于十进制货币值MoneyBit 数据类型表示是/否的数据Bit布尔数据类型字段与值一一对应1. 新建一个表语法:create table 表名 (字段 1添加主键 primary key (字段)例:CREATE TABLE T_Employee (FNumber VARCHAR(20), FName VARCHAR(20),FAge INT,FSalary NUMERIC(10,2), PRIMARY KEY (FNumber);类型 1,字段 2 类型 2,)-创建一个表表名是 T_Emp
15、loyee-字段 类型- 设置主键SQL 数据库中 Numeric(10,2)是什么意思?Numeric(10,2) 指字段是数字型,长度为 10 小数为两位的简要描述一下 SQL 中的五种数据类型:字符型,文本型,数值型,逻辑型和日期型字符型VARCHAR VS CHARVARCHAR 型和 CHAR 型数据的这个差别是细微的,但是非常重要。他们都是用来储存字符串长度小于 255 的字符。假如你向一个长度为四十个字符的 VARCHAR 型字段中输入数据 Bill Gates。当你以后从这个字段中取出此数据时,你取出的数据其长度为十个字符字符串 Bill Gates 的长度。现在假如你把字符串
16、输入一个长度为四十个字符的 CHAR 型字段中,那么当你取出数据时, 所取出的数据长度将是四十个字符。字符串的后面会被附加多余的空格。当你建立自己的站点时,你会发现使用 VARCHAR 型字段要比 CHAR 型字段方便的多。使用 VARCHAR 型字段时,你不需要为剪掉你数据中多余的空格而操心。VARCHAR 型字段的另一个突出的好处是它可以比 CHAR 型字段占用更少的内存和硬盘空间。当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要文本型TEXT使用文本型数据,你可以存放超过二十亿个字符的字符串。当你需要该使用文本型数据。大串的字符时,应注意文本型数据没有长度,而上一节中所讲的字符
17、型数据是有长度的。一个文本型字段中的数据通常要么为空,要么很大。当你从 HTML form 的多行文本编辑框(TEXTAREA)中收集数据时,你应该把收集的信息于文本型字段中。但是,无论何时,只要你能避免使用文本型字段,你就应该不去用它。文本型字段既大且慢,盘空间。文本型字段会使服务器速度变慢。文本型字段还会大量的磁一旦你向文本型字段中输入了任何数据(甚至是空值),就会有 2K 的空间被自动分配给该数据。除非删除该,否则你无法收回这部分空间。数值型SQL 支持许多种不同的数值型数据。你可以MONEY。整数 INT 、小数 NUMERIC、和钱数INT VS SMALLINT VS TINYIN
18、T他们的区别只是字符长度: INT 型数据的表数范围是从-2,147,483,647 到 2,147,483,647 的整数 SMALLINT 型数据可以从-32768 到 32768 的整数 TINYINT 型的字段只能从 0 到 255 的整数,不能用来储存负数通常,为了节省空间,应该尽可能的使用最小的整型数据。一个 TINYINT 型数据只占用一个字节;一个 INT 型数据占用四个字节。这看起来似乎差别不大,但是在比较大的表中,字节数的增长是很快的。另一方面,一旦你已经创建了一个字段,要修改它是很的。因此,为安全起见,你应该择适当的数据类型。以下,一个字段所需要的数值最大有可能是多大,然
19、后选MUNERIC为了能对字段所存放的数据有的控制,你可以使用 NUMERIC 型数据来同时表示一个数的整数部分和小数部分。NUMERIC 型数据使你能表示非常大的数比 INT 型数据要大得多。一个 NUMERIC 型字段可以从-1038 到 1038 范围内的数。NUMERIC 型数据还使你能表示有小数部分的数。例如,你可以在 NUMERIC 型字段中小数 3.14。当定义一个 NUMERIC 型字段时,你需要同时指定整数部分的大小和小数部分的大小。如:MUNERIC(23,0)一个 NUMERIC 型数据的整数部分最大只能有 28 位,小数部分的位数必须小于或等于整数部分的位数,小数部分可
20、以是零。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 的钱数。同样,如果可以的话,你应该用 SMA
21、LLMONEY 型来代替 MONEY 型数据,以节省空间。逻辑型BIT如果你使用复选框( CHECKBOX)从网页中搜集信息,你可以把此信息段中。BIT 型字段只能取两个值:0 或 1。在 BIT 型字当心,在你创建好一个表之后,你不能向表中添加 BIT 型字段。如果你打算在一个表中包含 BIT 型字段,你必须在创建表时完成。日期型DATETIME VS SMALLDATETIME一个 DATETIME 型的字段可以12 月 31 日最后一毫秒。的日期范围是从 1753 年 1 月 1 日第一毫秒到 9999 年如果你不需要覆盖这么大范围的日期和时间,你可以使用 SMALLDATETIME 型
22、数据。它与DATETIME 型数据同样使用,只不过它能表示的日期和时间范围比 DATETIME 型数据小,而且不如 DATETIME 型数据精确。一个 SMALLDATETIME 型的字段能够月 1 日到 2079 年 6 月 6 日的日期,它只能精确到秒。从 1900 年 1几个简单的基本的 sql 语句选择:select * from table1 where 范围:insert into table1(field1,field2) values(value1,value2)删除:delete from table1 where 范围更新:update table1 set field1=
23、value1 where 范围查找:select * from table1 where field1 like %value1% -like 的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 desc总数:select count * as totalcount from table1求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxva
24、lue from table1最小:select min(field1) as minvalue from table12. 删除整个表:Drop Table 表名更新:语法:update Table set col=value,col2=value2 where . update 表名 set 字段 = 值,字段 2 = 值 2 where 条件更新一个列:UPDATE T_Person Set Age=30更新多个列:UPDATE T_Person Set Age=30,Name=tom更新一部分数据: UPDATE T_Person Set Age=30 where Name=tom,用
25、 where 语句表示只更新 Name 是tom的行,注意 SQL 中等于判断用单个=,而不是=Where 中还可以使用复杂的逻辑判断 UPDATE T_Person Set Age=30 where Name=tomor Age20 and Age30) or(Age=80)Where 中可以使用的其他逻辑运算符:or(或)、and(与)、not(非)、=、=、!=(或)等3. 修改表添加字段语法:altertable 表名 add 字段 类型例:ALTER TABLE T_Employee ADD4. 删除pany VARCHAR(20);语法:delete from Table wher
26、e col=dataDATETIME 型字段在你输入日期和时间之前并不包含实际的数据,认识这一点是重要的delete from 表名 价目 where 条件删除表中全部数据:delete from 表名Delete 只是删除数据,表还在,和 Drop Table 不同。Delete 也可以带 where 子句来删除一部分数据:DELETE FROM T_Person WHERE FAge 20删除表中全部的数据1、Delete 表名删除之后的 id 继续上一次的值后。2、runcate Table 表名5. 检索同时还原标识 也就是说设置默认的 id 从 1 开始语法:selectcol,co
27、l2,* from Table where .Select 字段 from 表名 where 条件简单的数据检索只检索需要的列列别名:SELECTT_Employee:SELECT:SELECTFNumber* FROM 表名字段 表名AS 编号,FNameAS 姓名,FAge AS Age111 FROM问:select * from (select top 10 * from-主 Select( selecttop 10 * from zhekousjia order by riqi desc) as myt1-主 Select 结束order by riqi asc) as myt2 o
28、rder by riqi desc后面的 as myt1 是什么意思?as 是加在括号后面的吗?我在网上看一般都写在 from 的前面?哪位高手帮我解释一下,小弟不胜感激!sql 语句中 as 的意思是什么如:一个 table 有个 column 叫 id, 我们的 query 是as 一般用在两个地方,一个是 query 的时候,用来重新指定返回的 column 名字答:看这个 SQL 你得从最里面看起( select top 10 * from zhekousjia order by riqi desc ) as myt1第一次,myt1 作为 select top 10 * from z
29、hekousjia order by riqi desc 的结果集再从这个结果集中按qiqi 升序取得前十条,然后在按照日期降序取得 最后结果,同时,myt2 同样是第二层的结果集sql server 中什么时候要用到 as分析器中在哪些时候 as 作为关键字必须写呢其次表名中可以用到 as,意思是把表起个别名叫做 a,这个如果表名很长并且关联的时候, 单独写一个字母比较方便些 select sum(value) as 总量 from 表 这个其实和第一个一样,也是把要取的东西用一个别名来代替 补充你说的那个 as 中,就是建立一个规则这个 as 就是个关键字,必须写,但没什么实际意义 补充
30、2 过程中 你这个建一个规则中 函数中触发器中SQL 中ON 和WHERE 的区别数据库在通过连接两张或多张表来返回临时表返回给用户。时,都会生成一张中间的临时表,然后再将这张在使用 left jion 时,on 和 where 条件的区别如下:1、 on 条件是在生成临时表时使用的条件,它不管 on 中的条件是否为真,都会返回左边表中的。答:select id as 编号 from 表名首先单个字段中可以用到 as,就是给 id 这个字段起个别名叫编号select a.idfrom 表名 as aselect id from table1. 但是如果你不想叫 id 了,就可以重命名,如叫 s
31、ystemID 就可以这样写select id as systemId from table1;还有一个用法就是在 create table 或 procedure 的时候,as 是个关键字。例如create table test as select * from table1这时候就会 create 一个 table test,他是完全 copy table table1 里的全部数据。create procdure name as (is)beginend;具体可以参考 如何建立 procedure。 这个时候 as 和 is 可以互换。2、where 条件是在临时表生成好后,再对临时表进
32、行过滤的条件。这时已经没有 left join的含义(必须返回左边表的)了,条件不为真的就全部过滤掉。假设有两张表: 表 1:tab2id size 1 102 203 30表 2:tab2 size name 10 AAA20 BBB20 CCC两条 SQL:1、select * form tab1 left join tab2 on (tab1.size = tab2.size) where =AAA 2、select * form tab1 left join tab2 on (tab1.size = tab2.size and =AAA) 第一条 S
33、QL 的过程:1、中间表 on 条件: tab1.size = tab2.size tab1.id tab1.size tab2.size 1 10 10 AAA2 20 20 BBB2 20 20 CCC3 30 (null) (null)2、再对中间表过滤 where 条件:=AAA tab1.id tab1.size tab2.size 1 10 10 AAA第二条 SQL 的过程:1、中间表 on 条件: tab1.size = tab2.size and =AAA(条件不为真也会返回左表中的) tab1.id
34、 tab1.size tab2.size 1 10 10 AAA2 20 (null) (null)3 30 (null) (null)其实以上结果的关键原因就是 left join,right join,full join 的特殊性,不管 on 上的条件是否为真都会返回 left 或 right 表中的,full 则具有 left 和 right 的特性的并集。而 inner join没这个特殊性,则条件放在 on 中和 where 中,返回的结果集是相同的。on 为了反映外连接中一方的全连接,而 where 没有这个功能,内连接配对是可以的。=on、where、havi
35、ng 的区别on、where、having 这三个都可以加条件的子句中,on 是最先执行,where 次之,having 最后。有时候如果这先后顺序不影响中间结果的话,那最终结果是相同的。但因为 on 是先把不符合条件的速度是最快的。过滤后才进行统计,它就可以减少中间运算要处理的数据,按理说应该根据上面的分析,可以知道where 也应该比having 快点的,因为它过滤数据后才进行sum, 所以 having 是最慢的。但也不是说 having 没用,因为有时在步骤 3 还没出来都不知道那个才符合要求时,就要用 having 了。在两个表联接时才用 on 的,所以在一个表的时候,就剩下 whe
36、re 跟 having 比较了。在这单表统计的情况下,如果要过滤的条件没有涉及到要计算字段,那它们的结果是一样的,只是 where 可以使用 rushmore 技术,而 having 就不能,在速度上后者要慢。如果要涉及到计算的字段,就表示在没计算之前,这个字段的值是不确定的,根据上篇写的工作流程,where 的作用时间是在计算之前就完成的,而 having 就是在计算后才起作用的,所以在这种情况下,两者的结果会不同。在多表联接 时,on 比 where 更早起作用。系统首先根据各个表之间的联接条件,把多个表 一个临时表后,再由 where 进行过滤,然后再计算,计算完后再由 having 进
37、行过滤。由此可见,要想过滤条件起到正确的作用,首先要明白这个条件应该在什幺时候起作用,然后再决定放在那里JOIN 联表中ON,WHERE 后面跟条件的区别对于 JOIN 的连表操作,这里就不细述了,当我们在对表进行 JOIN 关联操作时,对于 ON 和 WHERE 后面的条件,不清楚大家有没有注意过,有什幺区别,可能有的朋友会认为跟在它们后面的条件是一样的,你可以跟在 ON 后面,如果愿意,也可以跟在 WHERE 后面。它们在 ON 和WHERE 后面究竟有一个什幺样的区别呢?在 JOIN 操作里,有几种情况。LEFT JOIN,RIGHT JOIN,INNER JOIN 等。为了清楚的表达主
38、题所描述的问题,我简要的对 LEFT,RIGHT,INNER 这几种连接方式作一个说明。下面就拿一个普通的博客系统的日志表(post)和分类表(category)来描述吧。这里我们规定有的日志可能没有分类,有的分类可能目前没有属于它的文章。1.LEFT JOIN:(保证找出左联表中的所有行)查出所有文章,并显示出他们的分类:SELECT p.title,c.category_name FROM post pLEFT JOIN category c ON p.cid = c.cid2.RIGHT JOIN:(保证找出右联表中的所有行)所有的分类,并显示出该分类所含有的文章数。SELECT COU
39、NT(p.id),c.category_name FROM post pRIGHT JOIN category c ON p.pid = c.cid3.INNER JOIN:(找出两表中关联相等的行)有所属分类的日志。(即那些没有所性分类的日志文章将不要我们的范围之内)。SELECT p.title,c.category_name FROM post pINNER JOIN category c ON p.cid = c.cid.这种情况和直接两表硬关联等价。现在我们回过头来看上面的问题。对于第一种情况,如果我们所 ON 的条件写在 WHERE 后面,将会出现什幺情况呢?即:SELECT p.
40、title,c.category_name FROM post pLEFT JOIN category c WHERE p.cid = c.cid对于第二种情况,我们同样按照上面的书写方式。SELECT COUNT(p.id),c.category_name FROM post pRIGHT JOIN category c WHERE p.pid = c.cid如果运行上面的 SQL 语句,就会发现,它们已经过滤掉了一些不满足条件的,可能在这里,大家会产生疑问了,不是用了 LEFT 和 RIGHT 吗?它们可以保证左边或者右边的所有行被全部出来,为什幺现在不管用了呢?对于出现这种的问题,呵呵!
41、是不是觉得有些不可思议。出现这种的问题,原因就在 WHERE 和 ON 这两个关键字后面跟条件。好了,现在我也不调大家味口了,给大家提示吧。对于JOIN 参与的表的关联操作,如果需要不满足连接条件的行也在我们的范围内的话,我们就必需把连接条件放在 ON 后面,而不能放在 WHERE 后面,如果我们把连接条件放在了 WHERE 后面,那幺所有的 LEFT,RIGHT,等这些操作将不起任何作用,对于这种情况,它的效果就完全等同于 INNER 连接。对于那些不影响选择行的条件,放在 ON 或者WHERE 后面就可以。记住:所有的连接条件都必需要放在 ON 后面,不然前面的所有 LEFT,和 RIGH
42、T 关联将作为摆设,而不起任何作用。=sql where 1=1 0=1 的妙用where 1=1 有什么用?在 SQL 语言中,写这么一句话就跟没写一样。select * from table1 where 1=1 与 select * from table1 完全没有区别,甚至还有其他许多写法,12,a=a,ab,其目的就只有一个,where 的条件为永真,得到的结果就是未加约束条件的。在 SQL 注入时会用到这个,例如 select * from table1 where name=lala给强行加上select * from table1 where name=lala or 1=1
43、这就又变成了无约束的了。最近发现的妙用在于,在不定数量条件情况下,1=1 可以很方便的规范语句。例如一个可能有 name,age,height,weight 约束,也可能没有,那该如何处理呢?String sql=select * from table1 where 1=1 为什么要写多余的 1=1?马上就知道了。if(!name.equals() sql=sql+name=+name+;if(!age.equals()sql=sql+age+age+;if(!height.equals() sql=sql+height=+height+;if(!weight.equals()sql=sql+
44、weight=+weight+;如果不写 1=1 呢,那么在每一个不为空的否则要在第一个出现的地方加 where条件面前,都必须判断有没有 where 字句,今天看到:SELECT * FROM strName WHERE 1 = 0;不理解为什么有 1=0?得出:该 select 语句主要用于保存结果集。另外,这个用在什么地方呢?主要用于创建一个新表,而新表的结构与样的。如下 SQL 语句:create table newtableas select * from oldtablewhere 1=0;表的结构而不考虑表中的数据,这样节省了内存,因为可以不用的表的结构是一=使用 where 检
45、索符合条件的数据:SELECT 字段 FROM 表名 WHERE 条件。故事:新员工的数据检索噩梦。还可以检索不与任何表关联的数据:select 1+1;select newid();select getdate();6. 函数1、 最大值最小值平均值求和 数量2、聚合函数 MAX(字段) MIN(字段) AVG (字段)SUM (字段)COUNT(*) 数字函数执行备注中的代码ABS() :求绝对值。CEILING():舍入到最大整数 。3.33 将被舍入为 4、2.89 将被舍入为 3、-3.61 将被舍入为-3。 Ceiling天花板FLOOR():舍入到最小整数。3.33 将被舍入为
46、3、2.89 将被舍入为 2、-3.61 将被舍入为-4。 Floor地板。ROUND():四舍五入。舍入到“离我半径最近的数” 。Round“半径”。例:Round(3.1425,2)。解释:3.1425 是在四舍五入的值,2 是精确的位数3、字符串函数LEN() :计算字符串长度求字符DATALENGTH(): 计算字节长度求字节一个汉字两个字节例:select len(123 是数字)-字符select datalength(123 是数字) -字节注意:text 类型保存的是字节数据,所以不能用 len()LOWER(): UPPER () LTRIM():RTRIM ()转小写:转大
47、写字符串左侧的空格去掉:字符串右侧的空格去掉例:bbLTRIM(RTRIM()SUBSTRING(string,start_position,length)参数:string 为主字符串,start_position 为子字符串在主字符串中的起始位置,从 1 开始length 为子字符串的最大长度。例:SELECTSUBSTRING(abcdef111,2,3)4、日期函数GETDATE() :取得当前日期时间DATEADD (datepart , number, date ),计算当前的时间前或后参数:datepart 计量值:year、month、daynumber 增量 正数是后,负数是
48、前date 日期例:-获得当前日期前年的时间select dateadd(month,1,getdate()DATEDIFF ( datepart , startdate , enddate ) :计算两个日期之间的差额。 参数:datepart计量startdate起始日期enddate结束日期例:统计不同工龄的员工的个数:select DateDiff(year,FInDate,getdate(),count(*) from T_Employee group by DateDiff(year,FInDate,getdate()DATEPART (datepart,date):返回一个日期的
49、特定部分参数:datepart计量date统计员工的入职年份个数:日期select DatePart(year,FInDate),count(*) from T_Employeegroup5、CASTby DatePart(year,FInDate)类型转换函数( expression AS data_type)参数:expression 要转换的值data_type要转换的类型例:select cast(right(abc2011-02-24,10) as datetime) CONVERT ( data_type, expression)参数:expression 要转换的值data_type要转换的类型例:select convert(date
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 兼职医生聘用合同范本
- 项目合同与公司合同范本
- 2025-2030年中国钾肥产业运行态势及发展趋势分析报告
- 2025-2030年中国金融电子支付设备市场发展趋势规划研究报告
- 2025-2030年中国酒类奢侈品市场运行状况及投资战略研究报告
- 2025-2030年中国通讯终端行业运行状况与前景趋势分析报告
- 2025-2030年中国进口食品市场运行动态与发展趋势分析报告
- 2025-2030年中国载重车刹车片市场供需状况规划分析报告
- 2025-2030年中国谷氨酸行业十三五规划及发展前景分析报告
- 2025-2030年中国绢花市场运营状况与发展趋势分析报告
- 2023高考语文文言文复习:《说苑》练习题(含答案解析)
- 低血糖健康宣教
- 《炼油化工基本知识》课件
- 关于高中语文教学中“微课”的运用分析获奖科研报告论文
- 《射频同轴电缆》课件2
- 口腔颌面部感染患者的营养状况及辅助营养治疗策略
- 以工代赈政策培训课件
- 垃圾分类校本教材
- 中职学生开学心理知识讲座
- 虚拟现实技术中的智能感知与识别技术应用
- DD 2014-11 地面沉降干涉雷达数据处理技术规程
评论
0/150
提交评论