Domeka
21.05.2012., 03:50:30 *
Welcome, Guest. Please login or register.

Login with username, password and session length
 
   Home   Help Search GoogleTagged Contact Login Register  
Pages: [1]   Go Down
  Print  
Author Topic: Mysql: osnovne naredbe i operacije  (Read 1709 times)
0 Members and 1 Guest are viewing this topic.
The MasteR
Administrator
Full Member
*****

Karma: +20/-0
Offline Offline

Gender: Male
Posts: 168



View Profile WWW
« on: 13.12.2008., 23:11:39 »

MySQL je danas vjerojatno najpopularniji od raspoloživih sustava baza podataka, što može zahvaliti svojom jednostavnošću, brzim razvojem i mnoštvom dobre dokumentacije i uputa. Unatoč tome smo slozili jedne kratke upute koje olaksavaju iz raznih prirucnika.

Napomena: simbol  ">" označava odzivni znak (prompt) MySQLa, dok je znak "$" oznaka za običnu korisničku ljusku (dakle, ne administrativnu). Naredbe MySQLa nisu case-sensitive.

Konfiguracijska datoteka MySQLa je /etc/mysql/my.cnf. U njoj možete podesiti osnovne paramtere MySQL sustava. Linux sustavi bazirani na Debianu uvode i drugu datoteku, debian.cnf, gdje se nalazi specifična konfiguracija (primjerice, uvodi se MySQL korisnik debian-sys-maint u svrhu održavanja mysqla. Tog korisnika nemojte brisati).


MySQL cheat-sheet:


Logiranje na MySQL bazu (koristiti -h samo po potrebi, na lokalnom računalu ne morate navoditi):

Code:
$ mysql -h poslužitelj -u root -pzaporka

Pravljenje baze:

Code:
> CREATE database [ime baze];

Prikaz svih baza:

Code:
> SHOW databases;

Prebacivanje na određenu bazu:

Code:
> USE [ime baze];

Prikaz svih tablica u bazi:

Code:
> SHOW tables;

Prikaz opisa stupaca tablice:

Code:
> DESCRIBE [ime tablice];

Brisanje baze:

Code:
> DROP database [ime baze];

Brisanje tablice:

Code:
> DROP table [ime tablice];

Prikaz svih podataka u tablici:

Code:
> SELECT * FROM [ime tablice];

Prikaz podataka o stupcima tablice:

Code:
> SHOW COLUMNS FROM [ime tablice];
   

Prikaz određenih redaka gdje [ime polja] sadrži određeni pojam:

Code:
> SELECT * FROM [ime tablice] WHERE [ime polja] = "pojam";
   

Prikaz svih zapisa koji sadrže ime "Ivica" i broj telefona '1234567'

Code:
> SELECT * FROM [ime tablice] WHERE name = "Ivica" AND phone_number = '1234567';

Prikaz svih zapisa koji sadrže ime "Ivica" i broj telefona '1234567', posloženo po broju telefona:

Code:
> SELECT * FROM [ime tablice] WHERE name != "Ivica" AND phone_number
 = '1234567' order by phone_number;
   

Prikaz svih zapisa koji počinju s  izrazom "Iv" i brojem telefona '1234567', posloženo po broju telefona:

Code:
> SELECT * FROM [ime tablice] WHERE name LIKE "Iv%" AND phone_number = '1234567';
   

Pretraga zapisa preko regularnih izraza, ovaj izraz traži zapise u stupcu "rec" koji počinju s 'a':

Code:
> SELECT * FROM [ime tablice] WHERE rec RLIKE "^a$";
   

Prikaz jedinstvenih zapisa:

Code:
> SELECT DISTINCT [ime stupca] FROM [ime tablice];

Prikaz zapisa sortiranih po rastućem ili silaznom nizu:

Code:
> SELECT [col1],[col2] FROM [ime tablice] ORDER BY [col2] DESC;

Brojanje redaka:

Code:
> SELECT COUNT(*) FROM [ime tablice];

Zapisivanje rezultata u datoteku:

Code:
> SELECT * INTO OUTFILE "ispis.txt" FROM [ime tablice];

Operacija JOIN na zajedničkim stupcima:

Code:
> SELECT lookup.illustrationid, lookup.personid,person.birthday from lookup
left join person on lookup.personid=person.personid=statement to join
birthday in person table with primary illustration id;

Prebacivanje na bazu Mysql. Dodavanje novog korisnika:

Code:
> INSERT INTO mysql (Host,User,Password) VALUES('%','user',PASSWORD('password'));
> FLUSH PRIVILEGES;

Promjena korisničkih zaporki (iz korisničke ljuske - shella)

Code:
$ mysqladmin -u root -h hostname.domena.hr -p password 'novazaporka'

Ovdje ključna rijec 'password' označava naredbu, na tom mjestu ne trebate ukucavati staru zaporku. Za staru (trenutno vrijedeću) zaporku ćete biti upitani nakon izvršavanja ove naredbe.

Promjena korisničkih zaporki (u Mysqlu):

Code:
> SET PASSWORD FOR 'user'@'hostname' = PASSWORD('passwordhere');

Prebacivanje na bazu "mysql". Dodjeljivanje privilegija za određenu bazu:

Code:
> USE mysql;
> INSERT INTO mysql (Host,Db,User,Select_priv,Insert_priv,
    Update_priv,Delete_priv,Create_priv,Drop_priv)
    VALUES ('%','db','user','Y','Y','Y','Y','Y','N');
> FLUSH PRIVILEGES;

Osvježavanje podataka koji su već u tablici:

Code:
> UPDATE [ime tablice] SET Select_priv = 'Y',Insert_priv = 'Y', Update_priv = 'Y' where [ime polja] = 'user';

Brisanje redaka iz tablice:

Code:
> DELETE FROM [ime tablice] WHERE [ime polja] = 'pojam';

Osvježavanje dozvola na bazama (u slučaju promjena):

Code:
> FLUSH PRIVILEGES;

Brisanje stupca:

Code:
> ALTER table [ime tablice] drop column [ime stupca];

Dodavanje novog stupca u tablicu:

Code:
> ALTER table [ime tablice] add column [novo ime stupca] varchar (20);

Promjena imena stupca:

Code:
> ALTER table [ime tablice] change [staro ime stupca] [novo ime stupca] varchar (50);

Promjena određenog podatka u stupcu

Code:
> UPDATE [ime tablice] SET [ime stupca]=(REPLACE ([ime stupca],'old','new'));

Učini stupac jedinstvenim (tako da ne mogu postojati duplikati):

Code:
> ALTER table [ime tablice] add unique ([ime stupca]);

Povećavanje stupca:

Code:
> ALTER table [ime tablice] modify [ime stupca] VARCHAR(3);

Brisanje jednoznačno označene (indexom) tablice:

Code:
> ALTER table [ime tablice] drop index [ime stupca];

Učitavanje/importiranje CSV datoteke u tablicu:

Code:
> LOAD DATA INFILE 'filename.csv' replace INTO TABLE [ime tablice]
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (field1,field2,field3);

Dump svih baza (backup datoteka sadrži sve naredbe za uspješno vraćanje):

Code:
$ mysqldump -u root -ppassword --all-databases --opt > alldatabases.sql

Dump svih baza za backup (backup datoteka ne sadrži DROP naredbe):

Code:
$ mysqldump -u root -ppassword --all-databases > alldatabases.sql

Dump samo jedne baze za backup:

Code:
$ mysqldump -u username -ppassword --databases databasename >  databasename.sql

Dump jedne tablice iz baze:

Code:
$ mysqldump -c -u username -ppassword databasename tablename >
 databasename.tablename.sql

Vraćanje baze (ili tablice) iz backupa:

Code:
$ mysql -u username -ppassword databasename < databasename.sql

Vraćanje svih baza iz backupa (dump baze je napravljen sa --all-databases):

Code:
$ mysql -u username -ppassword < alldatabases.sql

Pravljenje tablice primjer 1:

Code:
> CREATE TABLE [ime tablice] (firstname VARCHAR(20), middleinitial VARCHAR(3),
lastname VARCHAR(35),suffix VARCHAR(3), officeid VARCHAR(10),
userid VARCHAR(15),username VARCHAR(8),email VARCHAR(35),phone VARCHAR(25),
groups VARCHAR(15),datestamp DATE,timestamp time,pgpemail VARCHAR(255));

Pravljenje tablice primjer 2:

Code:
> CREATE TABLE [ime tablice] (personid int(50) not null auto_increment
primary key, firstname varchar(35), middlename varchar(50), lastname
varchar(50) default 'prezime');
Logged

Bavim se mreznom implementacijom - sistemac - Linux, CCNA, CCNP
fly
Guest
« Reply #1 on: 28.01.2009., 00:10:04 »

Prebacivanje na bazu Mysql. Dodavanje novog korisnika:

Code:
> INSERT INTO mysql (Host,User,Password) VALUES('%','user',PASSWORD('password'));
> FLUSH PRIVILEGES;

Prebacivanje na bazu "mysql". Dodjeljivanje privilegija za određenu bazu:

Code:
> USE mysql;
> INSERT INTO mysql (Host,Db,User,Select_priv,Insert_priv,
    Update_priv,Delete_priv,Create_priv,Drop_priv)
    VALUES ('%','db','user','Y','Y','Y','Y','Y','N');
> FLUSH PRIVILEGES;


Lose rijesenje. Za dodijeljivanje dozvola pristupa na user/pass + privilegije:

Code:
> GRANT [i]dozvole[/i] [(col1,col2..,colN] ON [i]database[/i].[i]table [/i]TO "[i]username[/i]"@"[i]hostname[/i]" IDENTIFIED BY "[i]password[/i]";
> FLUSH PRIVILEGES;

Dozvole su sljedece:

Code:
ALL [PRIVILEGES],ALTER, CREATE, CREATE TEMPORARY TABLES, CREATE USER, CREATE VIEW, DELETE, DROP, EXECUTE, FILE,
INDEX, INSERT, LOCK TABLES, RELOAD, SELECT, SHOW DATABASES, SHOW VIEW, UPDATE, USAGE, GRANT OPTION

Primjer

Code:
> GRANT SELECT, UPDATE(col2),INSERT(col1,col2) ON "baza"."nekatablica" TO "mirko"@"192.168.1.%" IDENTIFIED BY "l0z1nk4";

Gornja naredba daje dozvole korisniku mirko koji se može spojiti sa računala na mreži 192.168.1.0/24 i daje mu dozvole na tablici nekatablica u baz baza za SELECT svega, insetanje u kolumne col1 i col2 te update vrijednosti u kolmni col2.
Logged
Pages: [1]   Go Up
  Print  

 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.8 | SMF © 2006-2008, Simple Machines LLC | Sitemap Valid XHTML 1.0! Valid CSS!
Page created in 0.087 seconds with 22 queries.

Google visited last this page 19.05.2012., 05:42:20