Kamis, 20 Oktober 2011

Tertawa itu Sehat Hahahahahahahahahahahahahahahahaha

T : Kenapa anak kelinci suka banget loncat-loncat?
J : Biasalah..... namanya juga anak-anak. Suka iseng

T : kenapa ninja kepalanya di tutupi pakai kain?
J : kalau pakai daun pisang dikirain nasi bungkus!

: Putih Hitam Merah, apa hayo?
J : Kuda Zebra habis di kerokin

T : Ikan apa yang matanya banyak sekali?
J : Ikan teri 1 ember

T : Orang apa yang di ajak bercanda malah marah?
J : Orang lagi sakit gigi

SEMOGA SEMUANYA BISA KETAWA, KALAU NGGAK TERSENYUM DIKIT AJA DEH NGGAK APA-APA

Minggu, 08 Agustus 2010

Tutorial SQL

Structured Query Language (SQL) merupakan bahasa yang banyak digunakan dalam berbagai produk
database. SQL dibangun di laboratorium IBM-San Jose California sekitar akhir tahun 70-an. Pertama kali
dikembangkan sebagai bahasa di produk database DB2 yang sampai saat ini merupakan produk database
andalan IBM. SQL sering di lafalkan dengan “sequel”.
Saat ini organisasi standar America (ANSI) menetapkan standar bahasa SQL yaitu ANSI-92 standard.
Masing-masing vendor database memiliki dialeknya sendiri sebagaian besar spesifikasinya mengacu pada
standar ANSI tersebut dengan berbagai ekstensi tambahan. SQL Server menggunakan bahasa Transact-SQL
dalam produknya, sedangkan Oracle menggunakan PL/SQL.
Dalam tutorial ini penulis menggunakan database NorthWind yang merupakan database sampel di SQL
Server sebagai sarana latihan. Tools yang digunakan adalah Query Analyzer, yang dapat diakses dari menu
Start > Program > Microsoft SQL Server > Query Analyzer. Anda juga dapat menggunakan produk database
lain seperti MySQL atau Oracle dengan konsep yang sama.

2
Dasar SQL
Fungsi paling dasar dari SQL adalah untuk menampilkan data dari database. Data tersebut selanjutnya dapat
difilter dan dimanipulasi sesuai kebutuhan aplikasi.
Perintah perintah dalam SQL terbagi dalam 2 kelompok besar :
• Data Manipulation Language
• Data Definition Language

Menampilkan Data dengan Statement SELECT
Syntax paling dasar untuk mengambil data dari database adalah sebagai berikut :
SELECT column
FROM table

Buka query Analyser dan pastikan anda telah terkoneksi dengan database Northwind. Tuliskan kode berikut
untuk menampilkan data customer yang terdapat di tabel Customers.
SELECT CustomerID, CompanyName, ContactName
FROM Customers

Jalankan perintah tersebut dengan menekan tombol F5, maka akan tampil tiga kolom dari tabel Customers :
CustomerID CompanyName ContactName
---------- ---------------------------------------- ----------
ALFKI Alfreds Futterkiste Maria
ANATR Ana Trujillo Emparedados y helados Ana
ANTON Antonio Moreno Taquería Antonio
AROUT Around the Horn Thomas
BERGS Berglunds snabbköp Christina
BLAUS Blauer See Delikatessen Hanna Moos
BLONP Blondesddsl père et fils Frédérique
BOLID Bólido Comidas preparadas Martín
BONAP Bon app' Laurence
………………………..
………………………..

Untuk menampilkan semua kolom dari suatu table, digunakan tanda asterik (*), daripada menyebutkan nama
kolomnya satu per satu. Tiluskan statement berikut :
SELECT * FROM Customers
Maka akan ditampilkan seluruh kolom di table Customers yang berjumlah 11 kolom.
Meskipun cara ini sangat sederhana untuk menampilkan isi seluruh kolom dari suatu table, anda tetap
dianjurkan untuk hanya mengambil data dari kolom yang anda perlukan saja. Pengambilan data yang tidak
perlu mengakibatkan penurunan performa aplikasi.

Filter Data dengan WHERE
Perintah SELECT dan FROM diatas hanya membatasi jumlah kolom yang ditampilkan saja, sedangkan
jumlah baris yang dihasilkan tidak dibatasi. Anda sering memerlukan hanya baris atau data yang memenuhi
kriteria tertentu saja yang ditampilkan.
Klausa WHERE digunakan untuk menentukan kriteria RECORD yang ditampilkan. Syntax umumnya adalah
sebagai berikut : Kuliah Umum IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com
3
SELECT columns
FROM tables
WHERE Conditions

Perintah SQL diatas dapat dimodifikasi agar menampilkan data untuk customer dengan kode ALFKI saja.
Kode SQL nya menjadi sebagai berikut :
SELECT CustomerID, CompanyName, ContactName
FROM Customers
WHERE CustomerID = 'ALFKI'

Setelah dirun maka tampil hasil query sebagai berikut :
CustomerID CompanyName ContactName
---------- ---------------------------------------- ----------
ALFKI Alfreds Futterkiste Maria Anders

(1 row(s) affected)

Terlihat bahwa hanya dihasilkan satu record yang memenuhi kriteria. Dalam perintah tersebut kriteria yang
digunakan adalah kolom CustomerID dengan nilai ALFKI.
Anda juga dapat membuat beberapa kriteria sekaligus dengan klausa WHERE. Logika yang digunakan bisa
berupa OR (atau) serta AND (dan). Perhatikan contoh perintah berikut :
SELECT CustomerID, CompanyName, ContactName
FROM Customers
WHERE CustomerID = 'ALFKI' OR
CustomerID = 'AROUT'

Maka dihasilkan dua buah record yang memenuhi kritreia tersebut :
CustomerID CompanyName ContactName
---------- ---------------------------------------- ----------
ALFKI Alfreds Futterkiste Maria Anders
AROUT Around the Horn Thomas Hardy
(2 row(s) affected)

Cara lain adalah menggunakan AND sehingga data yang ditampilkan hanya yang memenuhi kriteria yang
disebutkan saja. Misalkan perintah berikut :
SELECT CustomerID, CompanyName, ContactName
FROM Customers
WHERE City = 'London' AND
ContactName = 'Thomas Hardy'

Maka record yang ditampilkan harus memenuhi kedua kriteria di klausa WHERE. Hasil yang didapat adalah :
CustomerID CompanyName ContactName
---------- ---------------------------------------- ----------AROUT Around the Horn
Thomas Hardy
(1 row(s) affected)



Apabila anda mengganti AND dengan OR, maka hasilnya akan berbeda, yaitu sebagai berikut :
CustomerID CompanyName ContactName
---------- ---------------------------------------- ----------
AROUT Around the Horn Thomas Hardy
BSBEV B's Beverages Victoria Ashworth
CONSH Consolidated Holdings Elizabeth Brown Kuliah Umum IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com
4
EASTC Eastern Connection Ann Devon
NORTS North/South Simon Crowther
SEVES Seven Seas Imports Hari Kumar
(6 row(s) affected)

Sampai di sini anda telah mempelajari bagaimana mengambil data dari database berdasarkan kriteria tertentu,
serta perbedaan penggabungan kriteria yang menggunakan OR dan AND.

Sortir Data dengan ORDER BY
ORDER BY digunakan untuk mengurutkan hasil pencarian data. Secara default data yang ditampilkan disortir
berdasarkan urutan masuknya data ke dalam tabel. Dengan menggunakan ORDER BY anda dapat
mengurutkan berdasarkan kolom tertentu yang anda kehendaki.
Bila anda perhatikan perintah SQL diatas maka data yang dihasilkan telah diurutkan berdasarkan kolom
CustomerID. Anda dapat merubahnya dengan mengurutkan berdasarkan kolom ContactName dengan perintah
berikut :
SELECT CustomerID, CompanyName, ContactName
FROM Customers
ORDER BY ContactName

Sehingga hasilnya adalah :
CustomerID CompanyName ContactName
---------- ---------------------------------------- ----------
ROMEY Romero y tomillo Alejandra Camino
MORGK Morgenstern Gesundkost Alexander Feuer
ANATR Ana Trujillo Emparedados Ana Trujillo
TRADH Tradição Hipermercados Anabela Domingues
GOURL Gourmet Lanchonetes André Fonseca
EASTC Eastern Connection Ann Devon
LAMAI La maison d'Asie Annette Roulet

Terlihat bahwa data telah diurutkan berdasarkan ContactName secara ascending (dari a ke z). Anda dapat
membalik urutan menjadi dari z ke a dengan merubah klausa ORDER BY menjadi seperti berikut :
ORDER BY ContactName desc

Secara default urutan yang digunakan adalah ascending.
Selain itu dapat pula digunakan beberapa kriteria pengurutan. Artinya pengurutan dilakukan berdasarkan
kolom yang disebut pertama, setelah itu kolom kedua, dan selanjutnya. Perintah diatas dapat ditambahkan
sehingga menjadi sebagai berikut :
SELECT CustomerID, CompanyName, ContactName
FROM Customers
ORDER BY ContactName, CompanyName

Maka data akan diurutkan mengikuti ContactName, dan selanjutnya berdasarkan CompanyName.
Perintah ORDER BY juga dapat digabungkan dengan WHERE misalnya sebagai berikut :
SELECT CustomerID, CompanyName, ContactName
FROM Customers
WHERE City = 'London' OR
ContactName = 'Thomas Hardy'
ORDER BY ContactName
Kuliah Umum IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com

5
Perhatikan baik-baik bahwa ORDER BY harus diletakkan setelah WHERE. Apabila urutan tersebut terbalik
maka statement SQL tidak dapat dijalankan dan menghasilkan pesan error berikut :
Server: Msg 156, Level 15, State 1, Line 4
Incorrect syntax near the keyword 'WHERE'.

Cari yang Mirip dengan LIKE
Apabila WHERE memfilter data berdasarkan kriteria tertentu yang sudah pasti, maka LIKE digunakan untuk
memberikan kriteria yang tidak memiliki kepastian.
Misalkan anda ingin mencari nama produk yang dimulai dengan huruf c maka digunakan perintah berikut :
SELECT ProductID, ProductName
from Products
WHERE ProductName LIKE 'c%'

Perhatikan tanda % setelah huruf c tersebut, yang dapat diartikan sebagai : semua yang dimulai dengan c.
Keluaran perintah tersebut adalah :
ProductID ProductName
----------- -------------------------
60 Camembert Pierrot
18 Carnarvon Tigers
1 Chai
2 Chang
39 Chartreuse verte
4 Chef Anton's Cajun Seasoning
5 Chef Anton's Gumbo Mix
48 Chocolade
38 Côte de Blaye
(9 row(s) affected)

Contoh lain adalah bila diinginkan mencari nama produk yang mengandung huruf v maka digunakan perintah
berikut :
select ProductID, ProductName
from dbo.Products
WHERE ProductName LIKE '%v%'

Perhatikan bahwa tanda % diletakkan sebelum dan sesudah huruf v, yang berarti dicari segala sesuatu yang
mengandung huruf v tersebut.
Tanda % tersebut biasa dikenal sebagai wildcard, yang berfungsi menentukan berbagai kriteria dalam
operator LIKE. Daftar selengkapnya mengenai wildcard yang dapat digunakan di SQL Server dapat Anda
baca di Books Online SQL Server.
M Me el la ak ku uk ka an n P Pe er rh hi it tu un ng ga an n
Selain mengambil data dari database anda dapat juga melakukan berbagai perhitungan terhadap data tersebut.
Berbagai fungsi yang dapat dilakukan adalah penjumlahan, perkalian, pembagian dan pengurangan. Simbol-
simbol yang digunakan adalah sebagai berikut :
• * Perkalian
• / Pembagian
• + Penjumlahan Kuliah Umum IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com

6
• - Pengurangan

Contoh berikut menghitung harga setiap produk yang terjual dengan mengalikan Quantity dan UnitPrice.
SELECT ProductID, (UnitPrice * Quantity) as TotalHarga
FROM [Order Details]

Misalkan tiap produk dikenakan diskon sebesar 10% dan ingin menampilkan harga setelah diskon, maka
perintahnya adalah sebagai berikut :
SELECT ProductID, (UnitPrice * Quantity) as TotalHarga,
(UnitPrice * Quantity) * 0.1 as Diskon,
(UnitPrice * Quantity) * (1 - 0.1) as HargaDiskon
FROM [Order Details]

Diskon 10% adalah sama dengan 0.1, sehingga angka tersebut digunakan dalam kode program.
Hasil perhitungan selengkapnya adalah :
ProductID TotalHarga Diskon HargaDiskon
----------- --------------------- -----------------------
11 168.0000 16.80000 151.20000
42 98.0000 9.80000 88.20000
72 174.0000 17.40000 156.60000
14 167.4000 16.74000 150.66000
51 1696.0000 169.60000 1526.40000
41 77.0000 7.70000 69.30000
51 1484.0000 148.40000 1335.60000

Membuat Alias dengan AS
Dalam contoh perhitungan dengan SQL diatas banyak digunakan keyword AS unatuk memberikan nama
kolom. Fungsi AS tersebut adalah memberikan alias terhadap hasil perhitungan sehingga lebih mudah dibaca.
Apabila suatu perhitungan tidak disertakan alias menggunakan AS maka kolom hasil perhitungan tersebut
menjadi tidak dikenal. Perhatikan contoh berikut :
SELECT ProductID, (UnitPrice * Quantity)
FROM [Order Details]

Maka kolom hasil perkalian tidak memiliki nama sebagaimana hasil berikut :
ProductID
----------- ----------
11 168.0000
42 98.0000
72 174.0000
14 167.4000
51 1696.0000
41 77.0000

Menghitung Group Data dengan Fungsi Agregat
Selain mengambil data dengan kriteria tertentu, sering juga diperlukan berbagai perhitungan yang bersifat
ringkasan. Fungsi agregat merupakan sekumpulan fungsi yang siap dipakai untuk mendapatkan hasil
penjumlahan, penghitungan frekuansi, rata-rata, dan lain-lain. Penggunaan fungsi ini sering digabungkan
dengan klausa GROUP BY yang akan diterangkan kemudian. Kuliah Umum IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com


7
Fungsi SUM
Apabila anda ingin mendapatkan jumlah dari sekelompok data yang memiliki kriteria tertentu maka SUM
adalah pilihan yang tepat. Fungsi ini menjumlahkan nilai kolom tertentu yang telah dikelompokkan menurut
kriteria tertentu.
Misalnya anda ingin menghitung jumlah jumlah barang yang terjual untuk kategori produk tertentu yang
terdapat di tabel Order Details pada database NorthWind.
USE NorthWind
SELECT SUM(Quantity) as QTY from [Order Details]
WHERE ProductID = 11
Maka dihasilkan output sebagai berikut :
QTY
-----------
706
(1 row(s) affected)

Perintah tersebut diawali dengan USE Northwind yang artinya anda menggunakan database NorthWind.
Misalnya anda ingin menggunakan database lain bernama Pubs maka diketikkan perintah USE Pubs. Perintah
ini merupakan alternatif pemilihan database dengan cara manual dari menu combo di Query Analyser.
Selanjutnya diambil data kolom Quantity yang telah dimasukkan sebagai argumen fungsi SUM, sehingga
output yang diharapkan adalah total Quantity produk yang memiliki ProductID = 11. Pengunaan kriteria
ProductID merupakan suatu keharusan karena fungsi SUM akan menjumlahkan data yang memiliki kriteria
tertentu. Kriteria tersebut dalam contoh diatas adalah ProductID = 11.
Fungsi SUM hanya dapat digunakan untuk menjumlahkan kolom dengan type data Numeric.

Fungsi COUNT
Untuk menghitung frekuensi pemunculan suatu data digunakan fungsi COUNT. Sebagaimana fungsi SUM,
maka COUNT hanya dapat digunakan apabila data tersebut telah ditentukan kriterianya dengan klausa
WHERE.
Misalkan anda ingin menghitung jumlah Customer yang terdapat di negara France. Tabel yang digunakan
adalah tabel Customers.
SELECT COUNT (CustomerID) as Jumlah from Customers
WHERE Country = 'France'

Fungsi AVG
Fungsi ini hanya dapat digunakan untuk tipe data numeric, sebagaimana fungsi SUM. AVG menghitung rata-
rata sekumpulan data yang telah ditentukan kriterianya menggunakan WHERE.
USE NorthWind
SELECT AVG(Quantity) as Rataan from [Order Details]
WHERE ProductID = 11

Contoh diatas menghitung rata-rata jumlah produk yang terjual untuk barang dengan ProductID = 11. Apabila
diinginkan menghitung rata-rata seluruh jumlah peroduk terjual maka perintahnya menjadi :
SELECT AVG(Quantity) as Rataan from [Order Details]
Kuliah Umum IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com



8
Fungsi MIN dan MAX
Untuk mencari nilai maksimum dan minimum dari sekumpulan data anda dapat menggunakan fungsi MIN
dan MAX. Misalkan anda ingin mencari jumlah barang yang paling banyak terjual maka dijalankan perintah
berikut :
SELECT MAX(Quantity) as Maksimum from [Order Details]
Menggunakan Beberapa Fungsi Sekaligus
Fungsi-fungsi yang telah dijelaskan diatas juga dapat digunakan bersama-sama dalam satu perintah.
Perhatikan baris kode berikut :
USE NorthWind
SELECT MAX(Quantity) as Maksimum,
MIN(Quantity) as Minimum,
AVG(Quantity) as Rataan
from [Order Details]

Jalankan perintah tersebut maka didapat hasil sebagai berikut :
Maksimum Minimum Rataan
-------- ------- -----------
130 1 23
(1 row(s) affected)

Klausa GROUP BY
Fungsi agregat yang telah dijelaskan sebelumnya hanya menampilkan satu baris hasil. Sering dibutuhkan
untuk menampilkan rangkuman hasil perhitungan beberapa kelompok data dalam satu kali tampilan.
Misalnya anda ingin menghitung rata-rata dan jumlah produk yang terjual untuk setiap jenis produk. Untuk
melakukan ini digunakan klausa GROUP BY yang berfungsi mengelompokkan data yang memiliki kriteria
sama. Dengan demikian dapat dihasilkan suatu rangkuman hasil perhitungan untuk tiap kategori data.
Tuliskan kode program berikut :
SELECT ProductID, SUM(Quantity)as Jumlah
from [Order Details]
GROUP BY ProductID

Perintah tersebut akan menghitung jumlah produk yang terjual untuk setiap ProductID dan mengelompokkan
hasilnya berdasarkan ProductID tersebut. Hasil yang didapat sebagai berikut :
ProductID Jumlah
----------- -----------
23 580
46 548
69 714
77 791
31 1397
15 122
62 1083

Terlihat jelas bahwa SQL Server telah mengelompokkan barang berdasarkan ProductID dan menghitung
jumlah di kolom (QTY) untuk tiap ProductID tersebut.
Hal yang perlu mendapatkan perhatian adalah pada baris terakhir kode program tersebut yaitu pada bagian :
GROUP BY ProductID
Kuliah Umum IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com



9
Bagian ini berfungsi mengelompokkan barang berdasarkan ProductID nya. Sedangkan kolom ProductID
sendiri telah disebutkan di dalam daftar SELECT. Ini merupakan aturan dasar apabila anda menggunakan
GROUP BY dalam perhitungan dengan fungsi agregat. Kolom dalam daftar SELECT yang tidak dihitung
dengan fungsi agregat harus dimasukkan dalam daftar GROUP BY. Pada contoh diatas kolom ProductID
masuk dalam daftar SELCT tetapi tidak dihitung menggunakan fungsi SUM, sehingga harus dimasukkan
dalam daftar GROUP BY.
Salah satu contoh pengembangan yang lebih kompleks dari perintah penggunaan GROUP BY ini adalah
sebagai berikut :
SELECT ProductID, SUM(Quantity)as Jumlah,
AVG(Quantity) as Rataan,
SUM(Quantity*UnitPrice)as Nilai,
AVG(Quantity*UnitPrice)as AVGNilai
from [Order Details]
GROUP BY ProductID
ORDER BY Nilai DESC

Kode tersebut menghitung jumlah, rata-rata, serta nilai uang tiap kategori produk. Nilai uang dari tiap produk
didapat dengan mengalikan Quantity dengan UnitPrice. Selanjutnya data diurutkan berdasarkan nilai uangnya
dari yang terbesar hingga terkecil. Hasilnya adalah sebagai berikut :
ProductID Jumlah Rataan Nilai AVGNilai
----------- ----------- ----------- -------------------
38 623 25 149984.2000 6249.3416
29 746 23 87736.4000 2741.7625
59 1496 27 76296.0000 1412.8888
60 1577 30 50286.0000 986.0000
62 1083 22 49827.9000 1038.0812
56 1263 25 45121.2000 902.4240
51 886 22 44742.6000 1147.2461
17 978 26 35482.2000 958.9783
18 539 19 31987.5000 1184.7222
28 640 19 26865.6000 814.1090

Perhatikan baik-baik bahwa perintah ORDER BY harus selalu diletakkan setelah GROUP BY.


Menghilangkan Penggandaan dengan DISTINCT
Penggunaan keyword DISTINCT hampir mirip dengan GROUP BY yaitu untuk melakukan grouping hasil
pencarian. Tetapi DISTINCT hanya berfungsi menghilangkan duplikasi hasil dan tidak dapat digunakan untuk
membantu melakukan berbagai perhitungan fungsi agregat.
Penerapan praktisnya misalnya anda ingin mencari negara mana saja yang yang terdapat di tabel customer.
Apabila anda menggunakan perintah SELECT saja maka akan muncul banyak duplikasi karena banyak
terdapat customer yang berasal dari negara yang sama. Dengan menggunakan DISTINCT maka duplikasi
tersebut dapat dihilangkan.
SELECT DISTINCT Country
FROM Customers

Cobalah bandingkan hasilnya apabila anda menggunakan perintah berikut :
SELECT Country
FROM Customers Kuliah Umum IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com



10
Membatasi GROUP BY dengan HAVING
Untuk membatasi hasil yang didapat dari suatu perintah yang menggunakan GROUP BY digunakan klausa
HAVING. Fungsi klausa ini mirip dengan WHERE tetapi HAVING hanya dapat digunakan bersamaan
dengan klausa GROUP BY dan diletakkan sesudah GROUP BY.
Perintah berikut digunakan untuk mencari produk yang jumlah penjualannya melebihi 1000 buah di tabel
Order Details.
SELECT ProductID, SUM(Quantity)as Jumlah,
FROM [Order Details]
GROUP BY ProductID
HAVING SUM(Quantity) > 1000

Apabila dijalankan maka hasilnya adalah sebagai berikut :
ProductID Jumlah
----------- --------
31 1397
62 1083
21 1016
75 1155
60 1577
Terlihat jelas bahwa yang ditampilkan hanya yang memiliki jumlah diatas 1000 sebagaimana kriteria :
HAVING SUM(Quantity) > 1000
15

M Me en nc ca ar ri i D Da at ta a d de en ng ga an n B BE ET TW WE EE EN N
Keyword BETWEEN digunakan untuk mencari data yang memenuhi interval kriteria tertentu dalam suatu
kolom. Biasanya digunakan untuk mencari data berdasarkan interval tanggal tertentu.
Penggunaan praktisnya misalnya anda ingin mencari penjualan yang terjadi antara tanggal 1 Januari 2003
sampai dengan 31 Januari 2003. Keyword BETWEEN digunakan bersamaan dengan interval tanggal tersebut.
Tuliskan baris kode berikut :

USE NorthWind
SELECT OrderID, CustomerID, OrderDate
FROM Orders
WHERE OrderDate BETWEEN '07/01/1996' AND '07/31/1996'

Kode tersebut mencari data di tabel Orders yang memiliki OrderDate antara tanggal 1 Juli 1996 sampai
dengan 31 Juli 1996. Setelah di run maka hasilnya adalah :
OrderID CustomerID OrderDate
----------- ---------- -----------------
10248 VINET 1996-07-04 00:00:00.000
10249 TOMSP 1996-07-05 00:00:00.000
10250 HANAR 1996-07-08 00:00:00.000
10251 VICTE 1996-07-08 00:00:00.000
10252 SUPRD 1996-07-09 00:00:00.000
10253 HANAR 1996-07-10 00:00:00.000

Selain menggunakan kriteria tanggal anda juga dapat menggunakan keyword BETWEEN tersebut untuk tipe
data lain misalnya string dan numeric. Misalnya anda ingin menampilkan data customer yang diawali huruf A
sampai dengan D, maka digunakan kode program berikut : Kuliah Umum IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com



11
SELECT * FROM dbo.Customers
WHERE CompanyName BETWEEN 'A' AND 'D'

M Me en ng gg ga ab bu un ng gk ka an n T Ta ab be el l
Anda telah mempelajari bagaimana menampilkan data dari database Northwind serta memfilternya dengan
berbagai kriteria. Pengambilan data tersebut hanya dari satu tabel saja sehingga belum dapat menyajikan
informasi lebih detil.
Perintah SQL dapat digunakan untuk menampilkan data dari 2 atau lebih tabel. Antara tabel tersebut harus
memiliki penghubung yaitu Primary Key dan Foreign Key sebagaimana telah dijelaskan pada Bab 2
mengenai desain database. Dengan menggunakan kriteria penghubung tersebut anda dapat menampilkan data
dari beberapa tabel secara konsisten.
Inner Join
Penggabungan tabel dalam perintah SQL menggunakan keyword JOIN. Jenis penggabungan tabel yang
pertama adalah INNER JOIN. INNER JOIN hanya menampilkan data yang benar-benar terdapat di dalam
tabel yang saling dihubungkan.
Misalnya anda menggabungkan tabel Customers dengan Orders, maka field penghubung yang digunakan
adalah CustomerID. Perhatikan diagram berikut :




Pada gambar tersebut terlihat bahwa CustomerID merupakan Primary Key di tabel Customers dan menjadi
Foreign Key di tabel Orders. Hubungan kedua tabel tersebut adalah One to Many, dimana satu customer dapat
memiliki banyak order yang berulang.
Dalam teknik INNER JOIN maka hasil yang ditampilkan hanya record yang memiliki CustomerID sama di
kedua tabel tersebut. Apabila terdapat customr yang CustomerID nya tidak ditemukan di tabel Orders maka
data tersebut tidak ditampilkan.
Coba ketikkan perintah berikut di Query Analyser :
SELECT CompanyName, OrderID, OrderDate
FROM Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID
Kuliah Umum IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com



12
Dan perhatikan hasilnya sebagai berikut :
CompanyName OrderID OrderDate
---------------------------------------- ----------- ---------
Vins et alcools Chevalier 10248 1996-07-04 00:00:00.000
Toms Spezialitäten 10249 1996-07-05 00:00:00.000
Hanari Carnes 10250 1996-07-08 00:00:00.000
Victuailles en stock 10251 1996-07-08 00:00:00.000
Suprêmes délices 10252 1996-07-09 00:00:00.000
Hanari Carnes 10253 1996-07-10 00:00:00.000
…………………………………………………………
……………………………………………………….
(830 row(s) affected)

Perintah SQL tersebut mengambil field CompanyName dari tabel Customers, sedangkan field OrderID dan
OrderDate diambil dari tabel Orders. Perhatikan baik baik diagram pada gambar 3.2.
Kunci utama penggabungan dua tabel tersebut adalah keyword INNER JOIN dengan kriteria CustomerID.
Perhatikan bahwa nama tabel juga harus dituliskan sebelum nama field CustomerID tersebut.
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID

Antara nama tabel dengan nama field dibatasi dengan tanda titik (.) misalnya Orders.CustomerID. Tujuan
pencantuman nama tabel tersebut adalah menghindari ambiguitas yang mengakibatkan error apabila perintah
tersebut dieksekusi. Karena CustomerID tersebut terdapat di kedua tabel maka nama tabel harus dicantumkan
agar dapat diidentifikasi secara unik field mana yang dimaksud.
Untuk memberikan gambaran lebih kompleks mengenai penerapan penggabungan tabel ini anda dapat
memodifikasi contoh perintah yang terdapat penggunaan GROUP BY. Pada perintah tersebut anda
menghitung Jumlah dan rataan produk yang terjual, tetapi hanya ditampilkan ProductID saja sedangkan nama
produknya tidak terlihat karena terdapat di tabel lain.
Anda dapat menggabungan tabel Order Details tersebut dengan tabel Products yang menyimpan nama
produk. Dengan demikian dapat ditampilkan baik ProductID maupun nama produknya. Tuliskan baris
perintah berikut :
SELECT Products.ProductID, Products.ProductName,
SUM([Order Details].Quantity) AS Jumlah,
AVG([Order Details].Quantity) AS Rataan,
SUM(Products.UnitPrice * [Order Details].Quantity)
AS Nilai,
AVG(Products.UnitPrice * [Order Details].Quantity)
AS AVGNilai
FROM Products
INNER JOIN [Order Details]
ON Products.ProductID = [Order Details].ProductID
GROUP BY Products.ProductID, Products.ProductName

Setelah dijalankan maka akan tampak hasilnya :
ProductID ProductName Jumlah Rataan Nilai AVGNilai
----------- ---------------------------------------- ---------
1 Chai 828 21 14904.0000 392.2105
2 Chang 1057 24 20083.0000 456.4318
3 Aniseed 328 27 3280.0000 273.3333
4 Chef Anton 453 22 9966.0000 498.3000

Pada perintah diatas anda dapat melihat bahwa semua nama field diawali dengan nama tabelnya. Hal ini
menyebabkan penulisan kode program menjadi panjang, tetapi sisi positifnya adalah kita dapat langsung
mengetahui posisi tabel dari tiap-tiap field yang ditampilkan.
Selain itu antara tabel Customers terdapat beberapa field yang namanya sama sehingga apabila tidak
dituliskan nama tabelnya berakibat error pada perintah tersebut. Kuliah Umum IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com

13
LEFT JOIN dan RIGHT JOIN
Berbeda dengan INNER JOIN yang hanya menampilkan irisan data dari tabel yang digabungkan maka LEFT
JOIN akan menampilkan data dari tabel yang disebutkan terlebih dahulu.
LEFT JOIN
Misalkan pada diagram gambar 3.2 diatas digunakan perintah LEFT JOIN maka apabila tabel Customers
disebutkan terlebih dahulu SQL Server akan menampilkan semua nama customer yang terdapat di tabel
tersebut. Semua data customer ditampilkan walaupun CustomerID nya tidak terdapat di tabel Orders.
Penggunaan praktis perintah ini misalnya anda ingin mengetahui frekuensi order semua customer baik yang
telah memiliki order maupun yang belum. Untuk kebutuhan tersebut maka ditampilkan semua customer
berikut data frekuensi ordernya. Perhatikan contoh perintah berikut :
SELECT Customers.CustomerID, Customers.CompanyName,
COUNT(Orders.OrderID) AS Frekuensi
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
GROUP BY Customers.CustomerID, Customers.CompanyName
ORDER BY COUNT(Orders.OrderID)

Karena menggunakan perintah LEFT JOIN maka semua data di tabel Customers ditampilkan seluruhnya
walaupun frekuensi ordernya 0. Hasil perintah tersebut adalah :
CustomerID CompanyName Frekuensi
---------- ---------------------------------------- ----------
PARIS Paris spécialités 0
FISSA FISSA Fabrica Inter. Salchichas S.A. 0
CENTC Centro comercial Moctezuma 1
LAZYK Lazy K Kountry Store 2
GROSR GROSELLA-Restaurante 2
LAUGB Laughing Bacchus Wine Cellars 3
……………
……………
(91 row(s) affected)
Anda dapat melihat terdapat 2 customer yang frekuensi 0 tetapi tetap ditampilkan. Di akhir tampilan hasil
tersebut terlihat ada 91 baris yang ditampikan. Untuk melakukan pengecekan jalankan perintah berikut :
SELECT COUNT(*) from dbo.Customers
maka hasilnya adalah :


-----------
91
(1 row(s) affected)

Artinya terdapat 91customer di tabel Customers, yaitu sama dengan jumlah baris di perintah sebelumnya.
Dengan demikian memang benar bahwa LEFT JOIN telah menampilkan seluruh Customer yang berjumlah
91.
RIGHT JOIN
Perintah RIGHT JOIN merupakan kebalikan dari LEFT JOIN, yaitu menampilkan semua isi tabel yang
disebutkan kedua dalam perintah join. Dalam contoh di atas apabila LEFT JOIN diganti RIGHT JOIN maka
semua isi tabel Orders akan ditampilkan semuanya.
Cobalah memodifikasi perintah diatas menjadi sebagai berikut :
SELECT Customers.CustomerID, Customers.CompanyName, Kuliah Umum IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com


14
COUNT(Orders.OrderID) AS Frekuensi
FROM Customers
RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
GROUP BY Customers.CustomerID, Customers.CompanyName
ORDER BY COUNT(Orders.OrderID)
Setelah anda jalankan perintah tersebut lihatlah perbedaaanya dengan perintah LEFT JOIN sebelumnya. Maka
terlihat hanya dihasilkan 89 baris, berarti terdapat 2 customer yang CustomerID nya tidak terdapat di tabel
Orders atau frekuensi ordernya = 0.
FULL JOIN
Jenis join terakhir adalah FULL JOIN yang menampilkan semua data dari dua tabel yang dihubungkan
meskipun terdapat data yang tidak memiliki pasangan di tabel lainnya.
Misalnya kita mengambil data dari tabel Country dengan tabel City menggunakan FULL JOIN. Data dari
kedua tabel akan ditampilkan semuanya baik untuk nama kota yang tidak memiliki data negara maupun
sebaliknya. Perhatikan perintah berikut :
M Ma an ni ip pu ul la as si i D Da at ta a d de en ng ga an n S SQ QL L
Selain untuk mengambil informasi dari database anda juga dapat menggunakan perintah SQL untuk
memanipulasi data. Proses tersebut meliputi menambah, menghapus, dan mengedit data.
Perintah manipulasi data sangat sering digunakan dalam aplikasi database dan bahakan dapat dikatakan
menjadi inti sebuah aplikasi. Sebuah tabel dapat diisi dengan data, dihapus, maupun diedit datanya. Perintah-
perintah tersebut dilaksanakan berdasarkan kriteria tertentu menggunakan keyword WHERE, BETWEEN
maupun LIKE.
Statement INSERT
Untuk mengisikan data ke dalam suatu tabel digunakan perntah INSERT yang memiliki syntax umum sebagai
berkut :
INSERT table (column list)
VALUES (value list)
Misalnya untuk mengisikan data customer baru dituliskan perintah berikut :
INSERT Customers (CustomerID, CompanyName, ContactName)
VALUES ('MJTR', 'Majuterus', 'Lisha')
Perintah tersebut mengisikan data di tabel Customers untuk tiga kolom yaitu CustomerID, CompanyName
dan ContactName. Sedangkan kolom lain yang tidak diisi maka terisi dengan nilai default sesuai dengan
desain tabelnya. Apabila desain tabelnya tidak mengijinkan nilai NULL maka anda harus mengisikan nilainya
dalam perintah INSERT tersebut.
Apabila anda menampilkan data tabel Customers maka tampak data yang telah diisikan tersebut sebagai
berikut :
CustomerID CompanyName ContactName
---------------------------------------- ---------------------
MAISD Maison Dewey Catherine Dewey MEREP Mère
Paillarde Jean Fresnière
MJTR Majuterus Lisha
MORGK Morgenstern Gesundkost Alexander Feuer

Apabila perintah INSERT digunakan untuk mengisikan seluruh kolom yang terdapat di suatu tabel maka
nama kolom tidak perlu disebutkan secara eksplisit. Cukup disebutkan nilai data yang akan dimasukkan saja.
Misalnya untuk mengisikan data ke tabel Shippers yang hanya terdiri dari tiga kolom dilancarkan perintah
berikut :
INSERT Shippers Kuliah Umum IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com


15
VALUES ('Megah Shipping', '021-55568953')
Anda mungkin bertanya mengapa VALUES yang diisikan hanya dua kolom, sedangan tabel Shippers terdiri
dari 3 kolom. Jawabannya adalah karena kolom pertama yang bernama ShippersID telah disetting desainnya
sebagai autonumber. Dengan demikian kolom tersebut akan terisi secara otomatis dengan angka berurut setiap
terdapat data baru yang dimasukkan sehingga tidak perlu lagi diinsert secara eksplisit.
INSERT dari Tabel Lain
Pengisian tabel juga dapat menggunakan data yang diperoleh dari tabel lain. Caranya adalah dengan
menggunakan perintah SELECT v berisi daftar data yang akan dimasukkan setelah perintah INSERT.
Misalnya anda ingin memasukkan data di tabel Suppliers ke dalam tabel Customers maka digunakan perintah
berikut :
INSERT Customers (CustomerID, CompanyName, ContactName)
SELECT SupplierID, CompanyName, ContactName
FROM Suppliers
WHERE Country = 'USA'

Apabila anda belum melakukan perubahan apapun di tabel Suppliers maka akan terdapat 4 supplier yang
diisikan ke tabel Customers.
Perintah tersebut menggunakan kriteria WHERE Country = 'USA', sehingga hanya supplier yang berada di
negara USA saja yang dimasukkan ke tabel Customers.
Prinsip utama dalam penggunaan perintah tersebut adalah jumlah kolom yang akan diisi harus sama dengan
kolom yang diambil dalam daftar SELECT. Dengan demikian apabila dua buah tabel memiliki jumlah kolom
yang sama maka anda dapat menggunakan perintah tersebut untuk mengisikan seluruh kolom dengan perintah
sederhana tanpa menyebutkan kolmnya satu per satu.
Misalkan tabel Customers dan Suppliers memiliki jumlah kolom sama dan anda ingin memasukkan semua
supplier ke tabel Customers maka dapat digunakan perintah sederhana sebagai berikut :
INSERT Customers
SELECT * FROM Suppliers

Statement DELETE
Statement DELETE merupakan kebalikan perintah INSERT. Perintah ini menghapus data yang terdapat di
suatu tabel. Data dihapus per record atau per baris berdasarkan kriteria tertentu.
Penentuan kriteria record mana yang akan dihapus bisa dilakukan dengan menggunakan klausa WHERE.
Misalkan anda ingin menghapus data semua customer yang berada di negara France.
Syntax umum statement ini adalah sebagai berikut :
DELETE FROM table_name
WHERE Condition

Untuk menghapus data customer yang berasal dari Mexico di tabel Customers maka perintahnya adalah :
DELETE FROM Customers
where Country= 'Mexico'

Atau anda bisa juga menghapus data berdasarkan CustomerID yang merupakan primary key di tabel tersebut.
DELETE FROM Customers
where CustomerID= ‘ALFKI’

Selain menggunakan WHERE, dapat juga digabungkan dengan operator LIKE dan BETWEEN untuk
membuat kriteria yang lebih fleksible. Misalnya sebagai berikut :
DELETE FROM Orders Kuliah Umum IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com

16
WHERE OrderDate BETWEEN '07/01/1996' AND '07/31/1996'

Perintah tersebut akan menghapus data di tabel order yang memiliki OrderDate antara 1 Juli 1996 sampai
dengan 31 Juli 1996.
Menghapus Seluruh Tabel
Apabila anda ingin mengosongkan tabel dan menghapus semua data yang ada di dalamnya maka digunakan
perintah DELETE tanpa menggunakan kondisi WHERE.
Contoh berikut adalah perintah untuk mengosongkan isi tabel Products :
DELETE Products
Perintah tersebut hanya mengosongkan isi tabel saja tetapi tidak menghapus tabelnya.
Perlu diperhatikan apabila data dalam suatu tabel ternyata memiliki hubungan referential integrity dengan
tabel lain maka penghapusan tersebut tidak dapat dilakukan. Mislanya apabila anda ingin menghapus data
customer yang telah memiliki data order di tabel Orders, sedangakan antara kedua tabel tersebut memiliki
hubungan referential integrity.
Untuk menghapus semua data di suatu tabel yang tidak memiliki hubungan referential integrity dengan tabel
lain dapat digunakan perintah TRINCATE.
TRUNCATE TABLE Customers

Maka perintah tersebut akan menghapus semua data customer yang tidak memiliki hubungan dengan tabel
lain.

Statement UPDATE
Apabila anda ingin mengedit atau merubah suatu data tanpa menghapusnya maka digunakan perintah
UPDATE . Perintah ini juga menggunakan kondisi tertentu dengan klausa WHERE sebagaimana perintah
DELETE.
Syntax umum statement UPDATE adalah sebagai berikut :
UPDATE table_name
SET Column1 = Value1, Column2 = Value2, …..
WHERE condition

Perintah ini melakukan perubahan pada kolom tertentu sebagaimana yang disebutkan dalam perintah SET.
Perubahan dilakukan terhadap record yang memenuhi kriteria di klausa WHERE.
Misalkan anda ingin menaikkan harga produk sebesar 10% untuk semua barang yang memiliki CategoryID =
2, maka digunakan perintah berikut :
UPDATE Products
SET UnitPrice = UnitPrice * 1.1
WHERE CategoryID = 2

Harga barang terdapat di kolom UnitPrice sehingga kolom tersebut dikalikan dengan 1.1. Perintah tersebut
akan menaikkan harga semua barang yang terdapat di tabel Products sesuai dengan kriteria CategoryID.
Selain menggunakan kriteria WHERE perintah ini juga dapat digabungkan dengan operator LIKE dan
BETWEEN sebagaiman statement DELETE diatas.
Contoh berikut menggambarkan penggunaan beberapa kriteria untuk mengupdate suatu data :
UPDATE Customers
SET Country = 'Indonesia',
ContactName = 'Lisha' Kuliah Umum IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com


17
WHERE City = 'Jakarta'
OR City = 'Surabaya'

Perintah diatas berguna untuk merubah nama negara menjadi Indonesia dan nama ContactName menjadi
Lisha apabila kolom City berisi Jakarta atau Surabaya.


Minggu, 28 Februari 2010

Pengembangan SO LINUX

Linux

Linux
Tux.svg
Tux, penguin, maskot Linux
Keluarga OS: Bertipe Unix
Rilis terakhir
Tipe kernel: Monolitik
Lisensi: GNU General Public License dan lainnya
Status: Aktif

Linux (diucapkan ˈlɪnəks atau /ˈlɪnʊks/)[1] adalah nama yang diberikan kepada sistem operasi komputer bertipe Unix. Linux merupakan salah satu contoh hasil pengembangan perangkat lunak bebas dan sumber terbuka utama. Seperti perangkat lunak bebas dan sumber terbuka lainnya pada umumnya, kode sumber Linux dapat dimodifikasi, digunakan dan didistribusikan kembali secara bebas oleh siapa saja.[2]

Nama "Linux" berasal dari nama kernelnya (kernel Linux), yang diperkenalkan tahun 1991 oleh Linus Torvalds. Sistemnya, peralatan sistem dan pustakanya umumnya berasal dari sistem operasi GNU, yang diumumkan tahun 1983 oleh Richard Stallman. Kontribusi GNU adalah dasar dari munculnya nama alternatif GNU/Linux.[3]

Linux telah lama dikenal untuk penggunaannya di server, dan didukung oleh perusahaan-perusahaan komputer ternama seperti Intel, Dell, Hewlett-Packard, IBM, Novell, Oracle Corporation, Red Hat, dan Sun Microsystems. Linux digunakan sebagai sistem operasi di berbagai macam jenis perangkat keras komputer, termasuk komputer desktop, superkomputer,[4], dan sistem benam seperti pembaca buku elektronik, sistem permainan video (PlayStation 2, PlayStation 3 dan XBox[5]), telepon genggam dan router. Para pengamat teknologi informatika beranggapan kesuksesan Linux dikarenakan Linux tidak bergantung kepada vendor (vendor independence), biaya operasional yang rendah, dan kompatibilitas yang tinggi dibandingkan versi UNIX tak bebas, serta faktor keamanan dan kestabilannya yang tinggi dibandingkan dengan sistem operasi lainnya seperti Microsoft Windows. Ciri-ciri ini juga menjadi bukti atas keunggulan model pengembangan perangkat lunak sumber terbuka (opensource software).

Sistem operasi Linux yang dikenal dengan istilah distribusi Linux (Linux distribution) atau distro Linux umumnya sudah termasuk perangkat-perangkat lunak pendukung seperti server web, bahasa pemrograman, basisdata, tampilan desktop (desktop environment) seperti GNOME,KDE dan Xfce juga memiliki paket aplikasi perkantoran (office suite) seperti OpenOffice.org, KOffice, Abiword, dan Gnumeric.

Sejarah

Sistem operasi Unix dikembangkan dan diimplementasikan pada tahun 1960-an dan pertama kali dirilis pada 1970. Faktor ketersediaannya dan kompatibilitasnya yang tinggi menyebabkannya dapat digunakan, disalin dan dimodifikasi secara luas oleh institusi-institusi akademis dan pada pebisnis.

Proyek GNU yang mulai pada 1984 memiliki tujuan untuk membuat sebuah sistem operasi yang kompatibel dengan Unix dan lengkap dan secara total terdiri atas perangkat lunak bebas.[6] Tahun 1985, Richard Stallman mendirikan Yayasan Perangkat Lunak Bebas dan mengembangkan Lisensi Publik Umum GNU (GNU General Public License atau GNU GPL). Kebanyakan program yang dibutuhkan oleh sebuah sistem operasi (seperti pustaka, kompiler, penyunting teks, shell Unix dan sistem jendela) diselesaikan pada awal tahun 1990-an, walaupun elemen-elemen tingkat rendah seperti device driver, jurik dan kernel masih belum selesai pada saat itu.[7] Linus Torvalds pernah berkata bahwa jika kernel GNU sudah tersedia pada saat itu (1991), dia tidak akan memutuskan untuk menulis versinya sendiri.[8]

MINIX

MINIX, sebuah sistem bertipe Unix yang ditujukan untuk penggunaan akademis dirilis oleh Andrew S. Tanenbaum pada tahun 1987. Kode sumber MINIX 1.0 tercantum dalam bukunya Operating Systems: Design and Implementation. Walaupun dapat secara mudah didapatkan, modifikasi dan pendistribusian ulang tidak diperbolehkan pada saat itu. Hak cipta dari kode sumbernya termasuk ke dalam hak cipta dari bukunya yang dipublikasikan oleh Prentice Hall. Sebagai tambahan, disain versi 16-bit dari MINIX kemudian tidak secara baik diadaptasikan kepada versi 32-bit dari arsitektur Intel 386 yang murah dan populer yang digunakan secara luas di komputer pribadi.

Tahun 1991, Torvalds mulai bekerja untuk membuat versi non-komersial pengganti MINIX sewaktu ia belajar di Universitas Helsinki.[9] Hasil kerjaannya itu yang kemudian akan menjadi kernel Linux.

Pada tahun 1992, Tanembaum menulis sebuah artikel di Usenet, mengklaim bahwa Linux sudah ketinggalan zaman. Dalam artikelnya, ia mengkritik Linux sebagai sebuah sistem operasi dengan rancangan monolitik dan terlalu terpaku dengan arsitektur x86 sehingga tidak bersifat portable, di mana digambarkannya sebagai sebuah "kesalahan mendasar".[10] Tanenbaum menyarankan bahwa mereka yang menginginkan sebuah sistem operasi modern harus melihat kepada sebuah rancangan yang berdasarkan kepada model mikrokernel. Tulisan tersebut menekankan tanggung jawab Torvalds yang berujung kepada sebuah debat tentang rancangan kernel monolitik dan mikrokernel.[10]

Sekarang ini Linux telah digunakan di berbagai domain, dari sistem benam[11] sampai superkomputer,[12] dan telah mempunyai posisi yang aman dalam instalasi server web dengan aplikasi LAMP-nya yang populer.[13] Pengembangan kernel Linux masih dilanjutkan oleh Torvalds, sementara Stallman mengepalai Yayasan Perangkat Lunak Bebas yang mendukung pengembangan komponen GNU. Selain itu, banyak individu dan perusahaan yang mengembangkan komponen non-GNU. Komunitas Linux menggabungkan dan mendistribusikan kernel, komponen GNU dan non-GNU dengan perangkat lunak manajemen paket dalam bentuk distribusi Linux.

Pengucapan

Pada tahun 1992, Torvalds menjelaskan bagaimana ia mengeja kata Linux:

'li' dieja dengan bunyi [ee] pendek, 'nux' juga pendek, non-diftong, seperti dalam pUt. Linux hanya merupakan nama kerja untuk sesuatu, dan karena saya menulisnya untuk menggantikan minix di sistemku, hasilnya adalah apa adanya... linus' minix menjadi linux.

Torvalds membuat sebuah contoh audio yang berisi suara bagaimana pengejaannya dalam bahasa Inggris dan Swedia.[14][15] Tetapi, sebuah wawancara dari dokumentasi tahun 2001 Revolution OS mengindikasikan bahwa cara pengejaannya sedikit berubah.[16]

Dalam bahasa Inggris, banyak orang cenderung mengeja Linux sebagai [ˈlɪnʊks] atau [ˈlɪnəks].

Disain

Linux merupakan sistem operasi bertipe Unix modular. Linux memiliki banyak disain yang berasal dari disain dasar Unix yang dikembangkan dalam kurun waktu 1970-an hingga 1980-an. Linux menggunakan sebuah kernel monolitik, kernel Linux yang menangani kontrol proses, jaringan, periferal dan pengaksesan sistem berkas. Device driver telah terintegrasi ke dalam kernel.

Banyak fungsi-fungsi tingkat tinggi di Linux ditangani oleh proyek-proyek terpisah yang berintegrasi dengan kernel. Userland GNU merupakan sebuah bagian penting dari sistem Linux yang menyediakan shell dan peralatan-peralatan yang menangani banyak fungsi-fungsi dasar sistem operasi. Di atas kernel, peralatan-peralatan ini membentuk sebuah sistem Linux lengkap dengan sebuah antarmuka pengguna grafis yang dapat digunakan, umumnya berjalan di atas X Window System.

Antarmuka pengguna

Linux dapat dikendalikan oleh satu atau lebih antarmuka baris perintah (command line interface atau CLI) berbasis teks, antarmuka pengguna grafis (graphical user interface atau GUI, yang umumnya merupakan konfigurasi bawaan untuk versi desktop).

Pada komputer meja, GNOME, KDE dan Xfce merupakan antarmuka pengguna yang paling populer,[17] walaupun terdapat sejumlah varian antarmuka pengguna. Antarmuka pengguna yang paling populer berjalan di atas X Window System (X), yang menyediakan transparansi jaringan yang memperolehkan sebuah aplikasi grafis berjalan di atas satu mesin tetapi ditampilkan dan dikontrol di mesin yang lain.

GUI yang lain memiliki X window manager seperti FVWM, Enlightenment, Fluxbox dan Window Maker. Manajer jendela menyediakan kontrol untuk penempatan dan penampilan dari jendela-jendela aplikasi individual serta interaksi dengan sistem jendela X.

Sebuah sistem Linux umumnya menyediakan sebuah antarmuka baris perintah lewat sebuah shell, yang merupakan cara tradisional untuk berinteraksi dengan sebuah sistem Unix. Sebuah distro Linux yang dikhususkan untuk lingkungan peladen mungkin hanya memiliki CLI sebagai satu-satunya antarmuka. Sebuah sistem yang tidak memiliki monitor hanya dapat dikontrol melalui baris perintah lewat protokol seperti SSH atau telnet.

Kebanyakan komponen tingkat rendah Linux, termasuk GNU Userland, menggunakan CLI secara ekslusif. CLI cocok untuk digunakan pada lingkungan otomasi tugas-tugas yang repetitif atau tertunda, dan menyediakan komunikasi inter-proses yang sangat sederhana. Sebuah program emulator terminal grafis sering digunakan untuk mengakses CLI dari sebuah Linux desktop.

Pengembangan

Sebuah ringkasan sejarah sistem operasi-sistem operasi bertipe Unix menunjukkan asal usul Linux. Perhatikan walaupun memiliki konsep dan disain arsitektur yang sama, Linux tidak memiliki kode sumber yang tidak bebas seperti halnya Unix atau Minix.

Perbedaan utama antara Linux dan sistem operasi populer lainnya terletak pada kernel Linux dan komponen-komponennya yang bebas dan terbuka. Linux bukan satu-satunya sistem operasi dalam kategori tersebut, walaupun demikian Linux adalah contoh terbaik dan terbanyak digunakan. Beberapa lisensi perangkat lunak bebas dan sumber terbuka berdasarkan prinsip-prinsip copyleft, sebuah konsep yang menganut prinsip: karya yang dihasilkan dari bagian copyleft harus juga merupakan copyleft. Lisensi perangkat lunak bebas yang paling umum, GNU GPL, adalah sebuah bentuk copyleft, dan digunakan oleh kernel Linux dan komponen-komponen dari proyek GNU.

Sistem Linux berkaitan erat dengan standar-standar POSIX,[18] SUS,[19] ISO dan ANSI. Akan tetapi, baru distribusi Linux-FT saja yang mendapatkan sertifikasi POSIX.1.[20]

Proyek-proyek perangkat lunak bebas, walaupun dikembangkan dalam bentuk kolaborasi, sering dirilis secara terpisah. Akan tetapi, dikarenakan lisensi-lisensi perangkat lunak bebas secara eksplisit mengijinkan distribusi ulang, terdapat proyek-proyek yang bertujuan untuk mengumpulkan perangkat lunak-perangkat lunak tersebut dan menjadikannya tersedia dalam waktu bersamaan dalam suatu bentuk yang dinamakan distribusi Linux.

Sebuah distribusi Linux, yang umum disebut dengan "distro", adalah sebuah proyek yang bertujuan untuk mengatur sebuah kumpulan perangkat lunak berbasis Linux dan memfasilitasi instalasi dari sebuah sistem operasi Linux. Distribusi-distribusi Linux ditangani oleh individu, tim, organisasi sukarelawan dan entitas komersial. Distribusi Linux memiliki perangkat lunak sistem dan aplikasi dalam bentuk paket-paket dan perangkat lunak yang spesifik dirancang untuk instalasi dan konfigurasi sistem. Perangkat lunak tersebut juga bertanggung jawab dalam pemutakhiran paket. Sebuah Distribusi Linux bertanggung jawab atas konfigurasi bawaan, sistem keamanan dan integrasi secara umum dari paket-paket perangkat lunak sistem Linux.

Komunitas

Sebuah sesi baris perintah menggunakan bash.

Linux dikendalikan oleh pengembang dan komunitas penggunanya. Beberapa vendor mengembangkan dan mendanai distribusi mereka sendiri dengan dasar kesukarelaan. Debian merupakan contoh yang bagus. Yang lain memiliki versi komunitas dari versi komersialnya seperti yang Red Hat lakukan dengan Fedora.

Di banyak kota dan wilayah, asosiasi lokal yang dikenal dengan nama Kelompok Pengguna Linux (Linux Users Group atau LUG) mempromosikan Linux dengan mengadakan pertemuan, demonstrasi, pelatihan, dukungan teknis dan instalasi sistem operasi Linux secara gratis. Ada banyak juga komunitas Internet yang menyediakan dukungan terhadap pengembang dan pengguna Linux. Banyak proyek distribusi dan perangkat lunak sumber terbuka yang memiliki ruang percakapan IRC atau newsgroup. Forum daring merupakan bentuk lain untuk mendapatkan dukungan, contoh: LinuxQuestions.org dan forum Gentoo. Distribusi Linux memiliki [milis]] dengan pembagian topik seperti penggunaan atau pengembangan.

Ada beberapa situs web teknologi yang berfokuskan kepada Linux. Linux Weekly News adalah sebuah cernaan mingguan dari berita-berita yang berkaitan dengan Linux. Sementara itu Linux Journal merupakan majalah Linux daring yang dirilis setiap bulan. Slashdot adalah situs web berita yang berhubungan dengan teknologi yang memiliki banyak berita tentang Linux dan perangkat lunak bebas. Groklaw memiliki berita mendalam tentang kemajuan Linux dan memiliki banyak artikel yang berhubungan dengan kernel Linux serta hubungannya dengan GNU dalam proyek GNU. Majalah Linux cetakan umumnya memiliki cakram sampul yang memuat perangkat lunak atau bahkan distribusi Linux lengkap.[21][22]

Walaupun Linux secara umum tersedia secara gratis, beberapa perusahaan besar menjalani model bisnis yang terdiri dari penjualan, dukungan dan kontribusi terhadap Linux dan perangkat lunak bebas; ini termasuk Dell, IBM, HP, Sun Microsystems, Novell, dan Red Hat. Lisensi perangkat lunak bebas di mana digunakan Linux secara eksplisit mengakomodasi komersialisasi; hubungan antara Linux dan vendor-vendor individual dapat dilihat sebagai suatu simbiosis. Satu model bisnis yang umum dari pemasok komersial yaitu dengan mengenakan biaya atas dukungan khususnya terhadap pengguna-pengguna kalangan bisnis. Sejumlah perusahaan menawarkan versi bisnis dari distribusi Linux mereka, antara lain berupa dukungan atas paket-paket tak bebas dan alat bantu untuk mengatur sejumlah besar instalasi atau untuk memudahkan tugas-tugas administratif. Model bisnis yang lain adalah dengan memberikan perangkat lunak secara gratis untuk penjualan perangkat keras.

Pemrograman di Linux

Sebagian besar distribusi Linux mendukung banyak bahasa pemrograman. Koleksi peralatan untuk membangun aplikasi dan program-program sistem operasi yang umum terdapat di dalam GNU toolchain, yang terdiri atas GNU Compiler Collection (GCC) dan GNU build system. GCC menyediakan kompilator untuk Ada, C, C++, Java, dan Fortran. Kernel Linux sendiri ditulis untuk dapat dikompilasi oleh GCC. Kompilator tak bebas (proprietary) untuk Linux antara lain adalah Intel C++ Compiler dan IBM XL C/C++ Compiler.

Kebanyakan distribusi juga memiliki dukungan untuk Perl, Ruby, Python dan bahasa pemrograman dinamis lainnya. Contoh bahasa pemrograman yang tidak umum tetapi tetap mendapat dukungan di Linux antara lain adalah C# dengan proyek Mono yang disponsori oleh Novell, dan Scheme. Sejumlah Java Virtual Machine dan peralatan pengembang jalan di Linux termasuk Sun Microsystems JVM (HotSpot), dan J2SE RE IBM, serta proyek-proyek sumber terbuka lainnya seperti Kaffe. Dua kerangka kerja utama untuk pengembangan aplikasi grafis di Linux adalah GNOME dan KDE. Proyek-proyek ini berbasiskan GTK+ dan Qt. Keduanya mendukung beragam bahasa pemrograman. Untuk Integrated development environment terdapat Anjuta, Code::Blocks, Eclipse, KDevelop, Lazarus, MonoDevelop, NetBeans, dan Omnis Studio, sedangkan penyunting teks yang telah lama tersedia adalah Vim dan Emacs.[23]

Penggunaan

Sebagian besar distribusi Linux didisain untuk penggunaan umum di komputer meja dan peladen, tetapi terdapat distribusi yang dikhususkan untuk tujuan dan lingkungan yang berbeda yang tergantung kepada dukungan arsitektur komputer, sistem benam, stabilitas, keamanan, lokalisasi ke wilayah atau bahasa tertentu, kelompok pengguna tertentu, dukungan aplikasi waktu nyata, atau lingkungan desktop tertentu. Beberapa distribusi bahkan mengikutkan hanya perangkat lunak bebas. Sekarang ini ada sekitar tiga ratus distribusi yang secara aktif dikembangkan, dengan sekitar selusin distribusi yang menjadi terpopuler untuk penggunaan secara umum.[24]

Linux adalah sistem operasi yang di-porting secara luas. Kernel Linux awalnya didisain hanya untuk mikroprosesor Intel 80386, sekarang kernel Linux telah jalan di beragam arsitektur komputer antara lain di perangkat hand-held iPAQ berbasis ARM, komputer mainframe IBM System z9, dari peralatan berupa telepon bergerak hingga superkomputer.[25] Terdapat distribusi yang dikhususkan untuk sejumlah kecil arsitektur. Fork kernel ELKS dapat dijalankan di mikroprosesor 16-bit Intel 8086 atau Intel 80286, sementara fork kernel µClinux dapat dijalankan di atas sistem yang tidak memiliki sebuah unit manajemen memori.

Komputer meja

Walaupun masih terdapat kekurangan dalam hal porting Linux untuk beberapa perangkat lunak Mac OS X dan Microsoft Windows untuk domain seperti desktop publishing[26] dan audio profesional,[27][28][29] aplikasi yang secara kasar sama dengan aplikasi-aplikasi untuk Mac dan Windows tersebut tersedia di Linux.[30]

Kebanyakan distribusi Linux menyediakan sebuah program untuk melihat daftar ribuan perangkat lunak bebas yang telah diuji dan dikonfigurasi untuk sebuah distribusi yang spesifik. Program-program bebas ini dapat diunduh dan diinstal dengan satu klik tetikus dan sebuah tanda tangan digital menjamin bahwa tidak ada seorangpun yang menambahkan virus atau spyware ke program-program tersebut.

Banyak perangkat lunak bebas yang populer di Windows seperti Pidgin, Mozilla Firefox, OpenOffice.org dan GIMP. Jumlah perangkat lunak berbayar di Linux juga semakin bertambah[31] seperti Adobe Flash Player, Acrobat Reader, Matlab, Nero Burning ROM, Opera, RealPlayer, dan Skype. Dalam animasi dan efek visual, terdapat juga perangkat lunak di Linux seperti halnya Windows seperti AutoDesk Maya, Softimage XSI dan Apple Shake. CrossOver merupakan perangkat lunak berbayar berbasis proyek sumber terbuka Wine yang dapat menjalankan versi lama dari Microsoft Office dan Adobe Photoshop. Microsoft Office 2007 dan Adobe Photoshop CS3 diketahui dapat dijalankan[32][33]

Hak cipta dan Merek Dagang

Linux kernel dan sebagian besar perangkat lunak GNU menggunakan GNU General Public License (GPL) sebagai basis lisensinya. GPL mengharuskan siapapun yang mendistribusikan kernel linux harus membuat kode sumber (dan semua modifikasi atas itu) tersedia bagi pengguna dengan kriteria yang sama. Tahun 1997, Linus Torvald menyatakan, “Menjadikan Linux berbasis GPL sungguh merupakan hal terbaik yang pernah saya lakukan.”[34] Komponen penting lain dalam sistem Linux diijinkan menggunakan lisensi selain dari GPL; banyak pustaka menggunakan GNU Lesser General Public License (LGPL), varian GPL yang lebih moderat, dan sistem X Window System menggunakan MIT License.

Linus Torvald telah menyatakan ke khayalak umum bahwa ia tidak akan memindahkan lisensi kernel Linux yang saat ini menggunakan GPL versi 2 ke GPL versi 3, yang ditembangkan pada pertengahan tahun 2007, dengan alasan beberapa ketentuan yang terdapat pada lisensi baru tersebut melarang penggunaan perangkat lunak dalam manajemen hak digital (Inggris: Digital rights management).[35][36]

Penelitian yang dilakukan pada tahun 2001 terhadap Red Hat Linux 7.1 menemukan bahwa distro perangkat lunak tersebut terdiri atas 30 juta baris kode. Dengan menggunakan algoritma model biaya konstruktif (Inggris:Constructive Cost Model), penelitian itu memperkirakan bahwa distro tersebut membutuhkan waktu kira-kira delapan ribu tahun kerja untuk mengembangkannya. Menurut penelitian tersebut, jika semua elemen dari perangkat lunak tersebut dikembangkan dengan cara konvensional dalam artian sebagai perangkat lunak tertutup, pengembangan distro tersebut akan menelan biaya sebesar 1,08 miliar dolar (basis nilai tukar dolar tahun 2000) untuk dikembangkan di Amerika Serikat.[37]

Sebagian besar kode (71%) ditulis dengan menggunakan bahasa pemrograman C, namun banyak bahasa lainnya juga ikut terlibat seperti C++, Assembly, Perl, Python, Fortran, dan berbagai bahasa skrip lain. Lebih dari separuh dari seluruh kode dilisensikan di bawah naungan GPL. Kernel linux itu sendiri terdiri atas 2,4 juta baris kode, atau sekitar 8% dari total keseluruhan.[37]

Penelitian lainnya menghasilkan analisis yang sama terhadap distro Debian GNU/Linux versi 4.0.[38] Distro tersebut terdiri atas lebih dari 283 juta baris kode, dan penelitian tersebut memperkirakan biaya pengembangan yang dibutuhkan sebesar 5,4 miliar euro jika dikembangkan sebagai perangkat linak tertutup.

Di Amerika Serikat, Linux merupakan merek dagang (SN: 1916230) yang dimiliki oleh Linus Torvalds. Linux terdaftar sebagai "Program sistem operasi komputer bagi penggunaan komputer dan operasi". Merek dagang ini didaftarkan setelah ada suatu kejadian di mana seorang pemalsu bernama William R Della Croce Jr mulai mengirim surat kepada para distributor Linux dan megklaim trademark Linux adalah hakmiliknya serta meminta royalti sebanyak 10% dari mereka. Para distributor Linux mulai mendorong agar trademark yang asli diberikan kepada Linus Torvalds. Pemberian lisensi trademark Linux sekarang dibawah pengawasan Linux Mark Institute.

Distribusi Linux

Distribusi Linux

Terdapat banyak distribusi Linux (lebih dikenali sebagai distro) yang dibuat oleh individu, grup, atau lembaga lain. Masing-masing disertakan dengan program sistem dan program aplikasi tambahan, di samping menyertakan suatu program yang memasang keseluruhan sistem di komputer (installer program).

Inti di setiap distribusi Linux adalah kernel, koleksi program dari proyek GNU (atau proyek lain), cangkang (shell), dan aturcara utilitas seperti pustaka (libraries), kompilator, dan penyunting (editor). Kebanyakan sistem juga menyertakan aturcara dan utilitas yang bukan-GNU. Bagaimanapun, utilitas tersebut dapat dipisahkan dan sistem ala UNIX masih tersedia. Beberapa contoh adalah aturcara dan utiliti dari BSD dan sistem grafik-X (X-Window System). X menyediakan antarmuka grafis (GUI) yang umum untuk Linux.

Contoh-contoh distribusi Linux :

Aplikasi Sistem Operasi Linux

Pengguna Linux, yang pada umumnya memasang dan melakukan sendiri konfigurasi terhadap sistem, lebih cenderung mengerti teknologi dibanding pengguna Microsoft Windows atau Mac OS. Mereka sering disebut hacker atau geek. Namun stereotipe ini semakin berkurang dengan peningkatan sifat ramah-pengguna Linux dan makin luasnya pengguna distribusi. Linux telah membuat pencapaian yang cukup baik dalam pasaran komputer server dan komputer tujuan khusus, seperti mesin render gambar dan server web. Linux juga mulai populer dalam pasaran komputer desktop.

Linux merupakan asas kepada kombinasi program-server LAMP, kependekan dari Linux, Apache, MySQL, Perl/PHP/Python. LAMP telah mencapai popularitas yang luas di kalangan pengembang Web.

Linux juga sering digunakan sebagai sistem operasi embeded. Biaya pengadaan Linux yang murah memungkinkan penggunaannya dalam peralatan seperti simputer, yaitu komputer berbiaya rendah yang ditujukan pada penduduk berpendapatan rendah di Negara-negara berkembang.

Dengan lingkungan desktop seperti KDE dan GNOME, Linux menawarkan antarmuka pengguna yang lebih menyerupai Apple Macintosh atau Microsoft Windows daripada antarmuka baris teks seperti Unix. Oleh karena itu, lebih banyak program grafik dapat ditemui pada Linux yang menawarkan berbagai fungsi yang ada pada utilitas komersil.

Pasar serta kemudahan pemakaian

Saat ini, linux yang pada awalnya hanya merupakan sistem operasi yang digunakan oleh peminat komputer, telah menjadi sistem yang lebih mudah digunakan (user-friendly), dilengkapi dengan antarmuka grafis dan ketersediaan berbagai macam aplikasi yang lebih mirip dengan sistem operasi lainnya, daripada hanya sebatas baris perintah Unix. Namun kesan ini telah menimbulkan banyak kritikan, termasuk dari pendukung Linux. Mereka berpendapat bahwa Linux dan proyek program bebas masih belum mencapai faktor "kemudahanan dalam pemakaian" yang memuaskan. Persoalan tentang kemudahan Linux dibanding Windows atau Macintosh masih menjadi isu perdebatan yang hangat. Pasaran Linux pada segmen komputer meja masih lebih kecil namun semakin berkembang. Menurut Lembaga Penyelidikan Pasaran IDC, besar pasaran Linux pada tahun 2002 adalah 25% pada segmen server, dan 2.8% pada segmen pasar Komputer pribadi.

Bagi mereka yang terbiasa menggunakan Windows atau Macintosh, Linux mungkin terasa lebih sukar, hal ini disebabkan karena perbedaan dalam melakukan berbagai kerja komputer. Dan lagi, pengguna perlu mengganti program yang sering mereka gunakan dengan program lain sebagai pengganti bila program tersebut tidak didapati dalam Linux (atau pilihan yang agak terbatas, misalnya permainan komputer). Faktor lain adalah sifat keraguraguan pengguna untuk melepaskan sistem operasi mereka yang biasa mereka pergunakan (banyak pengguna masih menggunakan Windows). Selain itu, kebanyakan komputer baru telah dilengkapi dengan sistem operasi Windows siap pakai (preinstalled). Faktor-faktor ini menyebabkan perkembangan Linux yang agak lambat.

Walau bagaimanapun, kelebihan Linux seperti biaya rendah, sekuritas yang lebih aman, dan tidak bergantung pada vendor, telah meningkatkan penggunaan yang luas di kalangan korporasi dan perkantoran. Dalam situasi ini, halangan yang disebut di atas dapat dikurangi karena hanya aplikasi/utiliti yang terbatas digunakan, serta administrasi dan konfigurasi komputer (administration) dikendalikan oleh sekumpulan pekerja pakar IT yang sedikit.

Terdapat berbagai kajian yang dilakukan terbatas biaya serta kemudahanan Linux. Relevantive (sebuah lembaga berpusat di Berlin, yang mengkhususkan diri dalam riset lembaga tentang ke'mudahan'an program, serta servis web) telah membuat kesimpulan bahawa ke-dapatpakai-an Linux dalam pekerjaan dengan menggunakan komputer meja adalah hampir sama dengan Windows XP. Bagaimanapun, kajian oleh IDC (yang dibiayai oleh Microsoft) mengklaim bahwa Linux mempunyai biaya pemilikan (Total Cost of Ownership) yang lebih tinggi dibanding Windows.

Linux juga sering dikritik karena jadwal penembangannya yang tidak dapat diduga. Secara langsung, menyebabkan minat penggunaan linux pada lapisan pengguna Enterprise lebih kecil dibandingkan sistem operasi lain (Sumber:Marcinkowski, 2003). Disamping itu, ragam pilihan distribusi Linux yang cukup banyak juga dikatakan membingungkan konsumer, dan vendor program.

Instalasi

Proses instalasi Linux yang sukar seringkali menjadi penghalang bagi pengguna baru, namun proses ini sekarang sudah menjadi lebih mudah. Dengan penerimaan Linux oleh beberapa pabrikan komputer pribadi besar, komputer terpasang (built up) dengan distribusi Linux siap pakai saat ini banyak tersedia. Selain itu, terdapat juga distribusi Linux yang dapat dijalankan (boot) secara langsung dari cakram optik (CD) tanpa perlu diinstalasi ke cakram keras (hard disk); hal ini dikenal dengan istilah Live CD. Contoh distribusi dalam bentuk Live CD adalah Knoppix/Gnoppix, Kubuntu/Ubuntu dan Gentoo. Saat ini hampir semua distribusi Linux menyediakan versi Live CD untuk produknya. ISO image untuk cakram optik untuk distribusi Linux tersebut biasanya dapat diunduh dari Internet, dibakar ke CD, dan selanjutnya dapat digunakan sebagai CD yang siap untuk proses boot.

Instalasi Linux juga merupakan instalasi berupa suite, yaitu dimana penginstalasian tersebut secara otomatis menginstalasi program-program standar, seperti pemutar MP3, Office Suite, dan pengolah gambar.

Konfigurasi

Konfigurasi setelan Linux dan aplikasi di atasnya banyak yang dilakukan lewat berkas teks di direktori /etc. Pada perkembangan selanjutnya, utilitas seperti Linuxconf dan GNOME System Tools memudahkan pekerjaan ini lewat antarmuka grafik. Kendati demikian, baris perintah (command line) tetap merupakan cara yang paling umum digunakan.

Dukungan

Dukungan bagi Linux biasanya didapatkan melalui peer(dalam konteks ini maksudnya kelompok pengguna linux/KPLI) - pengguna Linux lain di dalam forum internet, IRC, newsgroup dan mailing list. Kelompok Pengguna Linux (LUG, Linux User Group) telah didirikan di seluruh dunia untuk membantu pengguna lokal, pengguna baru, dan pengguna berpengalaman. Di Indonesia kelompok ini tergabung dalam KPLI daerah seperti KPLI Jakarta, KPLI Bandung, KPLI Jogja dan masih banyak lainnya. Bantuan termasuk instalasi, penggunaan, pengadaan serta menggalakkan pengembangan sistem Linux.

Dukungan resmi Linux di Indonesia dapat diperoleh di Linux User Group (LUG) Indonesia atau http://www.lugi.or.id atau http://www.infolinux.or.id

Dukungan komersil bagi distribusi Linux secara umum menggunakan model bisnis dengan menyediakan dukungan teknis. Dukungan pihak ketiga juga sudah tersedia.

Skala Usaha Pembangunan Linux

Sebuah studi (More Than a Gigabuck: Estimating GNU/Linux's Size [2]) Terhadap Red Hat Linux 7.1 menemukan bahwa distribusi ini berisi 30 juta baris kode sumber (‘’source lines of code (SLOC)’’). Menggunakan model biaya COCOMO studi ini menunjukan bahwa distribusi ini memerlukan waktu pengembangan sebanyak 8000 tahun, apabila software ini di kembangkan dengan cara proprietary konvensional. Dan akan menghabiskan sekitar 1.08 miliar dolar (dolar tahun 2000) untuk dikembangkan di Amerika Serikat.

Mayoritas dari kode (71%) ditulis dalam C, namun banyak bahasa lain digunakan, termasuk C++ shell scripts, Lisp, assembly language, Perl, Fortran dan Python.

Sekitar setengah dari kodenya di lisensikan di bawah GPL.

Kernel Linux mengandung 2.4 juta baris kode, atau sekitar 8% dari total kode yang dipakai dalam sebuah distribusi/distro. Hal ini menunjukan bahwa mayoritas dari distribusi Linux terdiri dari kode yang tidak terkandung dalam Kernel Linux.

"GNU/Linux"

Lihat Kontroversi Penamaan GNU/Linux

GNU adalah singkatan dari GNU's Not Unix.

Disebabkan utiliti-utiliti dari proyek sistem operasi bebas GNU - tanpa ini sistem Linux tidak akan menyerupai sistem Unix dalam perspektif pengguna - Richard Stallman dari GNU/FSF memohon agar kombinasi sistem (proyek GNU dan kernel Linux), disebut sebagai "GNU/Linux". Pengguna distribusi Linux dari proyek Debian lebih cenderung menggunakan nama tersebut. Kebanyakan pengguna lebih mudah menggunakan istilah "Linux".

Tindakan Undang-undang (Litigasi)

Artikel utama: SCO Vs IBM Pada Maret 2003 Grup SCO (SCOG - SCO Group) telah mengeluarkan gugatan terhadap IBM yang mengklaim bahwa IBM telah memasukkan sebagian besar bahan intelektual milik SCOG (kode sumber) ke dalam kernel Linux, padahal ini merupakan pelanggaran terhadap lisensi IBM untuk menggunakan UNIX. Disebutkan bahwa lisensi tersebut dipegang oleh Kelompok SCO. Tambahan lagi, Kelompok SCO juga telah mengirim surat kepada beberapa lembaga dan memberi ancaman tentang penggunaan Linux tanpa lisensi dari kelompok SCO akan menerima tindakan dari mereka. Kelompok SCO juga mengeluarkan pernyataan pada media massa bahwa mereka akan menggugat pengguna Linux selanjutnya. Kontroversi ini telah mencetus beberapa kecaman oleh Kelompok SCO terhadap Novell, DaimlerChrysler, dan AutoZone, selain gugatan balik oleh Red Hat dan pihak lain terhadap SCOG.