update或delete语句忘带了where子句

update或delete语句忘带了where子句

update或delete语句忘带了where子句,或where子句精度不够,执行之后造成了严重的后果,这种情况的数据恢复只能利用事务日志的备份来进行,所以如果你的SQL没有进行相应的全库备份或不能备份日志(truncate log on checkpoint选项为1),那么就无法进行数据的恢复了,或者只能恢复到最近一次的备份的数据了。

以下简单说明恢复数据方法:

1,如果误操作之前存在一个全库备份(或已有多个差异备份或增量备份),首先要做的事就是进

进行一次日志备份(如果为了不让日志文件变大而置trunc. log on chkpt.选项为1那你就死翘了)backup log dbName to disk='fileName'

2,恢复一个全库备份,注意需要使用with norecovery,如果还有其他差异或增量备份,则逐个恢复

restore database dbName from disk='fileName' with norecovery

3,恢复最后一个日志备份即刚做的日志备份,指定恢复时间点到误操作之前的时刻

restore log dbName from disk='fileName'

with stopat='date_time'

以上这些操作都可以在SQL SERVER企业管理器里完成,难度不大。。。

当然,如果误操作是一些不记日志的操作比如truncate table,select into等操作,那么是无法利用上述方法来恢复数据的...

Update中的From语句

Oracle\MS SQL Server的数据库多表关联更新UPDATE与多表更新【原】 一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新。而表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据。我们先来讨论根据其他表数据更新你要更新的表 一、MS SQL Server 多表关联更新 sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来。虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就可以在update的表达式中引用要更新的表以外的其它数据。 一般形式: update A SET 字段1=B表字段表达式, 字段2=B表字段表达式 from B WHERE 逻辑表达式 例如: UPDATE dbo.Table2 SET dbo.Table2.ColB = dbo.Table2.ColB + dbo.Table1.ColB FROM dbo.Table2 INNER JOIN dbo.Table1 ON (dbo.Table2.ColA = dbo.Table1.ColA); 实际更新的操作是在要更新的表上进行的,而不是在from子句所形成的新的结果集上进行的 二、Oracle 多表关联更新 Oracle没有update from语法,可以通过两种实现方式: 1、利用子查询: update A SET 字段1=(select 字段表达 式 from B WHERE ...), 字段2=(select 字段表达式 from B WHERE ...) WHERE 逻辑表达式 UPDATE多个字段两种写法:

数据库增删改查基本语句

数据库增删改查基本语句 adoquery1.Fielddefs[1].Name; 字段名 dbgrid1.columns[0].width:=10; dbgrid的字段宽度 adoquery1.Fields[i].DataType=ftString 字段类型 update jb_spzl set kp_item_name=upper(kp_item_name) 修改数据库表中某一列为大写select * from master.dbo.sysobjects ,jm_https://www.360docs.net/doc/4a4458122.html,ers 多库查询 adotable1.sort:='字段名称ASC' adotable排序 SQL常用语句一览 sp_password null,'新密码','sa' 修改数据库密码 (1)数据记录筛选: sql="select * from 数据表where 字段名=字段值orderby 字段名[desc] " sql="select * from 数据表where 字段名like '%字段值%' orderby 字段名[desc]" sql="select top10 * from 数据表where 字段名orderby 字段名[desc]" sql="select * from 数据表where 字段名in('值1','值2','值3')" sql="select * from 数据表where 字段名between 值1 and 值2" (2)更新数据记录: sql="update 数据表set 字段名=字段值where 条件表达式" sql="update 数据表set 字段1=值1,字段2=值2……字段n=值n where 条件表达式" (3)删除数据记录: sql="delete from 数据表where 条件表达式" sql="delete from 数据表"(将数据表所有记录删除) (4)添加数据记录: sql="insert into 数据表(字段1,字段2,字段3…) values(值1,值2,值3…)" sql="insert into 目标数据表select * from 源数据表"(把源数据表的记录添加到目标数据表)

面试数据库常用操作语句

数据库复习资料准备 1、创建/删除数据库:Create/ Drop database name 2、创建新表:Create table name(id int not null primary key, name char(20)) // 带主键 Create table name(id int not null, name char(20), primary key (id, name)) // 带复合主键Create table name(id int not null default 0, name char(20)) // 带默认值 3、删除表:Drop table name 4、表中添加一列:Alter table name add column size int 5、添加/删除主键:Alter table name add/drop primary key(size) 6、创建索引:Create [unique] index idxname on tabname(col) 7、删除索引:Drop index idxname 8、选择:Select *from table where 范围 9、删除重复记录Delete from name where id not in (select max(id) from name group by col1) 10、插入:Insert into table(field1, field2) values (value1, value) 11、删除:Delete from table where 范围 12、更新:Update table set field=value where 范围 13、查找:Select *from table where field like “” 14、排序:Select *from table order by field [desc] 15、总数:Select count as totalcount from table 16、求和:Select sum(field) as sumvalue from table 17、平均:Select avg(field) as avgvalue from table 18、最大:Select max(field) as maxvalue from table 19、最小:Select min(field) as minvalue from table 20、复制表:Select * into b from a where 范围Select top 0 * into b from a where 范围 21、拷贝表:Insert into b(a, b, c) select d,e,f from b; 22、子查询: select ename from emp where deptno=(select deptno from dept where loc='NEW');// 单查询select ename from emp where deptno in (select deptno from dept where dname like 'A%');// 多行子查询 select deptno,ename ,sal from emp where (deptno,sal) IN (select deptno,MAX(sal) from emp group by deptno);// 多列子查询 23、外连接查询:Select a.a, a.b, a.c, b.c, b.d, b.f from a left out join b on a.a = b.c 24、between用法:Select a,b,c, from table where a not between 数值1 and 数值2 25、in用法:select * from table1 where a [not] in (‘值1’,‘值2’,‘值4’,‘值6’) 26、两张关联表,删除主表中在副表中没有的信息:delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1) 27、日程提前五分钟提醒:select * from 日程where datediff(‘minute‘,f开始时间,getdate())>5 28、前10条记录:select top 10 * form table1 where 范围 29、包括所有在TableA 中但不在TableB和TableC 中的行:select a from tableA except (select a from tableB) except (select a from tableC) 30、随机取出10条数据:select top 10 * from tablename order by newid() 31、列出数据库里所有的表名:select name from sysobjects where type=‘U’ 32、列出表里的所有的字段:select name from syscolumns where id=object_id(‘TableName’)

数据更新(二)

【知识点】 3、删除语句 (1)DELETE [FROM] <表名> [WHERE <删除条件>] (2)TRUNCATE TABLE <表名> 区别: (1)TRUNCATE TABLE 在功能上与不带WHERE 子句的DELETE 语句相同:二者均删除表中的全部行。 (2)TRUNCATE TABLE 比DELETE 速度快,且使用的系统和事务日志资源少。 DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。 TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。 比较:TRUNCATE、DELETE、DROP TRUNCATE TABLE:删除内容不删除定义、释放空间。 DELETE :删除内容不删除定义,不释放空间。 DROP TABLE:删除内容和定义,释放空间 4、子查询在INSERT、UPDATE、DELETE语句中的应用 例: 1、统计选修了课程的每个学生的平均成绩并插入空表stuMarks_temp中(表中有二个字段:学号stuNo,平均成绩avg_stuScore)。 INSERT INTO stuMarks_temp(stuNo,avg_stuSCore) SELECT stuNo,AVG(stuScore) FROM stuMarks GROUP by stuNo 2、把所有女生的选修成绩都加5分 UPDATE stuMarks SET stuScore=+5 WHERE stuNo IN(SELECT stuNo FROM stuInfo WHERE stuSex=’女’) 3、删除‘李明’的所有选修记录(假设没有同名情况) DELETE stuMarks WHERE stuNo IN(SELECT stuNo FROM stuInfo WHERE stuName=’李明’) 【课堂实践】 1.将“李勇”同学的专业改为“计算机信息管理”(假设只有一个“李勇”) 2.将“20050201”学生选修“C03”号课程的成绩改为该课的平均成绩 3.把成绩低于总平均成绩的女同学的成绩提高5% 4.把选修了“数据库”课程而成绩不及格的学生的数据库课成绩全改为空值(NULL) 5.删除学号为“20050302”的学生记录(注意删除顺序!) 6.删除“计算机系”所有学生的选课记录 7.删除SC表中还没有成绩的选课记录 8.把“刘晨”同学的成绩全部删除(假设只有一个“刘晨”)

SQL常用语句,子查询整理

SQL常用语句,子查询整理 一、SQL子查询语句 1、单行子查询 select ename,deptno,sal from emp where deptno=(select deptno from dept where loc='NEW YORK'); 2、多行子查询 SELECT ename,job,sal FROM EMP WHERE deptno in ( SELECT deptno FROM dept WHERE dname LIKE 'A%'); 3、多列子查询 SELECT deptno,ename,job,sal FROM EMP WHERE (deptno,sal) IN (SELECT deptno,MAX(sal) FROM EMP GROUP BY deptno); 4、内联视图子查询 (1)SELECT ename,job,sal,rownum FROM (SELECT ename,job,sal FROM EMP ORDER BY sal); (2)SELECT ename,job,sal,rownum FROM ( SELECT ename,job,sal FROM EMP ORDER BY sal) WHERE rownum<=5; 5、在HA VING子句中使用子查询 SELECT deptno,job,A VG(sal) FROM EMP GROUP BY deptno,job HA VING A VG(sal)>(SELECT sal FROM EMP WHERE ename='MARTIN'); 6、内连接左连接右连接举例; select sys_https://www.360docs.net/doc/4a4458122.html,er_id ,sys_https://www.360docs.net/doc/4a4458122.html,er_code from sys_user inner join XZFW_BANJIE on sys_https://www.360docs.net/doc/4a4458122.html,er_id=XZFW_https://www.360docs.net/doc/4a4458122.html,erid 小例子: select top 10 * from sys_user where user_code not in (select user_code from sys_user where user_code like '%yzj%') select top 2 * from (select top 2 * from https://www.360docs.net/doc/4a4458122.html,ers order by us_username desc) users order by us_username desc

执行一条sql语句update多条记录实现思路

执行一条sql语句update多条记录实现思路 如果你想更新多行数据,并且每行记录的各字段值都是各不一样,怎么办? 通常情况下,我们会使用以下SQL语句来更新字段值: UPDATE mytable SET myfield='value' WHERE other_field='other_value'; 但是,如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?举个例子,我的博客有三个分类目录(免费资源、教程指南、橱窗展示),这些分类目录的信息存储在数据库表categories中,并且设置了显示顺序字段 display_order,每个分类占一行记录。如果我想重新编排这些分类目录的顺序,例如改成(教程指南、橱窗展示、免费资源),这时就需要更新categories表相应行的display_order字段,这就涉及到更新多行记录的问题了,刚开始你可能会想到使用循环执行多条UPDATE语句的方式,就像以下的php 程序示例: ? 1 2 3 4 5 foreach ($display_order as $id => $ordinal) { $sql="UPDATE categories SET display_order = $ordinal WHERE id = $id"; mysql_query($sql); } 这种方法并没有什么任何错误,并且代码简单易懂,但是在循环语句中执行了不止一次SQL 查询,在做系统优化的时候,我们总是想尽可能的减少数据库查询的次数,以减少资源占用,同时可以提高系统速度。 幸运的是,还有更好的解决方案,下面列举两种常用的方案只不过SQL语句稍微复杂点,但是只需执行一次查询即可,语法如下: ? 1 2 3 4 5 6 7 8 ?第一种:IF--THEN语句结合UPDATE mytable SET myfield = CASE other_field WHEN 1 THEN 'value' WHEN 2 THEN 'value' WHEN 3 THEN 'value' END

数据库基本----sql语句大全

学会数据库是很实用D~~记录一些常用的sql语句...有入门有提高有见都没见过的...好全...收藏下... 其实一般用的就是查询,插入,删除等语句而已....但学学存储过程是好事...以后数据方面的东西就不用在程序里搞喽..而且程序与数据库只要一个来回通讯就可以搞定所有数据的操作.... 一、基础 1、说明:创建数据库 Create DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键:Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where X围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where X围 更新:update table1 set field1=value1 where X围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1

SQL UPDATE 语句

SQL UPDATE 语句
? ? Previous Page Next Page
Update 语句
Update 语句用于修改表中的数据。
语法:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
Person:
LastName Gates Wilson FirstName Bill Address Xuanwumen 10 Champs-Elysees City Beijing
更新某一行中的一个列
我们为 lastname 是 "Wilson" 的人添加 firstname:
UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'
结果: LastName Gates Wilson FirstName Bill Fred Address Xuanwumen 10 Champs-Elysees City Beijing
更新某一行中的若干列
我们会修改地址(address) ,并添加城市名称(city) :
UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson'
结果: LastName Gates FirstName Bill Address Xuanwumen 10 City Beijing

Wilson
Fred
Zhongshan 23
Nanjing

SQL语句之数据更新

实验SQL语句之数据更新 实验步骤 在Microsoft SQL Server2008 中查询数据。在打开的Microsoft SQL Server2008 中,用鼠标右击要查询的数据库,在弹出的快捷菜单中选择“新建查询(Q)”,在窗口中的新建查询编辑器中编辑SQL语句进行数据库的查询操作,最后点击左上方“执行”按钮。 1.SQL语句之数据插入操作 插入数据是把新的记录行或记录行集插入到已经建立的表中。通常有插入一条记录行和插入记录行集两种形式。 插入一行记录(元组) 语言格式: INSERT INTO <表名>[(<属性列1>[,<属性列2>.....)] V ALUES(<常量1>[,<常量2>].......) 插入记录集(子查询结果) 批量插入,指一次将子查询的结果全部插入指定表中。子查询可以嵌套在SELECT语句中构造父查询的条件,也可以嵌套在INSERT语句中以生成要查询的数据。 语言格式: INSERT INTO <表名>[(<属性列1>[,<属性列2>.....)] 子查询; ①将一个新学生记录(学号:201001903066;姓名:李四;性别:男;出生日期:NULL;所在系:计算机系;专业:网络工程;学年制:4)插入到StudentInfo表中去,SQL代码如下所示: INSERT INTO StudentInfo (sno,sname,sex,birthday,depart,major,lengsch) values ('201001903066','李四','男',null, '计算机系','网络工程','4'); ②将一个新老师记录(教师编号:09020;教师姓名:王伟年;性别:男;系别:经济管理系;职称:副教授;学位:本科;)插入到数据库ST的TeacherInfo表中去,SQL代码如下所示: INSERT INTO TeacherInfo (teacherid,tname,sex,depart,proftitle,degree)

SQL数据库查询语句范例

推荐一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和Where子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。Select nickname,email FROM testtable Where n ame=’张三’ (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列例如,下面语句显示testtable表中所有列的数据:Select * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如:Select nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: Select 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 Select语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINC T选项时,对于所有重复的数据行在Select返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。例如: Select TOP 2 *FROM testtable Select TOP 20 PERCENT * FROM testtable (二) FROM子句 FROM子句指定Select语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和cityta ble表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: Select username,citytable.cityid FROM usertable,citytable Where usertable.cityid=citytable.cityid 在FROM子句中可用以下两种格式为表或视图指定别名: 表名 as 别名表名别名

实验一:数据定义及更新语句练习

实验一:数据定义及更新语句练习 一、实验目的:熟练掌握用SQL语句实现数据库和基本表的创建、数据 的更新。 二、实验内容: (一)用SQL语句建立如下mySPJ数据库,包括S,P,J,和SPJ四个基本表(教材第二章习题5中的四个表),要求实现关系的三类完整性。 S(SNO,SNAME,STA TUS,CITY); P(PNO,PNAME,COLOR,WEIGHT); J(JNO,JNAME,CITY); SPJ(SNO,PNO,JNO,QTY) 供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成。 零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成。 工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。 供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。(二)分别使用插入、删除、修改的方式更新基本表中的数据。 三、完成情况 create table s ( sno char(9)primary key, //主键约束 sname char(20)unique, //唯一值 status smallint, city char(20), ); create table p ( pno char(9)primary key, //主键约束 pname char(20), color char(9), weight smallint,

SQL数据更新语句

SQL操作功能 插入记录 INSERT INTO dbf-name [frame1,frame2] V ALUE() INSERT INTO dbf-name 说明向指定表插入记录 [frame1,frame2] 当插入不完整记录时,用frame1,frame2 指定记录 V ALUE()给出具体值 INSERT TABLE表名FROM ARRAY数组名 SQL数据更新记录语句 UPDA TE 表名SET <列名1> =表达式[,列名2=表达式2] WHERE条件表达式 UPDA TA雇员SETEMAIL=ALLTRIM(部门号)+ALLTRIM(雇员号)+“@XXXX.@.com.cn UPDATEALL日期=DATA() 一般用WHERE子句指定条件,以更新满足条件的一些记录的字段值,并且一次可以更新多个字段,若不使用WHERE子句,则更新全部记录 俩表的连接条件在WHERE子句中指定,另外对记录进行记录的筛选的条件通过AND短语与表的连接条件一起凡在where子句之后 SELECT 字段名from 表名WHERE 连接条件GROUPE BYCOUNTHAVINGORDERBYASCDESC排序字段有多个,每个字段之间用英语逗号分开,默认排序方式是升序 TabIndex属性可以用来控制光标在控件之间移动次序,光标按照1、2、3的顺序依次移动 DELET删除记录 DELECT FROM 表名WHERE 条件 若不使用WHERE则删除所有记录 SetFocus可以让控件获得焦点,使其成为活动对象。如果一个控件的Enabled属性值和Visible属性值.F.,将不能获得焦点,如果一个控件获得焦点,则Enabled 属性值和Visible属性值.T. ALRET TABLE 表名ALRET CREATEVIEW视图名asSQL语句 表单 类、方法、事件 类只是实例对象的抽象,类并不进行任何行为操作。类是对相似对象的性质描述,对象具有相同的性质:相同种类的属性和方法 继承是基于现有的类创建新类,新类继承现有类的方法和属性,病创建新的属性和方法 子类继承父类所有属性和方法 事件是由系统预先定义而由用户或系统发出的动作,事件作用于对象,对象识别事件并作出相应的反应,事件集是固定的,用户不可以定义新事件 表单的事件、属性、方法 运行时事件load事件 Init事件在对象建立时引发。表单和控件对象同时包含Init事件,将首先应发控

最常用的SQL查询语句

最常用的SQL查询语句 一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。SELECT nickname,email FROM testtable WHERE name='张三' (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变 量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 标题: SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行

SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是 表示一百分数,指定返回的行数等于总行数的百分之几。 例如: SELECT TOP 2 * FROM testtable SELECT TOP 20 PERCENT * FROM testtable (二) FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图, 它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应 使用下面语句格式加以限定: SELECT username,citytable.cityid FROM usertable,citytable WHERE usertable.cityid=citytable.cityid 在FROM子句中可用以下两种格式为表或视图指定别名: 表名as 别名 表名别名 例如上面语句可用表的别名格式表示为: SELECT username,b.cityid FROM usertable a,citytable b WHERE a.cityid=b.cityid SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 例如: SELECT a.au_fname+a.au_lname FROM authors a,titleauthor ta

数据库常用语句

SQL常用语句一览 (1)数据记录筛选: sql="select*from数据表where字段名=字段值orderby字段名[desc]" sql="select*from数据表where字段名like'%字段值%'orderby字段名[desc]" sql="selecttop10*from数据表where字段名orderby字段名[desc]" sql="select*from数据表where字段名in('值1','值2','值3')" sql="select*from数据表where字段名between值1and值2" (2)更新数据记录: sql="update数据表set字段名=字段值where条件表达式" sql="update数据表set字段1=值1,字段2=值2……字段n=值nwhere条件表达式" (3)删除数据记录: sql="deletefrom数据表where条件表达式" sql="deletefrom数据表"(将数据表所有记录删除) (4)添加数据记录: sql="insertinto数据表(字段1,字段2,字段3…)values(值1,值2,值3…)" sql="insertinto目标数据表select*from源数据表"(把源数据表的记录添加到目标数据表) (5)数据记录统计函数: AVG(字段名)得出一个表格栏平均值 COUNT(*|字段名)对数据行数的统计或对某一栏有值的数据行数统计 MAX(字段名)取得一个表格栏最大的值 MIN(字段名)取得一个表格栏最小的值 SUM(字段名)把数据栏的值相加 引用以上函数的方法: sql="selectsum(字段名)as别名from数据表where条件表达式" setrs=conn.excute(sql) 用rs("别名")获取统的计值,其它函数运用同上。 (5)数据表的建立和删除: CREATETABLE数据表名称(字段1类型1(长度),字段2类型2(长度)……) 例:CREATETABLEtab01 (namevarchar (50), datetimedefaultnow ()) DROPTABLE数据表名称(永久性删除一个数据表) 4.记录集对象的方法: rs.movenext将记录指针从当前的位置向下移一行 rs.moveprevious将记录指针从当前的位置向上移一行 rs.movefirst将记录指针移到数据表第一行 rs.movelast将记录指针移到数据表最后一行 rs.absoluteposition=N将记录指针移到数据表第N行 rs.absolutepage=N将记录指针移到第N页的第一行 rs.pagesize=N设置每页为N条记录 rs.pagecount根据pagesize的设置返回总页数 rs.recordcount返回记录总数 rs.bof返回记录指针是否超出数据表首端,true表示是,false为否 rs.eof返回记录指针是否超出数据表末端,true表示是,false为否

ORACLE 多表关联 UPDATE 语句

为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在某个业务受理子系统BSS中, SQL 代码 1.--客户资料表 2.create table customers 3.( 4.customer_id number(8) not null, -- 客户标示 5.city_name varchar2(10) not null, -- 所在城市 6.customer_type char(2) not null, -- 客户类型 7.... 8.) 9.create unique index PK_customers on customers (customer_id) 由于某些原因,客户所在城市这个信息并不什么准确,但是在 客户服务部的CRM子系统中,通过主动服务获取了部分客户20%的所在城市等准确信息,于是你将该部分信息提取至一张临时表中: SQL 代码

1) 最简单的形式 SQL 代码 2) 两表(多表)关联update -- 仅在where字句中的连接SQL 代码 3) 两表(多表)关联update -- 被修改值由另一个表运算而来SQL 代码

注意在这个语句中, =(select b.city_name,b.customer_type from tmp_cust_city b where b.customer_id=a.customer_id ) 与 (select 1 from tmp_cust_city b where b.customer_id=a.customer_id) 是两个独立的子查询,查看执行计划可知,对b表/索引扫描了2篇;如果舍弃where条件,则默认对A表进行全表 更新,但由于 SQL 代码

ORACLE 多表关联 UPDATE 语句

ORACLE 多表关联UPDATE 语句 为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在某个业务受理子系统BSS中, --客户资料表 create table customers ( customer_id number(8) not null, -- 客户标示 city_name varchar2(10) not null, -- 所在城市 customer_type char(2) not null, -- 客户类型 ... ) create unique index PK_customers on customers (customer_id) 由于某些原因,客户所在城市这个信息并不什么准确,但是在 客户服务部的CRM子系统中,通过主动服务获取了部分客户20%的所在 城市等准确信息,于是你将该部分信息提取至一张临时表中: create table tmp_cust_city ( customer_id number(8) not null, citye_name varchar2(10) not null, customer_type char(2) not null ) 1) 最简单的形式 --经确认customers表中所有customer_id小于1000均为'北京' --1000以内的均是公司走向全国之前的本城市的老客户:) update customers set city_name='北京' where customer_id<1000 2) 两表(多表)关联update -- 仅在where字句中的连接 --这次提取的数据都是VIP,且包括新增的,所以顺便更新客户类别update customers a -- 使用别名 set customer_type='01' --01 为vip,00为普通 where exists (select 1 from tmp_cust_city b where b.customer_id=a.customer_id ) 3) 两表(多表)关联update -- 被修改值由另一个表运算而来 update customers a -- 使用别名 set city_name=(select b.city_name from tmp_cust_city b where b.customer_id=a.customer_id) where exists (select 1

SQL常用查询语句

SQL基本常用查询语句 --select select * from student; --all 查询所有 select all sex from student; --distinct 过滤重复 select distinct sex from student; --count 统计 select count(*) from student; select count(sex) from student; select count(distinct sex) from student; --top 取前N条记录 select top 3 * from student; --alias column name 列重命名 select id as 编号, name '名称', sex 性别from student; --alias table name 表重命名 select id, name, s.id, https://www.360docs.net/doc/4a4458122.html, from student s; --column 列运算 select (age + id) col from student; select https://www.360docs.net/doc/4a4458122.html, + '-' + https://www.360docs.net/doc/4a4458122.html, from classes c, student s where s.cid = c.id; --where 条件 select * from student where id = 2;

select * from student where id > 7; select * from student where id < 3; select * from student where id <> 3; select * from student where id >= 3; select * from student where id <= 5; select * from student where id !> 3; select * from student where id !< 5; --and 并且 select * from student where id > 2 and sex = 1; --or 或者 select * from student where id = 2 or sex = 1; --between ... and ... 相当于并且 select * from student where id between 2 and 5; select * from student where id not between 2 and 5; --like 模糊查询 select * from student where name like '%a%'; select * from student where name like '%[a][o]%'; select * from student where name not like '%a%'; select * from student where name like 'ja%'; select * from student where name not like '%[j,n]%'; select * from student where name like '%[j,n,a]%'; select * from student where name like '%[^ja,as,on]%';

相关文档
最新文档