INFORMATICS

The Best

Komendy MYSQL

User Rating: 3 / 5

Star ActiveStar ActiveStar ActiveStar InactiveStar Inactive
 

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;

 

 

 

Search