森纵培训第二十六天课程总结



Sqlserver在发展历程中有几个重要的版本:
 1.sqlserver2000
 2.sqlserver2005
在数据类型方面,每升级一个版本,都会增加一些数据类型。
sql2005中的数据类型:打开帮助菜单。

sqlserver脚本中的注释:
单行注释 –-
多行注释  /* 段落注释内容*/

一、整型类:
 1.bigint,完全等于Java中的long
 2.int,完全等于java中的int
 3.smallint,完全等于Java中的short
 4.tinyint,它相当于Java中的byte类型,但表示的数值范围不同。byte: [-128,127],tinyint:[0,255]
 5.bit,比特类型,这种数据类型在Java中不存在,不但如此,在很多编程语言中都不存在,即使存在
 (如C和C++),也非直接存在。
  a.它表示一个二进制位,即1/8个字节的长度
  b.它只能存储两个数字,0或者1
  c.它的用处在于保存两种状态中的其中一种,而且只能一种。
  
二、实型类:
 1.单精度
  a.关键字表示:real
  b.范围与Java中的单精度范围相同
 2.双精度
  a.关键字表示:float
  b.范围类同于Java中的double
  
三、时间与日期类型:
 类型:datetime/smalldatetime
 datatime范围为1753年1月1日到9999年12月31日 精确度:3.33毫秒
 smalldatetime范围为1900年1月1日到2079年6月6日 精确度:1分钟

四、货币类型:
 类型:money/smallmoney
 money:范围为-922,337,203,685,477.5808 到 922,337,203,685,477.5807 8字节
 smallmoney:范围为-214,748.3648 到 214,748.3647 4字节
 
五、字符类型
 1.单字节字符   char
  a.定长  char(n),它用来表示长度固定的单字节数据(如数字,英文或混合)
  b.变长  varchar(n),长度不固定的列,
  c.超长  text 大量的数据  8000个字符
 2.双字节字符  nchar
  a.定长 nchar(n),用于有中文存在的长度固定的列
  b.变长 nvarchar(n),用于有中文存在长度不固定的列
  c.超长 ntext 4000个中文
  
六、唯一性标识符类型
 a.uniqueidentifier 唯一性标识     
 
七、image类型
 a.图片
 b.流媒体


SQLserver中的运算符问题:
  任何一个数据库都是一个功能超强的计算器。
1.四则运算:+,-,*,/,%
2.逻辑运算符;and or not
3.比较运算符:>,<,>=,<=,=,!=,<>(推荐使用这个不等于)
 表示某个范围内的运算符:[a,b] between a and b相当于>=a and <=b
 
 
几类函数:
一、数学函数
ABS DEGREES RAND ACOS EXP ROUND ASIN FLOOR SIGN ATAN LOG SIN ATN2 LOG10 SQRT
CEILING PI SQUARE COS POWER TAN COT RADIANS

需要掌握的几个数学函数:
1、pi()
select pi() '圆周率'
go
Sqlserver中的别名:
 1.放在查找结果之后,可以用引号,也可以不用,如上例
 2.在结果与别名之用关键字as相连
 3.将别名放在结果之前;

2、幂函数 power(x,y)
select power(1.22,3.412) as '幂函数'
go

3、平方函数:square(x)
select '平方'=square(1.1)
go

4、对数函数:常用对数,自然对数
select log(11) as '自然对数',log10(11) '常用对数'
go

5、随机函数 rand()
select rand() '随机小数' --[0,1)
go

6、向上取整和向下取整函数:ceiling(x),floor(x)
select floor(2.2),ceiling(2.02) ,ceiling(2),floor(2)
--向上或向下取整与四舍五入无关
go
select floor(-2.2),ceiling(-2.02)
go

二、字符串函数:
ASCII NCHAR SOUNDEX CHAR PATINDEX SPACE CHARINDEX QUOTENAME STR DIFFERENCE REPLACE
 STUFF LEFT REPLICATE SUBSTRING LEN REVERSE UNICODE LOWER RIGHT UPPER LTRIM RTRIM
需要掌握的几个字符串函数:
1、长度函数len(str)
select len('ok'),len('中国'),len('   ok')
go

2、left(str,n),right(str,n)
select left('abcdefg',3),right('abcdefg',3)
go

3、读取编码值和获取字符的函数:ascii,char
select ascii('a'),ascii('中'),unicode('中')
go
select char(65),nchar(20013)
go

4、字符串翻转函数:reverse(str)
select reverse('ok'),reverse('中国')
go

5、子串函数substring(str,start,length)
select substring('hello',1,3) --sqlserver中下标从1开始
go

三、日期和类型函数:
getdate(),返回当前日期和时间点
select getdate() '当前时间点'
go
与getdate()有关的函数:
 DATEADD 具有确定性
 DATEDIFF 具有确定性
 DATENAME 不具有确定性
 DATEPART 除了用作 DATEPART (dw, date) 外都具有确定性。dw 是 weekday 的日期部分,
          取决于设置每周的第一天的 SET DATEFIRST 所设置的值。
 DAY 具有确定性
 GETDATE 不具有确定性
 GETUTCDATE 不具有确定性
 MONTH 具有确定性
 YEAR 具有确定性
 
select year(getdate()) '年',month(getdate()) as '月','日'=day(getdate())
go

在真正应用时,以上几类函数会综合应用在一起,结合使用。如一个学生的考试成绩在60-100之间,包括两者:
select 60+ ceiling(rand()*(100-60)) as '学生成绩'
go


在Sqlserver中只有两类变量,
1、一是全局变量(由服务器已经定义好了,用户可以使用,但不能自定义),全局变量的名称之前用@@标记;
2、一是用户自定义的变量,称为局部变量,用户只能定义局部变量。定义的局部变量只在定义它的代码块中有
  效。局部变量的名称之前用@标记。
局部变量的使用范围:
1、Sql代码块
2、函数中
3、存储过程中

作一个简单的代码块,完成:定义一个局部变量,给这个变量赋值,并且输出。
/*
declare  声明局部变量
set/select  给局部变量赋值
set 一次只能给一个局部变量赋值
select可以一次给多个局部变量赋值
*/
declare @x int;
declare @y float;
set @x=11;
set @y = 1.234;
select @x as '@x',@y as '@y'
--print @x
go

利用Sql代码块解决通过半径获取面积和周长的问题。
declare @radius float,@area float,@perimeter float;
select @radius=1.23;
set @area=pi()*@radius*@radius;
set @perimeter=2*pi()*@radius
select @radius '半径',@area as '面积','周长'=@perimeter
go

sqlserver中的循环,它只支持一种循环就是while循环;
格式:
while   条件
begin
//…
end
go
利用循环解决一个从1加到100的问题。
declare @i int;
declare @sum int;
select @i=1,@sum=0;
while @i<=1000
begin
 set @sum=@sum+@i;
 set @i=@i+1
end
select @sum as '1+2+3+...+1000'
go
 
sqlserver中提供的一个重要的“强制转换”函数cast(a as b)
此函数用得最多是将其他类型强制转换为字符串类型。
将整数124强制转换为字符串类型:
select 'ok'+123
go
在sql中,不允许将字符串和整数直接连接,报错。
要想上面的表达式能够执行,则需要将123变为字符串,在Sql中两个字符串可以直接用连字符加号直接相加。
select 'ok'+cast(123 as varchar)
go

对于表,必须了解的知识:
1、表是一种数据库对象,而且在数据库中它是最重要的对象,所谓操作数据库,主要是操作表;
2、通常来说,表的结构由列组成,在一张表中,列名不能重复;
3、表中内容由行记录表示,一张表中的行记录为0行到多行;
4、从规范上说,无论表中有多少行记录,没有任何两行记录是重复的;
5、表中的每列数据都有自己的固定数据类型;

作一个简单的表Student,创建在用户数据库mydb中,如果是直接创建,会将表建在这个数据库中的默认模式mydb.dbo中。
在sql2005中,新增了一个模式的功能,类似于目录,它属于数据库,在数据库中如果创建了多个模式(目录),
则像文件管理一样,在不同目录下可以创建相同的表及其他对象;
create schema [sname]
go
create schema class1
go
create schema class2
go

如果创建成功,则在当前数据库已经存在了三个模式,分别是dbo,class1,class2。
建表的问题:在建表之前,先要检测要建的表是否存在,如果存在,则删除,再重新创建。需要检测代码。
if exists(select name from sysobjects where name='student' and
xtype='u')
drop table student
go
create table student
(
 sid char(10),
 sname nvarchar(10),
 sage int,
 ssex nchar(1),
 sdesc nvarchar(500),
)
go
以上的sql代码,在mydb.dbo模式中创建了一个没有任何安全性的“裸表”。
为了增强表的安全性,需要给表添加各种约束。
约束,简单就是“限制”。这里的约束是为了增加表的安全性,在表上加的约束越多,这个表就越安全。
约束类型:
1、非空/可空
2、主键约束
3、唯一性约束
4、检查约束
5、默认约束
6、外键约束(用于多表之间)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值