TRUNCATE TABLE

Download Report

Transcript TRUNCATE TABLE

Today’s Topics
 Backup Recap
 Restoration and Recovery
 T-SQL Commands
–
–
–
–
–
–
INSERT
UPDATE
DELETE
BEGIN TRAN
COMMIT TRAN
ROLLBACK TRAN
Backup Types




Full backup
Differential backup
Transaction log backup
File/filegroup backup
Disaster Recovery in SQL
 SQL Server examines the Transaction
log, going from the last checkpoint to
the point at which the server was shut
down or failed.
 Committed transactions that have not
been written to the database are rolled
forward and written to the database.
 Uncommitted transactions are rolled
back and not written to the database.
Recovery Types
 Automatic Recovery
– occurs when you start SQL Server
– ensures data in each db is consistent
– checks the transaction log
 Manual Recovery
– this is done by the administrator
– involves restoring one of the backups
 Full Backup
 Differential Backup
 Log Backup
 Page 258 has more info on Recovery
Verifying backup files
 In Enterprise Manager, Backup folder
under Management
 Backup/Restore info in msdb system
database
 Transact SQL commands
– RESTORE LABELONLY (media info)
– RESTORE HEADERONLY (backup set
info)
– RESTORE FILELISTONLY (file info)
 Table 9-2 on Page 291
Restoring a Database
 Restoring is the process of recovering
the database to its original form
 Restoring can be done using
 Enterprise Manager
 Transact SQL commands
– RESTORE DATABASE
– RESTORE LOG
EM - Restore using database
Restore using filegroup/file
Restore using device
Restore options
Recovery completion options
 RECOVERY - Instructs the restore
operation to rollback any uncommitted
transactions - you cannot apply any
more transaction logs
 NORECOVERY - Instructs the restore
operation to not roll back any
uncommitted transactions - lets you
apply more transaction logs
 STAND BY - Leave database readonly option - lets you apply additional
transaction logs
Restoring system databases






Do the following Exercises
Page 291
Page 298
Page 303 through 306
Any questions
Take a break
Restore using TSQL




Two main commands
RESTORE DATABASE
RESTORE LOG
Examples on Pages 306-307
RESTORE DATABASE
 RESTORE DATABASE syntax:
RESTORE DATABASE database_name [file_or_filegroup]
[FROM backup_device]
[WITH
[RESTRICTED_USER | DBO_ONLY]
[[,] FILE = file_number]
[[,] PASSWORD = password]
[[,] MEDIANAME = medianame]
[[,] MEDIAPASSWORD = password]
[[,] MOVE 'logical_filename' TO 'os_filename']
[[,] KEEP_REPLICATION]
[[,] NORECOVERY | RECOVERY | STANDBY = undofile]
[[,] NOREWIND | REWIND]
[[,] NOUNLOAD | UNLOAD] [[,] REPLACE] [[,] RESTART]
[[,] STATS = percentage]
]
RESTORE LOG
 RESTORE LOG syntax:
RESTORE LOG database_name
[FROM backup_device]
[WITH [RESTRICTED_USER | DBO_ONLY]
[[,] FILE = file_number]
[[,] PASSWORD = password]
[[,] MEDIANAME = medianame]
[[,] MEDIAPASSWORD = password]
[[,] KEEP_REPLICATION]
[[,] MOVE 'logical_filename' TO 'os_filename']
[[,] NORECOVERY | RECOVERY | STANDBY = undofile]
[[,] NOREWIND | REWIND]
[[,] NOUNLOAD | UNLOAD]
[[,] RESTART]
[[,] STATS = percentage]
[[,] STOPAT = date_time] |
[,] STOPATMARK = 'markname'] [AFTER date_time]
[,] STOPBEFOREMARK = 'markname'[AFTER date_time]
]
Restoring system databases
 When the master db becomes corrupt
or if the Server dies on you, you will
have to
– Rebuilding the master database - Page
310
– Rebuilding System databases - Page
312
 Try exercise on Page 308 only
Rebuilding system databases
Data manipulation
 SELECT SQL statement - remember
does not modify data
 Modify data by using the following
SQL commands:
–
–
–
–
INSERT,
UPDATE,
DELETE
TRUNCATE TABLE
INSERT statement
 Inserts one or more new rows into the
specified table or query.
 When you use the VALUES clause,
only a single row is inserted.
 If you use a sub-select statement, the
number of rows inserted equals the
number of rows returned by the select
statement.
INSERT SYNTAX
 INSERT one record
INSERT [INTO]
table_name [WITH table_hints ]
| view_name | rowset function [(column_list)]
VALUES (values_list) | select_statement
| DEFAULT VALUES
 INSERT with Sub-Select - multiple
records
INSERT [INTO] new table_name
SELECT fields FROM old table_name
Inserting data
 Values can be generated for:
–
–
–
–
IDENTITY columns
Columns with the timestamp data type
Columns with a default value
Nullable columns
 When DEFAULT VALUES is specified:
– Defaults will be inserted in columns with defined
defaults
– IDENTITY columns will receive the next identity
value
– Columns with a timestamp data type will receive
the next appropriate values
– All other columns will receive a NULL
Inserting data
 Insert a new Record into the Region table in
Northwind database using the following
– INSERT INTO REGION (RegionID,
RegionDescription) VALUES (5,
‘Midwest’)
 Create a table Table1 in Northwind first. The
structure should be the same as Shippers
table.
 Then execute this SQL
– INSERT INTO TABLE1 SELECT * FROM
SHIPPERS
UPDATE statement
 This statement is used to update data
in the tables
 Uses a WHERE clause to seek the
rows that need to be updated
 Can use a sub-select to update data
 In the absence of WHERE clause, all
the records are updated - Therefore Be
careful with this!
UPDATE SYNTAX
 UPDATE syntax:
UPDATE table_name
[WITH table_hint] | view_name | rowset_function
SET
column_name = expression | DEFAULT | NULL
| @variable_name = expression
| @variable_name = column = expression
[FROM table_name]
[WHERE search_conditions]
[WHERE CURRNT OF [GLOBAL] cursor_name |
cursor_variable]
[OPTION query_options]
UPDATE EXAMPLES
 Lets say that we need to update the Contact
for ‘Eastern Connection’ in the Customers
table from Ann Devon to Jim Smith
 We can do this using the following
 UPDATE CUSTOMERS SET
CONTACTNAME='Jim Smith’ WHERE
COMPANYNAME=‘EASTERN CONNECTION’
 Now you can review the change by
doing
 SELECT * FROM CUSTOMERS WHERE
COMPANYNAME=‘EASTERN CONNECTION’
Deleting rows
 DELETE
– Remove all rows from the table
– Reclaim space from table rows and
indexes
– Leave the table structure and all indexes
in place
 TRUNCATE TABLE:
– Runs a non-logged
– Resets the identity value
DELETE statement
 Used to delete data from tables
 Like the Update statement uses the
WHERE clause to located the records
to delete.
 In case of No WHERE clause, deletes
all the records in the table
 Be very careful with this one also!
DELETE SYNTAX
 DELETE syntax:
DELETE [FROM] table_name [WITH table_hint]
| view_name | rowset_function
[FROM table_source]
WHERE search_conditions
[WHERE CURRNT OF [GLOBAL] cursor_name |
cursor_variable]
[OPTION query_options]
DELETE EXAMPLE
 Lets say we want to remove the row
we added in Region table earlier.
– SELECT * FROM REGION will show all
the records
– Get the Region Id which is 5
– DELETE FROM REGION WHERE
REGIONID=5
TRUNCATE TABLE
 Removes all records from a table.
 TRUNCATE TABLE syntax:
TRUNCATE TABLE [[database.]owner.]table_name
 TRUNCATE TABLE TABLE1
Transaction statements
 BEGIN TRANSACTION
BEGIN TRAN[SACTION] [transaction_name |
@tran_name_var]
[WITH MARK ['description']
 COMMIT TRANSACTION
COMMIT [TRAN[SACTION]] [transaction_name |
@tran_name_var]]
 ROLLBACK TRANSACTION
ROLLBACK TRAN[SACTION] [transaction_name |
@tran_name_var
| savepoint_name | @savepoint_name_var]
Using transactions
 Lets say we want to update the title for
employees with title ‘Sales
Representative’ to ‘Sales Associate’.
 We will do this twice
– First time we will assume that we forgot
the WHERE clause and then recover
using ROLLBACK TRAN
– Second time we will do it the right way
and use COMMIT TRAN
Using transactions - Part 1
 Try the following
 begin tran
 update employees set title='Sales
Associate’
 Now check the data - Notice all the
titles have been changed by mistake
 Try this
 rollback tran
 Now check it again
 select * from employees
Using transactions - Part 2
 Now try the following
 begin tran
 update employees set title='Sales
Associate’ where title='Sales
Representative'
 Now check the data again - Notice all
the titles have been changed correctly
 Go ahead and apply the change by
using
 commit tran