Примеры работы с MySQL (примеры запросов).


1. Перебор получаемых значений из базы данных

1
2
3
4
5
6
7
8
9
10
$sql = "SELECT * FROM users";
$query = mysql_query($sql);
for ($rows = array(); $row = mysql_fetch_assoc($query); $rows[] = $row);
for ($i = 0; $i < count($rows); $i++)  {
    // получаем данные для каждого пользователя
    $name = $rows[$i]['name'];
    $age = $rows[$i]['age'];
    // что-то делаем с ними
    ...
}

2. Экранирование спецсимволов в запросах к базе данных (безопасность запросов)

1
2
$sql = "SELECT age FROM users WHERE name = '".mysql_real_escape_string($name)."'";
$query = mysql_query($sql);

3. Получаем количество строк в таблице

1
2
	$num=mysql_query('SELECT COUNT(*) FROM users');
        echo "Количество строк: ".mysql_result($num, 0, 0);

4. Скопировать все данные из 1-й таблицы в другую

1
	insert into table2 select * from table1

5. Скопировать данные из колонки 1-й таблицы в колонку 2-й таблицы

1
	insert into table2 select old_column as new_column from table1

6. Извлекаем данные из нескольких таблиц

1
2
3
4
5
6
7
8
9
10
11
12
13
     SELECT u.first_name, 
                u.last_name, 
                u.patronymic, 
                u.mobile_phone, 
                u.phone, 
                u.email, 
                u.inn, 
                r.date, 
                r.money, 
                r.term
     FROM users AS u
     LEFT JOIN requests AS r ON r.user_id=u.id
     WHERE r.is_confirm='0'

Еще пример:

1
2
3
4
5
6
7
	SELECT c.id,c.title,c.alias,c.introtext,c.created, c.images, c.created_by, u.name, cat.parent_id
        FROM table_content AS c
        LEFT JOIN table_users AS u
	ON c.created_by=u.id
	LEFT JOIN table_categories AS cat
	ON cat.id=c.catid
	WHERE c.state='1' AND cat.parent_id='$category_id' ORDER BY c.created DESC LIMIT 0,1

Используем в одном запросе LEFT JOIN и COUNT.

1
2
3
4
5
6
$sql="SELECT g.g_id, g.g_name, count(t.id) AS t_count
          FROM goals AS g
          LEFT JOIN teams AS t
          ON g.g_id = t.g_id
          WHERE g.user_id = '$user_id'
          ORDER BY g_id";

Исключение определенных записей из одной таблицы, id строк которой соответствуют полю (user_id) в другой таблице.

1
2
SELECT username, id 
FROM users WHERE id NOT IN (SELECT user_id FROM teams)

Пример апдейта таблицы с join-ом:

1
2
3
4
UPDATE `ads` a
JOIN (SELECT ad_id, SUM(hits) hits_all, SUM(clicks) clicks_all FROM `ads_statistics` GROUP BY ad_id) AS
ON a.id = AS.ad_id
SET a.hits_all = AS.hits_all, a.clicks_all = AS.clicks_all




Другие посты

Категория: MySQL

Оставить комментарий