Я очень хороший программист на С#, которому нужно изучить SQL Server. Какой лучший способ для меня изучить разработку SQL Server/Database?
Примечание: Я - общий новичок, когда дело доходит до БД и SQL.
Я очень хороший программист на С#, которому нужно изучить SQL Server. Какой лучший способ для меня изучить разработку SQL Server/Database?
Примечание: Я - общий новичок, когда дело доходит до БД и SQL.
SQL - это теория множеств или, вернее, реляционная алгебра. Прочтите краткое руководство по этому вопросу. И научитесь думать в наборах, а не в процедурах.
С практической стороны существует четыре фундаментальных операции:
(Под подмножеством подразумевается любое подмножество, включая пустое множество, а не обязательно собственное подмножество.)
В любом месте я могу написать имя столбца в DDL (за исключением цели обновления), я могу написать выражение, которое использует имена столбцов, функции или константы.
select 1, 2, 3 from table
вернет набор результатов "1 2 3", один раз для каждой строки в таблице. Если столбец с именем create_date
имеет дату типа, а функция month
возвращает номер месяца с датой, select month( create_date) from table
покажет мне номер месяца для каждого create_date.
A where - предикат, который ограничивает выбранные или удаленные строки или обновляется для тех строк, для которых предикат является истинным. А где причина может состоять из произвольного числа предикатов, связанных логическими операторами and
or
и not
. Подобно списку столбцов в select
, я могу использовать имена столбцов, функции и константы в моем предложении where
. Как вы думаете, какой результирующий набор возвращается из select * from table where 1 = 1;
?
В запросе таблицы связаны соединением, в котором некоторые данные или ключ в одном связаны оператором с базой данных или ключом в другой таблице. Реляционный оператор часто является равенством, но на самом деле может быть любым двоичным оператором или даже функцией.
Таблицы связаны, как я уже упоминал выше, с ключами; строка в таблице может относиться к нулевой, одной или нескольким строкам в другой таблице; это называется мощностью отношения. Отношения могут быть "один к одному", "один ко многим", "многие ко многим" . Существуют стандартные способы представления каждого отношения. Прежде чем искать стандартные способы сделать это, подумайте о том, как вы будете представлять каждый из них, каковы минимальные требования каждого вида. Вы увидите, что отношение "многие ко многим" на самом деле может также моделировать "один ко многим" и "один к одному"; спросите себя, почему, учитывая это, все отношения не многие-ко-многим.
EF Codd, среди прочего, впервые выдвинул идею нормальной формы в реляционных базах данных. Обычно принято считать пять или шесть нормальных форм, но самое важное резюме нормальной формы прост: каждый объект, который ваши модели баз данных должен быть представлен одной строкой и одной строкой, каждый атрибут должен зависеть от ключа строки и каждая строка должна моделировать сущность или отношения. Прочитайте праймер в обычной форме и поймите, почему вы можете получить несоответствия данных, если ваша база данных не нормализована.
Во всем этом постарайтесь понять, почему мне нравится говорить ", если вы лжете базе данных, это будет вам" . Под этим я не имею в виду плохие данные, я имею в виду плохой дизайн. Например, если вы моделируете отношение "один-ко-многим" как много-ко-многим, то что "ложь" может быть записано? Что "ложь" может произойти, если ваши таблицы не нормализованы?
В практическом плане вид представляет собой запрос выбора, заданный имя и хранящийся в базе данных. Если я часто присоединяюсь к таблице student
к таблице major
через отношение "многие ко многим" student_major
, возможно, я могу написать представление, которое выбирает столбцы, представляющие интерес для этого соединения, и использовать представление вместо того, чтобы переписывать присоединиться.
Практические советы: сначала, напишите представление. что бы вы ни делали, будет проще и понятнее, если вы напишете представление для каждого расчета или подсчета, который вы делаете. Напишите представление, которое инкапсулирует каждое соединение, напишите представление, которое инкапсулирует каждое преобразование. Почти все, что вы хотите сделать, можно сделать в представлении.
Разделение запроса на представления имеет те же самые черты, что и функциональный декомпозит, который служит в процедурном коде: он позволяет вам сосредоточиться на том, чтобы делать что-то одно, сделать его более легко проверенным и позволять вам создавать более сложные функции из простых операций. Вот пример, когда я использую представления для преобразования таблицы в формы, которые более легко позволяют применить последовательные преобразования, чтобы достичь цели.
Не конфликтовать данные. Каждая таблица должна однозначно моделировать одну вещь (один вид сущности) и только одну вещь; каждый столбец должен выражать один и только один атрибут этой вещи. Различные типы объектов относятся к разным таблицам.
Метаданные - ваш друг, Ваша платформа базы данных предоставит некоторые метаданные; что он не дает вам добавить. Поскольку метаданные являются данными, применяются все правила моделирования данных. Вы можете получить, например, имена всех объектов в вашей базе данных из таблицы sytem sysobjects
; syscolumns
содержит все столбцы. Чтобы найти все столбцы в одной таблице, вы присоедините sysobjects
и syscolumns
к id и добавьте предложение where
, ограничивающее набор результатов, к определенному имени таблицы: where sysobjects.name = 'mytable'
.
Эксперимент. Сядьте в базу данных и спросите себя: "Как я могу представить людей с цветами волос, профессиями и резиденциями? Какие таблицы и отношения подразумеваются при моделировании?" Тогда модель, которая, как таблицы.
Затем спросите себя: "Как я могу показать всех блондинок, которые живут в Атланте", и напишите запрос, который делает это. Составьте его вместе, написав взгляды, которые покажут вам всех блондинок, всех врачей и всех людей, которые проживают в Атланте.
Вы обнаружите, что при запросе "как я могу найти это" вы обнаружите недостатки в своей модели, и вы обнаружите, что хотите или даже хотите изменить способ работы вашей модели. Внесите изменения, посмотрите, как они упрощают или затрудняют ваши запросы.
Я люблю книги Джо Целько от новичка до продвинутого. Я также считаю, что виртуальные лаборатории отличные.
Легкий способ изучения синтаксиса SQL?
Использовать Microsoft Access. Используйте базу данных образцов Northwind, откройте "Доступ в режиме запроса" и запустите несколько запросов.
Начните с SELECT * FROM и перейдите к более сложным примерам.
Один из лучших ресурсов - http://www.sqlservercentral.com/ Тонны статей
Другим хорошим ресурсом является http://www.trainingspot.com/VideoLibrary/Default.aspx
И вот список книг, которые мой администратор базы данных предложил мне прочитать для изучения SQL
Вот три книги, которые я настоятельно рекомендую вам прочитать по порядку.
Начало программирования SQL Server 2005
W3Schools имеет хороший учебник с попыткой установить пример. Но помимо установки экспресс-версии и проведения пробных проб с демонстрационными базами данных, я бы сказал, что никакая книга не научит вас лучше.
Я бы сказал, что ваш лучший выбор - зарегистрироваться в классе DB в местном колледже. Обычно вы можете найти вечерний класс. Вы начнете с простых понятий базы данных, таких как база данных и таблицы.
Инструктор обычно дает вам проект в качестве домашней работы примерно на полпути, хотя класс, в котором вы будете проектировать и внедрять простую базу данных для чего-то вроде магазина видео. У вас будет взаимодействие с другими учащимися, которые находятся на одном уровне и будут заинтересованы в обсуждении технических деталей с точки зрения нового парня-парня. И у вас будет опытный инструктор, с которым вы можете задавать вопросы и получать своевременное взаимодействие, кто не будет похож на нас, как на интернет-плакаты:)
Получите его от устья лошади → http://www.asp.net/learn/videos/default.aspx?tabid=63#sql
В наши дни большинство университетов имеют свои курсы онлайн. Попытайтесь исследовать некоторых хороших профессоров и изучите основы. Их назначения также полезны.
в верхней части моей головы, я могу думать о MIT opencourseware (OCW)
Это зависит от того, что вам нужно будет сделать. Если вам просто нужно получить доступ к базам данных, вы должны взглянуть на различные стратегии доступа - DataReader, DataSet, LINQ to SQL, Entity Framework, NHibernate - и выбрать решение.
Если вам нужно разработать базу данных, получите хорошую книгу по этой теме. Познакомьтесь с теоретическим материалом - реляционной алгеброй, ключами, ссылочной целостностью и нормализацией. Затем взгляните на SQL, и, наконец, вы можете более подробно рассмотреть транзакцию ACID, блокировку, контроль соответствия, индексы и все технические детали, которые делают работу сервера базы данных.
Я бы посоветовал прочитать статьи в википедии - может быть 100 самых важных - чтобы получить общую картину, а затем, при необходимости, уточнить детали. Но это, вероятно, не заменит хорошую книгу, если вы хотите получить хорошего разработчика базы данных.
Мне нравятся книги, потому что я могу их читать в любом месте, я могу идти в своем собственном темпе, и я могу получить копии электронных книг (при использовании apress). Мне также случается, чтобы научиться более эффективно таким образом, поскольку я уже знаю большинство концепций, таких как типы баз данных.. int, bool, guid и т.д.... вы тоже это знаете. Поэтому, по сути, я бы порекомендовал серию книг серии - очень всеобъемлющую ИМО. И вы обычно можете найти их для очень дешевых на Amazon... Вот один из них, специально для вас:
Когда вы подписываетесь на Microsoft Books Newsletters (из Microsoft Press), они фактически предоставляют вам (бесплатно) электронную книгу "Представляя SQL Server 2008.