SQL基础学习

1、SQL中N、@、#表示什么?

N’string’表示其后的字符串是Unicode格式,以@开头的标识符表示一个本地的变量或参数,以#开头的标识符表示一个临时表或存储过程,以##开头的标识符表示一个全局的临时对象。

2、什么是事务?

事务是数据库中一个单独的执行单元,是一个操作序列,它包含一组操作命令。这些命令作为一个整体向系统提交或者撤销,要么都执行,要么都不执行,是一个不可分割的工作单位。事务必须满足4条属性:

(1)原子性。要么都执行要么都不执行。

(2)一致性。执行前后的数据必须保持一致。

(3)隔离性。事务内部操作是隐藏的。

(4)持久性。对数据的修改是永久的。

实例:事务一般以COMMIT或ROLLBACK来终止。

begin try

begin transaction

intsert xxx

update xxx

commit transaction

end try

begin catch

ERROR SOLUTION

rollback transaction

end catch

3、什么是存储过程?

SQL语句需要先编译再执行,因此为了提高效率,可以将完成特定功能的SQL语句集进行编译优化,存储在数据库服务器中,然后用户可以通过存储过程的名字来调用它。

creat procedure sp_name @[参数名][类型]

                                              as

                                              begin

                                              ……..

                                              end

调用的时候使用exec sp_name[参数名]

删除的时候使用drop procedure sp_name

4、什么是共享锁和互斥锁?

(1)共享锁简称S锁,读锁,用于只读操作,如果对数据加了共享锁,则别的事务也只能加共享锁,不能加互斥锁。

(2)互斥锁简称X锁,排他锁,用于数据修改,同一时刻只能有一个线程对数据加互斥锁。

5、什么是范式?

范式是在识别数据库中的数据元素、关系以及定义所需的表和表中的项目这些初始工作之后的一个细化的过程。

(1)1NF,实体中的某个属性不能有多个值或者不能有重复的属性,无重复的列。

(2)2NF,如果关系模型R是第一范式,并且R中每一个非主属性完全函数依赖于R的某个候选键,则称R是第二范式的。

(3)3NF,R是第二范式,并且R的每个非主属性都不传递依赖于R的候选键,则称R是第三范式的。

(4)BCNF,如果关系模型R是第一范式的,且每个属性都不传递依赖于R的候选键,则称R是BCNF的模式。

(5)4NF,设R是一个关系模型,D是R上的多值依赖集合,如果D中成立非平凡多值依赖X->Y时,X必是R的超键,那么称R是第四范式的模式。

6、什么是游标?

是一种能从包含多条数据记录的结果集中每次选取一条记录进行操作的机制。declare游标、open游标、从一个游标中fetch信息、close或deallocate游标。

use s

go

declare s_cursor for select * from s

7、取出表S中第21-30条记录,主键为ID,可能不连续

select top 10 * from S where ID not in (select top 20 ID from S) 

8、找出表S中num最小的数

select * from S where num <= all(select num from S)

select  top 1 num from S order by num

select * from S where num=(select Min(num) from S)

9、选择表S中重复的记录

select * from S where num in(select num from S group by num having(count(num)>1))

10、复制表(只复制表结构):select * into B from A where 1=0

拷贝表(拷贝数据):select * into B from A

四表联查:select * from A,B,C,D where 关联条件

11、建立临时表:create table #Temp(字段1 类型,字段2 类型。。。。)

12、数据表S中有10条相同的记录,怎样删除其中9条

(1)select top 1 * into # from S  //从中选择一条复制到临时表中

         go

         truncate table S   //清除表S

         go

         insert S select * from #

    原文作者:SQL
    原文地址: https://blog.csdn.net/u014069683/article/details/21517003
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞