sql >> データベース >  >> RDS >> Sqlserver

SQLServerでテーブル名の名前を変更する方法

    最も重要なデータベース管理者の職務の1つは、データベースオブジェクトの管理です。たとえば、アプリケーションロジックが変更され、DBAがデータベースオブジェクト名を変更する必要がある場合があります。名前を変更してもアプリケーションが破損しないようにする必要があるため、このタスクは非常に重要です。

    最近、いくつかのテーブルの名前を変更する必要があるプロジェクトが割り当てられました。ここでは、SQLServerテーブルの名前をいくつかの方法で変更する方法を説明します。

    次を使用してテーブルの名前を変更できます:

    1. SQLServer管理スタジオ。
    2. sp_rename ストアドプロシージャ。

    また、テーブルの名前を変更した後に発生する可能性のある潜在的なエラーと必要な注意事項についても説明します。この記事はデモ指向であるため、SQLServerインスタンスに次のオブジェクトを作成しました。

    1. StudentDBという名前のデータベース
    2. tblSchoolという名前の2つのテーブル およびtblStudent
    3. tblSchool間の外部キー およびtblStudent tblSchool は親テーブルであり、 tblStudent は子テーブルです。
    4. sp_getStudentsという名前のストアドプロシージャ
    5. vwStudentsという名前のビュー

    上記のデータベースオブジェクトを作成するために適用されるT-SQLコードは次のとおりです。

    データベースの作成:

    Create database [StudentDB]
    Go
    

    テーブルと外部キーを作成します:

    Use [StudentDB]
    Go
    CREATE TABLE [dbo].[tblSchool](
    	[School_ID] [int] IDENTITY(1,1) NOT NULL,
    	[School_Name] [varchar](500) NULL,
    	[City] [varchar](50) NULL,
     CONSTRAINT [PK_tblSchool] PRIMARY KEY CLUSTERED 
    (
    	[School_ID] ASC
    )
    ) ON [PRIMARY]
    GO
    CREATE TABLE [dbo].[tblStudent](
    	[ID] [int] IDENTITY(1,1) NOT NULL,
    	[student_name] [varchar](250) NOT NULL,
    	[student_code] [varchar](5) NOT NULL,
    	[student_grade] [char](2) NOT NULL,
    	[SchoolID] [int] NOT NULL,
     CONSTRAINT [PK_tblStudent] PRIMARY KEY CLUSTERED 
    (
    	[ID] ASC
    ))
    GO
    
    ALTER TABLE [dbo].[tblStudent]  WITH CHECK ADD  CONSTRAINT [FK_tblStudent_tblSchool] FOREIGN KEY([SchoolID])
    REFERENCES [dbo].[tblSchool] ([School_ID])
    GO
    ALTER TABLE [dbo].[tblStudent] CHECK CONSTRAINT [FK_tblStudent_tblSchool]
    GO
    

    tblSchoolとtblStudentのE-R図:

    ダミーデータをテーブルに挿入します:

    INSERT INTO tblschool
                (school_name,
                 city)
    VALUES     ('Nalanda School',
                'Mehsana'),
                ('Sarvajanik School',
                 'Mehsana')
    go
    INSERT INTO tblstudent
                (student_name,
                 student_code,
                 student_grade,
                 schoolid)
    VALUES      ('Nisarg Upadhyay',
                 'ST001',
                 'A ',
                 1),
                ('Dixit Upadhyay',
                 'ST002',
                 'A ',
                 1),
                ('Bharti Upadhyay',
                 'ST003',
                 'C',
                 2),
                ('Nimesh Patel',
                 'ST004',
                 'C',
                 2),
                ('Raghav Dave',
                 'ST005',
                 'A',
                 1)
    go  
    

    ストアドプロシージャを作成します:

    USE studentdb
    go
    CREATE PROCEDURE Sp_getstudent
    AS
      BEGIN
          SELECT id,
                 student_code,
                 student_name,
                 student_grade,
                 school_name,
                 city
          FROM   tblstudent a
                 INNER JOIN tblschool b
                         ON a.schoolid = b.school_id
      END
    

    ビューを作成する:

    use StudentDB
    go
    create view vwStudents
    as
    select student_code [Student Code],
    student_name [Student Name],
    student_grade [Student Grade],
    School_Name [School Name],
    City [City]
    from tblStudent a inner join tblSchool b on  a.SchoolID=b.School_ID
    

    sp_renameコマンドを使用してテーブル名の名前を変更する

    sp_renameを使用できます SQL Serverデータベースのオブジェクトの名前を変更するためのストアドプロシージャ(テーブル内のデータを変更するalter table sql server演算子と混同しないでください)。構文は次のとおりです。

    Exec sp_rename ‘schema_name.old_name’,’schema_name.new_name’
    1. Schema_name.old_name 変更するテーブルの名前です。
    2. Schema_name.new_name は新しい名前です。

    それでは、 tblStudentの名前を変更しましょう tbl_Studentsへのテーブル

    Use StudentDB
    go
    Exec sp_rename 'tblStudent','tbl_Students'
    Go
    

    出力は次のとおりです。

    Caution: Changing any part of an object name could break scripts and stored procedures.

    メッセージは、テーブルの名前が正常に変更されたことを示しています。

    次に、SQL ServerManagementStudioを使用してテーブル名を変更する方法を見てみましょう。

    SQL Server Management Studio(SSMS)でテーブル名を変更する方法

    テーブルの名前を変更するには、SQL ServerManagementStudioを開きます>SQLServerインスタンスに接続>データベースを展開>テーブルを展開>tblSchoolを右クリック>名前を変更 。または、tblSchoolをクリックするだけです。

    新しい名前を指定して、 Enterを押します

    名前を変更したら、次のクエリを実行して確認できます。

    ご覧のとおり、テーブルの名前が変更されています。 テーブルの変更日が更新されたことにも注意してください。新しい日付は、テーブルが変更されたときのタイムスタンプです。

    MSSQLでテーブル名を変更する前に注意すべき点

    tblStudentのテーブル名を変更した後 およびtblSchool sp_getstudentという名前のストアドプロシージャを実行してみましょう

    Use StudentDB
    Go
    Exec sp_getstudent
    Go
    

    出力

    Msg 208, Level 16, State 1, Procedure sp_getstudent, Line 4 [Batch Start Line 15]
    Invalid object name 'tblStudent'.
    

    エラーは、ビューで使用されているオブジェクトが欠落していることを示しています。

    次に、次のクエリを実行して、 vwStudentsのデータを表示します。

    Use StudentDB
    Go
    Select * from vwStudents
    Go
    

    出力

    Msg 208, Level 16, State 1, Procedure vwStudents, Line 8 [Batch Start Line 16]
    Invalid object name 'tblStudent'.
    Msg 4413, Level 16, State 1, Line 17
    Could not use view or function 'vwStudents' because of binding errors.
    

    このエラーは、ビューの作成に使用されたクエリで tblStudentという名前のテーブルが見つからないことを示しています。

    テーブルの名前を変更した後のこのようなエラーを回避するには、テーブルに依存するデータベースオブジェクトのリストを確認する必要があります。

    テーブルの名前変更プロセステーブルは次のようになります。

    1. テーブルの名前を変更します。
    2. ストアドプロシージャ、ビュー、アドホッククエリ、およびその他のオブジェクトでテーブルの名前を変更します。

    特定のテーブルの依存オブジェクトのリストを見つけるには、 sp_dependsを実行します。 ストアドプロシージャ。構文は次のとおりです。

    exec sp_depends [obj_name]

    tblStudentに依存するオブジェクトのリストを検索するには テーブルで、次のクエリを実行します:

    use studentDB
    go
    exec sp_depends [vwStudents]
    

    出力:

    注: テーブルの名前を変更する前に、必ずこの手順を実行してください。それ以外の場合、クエリは出力としてNULLを返します。

    概要

    この記事では、 sp_renameの使用方法について説明します。 ストアドプロシージャとSQLServer Management Studio テーブルの名前を変更します。さらに、テーブルの名前を変更した後に発生する可能性のある潜在的なエラーと、テーブル名を変更した後に取らなければならない注意事項を定義しました。 SQL Serverのテーブルをより適切に処理するには、SQLServerでdroptableステートメントを使用する方法もお読みください。


    1. MySQLで--secure-file-privにどのように取り組む必要がありますか?

    2. 軽量のWordPressインストール:SQLiteでWordPressをインストールする方法

    3. MySQLのforループの例

    4. LOAD DATA INFILEはYYYYMMDDをYYYY-MM-DDに簡単に変換しますか?