Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Membuat Database di SQL Server (T-SQL)

Banyak pengembang dan administrator database membuat database menggunakan alat GUI seperti SQL Server Management Studio (SSMS), Azure Data Studio, dll.

Tapi bisa lebih cepat untuk membuat database menggunakan SQL. Ini terutama benar jika Anda memiliki berbagai lingkungan tempat Anda perlu membuat ulang database yang sama. Anda dapat menjalankan skrip yang sama pada setiap lingkungan, dan database akan dibuat dalam hitungan detik setiap kali.

Di SQL Server, kami melakukan ini dengan T-SQL. T-SQL adalah singkatan dari Transact-SQL, dan merupakan ekstensi SQL Server ke SQL.

Di bawah ini adalah contoh penggunaan T-SQL untuk membuat database di SQL Server.

Kode Dasar

CREATE DATABASE Music;

Ini semua kode yang Anda butuhkan untuk membuat database. Dalam hal ini, ia membuat database bernama Musik .

Namun, hanya itu yang tercipta. Basis data tidak berisi tabel atau objek lain apa pun. Untuk melakukannya, Anda harus menggunakan pernyataan lebih lanjut untuk membuat objek tersebut sesuai kebutuhan.

Juga, CREATE DATABASE di atas pernyataan menggunakan sintaks paling dasar yang tidak menyertakan argumen apa pun. Ada banyak pilihan yang dapat disertakan dengan pernyataan ini.

Misalnya, Anda dapat menentukan nama Anda sendiri untuk file dan grup filenya. Anda juga dapat membuat snapshot database, atau melampirkan file database untuk membuat database dari file terpisah dari database lain.

Lihat dokumentasi Microsoft untuk sintaks lengkap pernyataan ini.

Buat Tabel

Berikut adalah contoh membuat tiga tabel untuk database di atas.

USE Music;
CREATE TABLE Artists (
  ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
  ArtistName nvarchar(255) NOT NULL,
  ActiveFrom date
);
CREATE TABLE Genres (
  GenreId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
  Genre nvarchar(50) NOT NULL
);
CREATE TABLE Albums (
  AlbumId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
  AlbumName nvarchar(255) NOT NULL,
  ReleaseDate date NOT NULL,
  ArtistId int NOT NULL,
  GenreId int NOT NULL
  CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId)     
    REFERENCES dbo.Artists (ArtistId)     
    ON DELETE NO ACTION    
    ON UPDATE NO ACTION    
);

Langkah pertama adalah beralih ke database yang benar (dalam hal ini, database Musik). Untuk melakukan ini, kami menggunakan USE MUSIC .

Setelah Anda menggunakan database yang benar, Anda dapat membuat tabel dan objek lainnya. Dalam hal ini saya membuat tiga tabel. Setiap kali saya menggunakan CREATE TABLE , diikuti dengan nama tabel yang ingin saya buat. Ini diikuti dengan definisi tabel tersebut.

Definisi tersebut mencakup kolom tabel dan definisinya. Misalnya, ArtistId adalah kolom, menggunakan int tipe data, dan saya telah menetapkannya sebagai kunci utama untuk tabel. Menjadi kunci utama berarti secara unik mengidentifikasi setiap baris dalam database.

Saya juga telah menyetel kolom ini menjadi IDENTITY kolom, yang berarti bahwa setiap baris akan menggunakan nilai yang dihasilkan secara otomatis yang bertambah dengan setiap baris. Dalam hal ini akan dimulai dari 1 dan bertambah 1 (itu karena saya telah menetapkan IDENTITY(1,1) .

Terakhir, saya juga menyetel kolom ini ke NOT NULL . Ini berarti bahwa itu harus mengandung nilai. Itu tidak boleh nol. Ini sebenarnya merupakan persyaratan sebelum Anda menetapkan kolom sebagai kunci utama, tetapi Anda juga dapat mengatur kolom lain ke NOT NULL sesuai kebutuhan (yang telah saya lakukan dalam contoh ini).

Membuat Hubungan

Dalam contoh di atas, saya membuat hubungan antara Albums dan Artists tabel.

Sebuah hubungan adalah semacam link antara tabel dengan data terkait. Hubungan membantu menegakkan integritas data, karena memungkinkan Anda menentukan bahwa kolom hanya dapat berisi nilai yang cocok dengan nilai dalam kolom tertentu di tabel lain.

Berikut bagian khusus kode dari contoh di atas yang membuat hubungan:

CREATE TABLE Albums (
  AlbumId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
  AlbumName nvarchar(255) NOT NULL,
  ReleaseDate date NOT NULL,
  ArtistId int NOT NULL,
  GenreId int NOT NULL
  CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId)     
    REFERENCES dbo.Artists (ArtistId)     
    ON DELETE NO ACTION    
    ON UPDATE NO ACTION    
);

Saya membuat hubungan pada saat yang sama saya membuat Albums meja. Saya bisa melakukannya karena saya sudah membuat Artists tabel (yang merupakan tabel lain dalam hubungan).

Saya membuat hubungan dengan membuat batasan kunci asing (menggunakan CONSTRAINT argumen), dan menentukan FOREIGN KEY beserta detail hubungannya. REFERENCES kata kunci menentukan tabel dan kolom mana yang menjadi referensi kunci asing.

Saya menamai hubungan tersebut FK_Albums_Artists .

ON DELETE dan ON UPDATE bagian adalah opsional. Mereka menentukan apa yang harus dilakukan jika seseorang menghapus atau memperbarui baris dari kolom induk/kunci utama. Nilai defaultnya adalah NO ACTION , yang berarti Mesin Basis Data memunculkan kesalahan, dan tindakan pembaruan pada baris di tabel induk dibatalkan.

Artikel saya tentang Cara Membuat Hubungan di SQL mencantumkan opsi lain yang dapat Anda berikan di sini, serta apa yang dilakukan setiap opsi.

Buat Hubungan Nanti

Anda juga dapat membuat hubungan pada tabel yang sudah ada.

Untuk melakukan ini menggunakan T-SQL, gunakan ALTER TABLE pernyataan.

Jadi saya bisa menjalankan kode berikut setelah menjalankan kode sebelumnya.

ALTER TABLE Albums
ADD CONSTRAINT FK_Albums_Genres FOREIGN KEY (GenreId)     
	REFERENCES dbo.Genres (GenreId)     
	ON DELETE NO ACTION    
	ON UPDATE NO ACTION
;

Ini menciptakan hubungan lain, kali ini antara Albums dan Genres tabel.

Anda dapat melihat bahwa kode ini melakukan hal yang hampir sama dengan hubungan sebelumnya. Satu-satunya perbedaan adalah hubungan antara Artists dan Genres bukannya Albums dan Artists .

Dalam hal ini saya menamai hubungan tersebut FK_Albums_Genres .

Sisipkan Data

Kode di atas telah membuat database yang cocok untuk data. Sekarang kita dapat menambahkan data.

Di SQL Server, Anda dapat menambahkan data ke database dengan menggunakan INSERT penyataan. Saat menggunakan pernyataan ini, Anda perlu memberikan nama tabel, serta kolom yang ingin Anda masukkan datanya.

Sebenarnya, menyediakan kolom adalah opsional jika Anda memasukkan data ke semua kolom, tetapi demi kejelasan, berikut adalah contoh yang menyertakan nama kolom.

INSERT INTO Artists (ArtistName, ActiveFrom)
VALUES 
  ('Iron Maiden','1975-12-25'),
  ('AC/DC','1973-01-11'), 
  ('Allan Holdsworth','1969-01-01'),
  ('Buddy Rich','1919-01-01'),
  ('Devin Townsend','1993-01-01'),
  ('Jim Reeves','1948-01-01'),
  ('Tom Jones','1963-01-01'),
  ('Maroon 5','1994-01-01'),
  ('The Script','2001-01-01'),
  ('Lit','1988-06-26'),
  ('Black Sabbath','1968-01-01'),
  ('Michael Learns to Rock','1988-03-15'),
  ('Carabao','1981-01-01'),
  ('Karnivool','1997-01-01'),
  ('Birds of Tokyo','2004-01-01'),
  ('Bodyjar','1990-01-01');
INSERT INTO Genres (Genre)
VALUES 
  ('Rock'),
  ('Jazz'), 
  ('Country'),
  ('Pop'),
  ('Blues'),
  ('Hip Hop'),
  ('Rap'),
  ('Punk');
INSERT INTO Albums (AlbumName, ReleaseDate, ArtistId, GenreId)
VALUES 
  ('Powerslave', '1984-09-03', 1, 1),
  ('Powerage', '1978-05-05', 2, 1), 
  ('Singing Down the Lane', '1956-01-01', 6, 3),
  ('Ziltoid the Omniscient', '2007-05-21', 5, 1),
  ('Casualties of Cool', '2014-05-14', 5, 1),
  ('Epicloud', '2012-09-18', 5, 1),
  ('Somewhere in Time', '1986-09-29', 1, 1),	
  ('Piece of Mind', '1983-05-16', 1, 1),	
  ('Killers', '1981-02-02', 1, 1),	
  ('No Prayer for the Dying', '1990-10-01', 1, 1),	
  ('No Sound Without Silence', '2014-09-12', 9, 4),	
  ('Big Swing Face', '1967-06-01', 4, 2),	
  ('Blue Night', '2000-11-01', 12, 4),	
  ('Eternity', '2008-10-27', 12, 4),	
  ('Scandinavia', '2012-06-11', 12, 4),	
  ('Long Lost Suitcase', '2015-10-09', 7, 4),	
  ('Praise and Blame', '2010-06-26', 7, 4),	
  ('Along Came Jones', '1965-05-21', 7, 4),	
  ('All Night Wrong', '2002-05-05', 3, 2),	
  ('The Sixteen Men of Tain', '2000-03-20', 3, 2);

Seperti yang Anda lihat, setiap baris memiliki barisnya sendiri. Kami hanya menambahkan satu baris per baris dengan setiap kolom dipisahkan oleh koma dan dikelilingi oleh tanda kurung. Tanda koma juga memisahkan setiap baris (setelah tanda kurung).

Menjalankan kode di atas terhadap database kami yang baru dibuat menghasilkan output berikut:

(16 rows affected)

(8 rows affected)

(20 rows affected)

Ini memberitahu kita bahwa data berhasil dimasukkan.

Periksa Basis Data

Kami dapat menjalankan tes cepat terhadap database untuk memverifikasi bahwa database telah dibuat dan data kami telah dimasukkan.

Misalnya, kita dapat menjalankan kueri sederhana berikut.

SELECT * FROM Artists;

Hasil:

+------------+------------------------+--------------+
 | ArtistId   | ArtistName             | ActiveFrom   |
 |------------+------------------------+--------------|
 | 1          | Iron Maiden            | 1975-12-25   |
 | 2          | AC/DC                  | 1973-01-11   |
 | 3          | Allan Holdsworth       | 1969-01-01   |
 | 4          | Buddy Rich             | 1919-01-01   |
 | 5          | Devin Townsend         | 1993-01-01   |
 | 6          | Jim Reeves             | 1948-01-01   |
 | 7          | Tom Jones              | 1963-01-01   |
 | 8          | Maroon 5               | 1994-01-01   |
 | 9          | The Script             | 2001-01-01   |
 | 10         | Lit                    | 1988-06-26   |
 | 11         | Black Sabbath          | 1968-01-01   |
 | 12         | Michael Learns to Rock | 1988-03-15   |
 | 13         | Carabao                | 1981-01-01   |
 | 14         | Karnivool              | 1997-01-01   |
 | 15         | Birds of Tokyo         | 2004-01-01   |
 | 16         | Bodyjar                | 1990-01-01   |
 +------------+------------------------+--------------+ 

Dan mari kita jalankan kueri lain yang menggunakan data dari ketiga tabel.

SELECT 
  ArtistName,
  AlbumName,
  ReleaseDate
FROM Artists ar
INNER JOIN Albums al
ON ar.ArtistId = al.ArtistId
INNER JOIN Genres g 
ON al.GenreId = g.GenreId
WHERE g.Genre = 'Rock';

Hasil:

+----------------+-------------------------+---------------+
 | ArtistName     | AlbumName               | ReleaseDate   |
 |----------------+-------------------------+---------------|
 | Iron Maiden    | Powerslave              | 1984-09-03    |
 | AC/DC          | Powerage                | 1978-05-05    |
 | Devin Townsend | Ziltoid the Omniscient  | 2007-05-21    |
 | Devin Townsend | Casualties of Cool      | 2014-05-14    |
 | Devin Townsend | Epicloud                | 2012-09-18    |
 | Iron Maiden    | Somewhere in Time       | 1986-09-29    |
 | Iron Maiden    | Piece of Mind           | 1983-05-16    |
 | Iron Maiden    | Killers                 | 1981-02-02    |
 | Iron Maiden    | No Prayer for the Dying | 1990-10-01    |
 +----------------+-------------------------+---------------+ 

Kueri ini menunjukkan pentingnya membuat hubungan antara tabel dengan data terkait. Saat kami menjalankan kueri seperti ini, kami sangat membutuhkan data agar konsisten antar tabel.

Basis data sekarang siap digunakan. Kami dapat menjalankan kueri terhadapnya. Kami dapat memasukkan lebih banyak data. Kita dapat menambahkan lebih banyak tabel, hubungan, tampilan, prosedur tersimpan, fungsi yang ditentukan pengguna, dan banyak lagi.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana Anda mengatur autocommit dalam sesi SQL Server?

  2. SQL Server v.Berikutnya :Performa STRING_AGG, Bagian 2

  3. Cara Menggunakan Prosedur Tersimpan 'sp_server_info' di SQL Server

  4. 4 Cara Menghitung Baris di Tabel SQL Server dengan Pro dan Kontra

  5. SQL Server SELECT di mana kolom mana pun berisi 'x'