【SQL server】更新与删除
? ? ? ?SQLserver的更新与删除也是我们操作数据库的基本操作之一,对于基本的操作已经能够熟练的使用了,但是SQLserver是如此的强大,一定还有更多的更新和删除操作在之前的学习中我并没有去接触,同时学习也是一个不断重复的过程在每次回顾都会让我有更深的理解。下面就总结一下数据的更新和删除操作。 ? 更新 UPDATE [TOP] table_or_view SET {colunm_name=expresson|DEFAULT|NULL} [,…n] [FROM table_source] [where search_conditions]? ? ? ? ? 使用UPDATE语句应注意的的事项 ? ? ?? ? ? ? 1. where语句指定需要更新的行,SET子句指定新值 ? ? ? ? ? ? ?2.UPDATE无法更新标识列 ? ? ? ? ? ? ?3. 每次只能修改一个表中的数据, ? ? ? ? ? ? ?4. 可以同时把一列或多列、一个变量或者多个变量放在一个表达式中。(一个update语句中可以有多个Set语句,多个set语句之间用半角的逗号分隔。) ? ? ? ? ? ? ?5. From子句用来从其他表中更新数据。 ? ? ? ? ? 对数据库更新大致上额可以分为两部分内容,一个部分是根据本表的数据更新,一个是从其他表中的数据进行更新。下面分别举例说明 ? ? ? ? 从本表更新 ? ? ? ? ? (更新前的数据库) ? ? ? ? ? ? ? ?(执行的SQL语句)(这条SQL语句的意思是,更新班级ID为11的数据,将符合条件的数据的姓名改为“王五”,成绩改为“60”) ?(执行后的结果) ? ? ?? ? ? ? ? ?从其他表更新 ? ?(更新之前的数据库。因为是从其他表更新,这里涉及到了两张表) ? ? ? ? ? ? ?(执行的SQL语句) ? ? ? ? ?update student set score=score+5 where classID in (select classID from class where ClassType='高中') ? ? ? ? ?? ?这句话的意思是,从class表找到classType为“高中"的班级,将这个班级中的学习的成绩加5分。 ? ? ? ? ? ? ? ?(执行后的结果) ? ? ? ? ? ? ? ?TOP语句 ? ? ?使用TOP表达式可以指定要更新的行数或行数的百分比,TOP表达式可以用在SELECT,INSERT,UPDATE,DELETE语句中。 ? ? ? ? ?基本语法 ?? <span style="font-size:18px;"> </span><span style="font-size:24px;">TOP(expression)[PERCENT] [WITH TIES]</span> ? ? ?其中expression用来指定要返回的行数的数据表达式,with ties用来返回额外行数,select语句中只有指定了Order by语句后才能指定with ties语句。 ? ? ?下面说几个小例子。 ? ? ? ? ? <span style="font-size:24px;"></span><pre name="code" class="sql"> Updete top(10) 成绩表 set 成绩=成绩+10 ? ? ?这条SQL语句的意思是 从成绩表中的 ? ?对前10条记录中的成绩都加上10分。 ? ? ?
Updete top(10) PERCENT 成绩表 set 成绩=成绩+10 ? ? ?和上条语句多了一个单词,这句SQL语句的意思是对前10%的记录的成绩都加上10分。 ? ? 最后一个例子来说说with ties. ? ? 看这样一条SQL语句,这条语句要做的操作,就是按学生的成绩取出前四名。 ? ? ? ? ?然后我执行了这样一条语句 ? ? ? ? ? ? ? ? ?不是很难,取出了前四名的学生。但是,我们看一下我们的学生表 ? ? ? ? ? ? ? ? ? ? ? ? ?这里在第四名的位置上有一个并列的成绩,也就是说前四名的成绩其实是有五条数据的。显然这样的操作不是很合理 ? ? ?? ? ? ? ? 然后,with ties给了我们这个方便。看下面的例子。同样取的前四名,但这次查询到了五条数据。这就是with ties 的强大之处。 ? ? ? ?? ? ? ? ? ? 删除 ? ? ? ?使用删除,我们可以使用delete语句? ??
DELETE talbe_or_view FROM table_sources WHERE search_condition<strong> </strong> ? ? ? ? ? ?如果我们要删除表中的全部数据,可以使用如下的语句 TRUNCATE TABLE table_name? ? ? ? ? ?使用该语句可以快速删除表中的所有记录,而且无日志记录,只记录数据页的释放操作。这条语句执行的速度比使用delete去删除整个表,速度更快,事务日志资源更少。 ? ?? ? ? 总结 ? ? ? ? ?经常与数据库打交道,但是对数据库的操作和知识的了解,基本上停留在了基本的增删改查,就这每次写都要去看怎么写语句。加上上几篇的总结,又重新总结了一次增删改查,这次的收获真的很大。简单的增删改查,其中也有好多不知道的知识,而且这些我不知道的东西,都是有很大的使用性的。比如top语句with ties的使用。? ? ? ? ?知识就是不断的重复。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC UP
- sqlserver把行转成列
- SQLServer时间日期函数
- sql-server-2012 – SQL Server Management Studio 2012:如
- plsql – 哪里可以容纳PL / SQL常量?
- sql-server-ce – 在数据库中重置自动编号(Identity Field)
- sql-server-2008 – 可更新视图 – SQL Server 2008
- sqlserver中判断表或临时表是否存在
- SQLServer2005安装后,缺少“管理工具”的解决方法
- sqlserver2005 java连接驱动