Technique To perform these tasks, you will use the CREATE TABLE, ALTER TABLE, and DROP TABLE T-SQL statements.. Creating a Table Using CREATE TABLE With the CREATE TABLE statement, not
Trang 16.6 Create, Modify, and Delete Tables
It is common in database applications to programmatically create, modify, and delete tables How do I do this using T-SQL?
Technique
To perform these tasks, you will use the CREATE TABLE, ALTER TABLE, and DROP TABLE T-SQL statements With these statements, you can handle any requirements that your application might have Look at these statements one at a time
Creating a Table Using CREATE TABLE
With the CREATE TABLE statement, not only can you specify columns and their data types, but you also can specify indexes, check constraints, and other table level
properties For this How-To, you will be use the following T-SQL statement:
CREATE TABLE ListsExample
(
ListID smallint IDENTITY(1, 1) PRIMARY KEY CLUSTERED,
LastName varchar(50) NOT NULL,
FirstName varchar(50) NOT NULL,
Age smallint ,
DateEntered datetime NOT NULL DEFAULT GetDate()
CHECK (DateEntered <= GetDate())
)
This statement shows how to perform a number of different tasks:
1 Specify the name of the table:
2 CREATE TABLE ListsExample
3 Create an Identity column, which is the primary key:
4 ListID smallint IDENTITY(1, 1) PRIMARY KEY CLUSTERED,
5 Create fields that can't be NULL, and using different data types:
6 LastName varchar(50) NOT NULL,
7 FirstName varchar(50) NOT NULL,
8 Age smallint ,
9 Create a field with the Default Value set, and with a Check Constraint specified
10 DateEntered datetime NOT NULL DEFAULT GetDate()
11 CHECK (DateEntered <= GetDate())
Modifying a Table Using ALTER TABLE
Trang 2The example T-SQL statement used for modifying the table in this How-To is pretty simple in that it adds a column and removes (drops) a column:
ALTER TABLE ListsExample ADD MyNewColumn varchar(30)
ALTER TABLE ListsExample DROP COLUMN Age
You can perform quite a few other tasks with this statement You can even see by the syntax displayed here that you can handle many tasks, including dropping constraints ALTER TABLE table
{ [ ALTER COLUMN column_name
{ new_data_type [ ( precision [ , scale ] ) ]
[ COLLATE < collation_name > ]
[ NULL | NOT NULL ]
| {ADD | DROP } ROWGUIDCOL }
]
| ADD
{ [ < column_definition > ]
| column_name AS computed_column_expression
} [ , n ]
| [ WITH CHECK | WITH NOCHECK ] ADD
{ < table_constraint > } [ , n ]
| DROP
{ [ CONSTRAINT ] constraint_name
| COLUMN column } [ , n ]
| { CHECK | NOCHECK } CONSTRAINT
{ ALL | constraint_name [ , n ] }
| { ENABLE | DISABLE } TRIGGER
{ ALL | trigger_name [ , n ] }
}
You can do even more Look at the Books Online for SQL Server to see complete coverage of this statement
Deleting a Table Using the DROP TABLE Statement
This statement is the easiest, and it's a one liner:
DROP TABLE ListsExample
However, you need to keep some things in mind when you are trying to drop a table:
Trang 3• You can't use the DROP TABLE statement when the table is used in a relationship
and is referenced in the FOREIGN KEY constraint You will need to drop the other table or the constraint
• You will need to be the administrator or owner of the table to be able to use the
DROP TABLE statement
• You can't use the DROP TABLE statement on system tables
Steps
Open and run the Visual Basic NET-Chapter 6 solution From the main form, click on the button with the caption How-To 6.6 (see Figure 6.7)
1 Create a Windows Form Then place the controls listed in Table 6.6 with the following properties set, as displayed in Figures 6.7
Table 6.6 Control Property Settings for This How-To Object Property Setting
Label Text SQL Statement to Create a Table Label Name lblCreateTable
Button Name btnCreateTable Text Create Table Label Text SQL Statement to Modify a Table Label Name lblModifyTable
Button Name btnModifyTable Text Modify Table Label Text SQL Statement to Delete a Table Label Name lblDeleteTable
Button Name btnDeleteTable Text Delete Table
2 Add the code in Listing 6.11 to the Load event of the form (Double-click on the form to bring up the code.) This routine creates the SQL statements for all three tasks and assigns them to the appropriate label for display
Trang 4Listing 6.11 frmHowTo6_6.vb: Loading the SQL Statements into the
Appropriate Labels
Private Sub frmHowTo6_6_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
' Build the SQL String for Creating a Table
Dim strSQL As String
strSQL = "CREATE TABLE ListsExample" & vbCrLf
strSQL &= "(" & vbCrLf
strSQL &= " ListID smallint IDENTITY(1, 1) " & _
"PRIMARY KEY CLUSTERED," & vbCrLf
strSQL &= " LastName varchar(50) NOT NULL, " & vbCrLf
strSQL &= " FirstName varchar(50) NOT NULL, " & vbCrLf
strSQL &= " Age smallint , " & vbCrLf
strSQL &= " DateEntered datetime NOT NULL DEFAULT GetDate() " & vbCrLf
strSQL &= " CHECK (DateEntered <= GetDate())" & vbCrLf
strSQL &= ")"
Me.lblCreateTable.Text = strSQL
strSQL = "ALTER TABLE ListsExample ADD MyNewColumn varchar(30)
" & vbCrLf
strSQL &= "ALTER TABLE ListsExample DROP COLUMN Age"
Me.lblModifyTable.Text = strSQL
strSQL = "DROP TABLE ListsExample"
Me.lblDeleteTable.Text = strSQL
End Sub
3 Add the code in Listing 6.12 to the Click event of the btnCreateTable button This routine calls the function PerformTask(), passing the text in the lblCreateTable label PerformTask() is described in the next step If you perform the task
successfully, then a message box is displayed letting you know that all went as it should have
Listing 6.12 frmHowTo6_6.vb: Calling PerformTask() from the
btnCreateTable Click Event
Trang 5Private Sub btnCreateTable_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnCreateTable.Click
If PerformTask(Me.lblCreateTable.Text) Then
MessageBox.Show("Table Created Successfully, " & _
_Look for ListsExample " &
"Table in Northwind Database in Server Explorer", _
"Action Performed")
End If
End Sub
4 In the class module of the form created for this How-To, create the code displayed
in Listing 6.13 for the PerformTask() function This code creates a Connection object Next, create a Command object that is based on the string passed in
strSQL Open the connection and execute the command Notice that the execution
of the command has been wrapped in the Try Catch End Try code block to make sure the command is executed correctly; if it's not, a message is displayed
Listing 6.13 frmHowTo6_6.vb: Executing the SQL Statement Passed in Using strSQL
Function PerformTask(ByVal strSQL As String) As Boolean
Dim cnn As New OleDb.OleDbConnection(BuildCnnStr("(local)",
"Northwind"))
Dim cmdAction As New OleDb.OleDbCommand(strSQL)
cmdAction.Connection = cnn
cnn.Open()
PerformTask = True
Try
cmdAction.ExecuteNonQuery()
Catch excp As Exception
MessageBox.Show(excp.Message, "Error with Action")
Trang 6PerformTask = False
End Try
cnn.Close()
End Function
5 Add the code snippets in Listing 6.14 to the appropriate Click events for
btnModifyTable and btnDeleteTable to the Load event of the form
Listing 6.14 frmHowTo6_6.vb: Calling PerformTask from btnModifyTable and btnDeleteTable Click Events
Private Sub btnModifyTable_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnModifyTable.Click
If PerformTask(Me.lblModifyTable.Text) Then
MessageBox.Show("Table Modified Successfully, " & _
Look for ListsExample " &
"Table in Northwind Database in Server Explorer", _
"Action Performed")
End If
End Sub
Private Sub btnDeleteTable_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnDeleteTable.Click
If PerformTask(Me.lblDeleteTable.Text) Then
MessageBox.Show("Table Deleted Successfully, " & _
"Look for ListsExample " &
"Table in Northwind Database in Server Explorer", _
"Action Performed")
End If
End Sub
Figure 6.7 A common problem with inner joins is retrieving multiple records when
you just want to see one per occurrence
Trang 7Comments
You don't have to add, modify, and delete tables manually Just make sure that you back
up your data before performing these tasks