我对sql 一点理解

 我对sql2005的认识

   在以前的学习过程中接触的sql知识点主要包括:

   1:数据库的基本知识 2:数据库数据类型  3sql基本逻辑控制语句 4:对数据表的基本操作包括增删改查。 5:创建索引和视图以及事务 6:存储过程  7:触发器

 

1:数据库的基本知识

包括数据库的创建和删除,数据表的创建和操作,添加约束,数据库的三大范式。数据库E-R图,添加登陆用户,和简单的授权。

对表的操作,包括增加字段,修改字段名字,修改字段类型,删除表。

 

   2:数据类型:

常用数据类型包括

(1)二进制数据类型

二进制数据包括 BinaryVarbinary Image

(2)字符数据类型

字符数据的类型包括 CharVarchar Text

(3)Unicode 数据类型

  Unicode 数据类型包括 Nchar,Nvarchar Ntext

(4)日期和时间数据类型

  日期和时间数据类型包括 Datetime Smalldatetime两种类型

(5)数字数据类型

Int ,bigint,tinyint

6)货币数据表示正的或者负的货币数量

Money Smallmoney

7)浮点型数据,主要是float类型

8)逻辑数据类型,主要有bit

9)新的xml数据类型

3:sql基本的逻辑控制语句

用的最多的就是以下三种:

If xxx

Begin

T-SQL

End

Else

Begin

T-SQL

END

GO

 

 

 

Case when then else end

 

 

While(条件)

Begin

T-SQL

Break

End

 

4:对数据表的增删改查操作。

   删除和修改都是在查询的基础上实现的,所以查询是学校练得最多的,主要有子查询,表链接查询,表连接又分为内连接(inner join on)左连接(left join on 以左表为准,包含所有左表字段),右连接(right join on 包含全部右表字段)全连接(full join on 包含两张表字段)

查找语法通常包含以下子句:select 子句,from 子句,where ,group by having order by 等。

查询语句通常还有like关键字,进行模糊查询。Case 关键字进行条件判断返回多个结果之一。

插入主要语法格式:insert into tablename (column name) values(‘’,’’)

批量插入语法:insert into tablename (column name) select column name from xxxx

Select   into 语句把数据插入一张新表中。

当修改时基于别的表数据进行修改时:Update tablename set xxxxx from tables name where xxxxx

对于删除,基本格式:delete from table where xxxxxx

 

5: 创建索引和视图以及事务

我对索引的理解就是,帮助更快查找数据库中数据的东西,相当于目录作用。

通常索引建立在需要频繁访问的字段,而且数据重复度小的数据。但使用索引会减低操作的速度,同时存储上也需要更多的空间,所以索引页不是越多越好。

索引用的最多的就是,聚集(cultered)索引和非聚集(noncultered)索引。

其中一个表只有一个聚集索引,聚集索引改变数据的物理排序顺序,使索引和数据物理排列顺序相同。

非聚集索引能有多个,最多249个,数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。

创建索引的语句:create [CLUSTERED|NONCLUSTERED] 

    Index   index_name

     ON table_name (column_name…)

 

对于视图,视图是一张虚表,使用视图可以保护数据,可以从几张物理表中把需要的数据抽出来,组成一张虚拟表,降低数据库的复杂度。

语句:create view view-name as T-SQL

 

事务是一个不可分割的执行单元,要嘛全部执行,要嘛全部回滚。通常用于强制的业务。比如汇款之类的。

开始事务:begin transaction,

回滚事务:rollback transaction

提交事务: commit transaction

 

6:存储过程

存储过程是一个语句块,里面可以包含输入输出参数,逻辑控制语句,sql语句等等。

存储过程是一组预编译的sql,编译一次后,以后调用不用再编译。所以存储过程相对更加高效。

基本语句

Create procedure xxx

参数

As

Sql语句

Go

调用存储过程:exec xxx 参数

 

 

修改存储过程:alter proc xxx

As

 Sql语句

  Go

删除存储过程: drop procedure xxx

7:触发器 

   触发器是特殊的存储过程,不能被调用,是会自动执行的,触发器分成三种:insert触发器,update 触发器,delete触发器。触发器在触发时,会建一张虚拟表,如inserted,updated表,对表的操作会首先记录在这些表里,如果操作合法就执行,否则不执行。

语句:

Create trigger trigger_name

 ON table_name

  FOR [DELETE, INSERT, UPDATE]

 AS

  T-SQL语句

GO

 

 

来公司第一天,老大又让我们看了些东西,所以做出如下补充:

新知识:1,用户自定义函数  2:游标的基本知识,还没用过 3deletetruncate的区别。

 

 

1:用户自定义函数

自定义函数和存储过程很相识,都有参数,有逻辑语句,有sql语句,不同的是用户自定义函数不能进行表操作。

用户自定义函数包括:标量函数,内敛表值函数和多语句表函数

创建的语句为:  create function xxxx(@参数名 参数数据类型)

Return 返回值的数据类型(内联表值函数返回值为table类型)

As

Begin

Sql语句

Return 返回的对象

End

Go

调用自定义函数: select  xxxx(参数)

调用自定义函数: select 数据库名。dbo.函数名(传入参数)

 内联表值函数:

和标量函数唯一不同是,内敛表只能返回table类型。

多语句表函数需要显示的定义表的结构,所以它的使用会比内联复杂,但他能容纳更多的语句,游标等等。

   

    2:游标

游标的作用是循环遍历一个集合,按指定的标准选择数据。

游标的使用包括:1,声明游标  declare xxx curson for select * from …..

                2,打开游标   open xxx

                3,使用游标读取数据  fectch next from xxx into @别名

While @@fecth_status=0

                4:关闭释放游标   close xxx   deallocate xxx

3deletetruncate的区别

Truncate 相当于不加条件的delete语句,但执行的速度更快,因为truncate不需要记录日志,而且delete是一行一行的删,而truncate是释放所有数据和数据页的关系,但如果有事务,一定要用delete

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值