Upload
eleks-developers-courses-if
View
590
Download
2
Embed Size (px)
Citation preview
Бази даних
Реляційні бази даних (цілісність даних)
Сутності зберігаються в таблицях
Course
Колонки – атрибути сутностей
Name, Description, StartData, EndDate, ApplicationEndDate
Рядки – екземпляри сутностей
Визначаються лише атрибутами (не порядковим номером)
Найчастіше рядки є унікальними
Edgar Codd
Primary key визначає унікальність рядка.
Один або декілька атрибутів (Name + Description; Id)
Для зміни структури та отримання/редагування даних використовується мова SQL
Data Manipulation Language – DML
Data Definition Language – DDL
SQL Server http://msdn.microsoft.com/en-us/library/bb510741.aspx
SQL Server 2012 Express LocalDB
http://msdn.microsoft.com/en-us/library/hh510202.aspx
No full server instance of SQL Server.
SqlLocalDB.exe
Create database
create database LectureExample
drop database LectureExample
Create table
create table Course(
Id int identity primary key,Name nvarchar(255),[Description] nvarchar(max),StartDate datetime2,EndDate datetime2,ApplicationEndDate datetime2
);
Data typesData types http://msdn.microsoft.com/en-us/library/ms187752.aspx
bigint, numeric, bit, smallint, decimal, smallmoney, int, tinyint, money
float, real
date, datetimeoffset, datetime2, smalldatetime, datetime, time
char, varchar, text
nchar, nvarchar, ntext
Insert, select, delete
insert into Course (Name, [Description], StartDate) values(N'C++ Feb 2013', N'...', '1/31/2013'),(N'C# 2012', N'...', '3/19/2013')
select * from Course
select Name, StartDate, EndDatefrom Course
delete Course
Завжди вказуйте перелік колонок
Не використовуйте ‘select *’ в коді
Order by
select Name, StartDate from Courseorder by StartDate asc
select Name, StartDate from Coursewhere enddate is nullorder by StartDate desc
select top(2) Name, StartDate from Coursewhere enddate is nullorder by StartDate desc
Pagingselect Name, StartDate from Courseorder by StartDate desc
offset 1 rowsfetch next 3 rows only
All rows
Page of size 3 starting from 2nd row
Aggregationsselect count(*) from Coursewhere EndDate is null
select sum(Id) from Course
select Id, Name, TeacherName,TeacherYearsOfExperiencefrom Course
A Teacher teaches a Course
Дані дублюються
Вирішення – окрема таблиця для Teacher
create table Teacher(
Id int identity primary key,Name nvarchar(255),YearsOfExperience int
)
Teacher
Course
Foreign keycreate table Course(
Id int identity primary key,Name nvarchar(255),TeacherId int,
constraint FK_Course_Teacherforeign key (TeacherId)references Teacher(Id)
);
Inner joinselect Course.Id, Course.Name, Teacher.Id,
Teacher.Namefrom Courseinner join Teacher
on Course.TeacherId = Teacher.Id
Left outer joinselect Course.Id, Course.Name, Teacher.Id,
Teacher.Namefrom Courseleft join Teacher
on Course.TeacherId = Teacher.Id
Right outer joinselect Course.Id, Course.Name, Teacher.Id,
Teacher.Namefrom Courseright join Teacher
on Course.TeacherId = Teacher.Id
“Right join” via left joinselect Course.Id, Course.Name, Teacher.Id,
Teacher.Namefrom Teacherleft join Course
on Course.TeacherId = Teacher.Id
Full outer joinselect Course.Id, Course.Name, Teacher.Id,
Teacher.Namefrom Coursefull outer join Teacher
on Course.TeacherId = Teacher.Id
Update
update Teacher set YearsOfExperience = 13where Id = 1
update Teacher set
YearsOfExperience = 15,Name = 'Walter White Junior'
where Id = 1
Delete
delete Teacher where Id = 4