23decxf 发表于 2018-10-23 08:37:15

38. SQL -- 自动维护计划和管理表

  自动维护计划
  1)、启用SQL SERVERXP 代理服务 → SQL SERVER AGENT → 启动
  2)、创建维护计划:
  SQL SERVER → 管理→ 维护计划(maintenancePlans)
  常用任务:
  备份数据库
  check Database Integrity Task:检查数据库的完整性
  History cleanup Task: 清除历史记录,历史记录类型:备份、作业、维护计划
  maintenance cleanup task:清除维护任务
  rebuild index task:在数据表中重新生成索引
  shrink databae task:收缩数据库
  update statistic task:更新统计信息
  
  管理表
  创建表的目的在于利用表存储和管理数据。数据表的更新包括插入、删除、修改(也称为更新)三种操作
  数据库管理
  A、创建数据库TEST_DB,
  CREATE DATABASE
  ON PRIMARY
  (
  NAME = N'test_db',
  FILENAME = N'C:\ProgramFiles\Microsoft SQL
  Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\test_db.mdf',
  SIZE = 5MB ,
  FILEGROWTH = 1MB
  )
  LOG ON
  (
  NAME = N'test_db_log',
  FILENAME = N'C:\ProgramFiles\Microsoft SQL

  Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\test_db_log.ldf',>  FILEGROWTH = 10%)
  GO
  修改数据库,创建三个文件组,FG1,FG2,FG3
  ALTER DATABASE ADD FILEGROUP
  GO
  ALTER DATABASE ADD FILEGROUP
  GO
  ALTER DATABASE ADD FILEGROUP
  GO
  B、修改数据库,创建三个文件,f1,f2,f3,并对应FG1,FG2,FG3
  ALTER DATABASE
  ADD FILE
  (
  NAME = N'f1',
  FILENAME = N'C:\ProgramFiles\Microsoft SQL
  Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\f1.ndf',
  SIZE = 2048KB ,
  FILEGROWTH = 1024KB
  )
  TO FILEGROUP
  GO
  ALTER DATABASE
  ADD FILE
  (
  NAME = N'f2',
  FILENAME = N'C:\ProgramFiles\Microsoft SQL
  Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\f2.ndf',
  SIZE = 2048KB ,
  FILEGROWTH = 1024KB
  )
  TO FILEGROUP
  GO
  ALTER DATABASE
  ADD FILE
  (
  NAME = N'f3',
  FILENAME = N'C:\ProgramFiles\Microsoft SQL
  Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\f3.ndf',
  SIZE = 2048KB ,
  FILEGROWTH = 1024KB
  )
  TO FILEGROUP
  GO
  创建数据表
  A、从mydb 数据库中,将表timerecords 创建一份备份到demo_db 数据库中以下语句创建的表格等同于mydb 数据库中表timerecords 中的内容
  use demo_db
  go
  select *
  into timerecords
  from mydb.dbo.TimeRecords
  创建一份无数据但格式相同的表格:
  select *
  into timerecords
  from mydb.dbo.TimeRecords
  where 1 = 2
  在where后指定一个不成立的条件即可.
  若从不同服务器的数据库上导入数据表,需先对服务器进行服务器链接.
  服务器级 → 服务器对象 → 链接服务器 → 新建链接服务器创建一份备份临时表:
  select *
  into #timerecords
  from timerecords
  一次插入多行数据:在表orders 中一次插入2 条数据
  use demo_db
  go
  insert into Orders
  values
  ('p01','2011-08-15','cisco','USA','5000'),
  ('p02','2011-08-16','microsoft','USA','6000')
  select * from sys.columns
  where object_id = object_id('orders')
  用于查询表employee 的列顺序,在insert 时,字段顺序需按照配置时进行插入
  select * from sys.objects 查询系统对象
  select * from sys.data_spaces 查询系统数据空间
  select * from sys. 查询系统信息
  数据表更新
  A、将Orders 表中address 列的值全部改为CH
  update Orders
  set carrency = 'CH'
  B、根据条件对数据进行修改:将orders 表中docno 为P01 的cust 值改为ABC
  update orders
  set cust = 'ABC'
  where docno = 'p01'
  C、将表orders 中的cust 设为空值
  update Orders
  set cust = ''
  D、从mydb 数据库中orders 表恢复列cust 的值到demo_db 数据库中orders
  selecta.emp_id,b.card_id,a.card_id
  --update Orders
  --set cust = b.cust
  from demo_db.dbo.Orders a join mydb.dbo.orders b
  on a.docno = b.docno
  一般在更改数据前,一定要执行查询操作
  确认OK 后,再进行数据更改
  E、基于子查询对数据进行更改:针对mydb 数据库中orders 表中不存在的cust 值,更改demo_db 数据库中orders 表中列cust 的值为bc
  select * from orders
  --update Orders
  --set cust = 'bc'
  where cust
  not in (
  select cust
  from mydb.dbo.orders)
  删除数据
  delete Orders
  where cust = 'ABC'

页: [1]
查看完整版本: 38. SQL -- 自动维护计划和管理表