Susikurkite tinklalapį!

Susikurkite modernų, funkcionalų, dinamišką, gražų, lengvai redaguojamą ir plečiamą tinklalapį

 

Populiarinkite ir reklamuokite!

Reklamos priemonės, galinčios padidinti tinklalapio pastebimumą ir jo lankomumą

 

Optimizuokite paieškos sistemoms!

Kelis kartus efektyvesnis ir pigesnis būdas pritraukti lankytojus, nei reklamos priemonės

 

Uždirbkite iš tinklapio!

Reklamos tinklai ir kiti uždarbio būdai iš interneto svetainės, nuolatinės pajamos

Pradžia

SQL pagrindai Spausdinti El. paštas

Kuriant duomenų bazes (toliau - DB), gali būti panaudotos įvairios duomenų bazių valdymo sistemos (toliau - DBVS), pavyzdžiui, Oracle - skirta labai didelėms DB, arba MS Access - ir atskiriems kompiuteriams, ir serveriams.
MySQL patraukli tuo, kad yra nemokama. Ją galite gauti adresu http://www.mysql.com/. MySQL dirba ir Unix, ir Windows platformose.

Kiekvieną duomenų bazę sudaro viena (retai) ar kelios lentelės. Lentelėje mes išskiriame eilutes ir stulpelius, pavyzdžiui:
   +------------+-------+---------+---------+------------------+
| kliento_id | vardas| pavard | tel | adresas |
+------------+-------+---------+---------+------------------+
| 1 | Jonas | Kuzma | 1234567 | Daukanto 1 - 1 |
| 2 | Kostas| Kuzma | 8373728 | Daukanto 12 - 10 |
| 3 | Ignas | Klimas | 7449373 | Kanto 2 - 10 |
| 4 | Santa | Klausas | 9999999 | Siaures polius 1 |
+------------+-------+---------+---------+------------------+

Viena lentelės eilutė - tai įrašas, o stulpelis - tai laukas arba atributas. MySQL priklauso vadinamųjų reliacinių DB kategorijai. Reliacinę DB sudaro kelios lentelės, kuriose esanti informacija yra tam tikru būdu susijusi (relation - ryšys, sąryšis, tarpusavio priklausomybė).
SQL leidžia kombinuoti visose lentelėse esančius duomenis, sudarant ir analizuojant duomenų sąryšius.
Turėtąją lentelę

+------------+-------+---------+---------+------------------+
| kliento_id | vardas| pavard | tel | adresas |
+------------+-------+---------+---------+------------------+
| 1 | Jonas | Kuzma | 1234567 | Daukanto 1 - 1 |
| 2 | Kostas| Kuzma | 8373728 | Daukanto 12 - 10 |
| 3 | Ignas | Klimas | 7449373 | Kanto 2 - 10 |
| 4 | Santa | Klausas | 9999999 | Siaures polius 1 |
+------------+-------+---------+---------+------------------+

papildykime tokia:

+----------+-------------------+------------------+
| video_id | filmas | autorius |
+----------+-------------------+------------------+
| 1 | Star Wars | George Lucas |
| 2 | ET | Ignasn Spielberg |
| 3 | Charlie's Angels | McG |
| 4 | Any Given Sunday | Oliver Stone |
| 5 | Hollow Man | Paul Verhoeven |
| 6 | Woman On Top | Fina Torres |
+----------+-------------------+------------------+

ir dar tokia:

+------------+----------+
| kliento_id | video_id |
+------------+----------+
| 2 | 6 |
| 4 | 2 |
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
+------------+----------+

Kaip matome, pastaroji lentelė suriša dvi pirmąsias. Joje nurodyta, kuris asmuo kurią vaizdajuostę paėmęs.

CREATE DATABASE komanda

Kadangi visos MySQL lentelės laikomos duomenų bazėje, reikia pradėti nuo jos sukūrimo, pavyzdžiui:

mysql> CREATE DATABASE library;
Query OK, 1 row affected (0.05 sec)

Duomenų bazė, kurią tvarkysime, nurodoma komanda USE:

 mysql> USE library;
DATABASE changed

CREATE TABLE komanda

Duomenų bazės lentelių sąrašą galima pamatyti nurodžius komandą SHOW TABLES:

 mysql> SHOW TABLES;
Empty SET (0.00 sec)

CREATE TABLE komandos sintaksė:
CREATE TABLE <table_name>
(<field_name_1> <field_type_1> <modifiers>,
<field_name_2> <field_type_2> <modifiers>, … ,
<field_name_n> <field_type_n> <modifiers>)

Pavyzdys:

CREATE TABLE nariai (
kliento_id int(11) NOT NULL AUTO_INCREMENT,
vardas varchar(50) NOT NULL,
pavard varchar(50) NOT NULL,
tel varchar(15),
adresas varchar(50) NOT NULL,
PRIMARY KEY (kliento_id)
);

ALTER komanda

Tam, kad modifikuoti lentelę, naudokite komandą ALTER TABLE;
jei pridedate naują stulpelį:

ALTER TABLE <table_name> ADD <new_field_name> <new_field_type>

arba, jei modifikuojate anksčiau sukurtą stulpelį:

ALTER TABLE <table_name> MODIFY <old_field_name> <new_field_type>
Pavyzdys:

ALTER TABLE bfcplay ADD  COLUMN skin VARCHAR(100) DEFAULT "img/bfc.css"

INSERT komanda

INSERT komandos sintaksė:
INSERT into table_name (field_name_1, field_name2, field_name_n) VALUES (value_1, value_2, value_n)

Pavyzdys:

mysql> INSERT INTO nariai (kliento_id, vardas, pavard, tel, adresas) VALUES
(NULL, ‘Jonas', 'Kuzma', '1234567', 'Daukanto 1 - 1');
Query OK, 1 row affected (0.06 sec)

DELETE komanda

DELETE komandos sintaksė:
DELETE FROM <table_name>

Pavyzdys:

mysql> DELETE FROM nariai;
Query OK, 0 rows affected (0.06 sec)

Bus pašalinti visi įrašai iš lentelės “nariai”.

Jei reikia pašalinti tik tuos lentelės “nariai” įrašus, kuriuose kliento_id = 16:

mysql> DELETE FROM nariai WHERE kliento_id = 16;
Query OK, 1 row affected (0.06 sec)

UPDATE komanda

UPDATE komanda skirta įrašų reikšmėms modifikuoti. Jos sintaksė:
UPDATE <table_name> SET <field_name> = <new_value>

Jei reikia pakeisti Jono Kuzmos adresą nauju:

mysql> UPDATE nariai SET adresas = 'Kampo 132-15' WHERE kliento_id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

UPDATE komanda gali modifikuoti kelių įrašo stulpelių reikšmes:

mysql>  UPDATE   SET adresas = 'Kampo 12-1 , pavard= 'Kuzma Kitas’
WHERE kliento_id = 2;
Query OK, 1 row affected (0.05 sec)
Rows matched: 1 Changed: 1 Warnings: 0

Tuomet lentelė atrodys taip:

+------------+-------+-------------+---------+------------------+
| kliento_id | vardas| pavard | tel | adresas |
+------------+-------+-------------+---------+------------------+
| 1 | Jonas | Kuzma Kitas | 1234567 | Kampo 12-1 |
| 2 | Kostas| Kuzma | 8373728 | Daukanto 12 - 10 |
| 3 | Ignas | Klimas | 7449373 | Kanto 2 - 10 |
| 4 | Santa | Klausas | 9999999 | Siaures polius 1 |
+------------+-------+-------------+---------+------------------+

SELECT komanda

Jei reikia išrinkti visus įrašus iš lentelės “nariai”, SELECT komanda atrodys taip:

mysql> SELECT * FROM nariai;
+------------+-------+---------+---------+------------------+
| kliento_id | vardas| pavard | tel | adresas |
+------------+-------+---------+---------+------------------+
| 1 | Jonas | Kuzma | 1234567 | Kampo 132-15 |
| 2 | Kostas| Kuzma | 8373728 | Daukanto 12 - 10 |
| 3 | Ignas | Klimas | 7449373 | Kanto 2 - 10 |
| 4 | Santa | Klausas | 9999999 | Siaures polius 1 |
+------------+-------+---------+---------+------------------+

Jei reikia išrinkti visas įrašytas pavardes iš lentelės “nariai” , SELECT komanda atrodys taip:

mysql> SELECT pavard FROM nariai;
+---------+
| pavard |
+---------+
| Kuzma |
| Kuzma |
| Klimas |
| Klausas |
+---------+

Jei reikia išrinkti įrašytas skirtingas pavardes iš lentelės “nariai”, SELECT komanda atrodys taip:

mysql> SELECT DISTINCT pavard FROM nariai;
+---------+
| pavard |
+---------+
| Kuzma |
| Klimas |
| Klausas |
+---------+

Jei reikia išrinkti tuos lentelės “nariai” įrašus, kuriuose kliento pavardė “Kuzma”, SELECT komanda atrodys taip:

   mysql> SELECT * FROM nariai WHERE pavard= "Kuzma";
+------------+-------+-------+---------+------------------+
| kliento_id | vardas| pavard| tel | adresas |
+------------+-------+-------+---------+------------------+
| 1 | Jonas | Kuzma | 1234567 | Kampo 132-15 |
| 2 | Kostas| Kuzma | 8373728 | Daukanto 12 - 10 |
+------------+-------+-------+---------+------------------+

Jei norime sužinoti Santa Klauso adresą, SELECT rašykime taip:

mysql> SELECT adresas FROM nariai WHERE vardas= "Santa";
+------------------+
| adresas |
+------------------+
| Siaures polius 1 |
+------------------+

Jei norime sužinoti visus Georgo Lucas filmus, SELECT rašykime taip:

mysql> SELECT filmas, autorius FROM videos WHERE autorius = "George Lucas";
+------------+--------------+
| filmas | autorius |
+------------+--------------+
| Star Wars | George Lucas |
+------------+--------------+

Santykio ir loginiai operatoriai

SQL užklausose galima naudoti santykio ir loginius operatorius.
Turime tokią lentelę “pazymiai”:

# pazymiai
+-------+-----+--------+----------+
| vardas| mat | fizika | literat |
+-------+-----+--------+----------+
| Jonas | 8 | 7 | 9 |
| Aidas | 6 | 9 | 9 |
| Tomas | 5 | 10 | 5 |
| Linas | 9 | 5 | 8 |
+-------+-----+--------+----------+

SQL turi 6 santykio operatorius:

= lygu
!= nelygu
> daugiau
< mažiau
>= daugiau arba lygu
<= mažiau arba lygu

Be to, SQL turi 3 loginius operatorius: AND, OR, NOT.
Santykio ir loginiai operatoriai užklausose
Tarkime, norime sužinoti, kurie mokiniai moka matematiką pažymiui 8 ar daugiau:

mysql> SELECT * FROM pazymiai WHERE mat > 7;
+-------+-----+--------+----------+
| vardas| mat | fizika | literat |
+-------+-----+--------+----------+
| Jonas | 8 | 7 | 9 |
| Linas | 9 | 5 | 8 |
+-------+-----+--------+----------+

Tarkime, norime sužinoti, kurie mokiniai moka matematiką pažymiui 8 ar daugiau, o fiziką - pažymiui 7 ar daugiau:

mysql> SELECT vardas FROM pazymiai WHERE mat > 7 AND fizika > 6 AND literat > 8;
+-------+
| vardas|
+-------+
| Jonas |
+-------+

Tarkime, norime sužinoti, kurie mokiniai silpnai moka bent vieną iš šių dalykų (pažymiui 5 ar mažiau):

mysql> SELECT * FROM pazymiai WHERE mat <= 5 OR fizika <= 5 OR literat <= 5;
+-------+-----+--------+----------+
| vardas| mat | fizika | literat |
+-------+-----+--------+----------+
| Tomas | 5 | 10 | 5 |
| Linas | 9 | 5 | 8 |
+-------+-----+--------+----------+

SQL užklausose galima naudoti ir pagrindinius aritmetinius operatorius. Pavyzdžiui, susumuoti pažymius:

mysql> SELECT name, mat+fizika+literat FROM pazymiai;
+-------+--------------------+
| vardas| mat+fizika+literat |
+-------+--------------------+
| Jonas | 24 |
| Aidas | 24 |
| Tomas | 20 |
| Linas | 22 |
+-------+--------------------+

Rikiavimas

SQL užklausose galima nurodyti, kad išrinkti įrašai būtų surikiuoti. Tam skirtas ORDER BY:

mysql> SELECT * FROM nariai ORDER BY kliento_id;
+------------+-------+---------+---------+------------------+
| kliento_id | vardas| pavard | tel | adresas |
+------------+-------+---------+---------+------------------+
| 1 | Jonas | Kuzma | 1234567 | Kampo 132-15 |
| 2 | Kostas| Kuzma | 8373728 | Daukanto 12 - 10 |
| 3 | Ignas | Klimas | 7449373 | Kanto 2 - 10 |
| 4 | Santa | Klausas | 9999999 | Siaures polius 1 |
+------------+-------+---------+---------+------------------+

Jei reikia, kad išrinkti įrašai būtų surikiuoti atvirkščia tvarka, pridėkite DESC :

mysql> SELECT * FROM nariai ORDER BY kliento_id DESC;
+------------+-------+---------+---------+------------------+
| kliento_id | vardas| pavard | tel | adresas |
+------------+-------+---------+---------+------------------+
| 4 | Santa | Klausas | 9999999 | Siaures polius 1 |
| 3 | Ignas | Klimas | 7449373 | Kanto 2 - 10 |
| 2 | Kostas| Kuzma | 8373728 | Daukanto 12 - 10 |
| 1 | Jonas | Kuzma | 1234567 | Kampo 132-15 |
+------------+-------+---------+---------+------------------+

Išrenkamų įrašų skaičiaus ribojimas

SQL užklausose galima apriboti išrinktų įrašų skaičių:

mysql> SELECT * FROM videos LIMIT 2,2;
+----------+------------------+--------------+
| video_id | filmas | autorius |
+----------+------------------+--------------+
| 3 | Charlie's Angels | McG |
| 4 | Any Given Sunday | Oliver Stone |
+----------+------------------+--------------+

nors tinkamų įrašų skaičius yra didesnis.
Čia pirmasis parametras nurodo pirmosios pateikiamos eilutės “poslinkį” (offset), o antrasis – pateikiamų įrašų skaičių.

SQL užklausose galima kartu naudoti išrinktų įrašų skaičiaus ribojimą ir rikiavimą naujausiems įrašams atrinkti:

mysql> SELECT * FROM videos ORDER BY video_id DESC LIMIT 0, 4;
+----------+------------------+----------------+
| video_id | filmas | autorius |
+----------+------------------+----------------+
| 6 | Woman On Top | Fina Torres |
| 5 | Hollow Man | Paul Verhoeven |
| 4 | Any Given Sunday | Oliver Stone |
| 3 | Charlie's Angels | McG |
+----------+------------------+----------------+

Įrašų skaičiavimas

Galima sužinoti įrašų skaičių:

mysql> SELECT COUNT(*) FROM videos;
+----------+
| COUNT(*) |
+----------+
| 6 |
+----------+

Funkcijų panaudojimo pavyzdžiai:

Vidurkio paskaičiavimas:

mysql> SELECT AVG(mat), AVG(fizika), AVG(literat) FROM pazymiai;
+-----------+-------------+--------------+
| AVG(mat) | AVG(fizika) | AVG(literat) |
+-----------+-------------+--------------+
| 7.0000 | 7.7500 | 7.7500 |
+-----------+-------------+--------------+

Vidurkio paskaičiavimas:

mysql> SELECT MIN(mat) FROM pazymiai;
+----------+
| MIN(mat) |
+----------+
| 5 |
+----------+

LIKE panaudojimas

LIKE padeda atrinkti pagal “pavyzdį”; tarkime, mus domina asmenys, kurių varduose yra raidė “o”:

mysql> SELECT * FROM nariai WHERE vardas LIKE '%o%';
+------------+-------+---------+---------+------------------+
| kliento_id | vardas| pavard | tel | adresas |
+------------+-------+---------+---------+------------------+
| 1 | Jonas | Kuzma | 1234567 | Kampo 132-15 |
| 2 | Kostas| Kuzma | 8373728 | Daukanto 12 - 10 |
+------------+-------+---------+---------+------------------+

Arba mus domina filmai, kurių pavadinimuose yra skiemuo “man”:

mysql> SELECT filmas, autorius FROM videos WHERE filmas LIKE '%man%';
+--------------+----------------+
| filmas | autorius |
+--------------+----------------+
| Hollow Man | Paul Verhoeven |
| Woman On Top | Fina Torres |
+--------------+----------------+

Lentelių apjungimas

Aukščiau užklausos buvo skirtos vienai lentelei. Dabar kreipkimės į dvi, norėdami atrinkti informaciją apie išnuomotus filmus. Tam naudojamas JOIN:

mysql> SELECT * FROM STATUS, nariai WHERE STATUS.kliento_id =
nariai.kliento_id;
+-----------+---------+-----------+-------+-------+---------+---------------+
|kliento_id |video_id |kliento_id | vardas| pavard| tel | adresas |
+-----------+---------+-----------+-------+-------+---------+---------------+
| 1 | 1 | 1 | Jonas | Kuzma | 1234567 |Daukanto 1 - 1 |
| 1 | 2 | 1 | Jonas | Kuzma | 1234567 |Daukanto 1 - 1 |
| 1 | 3 | 1 | Jonas | Kuzma | 1234567 |Daukanto 1 - 1 |
| 2 | 6 | 2 | Kostas| Kuzma | 8373728 |Daukanto 12-10 |
| 4 | 2 | 4 | Santa | Klausas|9999999 |Siaures polius 1
+-----------+---------+-----------+-------+-------+---------+---------------+

Atrinkdami informaciją apie išnuomotus filmus, galime nurodyti, kokie stulpeliai turi būti suformuotoje lentelėje:

mysql> SELECT vardas, pavard, video_id FROM nariai, STATUS
WHERE nariai.kliento_id = STATUS.kliento_id;
+-------+--------+----------+
| vardas| pavard | video_id |
+-------+--------+----------+
| Kostas| Kuzma | 6 |
| Santa | Klausas| 2 |
| Jonas | Kuzma | 1 |
| Jonas | Kuzma | 2 |
| Jonas | Kuzma | 3 |
+-------+--------+----------+

Dabar apjunkime tris lenteles, kad sužinotume, kokie asmenys turi kokius filmus:

mysql> SELECT vardas, pavard, filmas FROM nariai, videos,
STATUS WHERE STATUS.kliento_id = nariai.kliento_id AND STATUS.video_id = videos.video_id;
+-------+--------+-------------------------------+
| vardas| pavard | filmas |
+-------+--------+-------------------------------+
| Kostas| Kuzma | Woman On Top |
| Santa | Klausas| ET |
| Jonas | Kuzma | Star Wars: The Phantom Menace |
| Jonas | Kuzma | ET |
| Jonas | Kuzma | Charlie's Angels |
+-------+--------+-------------------------------+

5 rows in set (0.17 sec)

Pseudonimai (aliases)

Vardams galima priskirti pseudonimus, pavyzdžiui,
“m”, “s” ir “v” vietoj “nariai”, “status” ir “videos” (atitinkamai):

mysql> SELECT m.vardas, m.pavard, v.filmas FROM nariai m, STATUS s, videos v
WHERE s.kliento_id = m.kliento_id AND s.video_id = v.video_id;
+-------+--------+-------------------------------+
| vardas| pavard | filmas |
+-------+--------+-------------------------------+
| Kostas| Kuzma | Woman On Top |
| Santa | Klausas| ET |
| Jonas | Kuzma | Star Wars: The Phantom Menace |
| Jonas | Kuzma | ET |
| Jonas | Kuzma | Charlie's Angels |
+-------+--------+-------------------------------+

Dviguba užklausa

Tarkime, norime sužinoti, kas pasiskolino filmą apie žvaigždžių karus (jo id=1) šį savaitgalį:

mysql> SELECT vardas, pavard FROM nariai
WHERE kliento_id=(SELECT kliento_id FROM STATUS WHERE video_id=1);

Tuomet SQL pirmiau vykdys vidinę užklausą

SELECT kliento_id FROM STATUS WHERE video_id=1;
+------------+
| kliento_id |
+------------+
| 1 |
+------------+

Po to gautas reikšmes SQL perduos išorinei užklausai, kuri pateiks ieškomą rezultatą:

SELECT vardas, pavard FROM nariai WHERE kliento_id=1;
+-------+-------+
| vardas| pavard|
+-------+-------+
| Jonas | Kuzma |
+-------+-------+

Štai ir viskas, tiek žinių gali praversti pradedančiajam apie SQL.

Šaltinis: Pixel.lt

Gairės: Pradedantiesiems,
Komentarai
Pridėti naują Ieškoti
pinigai internete     |2010-11-19 22:08:05
Gera info naujokams. Aciu
Gintaras  - Uzdarbis internete     |2011-04-01 08:44:21
Joooo... painokai čia truputį :)
royalsmk   |2011-10-20 22:09:16
Gera informacija, ačiū
Rašyti komentarą
Vardas:
E-paštas:
 
Tinklapis:
Antraštė:
Prašom įvesti apsaugos kodą, kurį matote paveikslėlyje.

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 
< Ankstesnis   Kitas >

Kokybiškas įmonių ir internetinių išteklių katalogas. Stengiamės pateikti tik kruopščiai ir atsakingai dirbančius paslaugų tiekėjus. Ieškome ir publikuojame informatyviausius šaltinius.

Gairės:

Pagal poreikį

Pradedantiesiems
Sample image

Pradėti visada nelengva, todėl tiesiame Jums pagalbos ranką.

Kompanijoms
Sample image

Apgalvotas paslaugų tiekėjų pasirinkimas yra svarbiausias žingsnis.

Profesionalams
Sample image

Svarbiausia ir naujausia informacija interneto profesionalams

Prisijungimas






Pamiršote slaptažodį?
Dar neužsiregistravote? Užsiregistruokite!

Prenumeruok