1. 1、说明:创建数据库
  2. CREATE DATABASE database-name
  3. 、说明:删除数据库
  4. drop database dbname
  5. 、说明:备份sql server
  6. --- 创建 备份数据的 device
  7. USE master
  8. EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
  9. --- 开始 备份
  10. BACKUP DATABASE pubs TO testBack
  11. 、说明:创建新表
  12. create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
  13. 根据已有的表创建新表:
  14. Acreate table tab_new like tab_old (使用旧表创建新表)
  15. Bcreate table tab_new as select col1,col2 from tab_old definition only
  16. 、说明:删除新表
  17. drop table tabname
  18. 、说明:增加一个列
  19. Alter table tabname add column col type
  20. 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
  21. 、说明:添加主键: Alter table tabname add primary key(col)
  22. 说明:删除主键: Alter table tabname drop primary key(col)
  23. 、说明:创建索引:create [unique] index idxname on tabname(col….)
  24. 删除索引:drop index idxname
  25. 注:索引是不可更改的,想更改必须删除重新建。
  26. 、说明:创建视图:create view viewname as select statement
  27. 删除视图:drop view viewname
  28. 、说明:几个简单的基本的sql语句
  29. 选择:select * from table1 where 范围
  30. 插入:insert into table1(field1,field2) values(value1,value2)
  31. 删除:delete from table1 where 范围
  32. 更新:update table1 set field1=value1 where 范围
  33. 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!
  34. 排序:select * from table1 order by field1,field2 [desc]
  35. 总数:select count as totalcount from table1
  36. 求和:select sum(field1) as sumvalue from table1
  37. 平均:select avg(field1) as avgvalue from table1
  38. 最大:select max(field1) as maxvalue from table1
  39. 最小:select min(field1) as minvalue from table1
  40. 、说明:几个高级查询运算词
  41. A UNION 运算符
  42. UNION 运算符通过组合其他两个结果表(例如 TABLE1 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2
  43. B EXCEPT 运算符
  44. EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
  45. C INTERSECT 运算符
  46. INTERSECT 运算符通过只包括 TABLE1 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
  47. 注:使用运算词的几个查询结果行必须是一致的。
  48. 、说明:使用外连接
  49. Aleft outer join
  50. 左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
  51. SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
  52. Bright outer join:
  53. 右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
  54. Cfull/cross outer join
  55. 全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
  56. 、分组:Group by:
  57. 一张表,一旦分组完成后,查询后只能得到组相关的信息。
  58. 组相关的信息:(统计信息) count,sum,max,min,avg 分组的标准)
  59. SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据
  60. selecte统计函数中的字段,不能和普通的字段放在一起;
  61. 、对数据库进行操作:
  62. 分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后接表明,附加需要完整的路径名
  63. .如何修改数据库的名称:
  64. sp_renamedb 'old_name', 'new_name'
  65.  
  66. 二、提升
  67. 、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
  68. 法一:(仅用于SQlServer
  69. 法二: * into b from a
  70. 、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)
  71. insert into b(a, b, c) select d,e,f from b;
  72. 、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
  73. insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件
  74. 例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..
  75. 、说明:子查询(表名1a 表名2b)
  76. ,,)
  77. 、说明:显示文章、提交人和最后回复时间
  78. select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
  79. 、说明:外连接查询(表名1a 表名2b)
  80. select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
  81. 、说明:在线视图查询(表名1a )
  82. ;
  83. 、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
  84. select * from table1 where time between time1 and time2
  85. select a,b,c, from table1 where a not between 数值1 and 数值2
  86. 、说明:in 的使用方法
  87. select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)
  88. 、说明:两张关联表,删除主表中已经在副表中没有的信息
  89. delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
  90. 、说明:四表联查问题:
  91. select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
  92. 、说明:日程安排提前五分钟提醒
  93. SQL:
  94. 、说明:一条sql 语句搞定数据库分页
  95. b. 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
  96. 具体实现:
  97. 关于数据库分页:
  98. declare @start int,@end int
  99. )
  100. )))’
  101. exec sp_executesql @sql
  102.  
  103. 注意:在top后不能直接跟一个变量,所以在实际应用中只有这样的进行特殊的处理。Rid为一个标识列,如果top后还有具体的字段,这样做是非常有好处的。因为这样可以避免 top的字段如果是逻辑索引的,查询的结果后实际表中的不一致(逻辑索引中的数据有可能和数据表中的不一致,而查询时如果处在索引则首先查询索引)
  104. 、说明:前10条记录
  105. * form table1 where 范围
  106. 、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
  107. select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
  108. 、说明:包括所有在 TableA 中但不在 TableBTableC 中的行并消除所有重复行而派生出一个结果表
  109. (select a from tableA ) except (select a from tableB) except (select a from tableC)
  110. 、说明:随机取出10条数据
  111. * from tablename order by newid()
  112. 、说明:随机选择记录
  113. select newid()
  114. 、说明:删除重复记录
  115. ),delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
  116. ),select distinct * into temp from tablename
  117. delete from tablename
  118. insert into tablename select * from temp
  119. 评价: 这种操作牵连大量的数据的移动,这种做法不适合大容量但数据操作
  120. ),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段
  121. alter table tablename
  122. --添加一个自增列
  123. ,)
  124. delete from tablename where column_b not in(
  125. select max(column_b) from tablename group by column1,column2,...)
  126. alter table tablename drop column column_b
  127. 、说明:列出数据库里所有的表名
  128. select name from sysobjects where type='U' // U代表用户
  129. 、说明:列出表里的所有的列名
  130. select name from syscolumns where id=object_id('TableName')
  131. 、说明:列示typevenderpcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case
  132. end) FROM tablename group by type
  133. 显示结果:
  134. type vender pcs
  135. 电脑 A
  136. 电脑 A
  137. 光盘 B
  138. 光盘 A
  139. 手机 B
  140. 手机 C
  141. 、说明:初始化表table1
  142. TRUNCATE TABLE table1
  143. 、说明:选择从1015的记录
  144. * from table order by id asc) table_别名 order by id desc
  145. 三、技巧
  146. 、,=2的使用,在SQL语句组合时用的较多
  147. “” 是表示选择全部 “”全部不选,
  148. 如:
  149. if @strWhere !=''
  150. begin
  151. set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere
  152. end
  153. else
  154. begin
  155. set @strSQL = 'select count(*) as Total from [' + @tblName + ']'
  156. end
  157. 我们可以直接写成
  158. 错误!未找到目录项。
  159. 、收缩数据库
  160. --重建索引
  161. DBCC REINDEX
  162. DBCC INDEXDEFRAG
  163. --收缩数据和日志
  164. DBCC SHRINKDB
  165. DBCC SHRINKFILE
  166. 、压缩数据库
  167. dbcc shrinkdatabase(dbname)
  168. 、转移数据库给新用户以已存在用户权限
  169. exec sp_change_users_login 'update_one','newname','oldname'
  170. go
  171. 、检查备份集
  172. RESTORE VERIFYONLY from disk='E:\dvbbs.bak'
  173. 、修复数据库
  174. ALTER DATABASE [dvbbs] SET SINGLE_USER
  175. GO
  176. DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
  177. GO
  178. ALTER DATABASE [dvbbs] SET MULTI_USER
  179. GO
  180. 、日志清除
  181. SET NOCOUNT ON
  182. DECLARE @LogicalFileName sysname,
  183. @MaxMinutes INT,
  184. @NewSize INT
  185.  
  186. USE tablename -- 要操作的数据库名
  187. SELECT @LogicalFileName = 'tablename_log', -- 日志文件名
  188. , -- Limit on time allowed to wrap log.
  189. -- 你想设定的日志文件的大小(M)
  190. Setup / initialize
  191. DECLARE @OriginalSize int
  192. SELECT @OriginalSize = size
  193. FROM sysfiles
  194. WHERE name = @LogicalFileName
  195. SELECT 'Original Size of ' + db_name() + ' LOG is ' +
  196. ),@OriginalSize) + ' 8K pages or ' +
  197. ),()) + 'MB'
  198. FROM sysfiles
  199. WHERE name = @LogicalFileName
  200. CREATE TABLE DummyTrans
  201. (DummyColumn ) not null)
  202.  
  203. DECLARE @Counter INT,
  204. @StartTime DATETIME,
  205. )
  206. SELECT @StartTime = GETDATE(),
  207. @TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
  208. DBCC SHRINKFILE (@LogicalFileName, @NewSize)
  209. EXEC (@TruncLog)
  210. -- Wrap the log if necessary.
  211. WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
  212. AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)
  213. ) > @NewSize
  214. BEGIN -- Outer loop.
  215.  
  216. ) ))
  217. BEGIN -- update
  218. INSERT DummyTrans VALUES ('Fill Log') DELETE DummyTrans
  219.  
  220. END
  221. EXEC (@TruncLog)
  222. END
  223. SELECT 'Final Size of ' + db_name() + ' LOG is ' +
  224. ),size) + ' 8K pages or ' +
  225. ),(size)) + 'MB'
  226. FROM sysfiles
  227. WHERE name = @LogicalFileName
  228. DROP TABLE DummyTrans
  229. SET NOCOUNT OFF
  230. 、说明:更改某个表
  231. exec sp_changeobjectowner 'tablename','dbo'
  232. 、存储更改全部表
  233. CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch
  234. ),
  235. )
  236. AS
  237. )
  238. )
  239. )
  240. DECLARE curObject CURSOR FOR
  241. select 'Name' = name,
  242. 'Owner' = user_name(uid)
  243. from sysobjects
  244. where user_name(uid)=@OldOwner
  245. order by name
  246. OPEN curObject
  247. FETCH NEXT FROM curObject INTO @Name, @Owner
  248. )
  249. BEGIN
  250. if @Owner=@OldOwner
  251. begin
  252. set @OwnerName = @OldOwner + '.' + rtrim(@Name)
  253. exec sp_changeobjectowner @OwnerName, @NewOwner
  254. end
  255. -- select @name,@NewOwner,@OldOwner
  256. FETCH NEXT FROM curObject INTO @Name, @Owner
  257. END
  258. close curObject
  259. deallocate curObject
  260. GO
  261.  
  262. SQL SERVER中直接循环写入数据
  263. declare @i int
  264.  
  265. begin
  266. insert into test (userid) values(@i)
  267.  
  268. end
  269. 案例:
  270. 有如下表,要求就裱中所有沒有及格的成績,在每次增長0.1的基礎上,使他們剛好及格:
  271. Name score
  272. Zhangshan
  273. Lishi
  274. Wangwu
  275. Songquan
  276. )
  277. begin
  278. update tb_table set score =score*1.01
  279.  
  280. break
  281. else
  282. continue
  283. end
  284.  
  285. 数据开发-经典
  286.  
  287. .按姓氏笔画排序:
  288. Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as //从少到多
  289. .数据库加密:
  290. select encrypt('原始密码')
  291. select pwdencrypt('原始密码')
  292. --相同;否则不相同 encrypt('原始密码')
  293. select pwdencrypt('原始密码')
  294. --相同;否则不相同
  295. .取回表中字段:
  296. ),
  297. )
  298. select @list=@list+','+b.name from sysobjects a,syscolumns b where a.id=b.id and a.name='表A'
  299. )+' from 表A'
  300. exec (@sql)
  301. .查看硬盘分区:
  302. EXEC master..xp_fixeddrives
  303. .比较A,B表是否相等:
  304. if (select checksum_agg(binary_checksum(*)) from A)
  305. =
  306. (select checksum_agg(binary_checksum(*)) from B)
  307. print '相等'
  308. else
  309. print '不相等'
  310. .杀掉所有的事件探察器进程:
  311. DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid) FROM master.dbo.sysprocesses
  312. WHERE program_name IN('SQL profiler',N'SQL 事件探查器')
  313. EXEC sp_msforeach_worker '?'
  314. .记录搜索:
  315. 开头到N条记录
  316. Select Top N * From
  317. -------------------------------
  318. NM条记录(要有主索引ID)
  319. Select Top M-N * From Where ID in (Select Top M ID From 表) Order by ID Desc
  320. ----------------------------------
  321. N到结尾记录
  322. Select Top N * From Order by ID Desc
  323. 案例
  324. 例如1:一张表有一万多条记录,表的第一个字段 RecID 是自增长字段, 写一个SQL语句,找出表的第31到第40个记录。
  325. recid recid from A)
  326. 分析:如果这样写会产生某些问题,如果recid在表中存在逻辑索引。
  327. recid recid from A则在数据表中查找,这样由于索引中的顺序有可能和数据表中的不一致,这样就导致查询到的不是本来的欲得到的数据。
  328. 解决方案
  329. order recid from A order by ricid 如果该字段不是自增长,就会出现问题
  330. 在那个子查询中也加条件: recid
  331. 2:查询表中的最后以条记录,并不知道这个表共有多少数据,以及表结构。
  332. ) + ' pid from T)'
  333. print @s exec sp_executesql @s
  334. :获取当前数据库中的所有用户表
  335.  
  336. :获取某一个表的所有字段
  337. select name from syscolumns where id=object_id('表名')
  338. select name from syscolumns where id in (select id from sysobjects where type = 'u' and name = '表名')
  339. 两种方式的效果相同
  340. :查看与某一个表相关的视图、存储过程、函数
  341. select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%'
  342. :查看当前数据库中所有存储过程
  343. select name as 存储过程名称 from sysobjects where xtype='P'
  344. :查询用户创建的所有数据库
  345. select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa')
  346. 或者
  347. select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01
  348. :查询某一个表的字段和数据类型
  349. select column_name,data_type from information_schema.columns
  350. where table_name = '表名'
  351. :不同服务器数据库之间的数据操作
  352. --创建链接服务器
  353. exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
  354. exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 '
  355. --查询示例
  356. select * from ITSV.数据库名.dbo.表名
  357. --导入示例
  358. select * into from ITSV.数据库名.dbo.表名
  359. --以后不再使用时删除链接服务器
  360. exec sp_dropserver 'ITSV ', 'droplogins '
  361.  
  362. --连接远程/局域网数据(openrowset/openquery/opendatasource)
  363. --1openrowset
  364. --查询示例
  365. select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
  366. --生成本地表
  367. select * into from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
  368.  
  369. --把本地表导入远程表
  370. insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
  371. select *from 本地表
  372. --更新本地表
  373. update b
  374. set b.列A=a.列A
  375. from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b
  376. on a.column1=b.column1
  377. --openquery用法需要创建一个连接
  378. --首先创建一个连接创建链接服务器
  379. exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
  380. --查询
  381. select *
  382. FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
  383. --把本地表导入远程表
  384. insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
  385. select * from 本地表
  386. --更新本地表
  387. update b
  388. set b.列B=a.列B
  389. FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as a
  390. inner join 本地表 b on a.列A=b.列A
  391.  
  392. --3opendatasource/openrowset
  393. SELECT *
  394. FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta
  395. --把本地表导入远程表
  396. insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名
  397. select * from 本地表
  398. SQL Server基本函数
  399. SQL Server基本函数
  400. .字符串函数 长度与分析用
  401. ,datalength(Char_expr) 返回字符串包含字符数,但不包含后面的空格
  402. ,”,start为起始位置,length为字符串长度,实际应用中以len(expression)取得其长度
  403. ,right(char_expr,int_expr) 返回字符串右边第int_expr个字符,还用left于之相反
  404. ,isnull( check_expression , replacement_value )如果check_expression為空,則返回replacement_value的值,不為空,就返回check_expression字符操作类
  405. ,Sp_addtype 自定義數據類型
  406. 例如:EXEC sp_addtype birthday, datetime, 'NULL'
  407. ,set nocount {on|off}
  408. 使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。SET NOCOUNT 设置是在执行或运行时设置,而不是在分析时设置。
  409. SET NOCOUNT ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。
  410. SET NOCOUNT OFF 时,返回计数
  411. 常识
  412.  
  413. SQL查询中:from后最多可以跟多少张表或视图:
  414. SQL语句中出现 Order by,查询时,先排序,后取
  415. SQL中,一个字段的最大容量是8000,而对于nvarchar(),由于nvarcharUnicode码。
  416.  
  417. SQLServer2000同步复制技术实现步骤
  418. 一、 预备工作
  419. .发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户
  420. --管理工具
  421. --计算机管理
  422. --用户和组
  423. --右键用户
  424. --新建用户
  425. --建立一个隶属于administrator组的登陆windows的用户(SynUser
  426. .在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录,操作:
  427. 我的电脑--D:\ 新建一个目录,名为: PUB
  428. --右键这个新建的目录
  429. --属性--共享
  430. --选择"共享该文件夹"
  431. --通过"权限"按纽来设置具体的用户权限,保证第一步中创建的用户(SynUser) 具有对该文件夹的所有权限
  432.  
  433. --确定
  434. .设置SQL代理(SQLSERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置)
  435. 开始--程序--管理工具--服务
  436. --右键SQLSERVERAGENT
  437. --属性--登陆--选择"此账户"
  438. --输入或者选择第一步中创建的windows登录用户名(SynUser
  439. --"密码"中输入该用户的密码
  440. .设置SQL Server身份验证模式,解决连接时的权限问题(发布/订阅服务器均做此设置)
  441. 企业管理器
  442. --右键SQL实例--属性
  443. --安全性--身份验证
  444. --选择"SQL Server 和 Windows"
  445. --确定
  446. .在发布服务器和订阅服务器上互相注册
  447. 企业管理器
  448. --右键SQL Server
  449. --新建SQL Server注册...
  450. --下一步--可用的服务器中,输入你要注册的远程服务器名 --添加
  451. --下一步--连接使用,选择第二个"SQL Server身份验证"
  452. --下一步--输入用户名和密码(SynUser
  453. --下一步--选择SQL Server组,也可以创建一个新组
  454. --下一步--完成
  455. .对于只能用IP,不能用计算机名的,为其注册服务器别名(此步在实施中没用到)
  456. (在连接端配置,比如,在订阅服务器上配置的话,服务器名称中输入的是发布服务器的IP)
  457. 开始--程序--Microsoft SQL Server--客户端网络实用工具
  458. --别名--添加
  459. --网络库选择"tcp/ip"--服务器别名输入SQL服务器名
  460. --连接参数--服务器名称中输入SQL服务器ip地址
  461. --如果你修改了SQL的端口,取消选择"动态决定端口",并输入对应的端口号
  462. 二、 正式配置
  463. 、配置发布服务器
  464. 打开企业管理器,在发布服务器(BCD)上执行以下步骤:
  465. () 从[工具]下拉菜单的[复制]子菜单中选择[配置发布、订阅服务器和分发]出现配置发布和分发向导
  466. () [下一步] 选择分发服务器 可以选择把发布服务器自己作为分发服务器或者其他sql的服务器(选择自己)
  467. () [下一步] 设置快照文件夹
  468. 采用默认\\servername\Pub
  469. () [下一步] 自定义配置
  470. 可以选择:是,让我设置分发数据库属性启用发布服务器或设置发布设置
  471. 否,使用下列默认设置(推荐)
  472. () [下一步] 设置分发数据库名称和位置 采用默认值
  473. () [下一步] 启用发布服务器 选择作为发布的服务器
  474. () [下一步] 选择需要发布的数据库和发布类型
  475. () [下一步] 选择注册订阅服务器
  476. () [下一步] 完成配置
  477. 、创建出版物
  478. 发布服务器BCD
  479. ()从[工具]菜单的[复制]子菜单中选择[创建和管理发布]命令
  480. ()选择要创建出版物的数据库,然后单击[创建发布]
  481. ()在[创建发布向导]的提示对话框中单击[下一步]系统就会弹出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助)
  482. ()单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,
  483. SQLSERVER允许在不同的数据库如 orACLEACCESS之间进行数据复制。
  484. 但是在这里我们选择运行"SQL SERVER "的数据库服务器
  485. ()单击[下一步]系统就弹出一个定义文章的对话框也就是选择要出版的表
  486. 注意: 如果前面选择了事务发布 则再这一步中只能选择带有主键的表
  487. ()选择发布名称和描述
  488. ()自定义发布属性 向导提供的选择:
  489. 我将自定义数据筛选,启用匿名订阅和或其他自定义属性
  490. 根据指定方式创建发布 (建议采用自定义的方式)
  491. ()[下一步] 选择筛选发布的方式
  492. ()[下一步] 可以选择是否允许匿名订阅
  493. )如果选择署名订阅,则需要在发布服务器上添加订阅服务器
  494. 方法: [工具]->[复制]->[配置发布、订阅服务器和分发的属性]->[订阅服务器] 中添加
  495. 否则在订阅服务器上请求订阅时会出现的提示:改发布不允许匿名订阅
  496. 如果仍然需要匿名订阅则用以下解决办法
  497. [企业管理器]->[复制]->[发布内容]->[属性]->[订阅选项] 选择允许匿名请求订阅
  498. )如果选择匿名订阅,则配置订阅服务器时不会出现以上提示
  499. ()[下一步] 设置快照 代理程序调度
  500. ()[下一步] 完成配置
  501. 当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库
  502. 有数据
  503. srv1.库名..author有字段:id,name,phone,
  504. srv2.库名..author有字段:id,name,telphone,adress
  505.  
  506. 要求:
  507. srv1.库名..author增加记录则srv1.库名..author记录增加
  508. srv1.库名..authorphone字段更新,则srv1.库名..author对应字段telphone更新
  509. --*/
  510.  
  511. --大致的处理步骤
  512. --1. srv1 上创建连接服务器,以便在 srv1 中操作 srv2,实现同步
  513. exec sp_addlinkedserver 'srv2','','SQLOLEDB','srv2的sql实例名或ip'
  514. exec sp_addlinkedsrvlogin 'srv2','false',null,'用户名','密码'
  515. go
  516. --2. srv1 srv2 这两台电脑中,启动 msdtc(分布式事务处理服务),并且设置为自动启动
  517. 。我的电脑--控制面板--管理工具--服务--右键 Distributed Transaction Coordinator--属性--启动--并将启动类型设置为自动启动
  518. go
  519.  
  520. --然后创建一个作业定时调用上面的同步处理存储过程就行了
  521.  
  522. 企业管理器
  523. --管理
  524. --SQL Server代理
  525. --右键作业
  526. --新建作业
  527. --"常规"项中输入作业名称
  528. --"步骤"
  529. --新建
  530. --"步骤名"中输入步骤名
  531. --"类型"中选择"Transact-SQL 脚本(TSQL)"
  532. --"数据库"选择执行命令的数据库
  533. --"命令"中输入要执行的语句: exec p_process
  534. --确定
  535. --"调度"
  536. --新建调度
  537. --"名称"中输入调度名称
  538. --"调度类型"中选择你的作业执行安排
  539. --如果选择"反复出现"
  540. --点"更改"来设置你的时间安排
  541.  
  542. 然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行
  543.  
  544. 设置方法:
  545. 我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.
  546.  
  547. --3.实现同步处理的方法2,定时同步
  548.  
  549. --在srv1中创建如下的同步处理存储过程
  550. create proc p_process
  551. as
  552. --更新修改过的数据
  553. update b set name=i.name,telphone=i.telphone
  554. from srv2.库名.dbo.author b,author i
  555. where b.id=i.id and
  556. (b.name <> i.name or b.telphone <> i.telphone)
  557.  
  558. --插入新增的数据
  559. insert srv2.库名.dbo.author(id,name,telphone)
  560. select id,name,telphone from author i
  561. where not exists(
  562. select * from srv2.库名.dbo.author where id=i.id)
  563.  
  564. --删除已经删除的数据(如果需要的话)
  565. delete b
  566. from srv2.库名.dbo.author b
  567. where not exists(
  568. select * from author where id=b.id)
  569. go

在本教程中,会让大家快速掌握 MySQL 的基本知识,并轻松使用 MySQL 数据库。


什么是数据库?

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。

每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。

我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。

所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:

  • 1.数据以表格的形式出现
  • 2.每行为各种记录名称
  • 3.每列为记录名称所对应的数据域
  • 4.许多的行和列组成一张表单
  • 5.若干的表单组成database

数据库mysql大全(高级版)的更多相关文章

  1. 阿里云数据库MySQL版快速上手!

    MySQL是全球最受欢迎的开源数据库,其在各Web应用中均有广泛部署.阿里云数据库MySQL版基于Alibaba的MySQL源码分支,经过双11高并发.大数据量的考验,拥有优良的性能和吞吐量.除此之外 ...

  2. 数据库MySQL学习笔记高级篇

    数据库MySQL学习笔记高级篇 写在前面 学习链接:数据库 MySQL 视频教程全集 1. mysql的架构介绍 mysql简介 概述 高级Mysql 完整的mysql优化需要很深的功底,大公司甚至有 ...

  3. Mysql数据库错误代码大全

                                                    Mysql数据库错误代码大全 出现较多的一些网页代码提示的意思: 1016错误:文件无法打开,使用后台修 ...

  4. [转]mysql免安装版配置

    现在mysql有一个installer,相当于安装包管理器.包含mysql的各个组件,比如workbench,各个语言的connector.十分方便,不用就可惜了.实在没有必要下载zip版,自己配置. ...

  5. PHP框架Yii2.0安装(基础版、高级版)

    最近农成也是切入了yiiframework 2.0,就是安装yii2.0就花费了不少的时间,为此做了很多的弯路,特此写一篇博文来给后面学习的同学少走一点的弯路.写的不好的地方欢迎各位学习的同学们能够指 ...

  6. 《代码大全(第二版)》【PDF】下载

    <代码大全(第二版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382264 内容简介 <代码大全(第2版)>是著 ...

  7. 第一章 初识数据库Mysql

    初识数据库Mysql(my)   在企业中 percona: 一.数据库基础知识 Mysql是一个开放源代码的数据库管理系统(DBMS),它是由Mysql AB公司开发.发布并支持的.Mysql是一个 ...

  8. 数据库MySQL——初识

    认识数据库—MySQL 楔子 假设现在你已经是某大型互联网公司的高级程序员,让你写一个火车票购票系统,来hold住十一期间全国的购票需求,你怎么写? 由于在同一时段抢票的人数太多,所以你的程序不可能写 ...

  9. mysql源码版安装

    mysql源码版安装 创建配置文件 创建 my.ini,注意修改,如下的 设置mysql的安装目录和设置mysql数据库的数据的存放目录,设置自己本机的上的对应路径 [mysql] # 设置mysql ...

随机推荐

  1. day13 Python数据基本类型

    算数运算 / x除以y // 取整除 %返回除法的余数 !=   不等于 <> 不等于 赋值运算 c+= a等价于c=c+a c-= a等价于c=c-a 逻辑运算 and or not 基 ...

  2. 【easy】268. Missing Number

    Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missin ...

  3. Maven将代码及依赖打成一个Jar包的方式

    Maven可以使用mvn package指令对项目进行打包,如果使用java -jar xxx.jar执行运行jar文件,会出现"no main manifest attribute, in ...

  4. JAVA Scanner的简单运用

    package Code428; import java.util.Scanner; /*Scanner 可以实现键盘输入数据 引用的步骤1.import 包路径.类名称只有java.lang包下的内 ...

  5. Ubuntu如何安装vncserver

    Ubuntu上安装和配置vncserver,然后通过客户端进行连接,就能够使用图像界面的方式来运行上面的软件了. 1.使用apt-cache search vncserver命令搜索可以用来安装vnc ...

  6. Git客户端(TortoiseGit)基本使用详解

    1. 环境安装 Git最新版下载地址:https://gitforwindows.org/ TortoiseGit,Git客户端,32/64位最新版及对应的语言包下载地址:https://tortoi ...

  7. vue中npm run dev运行项目自动打开浏览器

    npm run dev运行项目自动打开浏览器设置自动打开浏览器 // 各种设备设置信息      host: 'localhost', //主机名      port: 8080, // 端口号(默认 ...

  8. 如何进行PDF页码编排,如何调整PDF页码顺序

    PDF文件的页码顺序如何进行调整?许多小伙伴们都不知道,我们在编辑的时候只知道PDF文件的编辑方法,但是调整页码的顺序我们或许不会,但是如何去进行操作呢?看小编的方法吧!如果我们想要修改PDF文件中的 ...

  9. Python 的 JPype 模块调用 Jar 包

    背景与需求 最近学习并安装使用了HttpRunner框架去尝试做接口测试,并有后续在公司推广的打算. HttpRunner由Python开发,调用接口时需要依赖Python:而大多数公司的扩展工具包使 ...

  10. HDU 1060  Leftmost Digit

    Leftmost Digit Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...