Подробности
Независимо дали искате само да сортирате данните, които излизат от базата данни, или да извършите сложни изчисления, SQL Хакове разкрива тайните, които експертите по бази данни използват, за да изследват своите данни и да получат необходимите отговори. Книгата включва 100 хака за сортиране, отсяване, преразпределяне и достигане до пределните възможности на традиционния SQL. Тук ще научите как:
- Да изпращате SQL команди към вашата база данни от командния ред и програми
- Да използвате допълнителни техники за съединяване, филтриране и групиране, за да подготвите данните за употреба в отчети
- Да решавате пъзели чрез SQL
- Да извършвате сложни търсения и сортирания на низове, дати и др.
- Да настроите своите транзакции, така че потребителите да не си пречат взаимно
- Да управлявате потребители и да проверявате промените, които те са въвели в базата данни
- Да намалите натоварването на процесора и мрежата с помощта на ефективни алтернативи на често използваните SQL операции
Дори и от години да работите с базите данни, които са представени в тази книга - Access, MySQL, SQL Server, Oracle и PostgreSQL - SQL Хакове ще промени напълно представите ви за надеждните оператори SELECT, INSERT, UPDATE и DELETE.
Списък на разработчиците.......................................................... ix
Предговор..................................................................................... xi
Глава 1. Основни правила на SQL............................................. 1
1. Стартиране на SQL от командния ред
2. Свързване към SQL от програма
3. Извършване на условни операции INSERT
4. Обновяване на базата данни
5. Решаване на кръстословица чрез SQL
6. Не извършвайте едни и същи изчисления отново и отново
Глава 2. Съединения, обединения и изгледи.......................... 27
7. Модифициране на схема без разваляне на съществуващи заявки
8. Филтриране на редове и колони
9. Филтриране на индексирани колони
10. Конвертиране на подзаявки в съединения
11. Конвертиране на сложни подзаявки в съединения
12. Опростяване на сложни обновявания
13. Избиране на подходящ стил на съединение за вашите връзки
14. Генериране на комбинации
Глава 3. Управление на текста.................................................. 46
15. Търсене на ключови думи без LIKE
16. Търсене на низ по колони
17. Решаване на анаграми
18. Сортирайте вашата електронна поща
Глава 4. Управление на дата.................................................... 61
19. Конвертиране на низове в дати
20. Разкрийте тенденциите във вашите данни
21. Отчети по всякакви критерии за дати
22. Генериране на тримесечни отчети
23. Вторият вторник от месеца
Глава 5. Работа с числа............................................................ 82
24. Умножение на набор от резултати
25. Съхраняване на текущи суми
26. Вмъкване на редове, които вашето съединение (JOIN) е пропуснало
27. Идентифициране на припокриващи се интервали
28. Избягване на делене на нула
29. Други начини за броене (COUNT)
30. Изчисляване на по-голямото от две полета
31. Разделяне на COUNT
32. Отстраняване на грешки при закръгление
33. Вземане на стойности и междинни суми с едно действие
34. Изчисляване на медиана
35. Поставяне на резултатите в диаграма
36. Изчисляване на разстоянието между GPS участъци
37. Съгласуване на фактури и преведени суми
38. Откриване на грешки от транспозиция
39. Прилагане на нарастващ данък
40. Изчисляване на ранг
Глава 6. Онлайн приложения................................................. 128
41. Копиране на уеб страници в таблица
42. Графично представяне на данни с помощта на SVG
43. Добавяне на навигационни елементи към уеб приложения
44. Тунел в SQL от Microsoft Access
45. Обработка на регистрации в уеб сървър
46. Съхраняване на изображения в база данни
47. Използване на уязвимост към SQL инжектиране
48. Предотвратяване на атака от SQL инжектиране
Глава 7. Организация на данните........................................... 176
49. Следене на рядко променящи се стойности
50. Комбиниране на таблици, които съдържат различни данни
51. Представяне на редове като колони
52. Представяне на колони като редове
53. Изчистване на неконсистентни (несъгласувани) записи
54. Денормализиране на таблици
55. Импортиране на чужди данни
56. Игра на „сватовник”
57. Генериране на уникални последователни числа
Глава 8. Съхраняване на малки количества данни.............. 199
58. Съхраняване на параметри в база данни
59. Дефиниране на персонализирани параметри
60. Създаване на списък от персонализирани параметри
61. Права за достъп, базирани на редове
62. Стартиране на заявки без използване на таблица
63. Генериране на редове без таблици
Глава 9. Блокировки и изпълнение........................................ 219
64. Определяне на нивото на изолация
65. Използване на песимистична блокировка
66. Използване на оптимистична блокировка
67. Изрични блокировки в транзакции
68. Обработка на неочаквано възстановяване след прекъсване
69. Изпълняване на функции в базата данни
70. Комбиниране на заявки
71. Извличане на много редове
72. Извличане на поднабор от резултатите
73. Комбинирано съхранение във файлове и база данни
74. Сравняване и синхронизиране на таблици
75. Намаляване на пропускателната способност при
съединения „едно към много“
76. Избягване на LOB чрез компресиране
Глава 10. Създаване на отчети................................................. 260
77. Попълване на липсващи стойности в pivot таблица
78. Разделяне на диапазони
79. Уникално идентифициране на обновявания
80. Игра на „Шест градуса от Kevin Bacon”
81. Създаване на таблици за решения
82. Генериране на последователни или липсващи данни
83. Откриване на първите n от всяка група
84. Съхраняване на списъци, които са разделени от запетаи
85. Претърсване на проста дървовидна структура
86. Използване на опашка в базата данни
87. Генериране на календар
88. Тестване на две стойности от подзаявка
89. Избиране на кои да е три от пет
Глава 11. Потребители и администриране............................... 308
90. Имплементиране на регистрации на ниво приложение
91. Експортиране и импортиране таблични дефиниции
92. „Разгръщане” на приложения
93. Автоматично създаване на потребители за база данни
94. Създаване на потребители и администратори
95. Предизвикване на автоматични обновявания
96. Създаване на хронологични записи
Глава 12. По-широк достъп...................................................... 341
97. Разрешаване на анонимни регистрации
98. Откриване и спиране на продължително работещи заявки
99. Не оставайте без празно място на диска
100. Стартиране на SQL от уеб страница
Индекс 359
Предговор..................................................................................... xi
Глава 1. Основни правила на SQL............................................. 1
1. Стартиране на SQL от командния ред
2. Свързване към SQL от програма
3. Извършване на условни операции INSERT
4. Обновяване на базата данни
5. Решаване на кръстословица чрез SQL
6. Не извършвайте едни и същи изчисления отново и отново
Глава 2. Съединения, обединения и изгледи.......................... 27
7. Модифициране на схема без разваляне на съществуващи заявки
8. Филтриране на редове и колони
9. Филтриране на индексирани колони
10. Конвертиране на подзаявки в съединения
11. Конвертиране на сложни подзаявки в съединения
12. Опростяване на сложни обновявания
13. Избиране на подходящ стил на съединение за вашите връзки
14. Генериране на комбинации
Глава 3. Управление на текста.................................................. 46
15. Търсене на ключови думи без LIKE
16. Търсене на низ по колони
17. Решаване на анаграми
18. Сортирайте вашата електронна поща
Глава 4. Управление на дата.................................................... 61
19. Конвертиране на низове в дати
20. Разкрийте тенденциите във вашите данни
21. Отчети по всякакви критерии за дати
22. Генериране на тримесечни отчети
23. Вторият вторник от месеца
Глава 5. Работа с числа............................................................ 82
24. Умножение на набор от резултати
25. Съхраняване на текущи суми
26. Вмъкване на редове, които вашето съединение (JOIN) е пропуснало
27. Идентифициране на припокриващи се интервали
28. Избягване на делене на нула
29. Други начини за броене (COUNT)
30. Изчисляване на по-голямото от две полета
31. Разделяне на COUNT
32. Отстраняване на грешки при закръгление
33. Вземане на стойности и междинни суми с едно действие
34. Изчисляване на медиана
35. Поставяне на резултатите в диаграма
36. Изчисляване на разстоянието между GPS участъци
37. Съгласуване на фактури и преведени суми
38. Откриване на грешки от транспозиция
39. Прилагане на нарастващ данък
40. Изчисляване на ранг
Глава 6. Онлайн приложения................................................. 128
41. Копиране на уеб страници в таблица
42. Графично представяне на данни с помощта на SVG
43. Добавяне на навигационни елементи към уеб приложения
44. Тунел в SQL от Microsoft Access
45. Обработка на регистрации в уеб сървър
46. Съхраняване на изображения в база данни
47. Използване на уязвимост към SQL инжектиране
48. Предотвратяване на атака от SQL инжектиране
Глава 7. Организация на данните........................................... 176
49. Следене на рядко променящи се стойности
50. Комбиниране на таблици, които съдържат различни данни
51. Представяне на редове като колони
52. Представяне на колони като редове
53. Изчистване на неконсистентни (несъгласувани) записи
54. Денормализиране на таблици
55. Импортиране на чужди данни
56. Игра на „сватовник”
57. Генериране на уникални последователни числа
Глава 8. Съхраняване на малки количества данни.............. 199
58. Съхраняване на параметри в база данни
59. Дефиниране на персонализирани параметри
60. Създаване на списък от персонализирани параметри
61. Права за достъп, базирани на редове
62. Стартиране на заявки без използване на таблица
63. Генериране на редове без таблици
Глава 9. Блокировки и изпълнение........................................ 219
64. Определяне на нивото на изолация
65. Използване на песимистична блокировка
66. Използване на оптимистична блокировка
67. Изрични блокировки в транзакции
68. Обработка на неочаквано възстановяване след прекъсване
69. Изпълняване на функции в базата данни
70. Комбиниране на заявки
71. Извличане на много редове
72. Извличане на поднабор от резултатите
73. Комбинирано съхранение във файлове и база данни
74. Сравняване и синхронизиране на таблици
75. Намаляване на пропускателната способност при
съединения „едно към много“
76. Избягване на LOB чрез компресиране
Глава 10. Създаване на отчети................................................. 260
77. Попълване на липсващи стойности в pivot таблица
78. Разделяне на диапазони
79. Уникално идентифициране на обновявания
80. Игра на „Шест градуса от Kevin Bacon”
81. Създаване на таблици за решения
82. Генериране на последователни или липсващи данни
83. Откриване на първите n от всяка група
84. Съхраняване на списъци, които са разделени от запетаи
85. Претърсване на проста дървовидна структура
86. Използване на опашка в базата данни
87. Генериране на календар
88. Тестване на две стойности от подзаявка
89. Избиране на кои да е три от пет
Глава 11. Потребители и администриране............................... 308
90. Имплементиране на регистрации на ниво приложение
91. Експортиране и импортиране таблични дефиниции
92. „Разгръщане” на приложения
93. Автоматично създаване на потребители за база данни
94. Създаване на потребители и администратори
95. Предизвикване на автоматични обновявания
96. Създаване на хронологични записи
Глава 12. По-широк достъп...................................................... 341
97. Разрешаване на анонимни регистрации
98. Откриване и спиране на продължително работещи заявки
99. Не оставайте без празно място на диска
100. Стартиране на SQL от уеб страница
Индекс 359
Андрю Къминг е „пазачът" на http://sqlzoo.net и http://progzoo.net. Той управлява колекция от SQL платформи и програмни компилатори и предоставя възможност на всички посетители да ги изпробват. Завършил е университета в Sussex и е преподавал математика в Southend High School за момчета, преди да придобие научна степен аспирант в Imperial College, Лондон. В продължение на няколко години работи като програмист на договор, след което заема настоящия си пост в Napier University в Единбург, Англия.
Д-р Гордън Ръсел е лектор по компютърни науки в Napier University, Шотландия, където преподава по множество предмети, включително бази данни, Linux и мрежи. Той е създал няколко технологични, уеб базирани среди за виртуално обучение. В тях се включват http://db.grussell.org, където автоматично се оценяват познания за SQL и http://linuxzoo.net, като на виртуалните потребители се предлага достъп с права на администратор до виртуални сървъри Linux. Той е бакалавър на науките и доктор по философия от университета в Стречклайд. Освен това е инструктор в Cisco академията и работи на търговски договори като дизайнер на база данни и разработчик на уеб сайтове.
Д-р Гордън Ръсел е лектор по компютърни науки в Napier University, Шотландия, където преподава по множество предмети, включително бази данни, Linux и мрежи. Той е създал няколко технологични, уеб базирани среди за виртуално обучение. В тях се включват http://db.grussell.org, където автоматично се оценяват познания за SQL и http://linuxzoo.net, като на виртуалните потребители се предлага достъп с права на администратор до виртуални сървъри Linux. Той е бакалавър на науките и доктор по философия от университета в Стречклайд. Освен това е инструктор в Cisco академията и работи на търговски договори като дизайнер на база данни и разработчик на уеб сайтове.