Шукати в цьому блозі

Показ дописів із міткою mysql short help. Показати всі дописи
Показ дописів із міткою mysql short help. Показати всі дописи

пʼятниця, 18 листопада 2011 р.

Краткая шпаргалка по запросам в MySQL

Приведу в качестве шпаргалки несколько запросов, которые я часто использую, возможно пригодиться еще кому-то.

Задача 1.
Входные данные:
таблица:
mysql> describe invent_2011_invent;
+-----------+-----------+------+-----+-------------------+-----------------------------+
| Field     | Type      | Null | Key | Default           | Extra                       |
+-----------+-----------+------+-----+-------------------+-----------------------------+
| id        | int(12)   | NO   | PRI | NULL              | auto_increment              |
| sn        | char(255) | NO   |     | NULL              |                             |
| hw_name   | char(255) | NO   |     | NULL              |                             |
| hw_type   | char(255) | NO   |     | NULL              |                             |
| place     | char(255) | NO   |     | NULL              |                             |
| user      | char(255) | NO   |     | NULL              |                             |
| city      | char(255) | NO   |     | NULL              |                             |
| address   | char(255) | NO   |     | NULL              |                             |
| territory | char(255) | NO   |     | NULL              |                             |
| remarks   | char(255) | NO   |     | NULL              |                             |
| tstamp    | timestamp | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-----------+-----------+------+-----+-------------------+-----------------------------+

Задача:
вывести кличество однотипного оборудования, которое встречается больше 1 раза, тип указан в поле hw_type

SELECT hw_type, count(*) AS count_hw FROM invent_2011_invent GROUP BY hw_type HAVING count_hw>1;

результат будет примерно таким:
+-------------+----------+
| hw_type     | count_hw |
+-------------+----------+
| ADAPTER     |        4 |
| BATTERY     |        3 |
| DSTAT       |       15 |
| EXTDROM     |       33 |
| EXTHDD      |       41 |
| INTDROM     |       19 |
| INTHDD      |       15 |
| MFU         |       26 |
| MMODEM      |       17 |
| MODEM       |        6 |
| PPC         |       40 |
| PRINTER     |       32 |
| PRINTSERVER |       95 |
| RAM         |       22 |
| REPLICATOR  |       11 |
| ROUTER      |        7 |
| RSERVER     |       11 |
| SCANNER     |       16 |
| UPS         |       12 |
| USBFLASH    |        5 |
+-------------+----------+


Задача 2.
Входные данные:
таблица:
mysql> describe invent_2011_codes;
+---------+---------+------+-----+---------+----------------+
| Field   | Type    | Null | Key | Default | Extra          |
+---------+---------+------+-----+---------+----------------+
| ID      | int(11) | NO   | PRI | NULL    | auto_increment |
| CODES   | text    | NO   |     | NULL    |                |
| HW_TYPE | text    | NO   |     | NULL    |                |
+---------+---------+------+-----+---------+----------------+
3 rows in set (0.00 sec)


текущая локаль в кодировке UTF-8
Настройки таблици:
- Character Set UTF-8 Unicode
- Collation utf8_general_ci

Задача: импортировать данные в поля CODES и HW_TYPE из текстового файла (/home/emutant/Documents/invent_2011/Rez/invent_2011_codes.txt)
в кодировке UTF-8, но содержащего кирилицу.
В файле значения разделены "," в качестве закрывающих эллементов используются "".

LOAD DATA LOCAL INFILE '/home/emutant/Documents/invent_2011/Rez/invent_2011_codes.txt' INTO TABLE invent_2011_codes CHARACTER SET LATIN1 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' (CODES,HW_TYPE);

Задача 3.
Входные данные:
таблица из Задачи 2.

Задача:
- найти в поле CODES символы "S/N: " и вырезать их

UPDATE invent_2011_codes CODES = REPLACE(CODES, "S/N: ", "");



Задача 4.
Входные данные:
таблицы из Задачи 1 и 2.

Задача: Вывести все поля и их значение в таблице invent_2011_codes, для которых значение invent_2011_codes.CODES равны invent_2011_invent.sn в файл
(/tmp/EQ_codes.txt)

В файле значения разделены "," в качестве закрывающих эллементов используются "".

SELECT * FROM invent_2011_codes WHERE CODES IN (SELECT sn FROM invent_2011_invent) INTO OUTFILE '/tmp/EQ_codes.txt' CHARACTER SET LATIN1 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"';


Задача 5.
Входные данные:
- таблица invent_2011_undef, в которой есть поля SEARCH_REZ и ID_SAP;
- таблица ID_SAP_DEF, в которой есть одноименное поле ID_SAP_DEF;

Задача: Проставить метку "ОК" для поля invent_2011_undef.SEARCH_REZ, для записей в которых поле invent_2011_undef.ID_SAP совпадает с ID_SAP_DEF.ID_SAP_DEF.

UPDATE invent_2011_undef SET SEARCH_REZ="OK" WHERE invent_2011_undef.ID_SAP IN (SELECT ID_SAP_DEF FROM ID_SAP_DEF);