易截截图软件、单文件、免安装、纯绿色、仅160KB
热门标签: c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 最新文章 : sql

SQL中JOIN和UNION区别、用法及示例


1.JOIN和UNION区别
join 是两张表做交连后里面条件相同的部分记录产生一个记录集,
union是产生的两个记录集(字段要一样的)并在一起,成为一个新的记录集 。
JOIN用于按照ON条件联接两个表,主要有四种:
INNER JOIN:内部联接两个表中的记录,仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。我理解的是只要记录不符合ON条件,就不会显示在结果集内。
LEFT JOIN / LEFT OUTER JOIN:外部联接两个表中的记录,并包含左表中的全部记录。如果左表的某记录在右表中没有匹配记录,则在相关联的结果集中右表的所有选择列表列均为空值。理解为即使不符合ON条件,左表中的记录也全部显示出来,且结果集中该类记录的右表字段为空值。
RIGHT JOIN / RIGHT OUTER JOIN:外部联接两个表中的记录,并包含右表中的全部记录。简单说就是和LEFT JOIN反过来。
FULL JOIN / FULL OUTER JOIN:完整外部联接返回左表和右表中的所有行。就是LEFT JOIN和RIGHT JOIN和合并,左右两表的数据都全部显示。
JOIN的基本语法:
Select table1.* from table1 JOIN table2 ON table1.id=table2.id
sql写法
内连接inner join:
SELECT msp.name, party.name
from msp JOIN party ......

SQL数据库表坏了的手动恢复方法

      今天接到客户电话,说操作数据无法保存。经过分析,发现他的数据库已经有5G多的大小,而最终发现有张表的索引出错了,用DBCC CHECK也无力回天。
每次用select * from ln003082 语句查询,都报如下错误:
服务器: 消息 605,级别 21,状态 1,行 1
试图从数据库 'ln_fl0125' 中提取的逻辑页 (1:629904) 属于对象 '869578136',而非对象 'LN003082'。
连接中断
没办法,只能想办法恢复了。还好有几位老手在身边。于是通如以下步骤勉强恢复有效数据,当然,有部份单子数据是丢失了。只能叫客户再去补了。
 首先要确定哪些数据回不来了,通过游标来一一确定哪些数据无效了。
declare @bill_no varchar(20)
declare @shop_no varchar(20)
DECLARE  @QTY INT
DECLARE terminal_changecursor CURSOR FOR
   select bill_no,shop_no from terminal_change
   group by shop_no,bill_no
   ORDER by shop_no,bill_no
OPEN terminal_changecursor
FETCH NEXT from terminal_changecursor into  @bill_no ,@shop_no
WHILE @@FETCH_STATUS = 0
BEGIN
 FETCH NEXT from terminal_cha ......

Sql结存余

select 姓名,住址,期初余额=isnull(期初增加,0)-isnull(期初减少,0),本期增加,本期减少,
本期结余=(isnull(期初增加,0)-isnull(期初减少,0)+isnull(本期增加,0)-isnull(本期减少,0)) from (
select 姓名,住址,
期初增加=(select 期初增加=sum(增加积分) from b where 发生日期<'2006-5-1' and 卡号=a.卡号),
期初减少=(select 期初减少=sum(减少积分) from b where 发生日期<'2006-5-1'and 卡号=a.卡号),
本期增加=(select 本期增加=sum(增加积分) from b where 发生日期>='2006-5-1' and 发生日期<'2006-6-1' and 卡号=a.卡号),
本期减少=(select 本期减少=sum(减少积分) from b where 发生日期>='2006-5-1' and 发生日期<'2006-6-1' and 卡号=a.卡号)
from a)z
  ......

SQl游标

declare @CausName as char(20) declare @causenameid as int declare
@Description as varchar(200) declare @Caus_Id as int
declare @sign as char(20)
create table #tb ( Caus_Id int,CausName varchar(20),causNameid int,Caus_Description varchar(200),标志 varchar(20))
 
DECLARE myCursor1 CURSOR FOR
 select Caus_Id,Caus_PersonId,Caus_Description from tbObjection_Causer where Obje_Id=25
OPEN myCursor1
FETCH NEXT from myCursor1 INTO @Caus_Id,@causenameid,@Description
WHILE @@FETCH_STATUS =0
BEGIN
select @CausName=人员姓名 from zgong_xxi where id=@causenameid
insert into #tb
 select Caus_Id=@Caus_Id,CausName=@CausName,causNameid=@causenameid,
 Caus_Description=@Description,标志=@sign where @Caus_Id is not null
FETCH NEXT from myCursor1 INTO @Caus_Id,@causenameid,@Description
END
CLOSE myCursor1
Deallocate myCursor1
select * from #tb
drop table #tb ......

SQl自动备份删除

BackupEveryDay
每天进行数据库的差异备份
day
Declare @File Varchar(2000)
Set @File='E:\Databasebackup\njyc_data_diff.BAK'
Backup database njyc_data to Disk=@File with DIFFERENTIAL
WeekBackup
每周进行一次数据库的完全备份,备份文件名为当天日期 (njyc_data_年_月_日)
BackupAll
DECLARE @BackupFile Varchar(256)
SET @BackupFile='E:\Databasebackup\'
SET @BackupFile=@BackupFile+'njyc_data_'+Replace(convert(varchar(10),getdate(),120),'-','_')
Backup DataBase njyc_data to Disk=@BackupFile with Init
BackupDiffrent
DECLARE @BackupFile Varchar(256)
SET @BackupFile='E:\Databasebackup\'
SET @BackupFile=@BackupFile+'njyc_data_diff.bak'
Backup DataBase njyc_data to Disk=@BackupFile with Init
EveryWeek
DeleteLastmonth
--判断文件是否存在
create table ##tb(a bit,b bit,c bit)
DECLARE @DelFile Varchar(256)
set @DelFile='E:\Databasebackup\'
set @DelFile=@DelFile+'njyc_data_'+Replace(convert(varchar(10),getdate()-28,120),'-','_')
insert into ##tb
exec master..xp_fileexist @DelFile
-- ......

SQL自动删除备份文件

DECLARE  @sql varchar(8000)  
--下面是删除15天前备份文件的处理  
set @sql='Del E:\Databasebackup\'  
@sql=@sql +rtrim(convert(varchar,getdate()-15,112))+'.bak'
Exec  master..xp_cmdshell   @sql  
DECLARE @DelFile Varchar(256)
set @DelFile='Del E:\Databasebackup\'
set @DelFile=@DelFile+'shya_DATA_'+Replace(convert(varchar(10),getdate()-28,120),'-','_')
Exec  master..xp_cmdshell  @DelFile
--判断文件是否存在
create table ##tb(a bit,b bit,c bit)
DECLARE @sql Varchar(256)
set @sql='E:\Databasebackup'+'shya_DATA_'+Replace(convert(varchar(10),getdate()-28,120),'-','_')
insert into ##tb
exec master..xp_fileexist @sql
--文件存在则删除
if exists(select 1 from ##tb where a=1)
begin
DECLARE @DelFile Varchar(256)
set @DelFile='Del E:\Databasebackup\'
set @DelFile=@DelFile+'shya_DATA_'+Replace(convert(varchar(10),getdate()-28,120),'-','_')
Exec  master..xp_cmdshell  @DelFile
end
drop table ## ......
总记录数:4346; 总页数:725; 每页6 条; 首页 上一页 [347] [348] [349] [350] 351 [352] [353] [354] [355] [356]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号