SQLServlet数据库学习笔记(重难点)

合集下载

SQL Server —Sql Server学习笔记整理

SQL Server —Sql Server学习笔记整理

一、SQL Server 为什么要与CLR集成1、 SQL Server 提供的存储过程、函数等十分有限,经常需要外部的代码来执行一些繁重的移植;2、与CLR集成可将原本需要独立的程序来实现的功能迁移到SQL Server 内部进行数据操作;3、T-SQL数据查询语言在返回数据集方面很好,但是除此之外表现不佳。

与CLR 的集成可解决这一问题;4、.NET的操作代码和执行的速度比T-SQL快的很多。

.NET程序是已经编译好的二进制代码,而不是作为存储过程来构建,不再编译就直接可运行。

二、SQL Server 中的程序集(编译、添加、修改、删除)只有在添加了程序集后才能在该程序集的基础上建立CLR存储过程、CLR函数等。

1、CLR代码(编译)→DLL文件(注册)→SQL Server (作为数据库对象)→执行数据库操作过程如下:(1)将托管程序编写为一组类定义。

编写好代码后编译成一个DLL文件;存储过程、用户自定义函数、触发器的编写为类的静态方法;用户自定义类型、聚合函数编写为一个结构体。

(2)DLL文件上传SQL Server 磁盘上,并使用create assembly 将DLL程序集存储到系统目录;(3)创建SQL对象(函数、存储过程、触发器等)并将其绑定到程序集的入口点;存储过程:create procedure用户自定义函数:create function触发器:create trigger用户自定义类型:create type聚合函数:create aggregate(4)像使用T-SQL例程一样使用。

2、SQL Server 中的程序集(创建程序集并上载到SQL Server 实例然后创建数据库对象)(1)SQL Server 2008默认情况下禁用了CLR集成的功能,必需先启用CLR 集成后才能在SQL Server 访问.NET对象。

启用CLR集成exec sp_configure 'show advanced options','1';goreconfigure;goexec sp_configure 'clr enabled','1';//开启CLR集成goreconfigure;go解释(2)将DLL程序集添加到SQL Server 中。

SQLServer数据库基本知识点共11页文档

SQLServer数据库基本知识点共11页文档

SQL Server 数据库基本知识点一、数据类型二、常用语句(用到的数据库Northwind)查询语句简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。

它们分别说明所查询列、查询的表或视图、以及搜索条件等。

例如,下面的语句查询Customers 表中公司名称为“Alfreds Futterkiste”的ContactName字段和Address字段。

SELECT ContactName, AddressFROM CustomersWHERE CompanyName='Alfreds Futterkiste'(一) 选择列表选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。

1、选择所有列例如,下面语句显示Customers表中所有列的数据:SELECT *FROM Customers2、选择部分列并指定它们的显示次序查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。

例如:SELECT ContactName, AddressFROM Customers3、更改列标题在选择列表中,可重新指定列标题。

定义格式为:列标题as 列名列名列标题如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:SELECT ContactName as 联系人名称, Address as地址FROM Customers4、删除重复行SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。

使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。

SELECT DISTINCT(Country)FROM Customers5、限制返回的行数使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。

9.Servlet学习笔记

9.Servlet学习笔记

Servlet学习笔记Java相关课程系列笔记之九目录一、Servlet概述 (1)1.1 B/S架构(了解) (1)1.2什么是Servlet (1)1.3什么是Tomcat (2)1.4如何写一个Servlet(不使用开发工具) (3)1.5使用MyEclipse开发Servlet (5)1.6 Servlet是如何运行的 (6)1.7常见错误及解决方式 (6)1.8案例:根据请求次数显示结果和显示当前时间 (7)二、HTTP协议 (8)2.1什么是HTTP协议 (8)2.2通讯的过程 (8)2.3数据格式 (8)2.4 TCP/IP Monitor的使用 (9)2.5 get请求与post请求 (9)2.6如何读取请求参数 (9)2.7访问数据库(MySql) (10)2.8案例:添加员工(访问MySql数据库) (10)2.9异常:IllegalStateException (11)三、编码问题 (12)3.1 Java语言在内存当中默认使用的字符集 (12)3.2编码 (12)3.3解码 (12)3.4 Servlet如何输出中文 (12)3.5如果表单有中文参数值,也需要注意编码问题 (12)3.6案例:根据请求正确显示中文 (12)3.7将中文数据插入到数据库 (13)四、重定向 (14)4.1什么是重定向 (14)4.2如何重定向 (14)4.3注意两个问题 (14)4.4两个特点 (14)4.5重定向原理图:以2.8案例为例 (14)五、DAO (15)5.1什么是DAO (15)5.2如何写一个DAO (15)5.3工厂类 (15)六、工厂设计模式 (16)6.1什么是工厂 (16)6.2使用工厂设计模式的好处 (16)6.3如何使用工厂模式 (16)6.4案例:为2.8案例添加新功能,并使用DAO和工厂模式 (16)1七、Servlet容器处理细节 (19)7.1 Servlet容器如何处理请求资源路径以及匹配 (19)7.2一个Servlet如何处理多种请求 (19)八、Servlet的生命周期 (20)8.1 Servlet的生命周期的含义 (20)8.2 Servlet生命周期的四个阶段 (20)8.3实例化 (20)8.4初始化 (20)8.5就绪 (20)8.6销毁 (21)8.7 Servlet生命周期图 (21)8.8 Servlet生命周期相关的几个接口与类 (21)九、JSP(简要介绍,详细内容见JSP笔记) (23)9.1什么是JSP (23)9.2为什么要使用JSP (23)9.3 JSP与Servlet的关系 (23)9.4如何写一个JSP文件 (23)9.5 JSP是如何运行的 (23)9.6指令 (24)9.7案例:创建emplist.jsp页面,将表示逻辑交给JSP处理 (24)十、请求转发 (26)10.1什么是转发 (26)10.2如何转发 (26)10.3编程需要注意的两个问题 (26)10.4转发原理图 (26)10.5转发的特点 (27)10.6转发和重定向的区别 (27)10.7何时用重定向 (27)10.8何时用转发 (27)10.9案例:修改6.4案例中step7中的ListEmpServlet.java (28)十一、异常的处理 (30)11.1用输出流out (30)11.2用转发的方式 (30)11.3让容器处理系统异常 (30)11.4案例:将10.9案例中的step3中的所有catch块修改 (30)十二、路径问题 (31)12.1什么是相对路径 (31)12.2什么是绝对路径 (31)12.3如何写绝对路径 (31)12.4如何防止硬编码 (31)12.5案例:相对、绝对路径对比 (31)12.6四种情况下,正确的绝对路径写法 (32)十三、状态管理 (33)13.1什么是状态管理 (33)213.3 cookie (33)13.4如何创建一个cookie (33)13.5查询cookie (33)13.6编码问题 (34)13.7 cookie的生存时间 (34)13.8 cookie的路径问题 (34)13.9 cookie的限制 (35)13.10案例:写一个CookieUtil (35)13.11 session(会话) (36)13.12如何创建一个session对象 (36)13.13 HttpSession接口中提供的常用方法 (36)13.14 session的超时 (37)13.15用户禁止cookie以后,如何继续使用session (37)13.16 url重写 (37)13.17 session的优点 (37)13.18 session的缺点 (38)13.19案例:session验证和访问次数 (38)13.20案例:验证码 (39)13.21案例:购物车 (41)十四、过滤器 (45)14.1什么是过滤器 (45)14.2如何写一个过滤器 (45)14.3案例:敏感字过滤器 (45)14.4过滤器的优先级 (46)14.5初始化参数 (47)14.6优点 (47)十五、监听器 (48)15.1什么是监听器 (48)15.2容器会产生两大类事件 (48)15.3如何写一个监听器 (48)15.4 ServletContext(Servlet上下文) (48)15.5如何获得Servlet上下文 (48)15.6 Servlet上下文的作用 (48)15.7案例:统计在线人数 (49)十六、上传文件 (51)16.1如何上传文件 (51)16.2案例:上传文件 (51)十七、Servlet线程安全问题 (53)17.1为何Servlet会有线程安全问题 (53)17.2如何处理线程安全问题 (53)十八、Servlet小结 (54)18.1 Servlet基础 (54)18.2 Servlet核心 (54)318.4数据库访问 (54)18.5过滤器和监听器 (54)18.6典型案例和扩展 (54)十九、其他注意事项 (55)19.1连接数据库的工具 (55)19.2知名网站 (55)19.3 C/S架构:Client/Server (55)19.4 B/S架构:Browser/Server (56)4一、Servlet概述1.1 B/S架构(了解)1)什么是B/S架构客户端使用浏览器,服务端使用web浏览器,客户端跟服务器之间使用HTTP协议进行通讯。

Servlet学习笔记(一)

Servlet学习笔记(一)

Servlet学习笔记(一)1.一个Servlet程序就是一个实现了特殊接口的Java类,它由支持servlet(具有servlet引擎)的web服务器调用和启动运行。

一个Servlet程序负责处理它所对应的一个或一组url地址的访问请求,并接收客户端发出的访问请求信息和产生响应内容。

2.所有的servlet(自定义的)都必须实现servlet接口(javax.servlet.Servlet)。

由于Servlet接口中有很多方法不需要实现,因此可以继承GenericServlet类。

GenericServlet实现了servlet接口的基本特征和功能。

javax.servlet.http.HTTPServlet类继承了GenericServlet类,并在其基础上进行了一些对HTTP 协议的扩充。

3.客户端每次访问一个支持HTTP的Servlet程序时,Servlet引擎都将调用Servlet的service 方法来进行处理。

HTTPServletRequest用于封装HTTP请求,HTTPServletResponse用于封装HTTP响应。

HTTPServletResponse对象的getWrite()方法可以获得一个文本输出流对象。

其内容可以作为响应消息的内容。

4.Servlet的注册与运行:(1).Servlet程序必须通过Servlet引擎来启动运行,并且存储目录有特殊要求,通常需要存储在<Web应用程序>/WEB-INF/classes/目录中。

(2).Servlet程序必须在Web应用程序的web.xml文件中进行注册和映射其访问路径,才可以被servlet引擎加载和被外界访问。

(3).<servlet>元素用于注册一个servlet。

<servlet-name>用于设置注册名,<servlet-class>用于设置servlet的完整路径。

servlet笔记2

servlet笔记2

1,什么是Servlet2,Servlet有什么作用3,Servlet的生命周期4,Servlet怎么处理一个请求5,Servlet与JSP有什么区别6,Servlet里的cookie技术7,Servlet里的过滤器8,Servlet里的监听器Servlet由来做过BS项目的人都知道,浏览器能够根据HTML静态标记语言来显示各式各样的网页。

但是如果我们需要在网页上完成一些业务逻辑:比如登陆验证。

或者说网页显示的内容在服务器的数据库中。

如果是这样,除了负责显示的HTML标记之外,必须还要有完成这些业务功能的代码存在。

这种网页我们就叫做动态网页。

对于静态网页而言,服务器上存在的是一个个纯HTML文件。

当客户端浏览器发出HTTP请求时,服务器可以根据请求的URL找到对应的HTML文件,并将HTML代码返回给客户端浏览器。

但是对于动态网页,服务器上除了找到需要显示的HTML标记外,还必须执行所需要的业务逻辑,然后将业务逻辑运算后的结果和需要显示的HTML标记一起生成新的HTML代码。

最后将新的带有业务逻辑运算结果的HTML代码返回给客户端。

为了实现动态网页的目标,JavaServlet技术因应而生,它能够以一种可移植的方法来提供动态的、面向用户的内容。

简单来说:servlet是在服务器上运行的小程序。

Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容,是为web开发服务的。

一,什么是Servlet?Servlet是一个Java编写的程序,此程序是基于Http协议的,在服务器端运行的(如tomcat),是按照Servlet规范编写的一个Java类。

二,Servlet有什么作用?主要是处理客户端的请求并将其结果发送到客户端。

三,Servlet的生命周期?Servlet的生命周期是由Servlet的容器来控制的,它可以分为3个阶段;初始化,运行,销毁。

初始化阶段:1,Servlet容器加载servlet类,把servlet类的.class文件中的数据读到内存中。

sqlserver笔记整理

sqlserver笔记整理

SQL Server 笔记整理一、创建表使用 `CREATE TABLE` 语句创建表,语法如下:```sqlCREATE TABLE 表名 (列名1 数据类型 [约束],列名2 数据类型 [约束],...);```其中,`表名` 是要创建的表的名称,`列名` 是表的列的名称,`数据类型` 是列的数据类型,`约束` 是可选的约束条件。

例如,创建一个名为 `Employees` 的表,包含 `ID`、`Name`、`Age` 和 `Salary` 四个列,数据类型分别为 `int`、`varchar(50)`、`int` 和 `decimal(10,2)`,并添加主键约束:```sqlCREATE TABLE Employees (ID int PRIMARY KEY,Name varchar(50),Age int,Salary decimal(10,2));二、数据类型SQL Server 支持多种数据类型,包括整数类型、浮点数类型、定点数类型、字符串类型、日期类型、二进制类型等。

具体如下:* 整数类型:如 `int`、`bigint` 等。

* 浮点数类型:如 `real`、`float` 等。

* 定点数类型:如 `numeric`、`decimal` 等。

* 字符串类型:如 `char`、`varchar` 等。

* 日期类型:如 `datetime`。

* 二进制类型:如 `varbinary`。

* 逻辑类型:如 `bit`。

在创建表时,需要指定列的数据类型,以便正确存储数据。

同时,也可以通过约束来定义列的其他属性,例如主键约束(确保列的唯一性)、默认值约束(为列设置默认值)等。

三、删除表使用 `DROP TABLE` 语句删除表,语法如下:```sqlDROP TABLE 表名;```例如,删除名为 `Employees` 的表:```sqlDROP TABLE Employees;四、添加和删除约束约束用于限制表中的数据,确保数据的完整性和准确性。

SQL SERVER数据库教学中的难点解析

SQL SERVER数据库教学中的难点解析

SQL SERVER数据库教学中的难点解析摘要:sql server数据库的安全性通过创建登录帐号、创建用户、对象授权带实现,要想能对sql server数据库中数据的增(插入)、删(删除)、改(更新)、查(查询),必须经过这三关。

sql server 数据库中的update、insert、deltete触发器实质就是在特定条件下自动执行的存储过程。

触发器的级联可导致骨牌效应。

关键词:sql server;登录帐号;用户;触发器sql server数据库在今天已经广泛使用,高校数据库教学中也从当初的vfox,acsses等改为讲授sql server。

sql server数据库是一门操作性、实用性很强的课程,一些概念性的问题会困扰学生,直接影响到学生的学习兴趣和老师的教学效果。

在教学过程中我们可以采用一些形象的比喻,结合应当的操作来帮助学生克服这些困难,理解难点。

我在sql server数据库的多年讲授过程中,感觉到学生对sql server数据库的安全性及触发器是难点,我在教学中采用一些形象化的比喻使这些晦涩的概念深入浅出,收到了较好的教学效果。

一、sql server数据库的安全性1.第一关,登录账号转号和用户关系数据库的安全性是指保护数据库以防止不合法的使用而造成的数据泄露、更改或破坏。

sql server数据库是一个非常安全的数据库,由于客户端如果想对数据库里的数据进行操作(select、insert、delete等),就必须经历登录验证、数据库验证、对象权限三道门检查。

在登录验证中就会涉及登录帐号和用户关系。

这是学生们难理解的概念之一。

我们用系统安装时自带的sa(拥有数据库所有操作权限的超级用户)登录到某sql server服务器后,在该数据库的安全节点上就可创建登录帐号,然后用该登录帐号又可创建用户。

同一个登录帐号可在不同的数据库下拥有多个不同的用户。

登录帐号名在整个sql server数据系统中是不可同名的,每个登录帐号都有自己的密码,以确保数据的安全性。

servlet笔记

servlet笔记

MyEclipse 和 Eclipse中Servlet的区别: Eclipse中 doget() dopost() 默认的构造器 4.Servlet中实用的几个对象:五大神器与jsp的九大内置对象没有区别 httpservletRequest :是由Tomcat给实例化的(ps:页面上的request 也是由Tomcat实例化的) HttpservletRequest和jsp页面上的request是 一样的 httpserveltResponse:HttpservletResponse和jsp页面上的 response是一样的 httpsession : httpsession = session ,不同在于 session是内置 对象,可以直接使用 而 httpsession 的获得方式为:HttpSession session=request.getsession(); 因为pagecontext的生命周期只存在于jsp页面中,所以 pagecontext对象是jsp独有的 servletContext: servletContext = application 只是在servlet中 叫法不一样 Cookie:就是我们本地的一个文件,用来记录我们浏览器的一些信息 将我们的信息写入到cookie中去 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); String login=request.getParameter("login"); System.out.println(login); String username=request.getParameter("username"); String password=request.getParameter("password"); System.out.println(username); System.out.println(password); if(login.equals("login")){ Cookie cookie=new Cookie("username",username); Cookie cookie2=new Cookie("password",password); System.out.println(cookie.getValue()); System.out.println(cookie2.getValue()); cookie.setMaxAge(60*60*24*14); cookie2.setMaxAge(60*60*24*14); response.addCookie(cookie); response.addCookie(cookie2);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

创建登录用户(1)添加windows身份验证登录账户的语法为:EXEC sp_grantlogin ‘windows 域名\域账户’实例如下:创建用户的步骤如下:在我的电脑上单击右键—>单击管理—>出现如下界面:创建用户后就可以执行语句了由于我的电脑上的域名改为了‘覃成成’(2)添加SQL身份验证登录账户的语法EXEC sq_ADDlogin ‘账户名’,‘密码’实例如下:创建SQL身份验证登录账户用户名为‘haha’,密码为’1309014752’(3)删除SQL身份验证登录账户的语法为:EXEC sq_droplogin’账户名’删除SQL身份验证登录账户‘haha’EXEC sp_droplogin'haha'使用扩展存储过程:xp_cmdshell中启用xp_cmdshell的方法如果为启用xp_cmdshell则会出现如下错误:启用xp_cmdshell的方法如下:如果不使用事务则会出现以下错误:由于转账过程中,出现了张三余额为0,违反了余额约束在>=1,正确的应该是转账不成功,张三和李四的余额仍为以前的余额,张三:1000元,李四1元使用事务:begin transaction --开始事务declare @errorsum intset @errorsum=0--转账:张三的账户少元,李四的账户多元update bank set currentMoeny=currentMoeny-1000where customerName='张三'set @errorsum=@errorsum+@@error--错误进行累计,如果@errorsu=0就表示没有错误update bank set currentMoeny=currentMoeny+1000where customerName='李四'set @errorsum=@errorsum+@@errorif @errorsum<>0beginprint'交易失败,回滚事务'rollback transaction--当出现错误时,就回滚到开始事务时,数据都恢复到开始事务时endelsebeginprint'交易成功,提交事务'commit transaction--当没有错误时,就提交事务,执行SQL语句endgoprint'查看转账事务后的余额'select*from bankgo执行的结果如下:如果出现以下错误表示当执行多条语句时,未加上go进行批处理1.使用语句创建数据库,创建主数据文件和日志文件的属性为5个--主数据(日志)名(逻辑名)--主数据文件存储的位置(物理名)--主数据文件的初始大小--主数据文件的最大大小--主数据文件的增长率2.在数据库中打印文字if exists(select * from sysdatabases where name='xp9') --该语句的含义为如果在数据库中已经存在xp9的话,则删除数据库xp9begindrop database xp9print '删除数据库xp9成功'endgo--其中begin的含义相当于if语句中的‘{’,而其中的end的含义相当于if语句中的‘}’--要想在数据库中打印出文字则只需要使用print关键字即可3.数据库文件的组成主数据文件:*.mdf次要数据文件:*.ndf日志文件:*.ldf4.数据库其他的属性:文件存放位置,分配的初始空间,属于哪个文件组文件增长:可以按百分比或实际大小指定增长速度文件容量设置:可以指定文件增长的最大值或不受限制5.使用语句创建数据库代码如下:create database xp9on primary(name='stuDB_data',--主数据文件名(逻辑名)filename='D:\project\stuDB_data.mdf', --主数据文件存储的位置(物理名)size=5mb,--主数据文件的初始大小maxsize=100, --主数据文件的最大的大小filegrowth=15% --主数据文件的增长率)log on(name='stuDB_log', --主日志文件名(逻辑名)filename='D:\project\stuDB_log.ldf',--主日志文件存储的位置(物理名)size=1mb, --主日志文件的初始大小maxsize=10mb, --主日志文件的最大的大小filegrowth=10% --主日志文件的增长率)go6.删除数据库--drop database 数据库名--实例如下use master --设置当前数据库为master,以便访问sysdatabases表goif exists(select * from sysdatabases where name='xp9') --该语句的含义为如果在数据库中已经存在xp9的话,则删除数据库xp9begindrop database xp9print '删除数据库xp9成功' --要想在数据库中打印文本,则只需要使用print关键字即可endgo7.创建多日志和多主文件的数据库create database xp9on primary(name='stuDB_data',filename='D:\project\stuDB_data.mdf',size=3mb,maxsize=100mb,filegrowth=15%),(name='stuDB_data1',filename='D:\project\stuDB_data1.mdf',size=3mb,maxsize=100mb,filegrowth=15%)log on(name='stuDB_log',filename='D:\project\stuDB_log.ldf',size=1mb,maxsize=10mb,filegrowth=10%),(name='stuDB_log1',filename='D:\project\stuDB_log1.ldf',size=1mb,maxsize=10mb,filegrowth=10%)--注意点:创建多主文件的方法就是在主文件的后面加上一个逗号8.char(6),varchar(10),nchar(10)三则之间的区别char(6)固定长度即长度为6个字符,不管该数据是否有6个字符,都是占6个字符,如一个汉字实际占2个字符,但是使用char(6)类型修饰后,则该汉字占6个字符varchar(10)可变长度,即最大长度为10个字符,如一个汉字则占2个字符,并且数据长度不能超过10字符长度nchar(10)8.创建表的基本步骤:确定表中有哪些列确定每列的数据类型给表添加各种约束创建各表之间的关系具体代码如下:格式如下:create table 表名(列名1 列的数据类型是否允许为空,列名2 列的数据类型是否允许为空,列名3 列的数据类型是否允许为空,)gocreate table stuInfo(stuid int identity(1000,1) not null, --种子标识,从1000开始,增长量为1 stuname varchar(20) not null,stusex nchar(1) not null,stuage int not null,stuemail varchar(50),stutel varchar(20),stuaddress varchar(100))go9.为表添加约束(1)添加约束的语法为:alter table 表名add constraint 约束名约束类型具体的约束说明(2)具体的实例如下:alter table stuinfo --主键约束add constraint PK_stuinfo_stuid primary key(stuid)alter table stuinfo --检查约束add constraint CH_stuinfo_stusex check(stusex='男' or stusex='女')alter table stuinfo --检查约束add constraint CH_stuinfo_stuage check(stuage between 18 and 60)alter table stuinfo --默认约束add constraint DF_stuinfo_stusex default('男') for stusexalter table stuinfo --唯一约束add constraint UQ_stuinfo_stuname unique(stuname)alter table stuinfoadd constraint CH_stuinfo_stuemail check(stuemail like '%@%')alter table stymarksadd constraint CH_stymarks_labexam check (labexam between 0 and 100)添加外键约束:`alter table stymarks --外键约束add constraint FK_stuinfo_stymarks_stuid foreign key(stuid) references stuinfo(stuid)10.删除约束:(1)删除约束的语法为:alter table 表名drop constraint 约束名(2)实例如下:alter table stuinfo --删除学生的唯一约束drop constraint UQ_stuinfo_stuname --使用创建唯一约束时的约束名来删除约束11.删除表(1)语法为:drop table 表名创建表时首先要判断表是否存在,如果不存在则如果执行创建表语句,使用实例如下:use stuDBgoif exists(select * from sysobjects where name='stuinfo')drop table stuinfo --判断表是否已经存在,如果存在则删除,不存在则创建create table stuinfo()go12.新建一个SQL账户(三道权限)--1.新建登录用户,可以打开SQL数据库,但是不能打开数据库exec sp_addlogin 'hxh','12323'--2.新建数据库用户,可以打开指定的数据库--在数据库xp9中新建数据库xp9用户,xunpo_db_aaa,可以打开xp9数据库,但是不能打开xp9数据库中的表第三章1.使用语句创建数据库,创建主数据文件和日志文件的属性为5个--主数据(日志)名(逻辑名)--主数据文件存储的位置(物理名)--主数据文件的初始大小--主数据文件的最大大小--主数据文件的增长率2.在数据库中打印文字if exists(select * from sysdatabases where name='xp9') --该语句的含义为如果在数据库中已经存在xp9的话,则删除数据库xp9begindrop database xp9print '删除数据库xp9成功'endgo--其中begin的含义相当于if语句中的‘{’,而其中的end的含义相当于if语句中的‘}’--要想在数据库中打印出文字则只需要使用print关键字即可3.局部变量--局部变量的名称必须以标记@作为前缀--声明局部变量的语句为:declare @变量名变量类型如:declare @num1 int--局部变量赋值有两种方法:使用set语句或select语句如:set @varible_name=value 或select @variable_name=value综合实例:根据座位号查找李文才的左右同桌/*--查找李文才的信息--*/declare @name varchar(8) --学员姓名set @name='李文才' --使用set赋值set * from stuinfo where stuname=@name/*--查找李文才的左右同桌--*/declare @seat int --座位号select @seat=stuseat from stuinfo where stuname=@name --使用select赋值select * from stuinfo where(stuseat=@seat+1)or(stuseat=@seat-1)go4.全局变量SQL Server中的所有全局变量都使用两个@标志作为前缀常用的全局变量@@error 最后一个T-SQL错误的错误号@@identity 最后一次插入的标识值@@language 当前使用的语言的名称@@max_connections 可以创建的同时连接的最大数目@@rowcount 受上一个SQL语句影响的行数@@servername 本地服务器的名称@@servicename 该计算机上的SQL服务的名称@@timeticks 当前计算机上每刻度的微秒数@@transcount 当前连接打开的事务数@@version SQL Server 的版本信息5.输出语句有两种:print 局部变量或字符串select 局部变量as自定义列名实例:print '服务器的名称'+ @@servernameselect @@servername as '服务器名称'注意print和select的区别用print方法输出结果将在消息窗口以文本的方式显示,用select方法结果将在网格窗口以表格方式显示6.if-else 条件语句语法:if(条件)语句或语句块else语句或语句块语句块使用begin...end表示if(条件)begin语句1语句2endelse使用实例如下:declare @avg floatselect @avg=avg(writexam) from stymarks --为声明的变量赋值if(@avg>70)beginprint '成绩优秀'select top 3 * from stymarks order by writexam descendelsebeginprint '本班成绩较差'select top 3 * from stymarks order by writexam ascend7.while 循环语句语法:while(条件)语句或语句块break或while(条件)begin语句1语句2breakendbreak表示退出循环,如果有多条语句,才需要begin-end语句块使用实例如下:--本次考试成绩较差,如果有一个人的笔试没有通过,则所有人的笔试都加2分--方法一:declare @minWritExam intselect @minWritExam=min(writexam) from stymarkswhile(@minWritExam<60)beginupdate stymarks set writexam=writexam+2 --这里必须使用更新set @minWritExam=@minWritExam+2 --注意要想对局部变量赋值,只能有两种方法set或selectendselect * from stymarks--方法二:--1.找出没有通过的人数declare @sum intselect @sum=count(writexam) from stumarks where writexam<60--2.如果存在没有通过的人,那么就要提分declare @sum intwhile(1=1)beginselect @sum=count(*) from stymarks where writexam<60if(@sum>0)update stymarks set writexam=writexam+2elsebreakend8.case多分支语句语法:casewhen 条件1 then 结果1when 条件2 then 结果2else 其他结果end实例如下:--case...end 分支语句--使用ABCDE来给机试成绩分等级select *,平均成绩=(writexam+labexam)/2,等级评定=casewhen (writexam+labexam)/2>90 then 'A'when (writexam+labexam)/2>80 then 'B'when (writexam+labexam)/2>70 then 'C'when (writexam+labexam)/2>60 then 'D'else 'E'endfrom stymarks9.批处理语句--go批处理语句SQLServer 规定:如果是建库,建表语句,以及存储过程和视图等,必须在语句末尾添加‘GO'批处理标志--goto跳转if(2>1)beginprint '第一条语句'lab: --标记print '第二条语句'goto labprint '第三条语句'end10.retrun :可以在任意位置使用return从语句块或过程中退出,系统将不会执行return语句之后的语句语法:return [值为整数的表达式]11.GOTO语句GOTO语句可以是程序直接跳到指定的标有标识符的位置处继续执行,而位于GOTO语句和标识符之间的程序将不会被执行。

相关文档
最新文档