CONTOH 1

KISI KISI Basis Data Untuk Dipelajari
STMIK BANDUNG

Buatlah Perintah Query SQL untuk soal soal dibawah ini !!!!
1.

Buatlah Database dengan nama Kepegawaian.
CREATE DATABASE Kepegawaian

2.

Buatlah tabel pada database kepegawaian
- Nama tabel : tbDepartemen
Nama Field
NO_DEPT
NM_DEPT

Type
INT
VARCHAR


Size

Key
PK

20

USE Kepegawaian
CREATE TABLE tbDepartemen (
NO_Dept INT,
NM_Dept VARCHAR(20),
CONSTRAINT PK_tbDepartemen PRIMARY KEY CLUSTERED (NO_Dept))
Penjelasan :
- Perintah USE pada USE Kepegawaian, untuk memastikan bahwa tabel yang akan dibuat berada pada
database “Kepegawaian”.
- Untuk tipe data number (tinyint, int, float, decimal, currency dll) atau datetime tidak perlu ditambahkan
kurung buka kurung tutup. NO_Dept INT(), seperti ini adalah salah. Yang benar adalah seperti di
diatas.
- Pembuatan primary key adalah seperti contoh di atas.
- Pembuatan Primary key diatas tidak identity, sehingga NO_Dept sebagai Primary Key tetap datanya harus

diisi secara manual.
3.

Isikan data data berikut pada tabel tbDepartemen
NO_DEPT
10
20
30
40
50
60

NM_DEPT
Administration
Engineering
Business
Education & Consultance
HRD & GA
Inormation System


INSERT INTO dbo.tbDepartemen( NO_Dept, NM_Dept )
VALUES (10, 'Administration')
INSERT INTO dbo.tbDepartemen( NO_Dept, NM_Dept )
VALUES (20, 'Engineering')
dst.

Penjelasan :
- Untuk menginput data seperti perintah di atas, maka lakukan insert satu persatu, tidak boleh di
gabungkan dalam 1 perintah insert.
- Untuk mengisi data yang bertipe data number tidak boleh memakai tanda kutip (‘’).
4.

Buat tabel baru pada database Kepegawaian
- Nama Tabel : tbKaryawan
Nama Field
NO_KAR
NM_KAR
TGL_MSK
JABATAN
KOMISI

GAJI
NO_MANAJER
NO_DEPT_KAR

Type
INT
VARCHAR
DATE
VARCHAR
INT
Float
INT
INT

Size

Key
PK

25

30

CREATE TABLE dbo.tbKaryawan(
NO_KAR int IDENTITY(1,1) NOT NULL,
NM_KAR varchar(20) NOT NULL,
TGL_MSK date NULL,
JABATAN varchar(30) NULL,
KOMISI int NULL,
GAJI float NULL,
NO_MANAJER int NULL,
NO_DEPT_KAR int NULL,
CONSTRAINT PK_tbKaryawan PRIMARY KEY CLUSTERED (NO_KAR ASC)
Penjelasan :
- Perhatikan perbedaan-nya dengan cara pembuatan di table TbDepartemen, yang ini saya buat [NO_Kar]
identity, sehingga ini akan otomatis diisi oleh system bila kita ingin menginputkan data.
- NOT NULL itu artinya data tidak boleh kosong, bila NULL maka data diperbolehkan kosong .
5.

Isikan data data data berikut pada tbKaryawan
NO_

KAR
1
2
3
4
5
6

NM_KAR

TGL_MSK

JABATAN

KOMISI

GAJI

Hari
Sakinah

Yana S
Jodi
Sekar
Aminah

1990-08-15
1990-08-20
1990-09-18
1990-11-17
1991-2-28
1992-05-18

Direktur
Wa. Direktur
Engineering Mg
HRD ang GA Mg
Education Mg
Business Mg

10

10
10

5000
4500
2500
2500
2500
2500

10
10

NO_
MANAJER
1
2
2
2
2


NO_DEPT
_KAR
10
10
20
30
40
50

INSERT INTO dbo.tbKaryawan( NM_KAR , TGL_MSK , JABATAN , KOMISI ,

VALUES

GAJI , NO_MANAJER , NO_DEPT_KAR)
('Hari','1990-08-15','Direktur',

10,5000,NULL,10)

INSERT INTO dbo.tbKaryawan(NM_KAR , TGL_MSK , JABATAN , KOMISI ,

GAJI , NO_MANAJER , NO_DEPT_KAR)
VALUES ( 'Hari','1990-08-15','Direktur',
10,5000,NULL,10)
Dst.

6.

Penjelasan :
- Karena NO_Kar dibuat identity (diisi otomatis oleh system pada SQL Server secara incement), maka ketika
melakukan insert, kita tidak lagi memanggil [NO_Kar], dan mengisikan datanya. Karena akan diisi oleh
system secara otomatis.
Tampilkan data dari tabel tbDepartemen, yang mempunyai NO_DEPT = 10,30,50
Ada 2 cara :
SELECT * FROM dbo.tbDepartemen WHERE NO_Dept IN (10,30,20)
SELECT * FROM dbo.tbDepartemen WHERE NO_Dept = 10 OR NO_Dept = 30 OR
NO_Dept = 20
Penjelasan :
- Bila penyeleksiannya mau digabungkan dengan koma (,), maka lakukan dengan perintah IN.
-


7.

Bila memakai operator = (samadengan), maka lakukan dengan perintah OR. (pelajari tentang operator)

Tampilkan Karyawan (tbKaryawan) yang berasal dari departemen Administration
(NO_DEPT_KAR = 10)
SELECT * FROM dbo.tbKaryawan WHERE NO_DEPT_KAR = 10

8.

Tampilkan Karyawan (tbKaryawan) yang memiliki Komisi saja, lalu urutkan datanya secara dari gaji yang
terkecil ke yang terbesar.
SELECT * FROM dbo.tbKaryawan WHERE KOMISI IS NOT NULL ORDER BY GAJI ASC

9.

Tampilkan Karyawan (tbKaryawan) yang jabatannya manager (Jabatannya mengandung string Mg)
Perhatikan perintah soalnya !!! (Jabatannya mengandung string Mg)
SELECT * FROM dbo.tbKaryawan WHERE JABATAN LIKE '%Mg%'
Penjelasan :
- Bila JABATAN LIKE '%Mg%' maka berarti mengandung string Mg.
-

Bila JABATAN LIKE 'Mg%' maka berarti diawali oleh string Mg.

-

Bila JABATAN LIKE '%Mg' maka berari diakhiri oleh string Mg.

-

Penulisannya bisa juga seperti ini JABATAN LIKE '%'+’Mg’+'%'.

10. Tampilkan karyawan (tbKaryawan) yang tidak punya atasan.
Yang dimaksud atasan disini diambil dari field [NO_MANAJER], jadi tampilkan Karywan yang tidak punya
manajer / atasan.
SELECT * FROM dbo.tbKaryawan WHERE NO_MANAJER IS NULL
11. Tampilkan karyawan (tbKaryawan) yang gajinya di atas 2700.
SELECT * FROM dbo.tbKaryawan WHERE GAJI > 2700
12. Tampilkan kayawan yang berasal dari departemen no (NO_DEPT_KAR) : 30, 40, atau 50. Urutkan datanya
secara mengecil berdasarkan NM_KAR.
SELECT * FROM dbo.tbKaryawan WHERE NO_DEPT_KAR IN (30,40,50) ORDER BY
NM_KAR ASC
13. Hapus Departemen (tbDepartemen) no : 30 dan 40
DELETE dbo.tbDepartemen WHERE NO_Dept IN (30,40)
Atau
DELETE dbo.tbDepartemen WHERE NO_Dept = 30 OR NO_Dept =

40

14. Hapus Karyawan (tbKaryawan) yang Tahun masuknya 1992
DELETE dbo.tbKaryawan WHERE YEAR(TGL_MSK) = '1992'
Penjelasan :
Karena yang dihapus harus diseleksi berdasarkan tahun masuknya saja, maka kita harus menyeleksi
[TGL_MSK] hanya berdasarkan tahun saja dengan fungsi YEAR(TGL_MSK). Bila bulan maka perintahnya
adalah MONTH(TGL_MSK). Bila perintah seleksinya bulan dan tahun contoh hapus data karyawan yang
Tahun masuknya 1992 bulan Februari. bisa dilakukan seperti di bawah ini :
DELETE dbo.tbKaryawan WHERE MONTH(TGL_MSK) = '2' AND YEAR(TGL_MSK) =
'1992'
15. Update Data Sakinah, naikkan gajinya 10% dari gaji sebelumnya, Komisinya ubah jadi 15
UPDATE tbKaryawan
SET GAJI = GAJI + (GAJI * 10%),
KOMISI = 15
WHERE NM_KAR = 'Sakinah`'
16. Update gaji karyawan dari departemen no: 30,40, atau 50 . Tambahkan sebanyak 250 pada setiap karyawan
dari departemen tersebut.
UPDATE
SET

tbKaryawan
GAJI = GAJI + 250

WHERE

NO_DEPT_KAR IN ( 30, 40, 50 )

17. Ubah field NM_KAR pada tabel Pegawai panjangnya(sizenya) menjadi 30.
ALTER TABLE tbKaryawan ALTER COLUMN NM_KAR VARCHAR(15)
18. Ubah nama tabel Karyawan menjadi Pegawai.
sp_rename 'Table.OldField','NewField','Column'
19. Ubah nama field NM_DEPT menjadi NAMA_DEPT pada tabel Departemen.
sp_rename 'Table.OldField','NewField'
20. Hapus tabel Departemen, Hapus Tabel Pegawai, Hapus Database Kepegawaian.
DROP TABLE tbDepartemen
DROP TABLE tbKaryawan
DROP DATABASE Kepegawaian