sql server 综合总结

   面向抽象编程

  接口-抽象类-父类-具体类

  1、 复习T-SQL

  -> 数据库的建立、表的建立和约束(DDL)

  -> 建库

  if(db_id(数据库名)) is not null

  drop database 数据库名;

  create database 数据库名;

  -> 建表

  if(object_id('表名', 'U')) is null

  create table 表名

  (

  字段 类型 [约束],

  字段 类型 [约束],

  字段 类型 [约束]

  );

  -> 建约束

  alter table 表名 add constraint 约束名 约束条件

  -> 主键约束(PK_表名_字段名)

  primary key(字段)

  -> 默认约束(DF_表名_字段名)

  default(值) for 字段

  -> 检查约束(CK_表名_字段名)

  check(表达式)

  -> 唯一约束(UQ_表名_字段名)

  unique(字段)

  -> 外键约束(FK_外键表_主键表_字段名)

  *

  alter table 外键表 add

  constraint FK_外键表_主键表_字段名

  foreign key(字段名) references 主键表(字段名);

  -> 数据库操作语言(DML)

  -> 基本语言

  增

  insert into 表名(字段列表) values(值列表);-- 表是存在的

  select 字段列表 into 新表名 from 旧表; -- 要求新表不存在

  insert into 表名(字段列表) select查询;

  删(主外键关联的时候,删除有时会出问题)

  delete from 表名 where 条件;

  truncate table 表名;-- 所有的数据归零

  drop database 数据库;

  drop table 表名;

  改

  update 表名 set 字段=值, 字段=值, … where条件;

  查(***)

  -> from子句

  -> where子句

  -> group by子句

  -> having子句

  -> select top distinct 以及运算表达式

  -> order by子句

  核心记住流程

  -> 高级部分

  case语法

  -> if else if结构

  case

  when 表达式1 then 显示1

  when 表达式2 then 显示2

  …

  else 显示n

  end

  -> switch-case结构

  case 字段

  when 值1 then 显示1

  when 值2 then 显示2

  …

  else 显示n

  end

  连接

  -> 交叉联接

  ANSI-89的语法:select * from 表1, 表2;

  ANSI-92的语法:select * from 表1 cross join 表2;

  -> 内连接

  ANSI-89的语法:select * from 表1, 表2 on 条件;

  ANSI-92的语法:select * from 表1 inner join 表2 on 条件;

  -> 外连接

  ANSI-92的语法:

  select * from 表1 left join 表2 on 条件;

  select * from 表1 right join 表2 on 条件;

  -> 自连接、多表连接

  表1

  inner join

  表2

  on 条件

  inner join

  表3

  on 条件

  子查询

  将一个查询的结果作为另一个查询的条件

  分清出内部查询(子查询)和外部查询

  -> 独立标量子查询字段 = (子查询)

  -> 独立多值子查询字段 in (子查询)

  表表达式

  -> 派生表

  将查询的"结果集"作为数据源 --不能使用order by

  select * from

  (

  select

  row_number() over(order by stuId) as num,

  *

  from

  Student

  ) as tbl

  where

  tbl.num between @count * (@page - 1) + 1 and @count * @page;

  2、 公用表表达式(CTE)

  就是将一个查询得到的结果集用一个表的形式临时存放,并用一个变量名指定

  后面再查询直接使用变量名即可

  with 别名

  as

  (

  结果集

  )

  查询

  3、 考虑派生表和CTE都是临时的,而且比较臃肿,所以希望将常用的查询结构定义到数据库中

  每次使用的时候,直接使用数据库中的这个对象,这个对象中记录了这个复杂的查询规范

  由数据库执行查询

  那么就有了视图(虚拟表)

  create view vw_视图名

  as

  查询

  注意:视图不具备存储数据的能力,但是使用的时候就好像一张表一样

  4、 (*介绍)内联表值函数

  带有参数的试图

  create function fn_名字

  (@参数 类型, …) returns table

  as

  return 查询

  5、 SQL中的变量与流程控制

  -> SQL是一个脚本语言,可以认为基本的编程语句都支持

  -> 定义变量

  declare @变量名 类型名;

  -> 赋值

  set @变量名 = 值;

  -> 补充

  使用select进行赋值

  select @变量=字段 from 表名…(支持多值查询)

  使用子查询进行赋值

  set @变量 = (单值子查询); (只支持单值查询)

  >sql 2008 新的语法

  declare @name varchar(5)='大鑫';

  select @name;

  -> 判断

  if(bool表达式) begin end就等于程序中的大括号()

  begin

  -- 语句

  end

  else if(表达式)

  begin

  -- 语句

  end

  else

  begin

  -- 语句

  end

  -> 循环

  while(bool表达式)

  begin

  -- 语句

  end

  循环练习

  --求1到100的和

  declare @jkSum int;

  declare @i int;

  set @jkSum = 0;

  set @i = 1;

  while (@i <= 100)

  begin

  set @jkSum = @jkSum + @i;

  --set @i = @i + 1;

  ****--sql里面循环执行后要把@i+1 赋值然后执行下一次循环提供的新值

  set @i += 1;

  end

  select @jkSum;

  go

  6、 为什么要有事务,事务是什么

  事务,就是SQL中一个独立执行过程

  这结果是会影响到数据库的数据结果的

  这个事务(执行过程)与其他的执行过程无关

  事务执行的时候是一个整体,要么全部成功,也么全部失败

  事务的原子性、持久性、隔离性、一致性(不能违反约束)

  SQL中每一个SQL语句实际上都是一个事务(隐式事务)

  事务就是一个最小的执行单位

  常见的全局变量 @@version, @@error(最后一个错误的T_SQL的信息)

  @@identity (最后的一个插入表的自增id)

  //查询中文的错误信息试图

  select * from sys.messages where where language_id=2052;

  显示声明事务

  begin transaction -- 简写begin tran

  事务内部

  -- 提交事务或回滚事务

  commit transaction-- 表示事务内部的所有事情执行成功

  rollback transaction-- 表示撤销事务内部所有的事情

  -> 使用try-catch块处理事务中的异常错误

  begin try

  end try

  begin catch

  end catch

  7、 存储过程就是将一些列的执行步骤记录到数据库中,有点类似于方法

  -> 无参数,无返回值的存储过程

  -> 有参数,无返回值的存储过程

  -> 带有默认参数的存储过程

  -> 带有默认参数与参数返回值的存储过程

  声明一个带默认参数@stuNameTemp nvarchar(20)='all'

  ---> []可以有,可以无

  ---> 多条语句必须要加begin end 如果是一条语句可以省略begin end

  CREATE PROC[EDURE] USP_存储过程名

  @参数1 数据类型 [= 默认值] [OUTPUT],

  @参数n 数据类型 [= 默认值] [OUTPUT]

  AS

  BEGIN

  SQL语句

  END

  exec 存储过程 参数;

  exec 存储过程 参数名=参数;

  exec 存储过程 参数,参数n output;

  8、 使用ADO.net执行SQL的方法

  -> 没有返回值的存储过程

  -> 带有参数返回值的存储过程

  -> 连接字符串

  -> SQL语句(存储过程的名字)

  -> 创建参数

  如果是执行参数返回值的存储过程

  定义要返回的参数,不要赋值,设定Direction

  string sql = "usp_TransMoney";

  SqlParameter[] ps =

  {

  new SqlParameter("@from",from),

  new SqlParameter("@to", to),

  new SqlParameter("@money",money),

  new SqlParameter("@isAccess", SqlDbType.Int)

  };

  ps[3].Direction = ParameterDirection.Output;

  -> 连接通道SqlConnection

  -> 创建执行对象SqlCommand(设定CommandType)

  -> 加入参数

  -> 打开连接

  -> 执行方法

  9.触发器

  ->特殊的存储过程。 inserted表 和 deleted表 2个临时表

  insert into back(cid,balance) output inserted.*

  values('0004',10000);

  for 或者 after 触发器 是执行完才能触发

  instead of 代替

  --添加一个触发器,删除所有数据后,在把数据插回来

  create trigger tr_DelUseInfo on 表名(bank)

  for delete

  as

  insert into bank select * from deleted;

  go

时间: 2024-11-08 19:22:15

sql server 综合总结的相关文章

SQL Server可写脚本和编程扩展SSIS包

微软的SQL Server 2005中用来替代数据传输服务(DTS)的SQL Server综合服务(SSIS),包含了很多工具用于导入数据并将其转换为有意义的信息,而不仅仅是被动的导入.但是还有一点要注意的是,你会发现这个新的SSIS工具有时候并不能完全覆盖你要做的所有事情. 因此,微软提供了两种基本方法来扩展SSIS的功能.一种方法对那些没有很多编程经验,或者是不需要编写复杂程序的人们来说相对简单;另一种方法就是复杂的,它可以让喜欢挑战的程序员深入SSIS,对其进行很大程度上的扩展. 简单方式

SQL Server集成服务编程基础

如果你曾经将数据从SQL Server中移入或者移出,那么你现在就可以使用微软的DTS或者微软的数据传输服务工具来完成了.DTS是一个ETL(是抽取.传输和载入的缩写)的工具,它可以让数据库管理员们创建一系列步骤来描述数据是如何被传输的.这些"包",正如它们的名字,是可以通过一些不同的程序语言或者直接在SQL 服务器自身运行的. 这个想法一直以来都是一个不错的想法,但是无论如何还是有局限的--如果使用早期版本的SQL Server的块拷贝系统的版本很方便的话,它还是能够继续荣耀下去的.

Sql server了解Management Studio

1. 优化组合了多款工具的功能 在SQL Server以前的版本中主要有两个工具:图形化的管理工具(Enterprise Manager)和 Transact SQL编辑器(Query Analyzer).这样两个工 具分列存在一个问题,需要开发SQL Server也需要管理SQL Server 有时两项工作需要同时进行),所以不得不在两个工具之间不断切换.在 SQL Server Management Studio中,Enterprise Manager和Query Analyzer两个工具被

数据库-sql server 2008 综合题,求大神指点,我建了一部分表,大神在做的时候可按自己方便插入:

问题描述 sql server 2008 综合题,求大神指点,我建了一部分表,大神在做的时候可按自己方便插入: 因为综合题练得比较少不懂得怎样联系:大神回答时,尽量详细,多谢, 做的好的话,C币还可加: 具体要求: 某公司有很多类型的货车(小型货车,双轴货车,16轮货车等),货车要有货车号, 货车类型(小型货车,双轴货车,16轮货车),载重量,有很多司机,每个司机可开 多种类型的货车,司机要有司机号,姓名,地址,薪水,司机运输货物时有货物名称, 目的地,出发时间,返回时,要更新记录,有返回时间,

SQL Server 2000 XML之七种兵器

server|xml XML,已成为近来最热门的Web技术,它是SQL Server 2000中的重要部分.本文将综合七条SQL Server 2000中最重要的XML综合特性组成XML之七种兵器. 兵器之一:FOR XML 在SQL Server 2000中,标准的T-SQL SELECT语句包括FOR XML子句,它以XML文档形式返回一个查询结果.新的FOR XML子句有三种模式--RAW,AUTO,和EXPLICIT,每个都能对XML文档格式提供附加标准的控制. 下面首先介绍"FOR X

用COM自动服务扩展SQL Server的功能

server     SQL Server的T-SQL编程语言在数据存储和恢复方面功能强大,但在与SQL Server数据库之外的系统交互方面则功能较弱.然而,我们可以通过SQL Server内置的COM自动操作环境来克服这个限制,SQL Server内置的COM自动操作环境可以使用户在存储过程中自动操作COM对象. 在SQL Server 7.0和SQL Server 6.5中提供了7个扩展的存储过程,可以通过自己开发的或Office等现成的COM对象扩展SQL Server的功能.SQL S

SQL Server 2005可伸缩性和性能的计划(3)

ASP.NET 应用程序性能统计类 绝大多数关于ASP.NET应用程序性能统计类的信息,最近整理到了一个综合性的文档中叫做"改进.NET应用程序性能和扩展性".以下的表格描述了一些监控和优化ASP.NET应用程序性能的重要的统计类,包括报表服务. 性能对象 统计类 实例 描述 处理器 % 处理器时间 __Total % 处理器时间监控了Web服务器计算机的CPU利用情况.低CPU利用或者无法增加CPU利用,不考虑客户负荷,意味着在你的Web应用程序上有资源和锁之间的竞争. 进程 % 处

SQL Server 2005可伸缩性和性能的计划(1)

本白皮书提供了关于不同报表服务实现架构中可伸缩性的相关内容.也提供了一些基于使用Microsoft SQL Server Reporting Services完成您自己的性能测试的指导方针.建议和提示. 简介 Microsoft SQL Server Reporting Services是一个报表平台,包括可扩展和可管理的中央管理报表服务器和可扩展的基于Web.桌面的报表交付.报表服务是微软综合商业智能平台的重要组成部分.对于许多组织,通过报表来交付信息是一个非常重要的日常商务环节.因此,报表性

SQL Server 2005与DB2 8.2对比分析

本文对SQL Server 2005与DB2 8.2这两种数据库平台进行对比,结果显示在构建数据库应用程序时,使用SQL Server 2005(代码代号"Yukon")结合Visual Studio进行开发比使用DB2 UDB 8.2(代码代号"Stinger")结合Visual Studio有着显著的优势. 对比结果概述 本文中对两种数据库平台的对比结果显示了在构建数据库应用程序时,使用SQL Server 2005(代码代号"Yukon")