Komendy MYSQL
SQL jest językiem 4-generacji (4GL) jest niezależny od platform i produktu jest językiem strukturalnym
Podstawowe komendy do pracy z MySQL:
Logowanie z unix shell użyj opcji -h
# [mysql dir]/bin/mysql -h hostname -u user -p
Po zalogowaniu otrzymasz linię zachęty ze znakiem
mysql>
Tworzenie nowej bazy
Przykład komendy gdzie logującym się jest user - root
mysql -h localhost -u root -p
Zakończenie pracy z konsolą
mysql> \q lub
mysql> quit
mysql> \help - podstawowe komendy - pomoc
mysql> \s - sprawdzenie statusu serwera
Przydatne zapytania:
SELECT version();
lub zapytanie bardziej złożone:
SELECT Version(), Now(), user(), current_date():
Rozpoczynamy pracę z bazą danych
mysql> create database [nazwabazy];
Pokaż wszystkie zapisane bazy
mysql> show databases;
Tworzenie tabeli
mysql> CREATE table [nazwa tabeli];
Przykład:
mysql> CREATE TABLE example (
id INT,
data VARCHAR(100)
);
Wybór bazy danych - przełączanie pomiędzy bazami
mysql> use [db name];
Pokaż tabele w wybranej bazie danych
mysql> show tables;
Wynik
mysql> SHOW CREATE TABLE example;
+---------+------------------------------------------------+
| Table | Create Table |
+---------+------------------------------------------------+
| example | CREATE TABLE `example` (
`id` int(11) default NULL,
`data` varchar(100) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin2 |
+---------+------------------------------------------------+
1 row in set (0.00 sec)
Pokaż strukturę tabeli - formaty pól
mysql> describe [nazwa tabeli];
mysql> explain [nazwa tabeli];
Wynik
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| data | varchar(100) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
Usunięcie bazy danych
mysql> drop database [nazwa bazy];
Usunięcie tabeli
mysql> drop table [table name];
Przeglądanie danych MYSQL
Przykłady SELECT
WHERE
SELECT * FROM pracownik WHERE pensja > 2500
SELECT * FROM pracownik WHERE (pensja >= 1500) AND (pensja <
2500)
LIKE
SELECT * FROM nazwa_tabeli WHERE nazwa_kolumny LIKE wyrażenie
SELECT * FROM pracownik WHERE nazwisko LIKE ‘Kwia%’ - wyświetla
nazwiska zaczynające się na Kwia
SELECT * FROM pracownik WHERE id_pracownika LIKE ‘%ski'
wyświetla nazwiska kończące sią na ski
SELECT * FROM pracownik WHERE imie LIKE ‘_ar%’ - wyświetla
imiona których 3 i 4 litera to "ar"
Znaki specjalne z polecenia SELECT
"_" - zastępuje dowolny pojedynczy znak - przykład LIKE '_ar_'
oznacza że szukane wyrażenie posiada dowolną pierwszą i ostatną
literę a środkowe litery to "ar"
"%" - dowolny ciąg znaków o dowolnej długości również zerowej -
przykład LIKE 'ar%' oznacza wszystkie wyraz rozpoczynające się
na "ar" łącznie z wyrazem "ar"
"[]" - dowolny ciąg znaków z określonego zakresu - przykład LIKE
'[a-c]%' - oznacza wszystkie wyrazy o dowolnej długości
rozpoczynające się od litery z przedziału a-c
"^" - dowolny ciąg znaków nie pasujący do zakresu - przykład
LIKE '[^a-c]%' - oznacza wszystkie wyrazy o dowolnej długości
których pierwsza litera nie jest literą z przedziału "a-c"
BETWEEN - pozwala określić zakres z operatorem WHERE
SELECT * FROM nazwa_tabeli WHERE (nazwa_kolumny BETWEEN x AND y)
SELECT * FROM pracownik WHERE (id_pracownika BETWEEN 1 AND 220)
Przykład wyświetla rekordy z zakresu gdzie id_pracownika jest pomiędzy 1 a 220
IN - pozwala wskazać rekordy należące do określonego zbioru
SELECT * FROM pracownik WHERE (id_pracownika IN (22, 33))
Wyświetli pracowników których "id_pracownika" to 22 oraz 33
COUNT - zwraca liczbę rekordów określonych frazą WHERE
select count(*) from LOKAL where CENA<9000;
Zapytanie złożone
select
count(distinct if(CENA<9000, ID, null))
as liczba_aut_tanszych,
avg(if(CENA<100000, CENA, null))
as srednia_cena_pojaut_tanszych,
count(distinct if(CENA>9000, ID, null))
as liczba_aut_drozszych,
avg(if(CENA>9000, CENA, null))
as srednia_cena_pojaut_drozszych
from LOKAL;
Pokaż wszystkie dane w tabeli
mysql> SELECT * FROM [table name];
Pokaż informacje o kolumnach w wybranej tabeli
mysql> show columns from [nazwa tabeli];
Pokaż wybrane rzędy tabeli z wartościa “xxxx”
mysql> SELECT * FROM [table name] WHERE [field name] =
"xxxx";
Pokaż wszystkie rekordy zawierające wartość Anton i numer
telefonu '601673345'.
mysql> SELECT * FROM [table name] WHERE name = "Anton" AND
phone_number = '60167336666';
Pokaż wszystkie rekordy które nie zawierają nazwy „Anton” i
numeru telefonu”6016666” porządkując je polem phone_number
mysql> SELECT * FROM [table name] WHERE name != "Bob" AND
phone_number = '67343434' order by phone_number;
Pokaż wszystkie rekordy rozpoczynające się literą ‘An’ i numerem
telefonu ‘60432452’.
mysql> SELECT * FROM [table name] WHERE name like "An%" AND
phone_number = '65326453';
Pokaż wszystkie rekordy rozpoczynające się z litery “An” i
numeru telefonu ‘6016666’ ograniczając rekord 1 z 5
mysql> SELECT * FROM [table name] WHERE name like "Bob%" AND
phone_number = '64563345' limit 1,5;
Użyj regularnego wyrażenia by znaleźć rekord. Używając “REGECP
BINARY” w celu zwiększenia czułości oraz znalezienia dowolnych
rekordow zaczynajacych się od „a”
mysql> SELECT * FROM [table name] WHERE rec RLIKE "^a";
Pokaż unikalne rekordy
mysql> SELECT DISTINCT [column name] FROM [table name];
Pokaż wybrane rekordy sortowane rosnąco (asc) lub malejąco
(desc)
mysql> SELECT [col1],[col2] FROM [table name] ORDER BY
[col2] DESC;
Zwróć liczbę rzędów
mysql> SELECT COUNT(*) FROM [table name];
Suma kolumn
mysql> SELECT SUM(*) FROM [table name];
Dołącz do tabel wspólne kolumny
mysql> 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;
Tworzenie nowego użytkownika logując się jako root.
Połącz sie do bazy mysql i uaktualnij uprawnienia
# mysql -u root -p
mysql> use mysql;
mysql> INSERT INTO user (Host,User,Password) VALUES
('%','username',PASSWORD ('password'));
mysql> flush privileges;
Zmień hasło użytkownika z powłoki unixa
# [mysql dir]/bin/mysqladmin -u username -h
hostname.blah.org -p password 'new-password'
Zmień hasło użytkownika z MySQL prompt zaloguj się jako root
oraz ustaw hasło. Odśwież uprawnienia
# mysql -u root -p
mysql> SET PASSWORD FOR 'user'@'hostname' = PASSWORD
('passwordhere');
mysql> flush privileges;
Odzyskaj hasło roota z MySQL zatrzymaj proces serwera uruchom
ponownie bez uprawnień do tabeli załoguj się ponownie do MySQL
jako root. Ustaw nowe hasło potem wyjdź z MySQL i urochom
ponownie serwer.
# /etc/init.d/mysql stop
# mysqld_safe --skip-grant-tables &
# mysql -u root
mysql> use mysql;
mysql> update user set password=PASSWORD("newrootpassword")
where User='root';
mysql> flush privileges;
mysql> quit
# /etc/init.d/mysql stop
# /etc/init.d/mysql start
Utwórz nowe hasło użytkownika root będąc zalogowany jako root
# mysqladmin -u root password newpassword
Zmień hasło użytkownika root
# mysqladmin -u root -p oldpassword newpassword
Pozwól aby użytkownik "bob" połączył się do serwera z localnego
hosta używając hasła "passwd". Logując się jako root przełącz
do bazy MySQL dodaj oraz uaktualnij uprawnienia.
# mysql -u root -p
mysql> use mysql;
mysql> grant usage on *.* to bob@localhost identified by
'passwd';
mysql> flush privileges;
Przydziel użytkownikowi uprawnienia dla bazy Zaloguj się jako
root przełącz do bazy MySQL, przyznaj oraz uaktualnij
uprawnienia
# mysql -u root -p
mysql> use mysql;
mysql> INSERT INTO user
(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Cr
eate_priv,Drop_priv) VALUES
('%','databasename','username','Y','Y','Y','Y','Y','N');
mysql> flush privileges; or mysql> grant all privileges on
databasename.* to username@localhost;
mysql> flush privileges;
Uaktualnij informacje zawarte w tabeli
mysql> UPDATE [table name] SET Select_priv = 'Y',Insert_priv
= 'Y',Update_priv = 'Y' where [field name] = 'user';
Usuń rząd z tabeli
mysql> DELETE from [table name] where [field name] =
'whatever';
Odśwież uprawnienia dostępy
mysql> flush privileges;
Usuń kolumne
mysql> alter table [table name] drop column [column name];
Dodaj kolumne do bazy.
mysql> alter table [table name] add column [new column name]
varchar (20);
Zmień nazwę kolumny.
mysql> alter table [table name] change [old column name]
[new column name] varchar (50);
Wykonaj unikalną kolumnę aby zabezpieczyć się przed oszustwem.
mysql> alter table [table name] add unique ([column name]);
Zwiększ rozmiar kolumny.
mysql> alter table [table name] modify [column name]
VARCHAR(3);
Usuń unikalną tabelę.
mysql> alter table [table name] drop index [colmn name];
Wczytaj pliki CSV do tabeli
mysql> LOAD DATA INFILE '/tmp/filename.csv' replace INTO
TABLE [table name] FIELDS TERMINATED BY ',' LINES TERMINATED BY
'\n' (field1,field2,field3);
Wykonaj backup WSZYSTKICH baz danych. Plik backupu jest SQL
komenda odtworzenia całej bazy
# [mysql dir]/bin/mysqldump -u root -p password --opt
>/tmp/alldatabases.sql
Zrzuć jedną baze danych do backupu.
# [mysql dir]/bin/mysqldump -u username -p password --
databases databasename >/tmp/databasename.sql
Zrzuć tabelę z bazy.
# [mysql dir]/bin/mysqldump -c -u username -p password
databasename tablename > /tmp/databasename.tablename.sql
Odzyskaj bazę lub tabele z backupu.
# [mysql dir]/bin/mysql -u username -p password databasename
< /tmp/databasename.sql
Utwórz tabele przykład 1.
mysql> CREATE TABLE [table name] (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));
Utwórz tabelę przykład 2.
mysql> create table [table name] (personid int(40) not null
auto_increment primary key,firstname varchar(35),middlename
varchar(40),lastnamevarchar(40) default 'bato');
Przykład 3.
mysql -u[tutaj wpisz użytkownika z pełnym dostępem do bazy] -p
Enter password:[podaj hasło]
mysql> CREATE DATABASE projekt CHARACTER SET utf8 COLLATE
utf8_polish_ci;
mysql> GRANT USAGE ON projekt.* TO projekt@localhost;
mysql> GRANT ALL ON projekt.* TO projekt@localhost IDENTIFIED BY
'twoje_hasło';
mysql> flush privileges;
mysql> use projekt;
Wykonywanie komend w trybie wsadowym:
mysql> mysql < FilaName;