26. C-sharp 22 11-02-2014

Created Tuesday 11 February 2014

  1. Теория баз данных, SQL
  2. Реляционные базы данных — данные хранятся в виде строк, строки объединены в таблицы, таблицы могут быть связаны (relation). Единицей хранения информации является строка (raw, record, запись).
  3. Таблица может состоять из одной или нескольких записей.
  4. Реляционная база данных существует, если существует хотя бы одна таблица.
  5. Таблиц может быть несколько и тогда между ними можно определять отношения, которые могут быть исключительно логическими (исключительно "в голове").
  6. Математические основы работы с этими базами хорошо проработаны, научно доказаны и реализованы в виде языка SQL. Но существуют и другие модели баз данных:
    1. Network:
      1. Каждая запись хранится отдельно и может быть связана с другими записями
        1. Сложны в обработке, но наиболее быстрые
    2. Hierarchical:
      1. Каждая запись может иметь потомков (реестр Windows есть пример такой модели)
    3. Object (например, Cache):
      1. Вместо записей оперируют объектами
    4. Big data:
      1. В последнее время (лет 5) широкое применение начали находить ранее экспериментальные базы данных, предназначенные для хранения огромных объёмов неструктурированных данных.
      2. No-SQL
      3. Одна из наиболее популярных — MongoDB
  7. Среди реляционных моделей тоже есть разнообразие:
    1. Oracle:
      1. Много лет считается компанией номер 1 по работе с реляционными базами данных
    2. Microsoft:
      1. Можно считать, что догоняют Oracle
    3. MySQL
    4. PostGres
    5. mSQL
  8. SQL это математически обоснованный язык, у него есть стандарт, и разные производители СУБД в той или иной мере придерживаются этого стандарта (имеются и различия)
  9. Все реляционные СУБД организованы по архитектуре клиент-сервер
  10. Запись состоит из полей (fields)
    1. Каждое поле предназначено для хранения данных определённого типа — реляционные базы данных типизированы
    2. Соответствие между типами данных SQL-баз и языков программирования часто нетривиально.
    3. Когда создаётся таблица, описываются типы данных всех столбцов таблицы.
  11. Описание типов данных нужно для того, чтобы на диске выделить место. Это даёт возможность ОС знать, какими кусками писать данные + заранее выделять оперативную память — это положительно влияет на скорость.
  12. Типы данных
    1. Tiny int
    2. Small int
    3. Int — лучше всегда использовать, потому что всегда совпадает с машинным словом и лучше конвертируется
    4. char(10) — десять символов — больше будет обрезано, меньше будет дополнено пробелами — ASCII
    5. nchar(10) — юникод
    6. varchar — поле переменной длинны (т.е., в таблице будет храниться ссылка на переменную строки)
    7. nvarchar — юникод — строки заключаются в одиночные кавычки
    8. ntext — хранится просто в виде файла, длина не ограничена, но в этом поле нельзя искать, поэтому лучше не использовать
    9. xml — можно хранить информацию и искать по ней, длина не ограничена
    10. numeric(.., ..) — дробное число
    11. money — дробное число с 2-мя знаками после запятой
    12. smallmoney
    13. float
    14. decimal — соответствует decimal C#
    15. real
    16. geography
    17. geometry
    18. hierarchyid
    19. datetime — рекомендуется всегда вводить дату в таком виде: 2014-02-14 00:00:00.000
    20. date
    21. timestamp — предназначено для генерации некоторого уникального числа — дань прошлому...
    22. uniqueidentifier — генерируется уникальная строка из 32 символов
    23. bit — 0, 1 — используется в качестве логического типа
    24. null — значение "ничего нет"
  13. Для хранения иерархии в реляционной базе данных — без использования относительно нового типа hierarchyid создаётся можество таблиц, связанных внешними ключами
  14. Сделав изменение, делайте refresh, чтобы увидеть результаты..
  15. Все действия, которые производятся в Management Studio с сервером — это SQL
  16. Язык SQL в MSSQL называется T-SQL — диалект от Майкрософт — Transact SQL
    1. Скриптовый процедурный язык
    2. В принципе можно реализовать DAL исключительно средствами T-SQL
      1. Безопасность
      2. Скорость
    3. Три группы команд (подъязык):
      1. DML — Data Manipulation Language
        1. insert — дописывает в конец таблицы новую строку (всегда в конец, всегда целиком запись), есть варианты этой команды, служащие для несколько других целей, например — создание таблицы и использование с select
        2. delete — удаление записей (поодиночке или группой)
        3. update — изменение значения поля
      2. DDL — Data Definition Language
        1. create — создание
        2. alter — изменение структуры таблиц
      3. DQL — Data Query Language
        1. select — первое правило — ограничивать количество столбцов в реальной выборке (производительность)
          1. select top 5 — выбрать первые пять записей — серьёзно улучшает скорость выборки (можно использовать несколько раз, чтобы быстро получить много данных — либо писать самому, либо rowcount) — search for 'paging sql server';
          2. where
            1. Нужно знать заранее, какие поля должны использоваться в where — драматически улучшает скорость выборки
    4. Предикат where определяет область действия команды
      1. Операторы
        1. = — сравнение, не присваивание
        2. !=
        3. >=
        4. <=
        5. <
        6. >
        7. like/ not like — сравнение по шаблону содержимого строки
          1. delete from dbname where title like 'a%'; — первая буква "а"
          2. delete from dbname where title like '%a^[m-z]%';
          3. В отличие от MySQL нет rlike — регулярные выражения можно использовать в like
        8. not
        9. is null
        10. is not null
        11. or
        12. and
        13. between
          1. where id between 5 and 6
        14. in
          1. where id in (5, 7, 9, 11)
      2. order by — сортировка
        1. Требуется часто, но следует пользоваться осторожно — переставление записей ресурсоёмкая операция
        2. order by id asc
        3. order by id desc
        4. order by amount, create_date — можно для каждого указывать asc и desc
      3. Группировка
        1. Использование группировочной функции
          1. min
          2. max
          3. average
          4. count
          5. sum
        2. Выбор поля, по которому пройдёт группировка
        3. Примеры:
          1. select count(create_date) ... — сколько разных полей create_date — в count всегда желательно ставить уникальное поле
          2. select sum(amount) ...
          3. select count (create_date) as counter, amount from ... group by amount
      4. Вычисляемое поле (as ..) — Calculated field:
        1. select top 1000 (price * amount) as total ...
      5. Subqueries — медленно!
        1. select sum(q.total) from (select id, title ..., (price * amount) from ...) as q
  17. Очень часто требуется поле (или комбинация полей), которое однозначно идетифицирует запись (каждая запись должна быть уникальна)
  18. Записи обычно не удаляют (вместо этого вводят какое-нибудь поле, значащее удаление)
  19. Д. З.
    1. Читать модуль 3 нового учебника (20738), модуль 4, модуль 6



Backlinks: