SlideShare a Scribd company logo
RDBMS: MySQL DB server
2015.02.28
Batzorigt Rentsen
Хичээлийн агуулга
• RDB: Ерөнхий ойлголт авах
• RDMS: Онол + дадлага
• SQL: Онол + дадлага
RDB-Relational Database
• Үгчилбэл: Хамааралт мэдээллийн сан
• Мэдээллийг давхцуулалгүйгээр хоорондоо
логик холбоотой хэсгүүдэд (table) хувааж
хадгалах, устгах, засах, хайх, боловсруулалт
хийх function, stored procedure, trigger г.м-р
хангагдсан мэдээллийн сан.
RDB: Хүснэгтийн цуглуулга
• Мэдээлэл хадгалах хэлбэр: хүснэгт
• Хүснэгт нь бичлэг (record, row, relation, tuple),
бичлэг нь талбар (field, attribute)-c бүрдэнэ.
• Ихэнхи RDB-н бүтэц Эдгар Koддын санаанд*
тулгуурладаг.
• RDB-д Entity (relational model)-г хадгалах сав
болгож хүснэгтийг ашигладаг. Хүснэгтийн мөр
бүр ялгаатай Entity-г заана.
* Аливаа мэдээллийг Entity гэх дахин давтагдахгүй
мэдээллийн нэгжид хувааж эдгээр нэгжийн харилцан
хамаарал-шүтэлцээгээр илэрхийлж болно гэдэг санааг Кодд
1970 онд гаргажээ.
RDB-н бүтэц
customer_id email given_name surname
1 foo@bar.com Batzorigt Rentsen
record
field
order_id customer_id order_date
1 1 2015-02-27
order_id product_id quantity
1 1 1
1 2 1
product_id product_name price description
1 Lean software development 50 book
2 Enterprise Integration Patterns 100 book
Primary Key
Primary Key
Foreign Key Foreign Key
customer
purchase_order
order_detail
product
Primary Key
Secondary Key
Foreign Key
ERD: Entity Relationship Diagram
Keys
• Primary key - Үндсэн түлхүүр: Тухайн бичлэгийг
нэг утгатай зааж чадах түлхүүр
• Secondary key - Орлогч түлхүүр: Primary key гэж
тодорхойлоогүй хэр нь PK-н оронд ашиглаж
болох, тухайн бичлэгийг нэг утгатайгаар зааж
чадах түлхүүрийг хэлнэ.
• Foreign key - Гадны түлхүүр: Өөр хүснэгтийн
үндсэн түлхүүрийг лавлагаа хийх зорилгоор
тухайн хүснэгтийн талбар болгон авсан бол тэр
талбарыг гадны түлхүүр гэнэ.
Domain-Муж
Тухайн талбарт хадгалж болох өгөгдлийн
төрөл буюу авч болох утгын олонлог
• Үсэг
• Тоо
• Огноо г.м
Constraints-Хязгаарлалт
Өгөгдлийн бүрэн бүтэн-нэгдмэл байдлыг хангах, table
(relation) хоорондын авцалдааг хангах, мэдээллийг
хадгалах орчины нөөцийг ихэсгэхийн тулд хязгаарлалт
хийдэг.
• Unique-цор ганц (1 буюу хэд хэдэн талбарын утгын
хослол тухайн хүснэгтэнд давтагдахгүй байх)
• size-хадгалж болох өгөгдлийн дээд хэмжээг заах
• мax, min: дээд, доод утга
• Авч болох утгын жагсаалт, ж нь: 0, 1
• null/not null
Index
• Номын индекстэй төстэй
• Хайлтыг оновчтой хурдан болгох зорилгоор нэг буюу хэд хэдэн
талбарын хослолоор индекс үүсгэж* болно. PK талбарын хувьд
давхцахгүй тул (автоматаар unique key constraint-д зориулсан
тусгай индекс үүсгэж өгдөг) өөрсдөө индекс үүсгэх шаардлагагүй.
• Индекслэснээр өгөгдлийн хэмжээ, хайх утгаас хамааралгүйгээр
үргэлж ижил хугацаанд хайлтын үр дүнг буцаах боломжтой
болно.
• DB Server-ээс хамаараад индекслэх алгоритм нь харилцан
адилгүй боловч голдуу B-Tree ашигладаг.
* Оновчгүй индекс, эсвэл индексийг хэт ихээр үүсгэвэл RDBMS-н
бичих хурд удаашрах сөрөг нөлөөтэй.
SQL-Structured Query Language
• Бүтэцлэгдсэн хайлтын хэл
• Мэдээллийн санг үүсгэх, удирдах, түүнд
хадгалагдаж байгаа мэдээлэлд хандах
(өгөгдөл нэмэх, устгах, өөрчлөх, хайх) гэх
мэт үйлдлийг хийж болох өөрийн гэсэн
дүрэмтэй тусгай зориулалтын
программчлалын хэл
Stored Procedure
• DB Server дээр ажилладаг (хадгалагддаг) SQL
дээр бичигдсэн программ.
• Голдуу тайлан бэлдэх, их хэмжээний өгөгдлийг
боловсруулах, өгөгдлийн нэг хэлбэрээс нөгөөд
хувиргах гэх мэтийн өндөр хурд шаардсан
процесст ашиглана.
• Stored Procedure нь урьдчилан хөрвүүлэгдсэн
(оновчлогдсон) шууд ажиллахад бэлэн
программын код байдаг тул маш хурдан
ажиллладаг.
Stored Function
• Stored Procedure-тай төстэй боловч query
дотроос дууаж болно.
RDBMS-Relational Database Management System
• RDB + түүн дээр зохицуулалт хийдэг программ
• RDB дээр мэдээллийн сан үүсгэх-зохион байгуулах,
өгөгдөл оруулах, засах, өгөгдөл нөөцлөх-сэргээх,
серверийн төлвийг хянах гэх мэтийн үйлдлийг хийх
боломжоор хангагдсан системийг хэлнэ.
• RDBMS-н жишээ: MySQL, MS SQL Server, Oracle DB
Server
• RDBMS-нь өгөгдөл оруулах, хайх, устгах, засах
ажиллагааг зааварчлах зориулалт бүхий хэлтэй
байдаг: Голдуу SQL (Structured Query Language)-г энэ
зорилгоор ашиглана.
SQL is standard language for RDB.
Гэхдээ өөрийн гэсэн онцлогтой SQL бүхий
серверүүд байдаг. Ихэнх DB cерверт стандарт
SQL дээр өөрсдийн серверийн онцлогийг
тусгасан нэмэлтийг хийж өгсөн байдаг.
• T-SQL (Microsoft SQL Server)
• PL/SQL (Oracle DB Server)
• PL/pgSQL (PostgreSQL DB Server)
• Standard SQL + MySQL specific extension
* PL = Procedural Language
SQL
SQL-г үүрэг зориулалтаар нь:
• DDL: Data Definition Language
create table, create view, drop table, alter
table, …
• DML: Data Manipulation Language
insert into …, update …. where …, delete from
… where …, select … from where …
Дадлагын цаг
• MySQL Server суурилуулах
• MySQL Workbench суурилуулах
• Дасгал ажил хийх
• references:
1. http://www.w3schools.com/sql
2. http://dev.mysql.com/doc/refman/5.6/en/
Downloading MySQL
• http://dev.mysql.com/downloads/mysql/
Creating and dropping database
Launch MySQL command line client - unicode
• show databases; or show schemas;
• show tables;
• create database my_db1;
• create schema my_db2;
• drop database my_db1;
• drop schema my_db2;
• create schema my_db;
• connect my_db;
• show tables;
Creating table
Доорхыг mysql command line client дээр ажиллуулж
үзье!
• CREATE TABLE customer (
customer_id INT PRIMARY KEY,
email VARCHAR(20),
given_name VARCHAR (20),
surname VARCHAR (20)
);
• desc/describe customer
• Reference mysql data types:
http://dev.mysql.com/doc/refman/5.6/en/data-
types.html
Creating table
Доорхийг MySQL Workbench дээр ажиллуулж үзье!
Menu-р үүсгэж бас үзэх!
• CREATE TABLE purchase_order (
order_id INT AUTO_INCREMENT,
customer_id INT,
order_date DATETIME NOT NULL,
primary key (order_id),
constraint customer_id foreign key (customer_id) references
customer (customer_id)
);
• desc purchase_order
Creating table: Дасгал
• product-г өөрсдөө үүсгэх
• order_detail-г menu-с үүсгэх
Altering table
Бие даан аlter table-г ашиглан
• customer.email талбарт not null, unique
constraints нэмэх
• customer.given_name-д not null хязгаарлалт
нэмэх (menu ашиглах)
• Alter table-р талбарын нэр, авах утга,
хязгаарлалт зэргийг өөрчилж болно.
Inserting data
• insert into customer (customer_id, email,
given_name) values(11, ‘c1@mail.mn’, ‘c1’);
• insert into customer values(22, ‘foo@bar.mn’,
‘foo’, ‘bar’);
• insert into customer values( 33, null, null,
null); -- error
• Үлдсэн хүснэгтэнд өгөгдөл оруулж үзэх
Searching data
• select customer_id, given_name
from customer where customer_id = 1
• Бусад хүснэгтийн хувьд select query бичиж
үзэх
Searching data
select
o.order_id, c.given_name, p.product_name, p.description,
d.quantity, d.quantity * p.price as total, o.order_date
From
customer as c, purchase_order o, order_detail d, product p
Where
c.customer_id = o.customer_id and
o.order_id = d.order_id and
d.product_id = p.product_id
order by
o.customer_id asc, p.product_name desc;
Summarizing data
select
c.given_name,
sum(d.quantity * p.price) as total
from
customer as c, purchase_order o,
order_detail d, product p
where
c.customer_id = o.customer_id and
o.order_id = d.order_id and
d.product_id = p.product_id
group by
c.given_name
order by
total
Хийж үзэцгээе!
• Бүтээгдэхүүн тус бүр нийт хэдэн ширхэг
борлогдсон эсэхийг групплэж харуулна уу!
Updating data
• update customer set surname=‘rentsen’
where customer_id = 1
• Бусад хэрэглэгчдийн овгийг өөрчилж үзэх
• http://www.w3schools.com/sql/sql_update.as
p
Deleting
• Delete from customer where customer_id =
11
• Delete from customer where customer_id
in(22, 33)
• Болгоомжтой! Бүх өгөгдөл устна: Delete
from customer
• truncate <table_name>: roll back хийдэггүй,
trigger ажилладаггүй учир delete-с хурдан
Creating Function
• CREATE FUNCTION total (price decimal,
quantity int) RETURNS INTEGER BEGIN
RETURN price*quantity;
END
Calling function
• select total(5, 2)
• select total(5, 2) from dual
Creating Stored Procedure
CREATE PROCEDURE create_statistics()
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
SELECT 'An error has occurred, operation roll backed.‘
END;
delete from customer_purchasing_statistics;
insert into customer_purchasing_statistics
(select c.customer_id, total(p.price, d.quantity) as total
from customer as c, purchase_order o, order_detail d, product p
where c.customer_id = o.customer_id and
o.order_id = d.order_id and d.product_id = p.product_id
group by c.given_name);
commit;
END
Calling Stored Function
• call create_statistics();
Granting permissions
• http://dev.mysql.com/doc/workbench/en/wb-
mysql-connections-navigator-management-
users-and-privileges.html
Backup & Restore data
• http://dev.mysql.com/doc/workbench/en/wb-
admin-export-import.html
Adding index
• http://dev.mysql.com/doc/workbench/en/wb-
table-editor-indexes-tab.html
Adding trigger
• http://dev.mysql.com/doc/workbench/en/wb-
table-editor-triggers-tab.html
Adding event
• http://dev.mysql.com/doc/refman/5.6/en/cre
ate-event.html
Create view
• Дагаад хийх
SQL tuning & improving performance
• Adding indexes, stored procedures
• Turn on cache & increasing cache size
Recommendations to write fast query
• http://www.infoworld.com/article/2628420/data
base/7-performance-tips-for-faster-sql-
queries.html
• http://www.infoworld.com/article/2604472/data
base/10-more-dos-and-donts-for-faster-sql-
queries.html
• http://www.developer.com/db/10-ways-to-
improve-sql-query-performance.html
• http://itpro.nikkeibp.co.jp/article/COLUMN/2006
0111/227105/

More Related Content

What's hot

Lec14 demandpage
Lec14 demandpageLec14 demandpage
Lec14 demandpage
Khuder Altangerel
 
Lec06 synchronization
Lec06 synchronizationLec06 synchronization
Lec06 synchronization
Khuder Altangerel
 
Lec09 deadlock
Lec09 deadlockLec09 deadlock
Lec09 deadlock
Khuder Altangerel
 
Lec02 structures (2)
Lec02 structures (2)Lec02 structures (2)
Lec02 structures (2)
Khuder Altangerel
 
ХӨС Семинар 1
ХӨС Семинар 1ХӨС Семинар 1
ХӨС Семинар 1Usukhuu Galaa
 
Day 1 database
Day 1   databaseDay 1   database
Day 1 databaseETC
 
тооллын сис 10т 2т
тооллын сис 10т 2ттооллын сис 10т 2т
тооллын сис 10т 2т
Narantungaa
 
Lec04 threads
Lec04 threadsLec04 threads
Lec04 threads
Khuder Altangerel
 
Lec13 cachetlb
Lec13 cachetlbLec13 cachetlb
Lec13 cachetlb
Khuder Altangerel
 
Нээлттэй чөлөөт эхийн програм хангамж
Нээлттэй чөлөөт эхийн програм хангамжНээлттэй чөлөөт эхийн програм хангамж
Нээлттэй чөлөөт эхийн програм хангамж
Uyanga Tserengombo
 
бие даалт № 1 borland c++
бие даалт № 1 borland c++бие даалт № 1 borland c++
бие даалт № 1 borland c++2011bonus
 
Toolliin sistem
Toolliin sistemToolliin sistem
Toolliin sistemshulam
 
Presentation1 өгөгдлийн сан
Presentation1 өгөгдлийн санPresentation1 өгөгдлийн сан
Presentation1 өгөгдлийн сан
baterden
 
өгөгдлийн сангийн системийн үндэс
өгөгдлийн сангийн системийн үндэсөгөгдлийн сангийн системийн үндэс
өгөгдлийн сангийн системийн үндэс
Бямбаа Авирмэд
 

What's hot (20)

It101 lec6 10.06
It101 lec6 10.06It101 lec6 10.06
It101 lec6 10.06
 
Database 5
Database 5Database 5
Database 5
 
Lec14 demandpage
Lec14 demandpageLec14 demandpage
Lec14 demandpage
 
Lec06 synchronization
Lec06 synchronizationLec06 synchronization
Lec06 synchronization
 
Lec09 deadlock
Lec09 deadlockLec09 deadlock
Lec09 deadlock
 
Lec02 structures (2)
Lec02 structures (2)Lec02 structures (2)
Lec02 structures (2)
 
ХӨС Семинар 1
ХӨС Семинар 1ХӨС Семинар 1
ХӨС Семинар 1
 
Day 1 database
Day 1   databaseDay 1   database
Day 1 database
 
тооллын сис 10т 2т
тооллын сис 10т 2ттооллын сис 10т 2т
тооллын сис 10т 2т
 
Lec04 threads
Lec04 threadsLec04 threads
Lec04 threads
 
Lec13 cachetlb
Lec13 cachetlbLec13 cachetlb
Lec13 cachetlb
 
Нээлттэй чөлөөт эхийн програм хангамж
Нээлттэй чөлөөт эхийн програм хангамжНээлттэй чөлөөт эхийн програм хангамж
Нээлттэй чөлөөт эхийн програм хангамж
 
бие даалт № 1 borland c++
бие даалт № 1 borland c++бие даалт № 1 borland c++
бие даалт № 1 borland c++
 
Database 3
Database 3Database 3
Database 3
 
Pp Lect4 5
Pp Lect4 5Pp Lect4 5
Pp Lect4 5
 
Toolliin sistem
Toolliin sistemToolliin sistem
Toolliin sistem
 
Systemiin shinjilgee ba zohiomj lekts
Systemiin shinjilgee ba zohiomj lektsSystemiin shinjilgee ba zohiomj lekts
Systemiin shinjilgee ba zohiomj lekts
 
database 12
database 12database 12
database 12
 
Presentation1 өгөгдлийн сан
Presentation1 өгөгдлийн санPresentation1 өгөгдлийн сан
Presentation1 өгөгдлийн сан
 
өгөгдлийн сангийн системийн үндэс
өгөгдлийн сангийн системийн үндэсөгөгдлийн сангийн системийн үндэс
өгөгдлийн сангийн системийн үндэс
 

Similar to RDBMS MySQL DB server

Mtm sx database
Mtm sx   databaseMtm sx   database
Mtm sx database
Babaa Naya
 
datatable ,dataset,datagridview in C#
datatable ,dataset,datagridview in C#datatable ,dataset,datagridview in C#
datatable ,dataset,datagridview in C#
Д. Бүжинлхам
 
өгөгдлийн сан
өгөгдлийн санөгөгдлийн сан
өгөгдлийн санOnon Tuul
 
NoSQL өгөгдлийн сан. MongoDB
NoSQL өгөгдлийн сан. MongoDBNoSQL өгөгдлийн сан. MongoDB
NoSQL өгөгдлийн сан. MongoDB
Battushig Namsraidorj
 
CouchDB Өгөгдлийн сан
CouchDB Өгөгдлийн санCouchDB Өгөгдлийн сан
CouchDB Өгөгдлийн сан
Tulga Ariuntuya
 
Lecture15
Lecture15Lecture15
Lecture15orgil
 
Nuur
NuurNuur
Nuur
BPurev
 
Ms access
Ms accessMs access
Ms access
Ziyakhan Raimbek
 
Ж.ЗАНДАРГИЙРАА - МЕТА ӨГӨГДӨЛ БА ТҮҮНИЙ ХЭРЭГЛЭЭ
Ж.ЗАНДАРГИЙРАА - МЕТА ӨГӨГДӨЛ БА ТҮҮНИЙ ХЭРЭГЛЭЭЖ.ЗАНДАРГИЙРАА - МЕТА ӨГӨГДӨЛ БА ТҮҮНИЙ ХЭРЭГЛЭЭ
Ж.ЗАНДАРГИЙРАА - МЕТА ӨГӨГДӨЛ БА ТҮҮНИЙ ХЭРЭГЛЭЭbatnasanb
 
Ado.net
Ado.netAdo.net
Ado.net
Deegii
 
u.cs101 "Алгоритм ба програмчлал" Лекц №4
u.cs101 "Алгоритм ба програмчлал" Лекц №4u.cs101 "Алгоритм ба програмчлал" Лекц №4
u.cs101 "Алгоритм ба програмчлал" Лекц №4
Khuder Altangerel
 

Similar to RDBMS MySQL DB server (20)

database 7-8
database 7-8database 7-8
database 7-8
 
Mtm sx database
Mtm sx   databaseMtm sx   database
Mtm sx database
 
datatable ,dataset,datagridview in C#
datatable ,dataset,datagridview in C#datatable ,dataset,datagridview in C#
datatable ,dataset,datagridview in C#
 
Ois lessons3
Ois lessons3Ois lessons3
Ois lessons3
 
өгөгдлийн сан
өгөгдлийн санөгөгдлийн сан
өгөгдлийн сан
 
Lesson1
Lesson1Lesson1
Lesson1
 
NoSQL өгөгдлийн сан. MongoDB
NoSQL өгөгдлийн сан. MongoDBNoSQL өгөгдлийн сан. MongoDB
NoSQL өгөгдлийн сан. MongoDB
 
CouchDB Өгөгдлийн сан
CouchDB Өгөгдлийн санCouchDB Өгөгдлийн сан
CouchDB Өгөгдлийн сан
 
Lecture15
Lecture15Lecture15
Lecture15
 
7 8
7 87 8
7 8
 
Nuur
NuurNuur
Nuur
 
Ms access
Ms accessMs access
Ms access
 
Ms access
Ms accessMs access
Ms access
 
Ood lesson2
Ood lesson2Ood lesson2
Ood lesson2
 
индекс
индексиндекс
индекс
 
Se304 lec7
Se304 lec7Se304 lec7
Se304 lec7
 
Vb.net mon1
Vb.net mon1Vb.net mon1
Vb.net mon1
 
Ж.ЗАНДАРГИЙРАА - МЕТА ӨГӨГДӨЛ БА ТҮҮНИЙ ХЭРЭГЛЭЭ
Ж.ЗАНДАРГИЙРАА - МЕТА ӨГӨГДӨЛ БА ТҮҮНИЙ ХЭРЭГЛЭЭЖ.ЗАНДАРГИЙРАА - МЕТА ӨГӨГДӨЛ БА ТҮҮНИЙ ХЭРЭГЛЭЭ
Ж.ЗАНДАРГИЙРАА - МЕТА ӨГӨГДӨЛ БА ТҮҮНИЙ ХЭРЭГЛЭЭ
 
Ado.net
Ado.netAdo.net
Ado.net
 
u.cs101 "Алгоритм ба програмчлал" Лекц №4
u.cs101 "Алгоритм ба програмчлал" Лекц №4u.cs101 "Алгоритм ба програмчлал" Лекц №4
u.cs101 "Алгоритм ба програмчлал" Лекц №4
 

More from Batzorigt Rentsen

Making locks smart
Making locks smartMaking locks smart
Making locks smart
Batzorigt Rentsen
 
Using AWS Services
Using AWS ServicesUsing AWS Services
Using AWS Services
Batzorigt Rentsen
 
Html, css, java script
Html, css, java scriptHtml, css, java script
Html, css, java script
Batzorigt Rentsen
 
Making existing lock smart
Making existing lock smartMaking existing lock smart
Making existing lock smart
Batzorigt Rentsen
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
Batzorigt Rentsen
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
Batzorigt Rentsen
 
Making remote controlled robot
Making remote controlled robotMaking remote controlled robot
Making remote controlled robot
Batzorigt Rentsen
 
объект хандлагат программчлал
объект хандлагат программчлалобъект хандлагат программчлал
объект хандлагат программчлалBatzorigt Rentsen
 

More from Batzorigt Rentsen (9)

Making locks smart
Making locks smartMaking locks smart
Making locks smart
 
Using AWS Services
Using AWS ServicesUsing AWS Services
Using AWS Services
 
Html, css, java script
Html, css, java scriptHtml, css, java script
Html, css, java script
 
Making existing lock smart
Making existing lock smartMaking existing lock smart
Making existing lock smart
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 
Making remote controlled robot
Making remote controlled robotMaking remote controlled robot
Making remote controlled robot
 
Using oop
Using oopUsing oop
Using oop
 
объект хандлагат программчлал
объект хандлагат программчлалобъект хандлагат программчлал
объект хандлагат программчлал
 

RDBMS MySQL DB server

  • 1. RDBMS: MySQL DB server 2015.02.28 Batzorigt Rentsen
  • 2. Хичээлийн агуулга • RDB: Ерөнхий ойлголт авах • RDMS: Онол + дадлага • SQL: Онол + дадлага
  • 3. RDB-Relational Database • Үгчилбэл: Хамааралт мэдээллийн сан • Мэдээллийг давхцуулалгүйгээр хоорондоо логик холбоотой хэсгүүдэд (table) хувааж хадгалах, устгах, засах, хайх, боловсруулалт хийх function, stored procedure, trigger г.м-р хангагдсан мэдээллийн сан.
  • 4. RDB: Хүснэгтийн цуглуулга • Мэдээлэл хадгалах хэлбэр: хүснэгт • Хүснэгт нь бичлэг (record, row, relation, tuple), бичлэг нь талбар (field, attribute)-c бүрдэнэ. • Ихэнхи RDB-н бүтэц Эдгар Koддын санаанд* тулгуурладаг. • RDB-д Entity (relational model)-г хадгалах сав болгож хүснэгтийг ашигладаг. Хүснэгтийн мөр бүр ялгаатай Entity-г заана. * Аливаа мэдээллийг Entity гэх дахин давтагдахгүй мэдээллийн нэгжид хувааж эдгээр нэгжийн харилцан хамаарал-шүтэлцээгээр илэрхийлж болно гэдэг санааг Кодд 1970 онд гаргажээ.
  • 5. RDB-н бүтэц customer_id email given_name surname 1 foo@bar.com Batzorigt Rentsen record field order_id customer_id order_date 1 1 2015-02-27 order_id product_id quantity 1 1 1 1 2 1 product_id product_name price description 1 Lean software development 50 book 2 Enterprise Integration Patterns 100 book Primary Key Primary Key Foreign Key Foreign Key customer purchase_order order_detail product Primary Key Secondary Key Foreign Key
  • 7. Keys • Primary key - Үндсэн түлхүүр: Тухайн бичлэгийг нэг утгатай зааж чадах түлхүүр • Secondary key - Орлогч түлхүүр: Primary key гэж тодорхойлоогүй хэр нь PK-н оронд ашиглаж болох, тухайн бичлэгийг нэг утгатайгаар зааж чадах түлхүүрийг хэлнэ. • Foreign key - Гадны түлхүүр: Өөр хүснэгтийн үндсэн түлхүүрийг лавлагаа хийх зорилгоор тухайн хүснэгтийн талбар болгон авсан бол тэр талбарыг гадны түлхүүр гэнэ.
  • 8. Domain-Муж Тухайн талбарт хадгалж болох өгөгдлийн төрөл буюу авч болох утгын олонлог • Үсэг • Тоо • Огноо г.м
  • 9. Constraints-Хязгаарлалт Өгөгдлийн бүрэн бүтэн-нэгдмэл байдлыг хангах, table (relation) хоорондын авцалдааг хангах, мэдээллийг хадгалах орчины нөөцийг ихэсгэхийн тулд хязгаарлалт хийдэг. • Unique-цор ганц (1 буюу хэд хэдэн талбарын утгын хослол тухайн хүснэгтэнд давтагдахгүй байх) • size-хадгалж болох өгөгдлийн дээд хэмжээг заах • мax, min: дээд, доод утга • Авч болох утгын жагсаалт, ж нь: 0, 1 • null/not null
  • 10. Index • Номын индекстэй төстэй • Хайлтыг оновчтой хурдан болгох зорилгоор нэг буюу хэд хэдэн талбарын хослолоор индекс үүсгэж* болно. PK талбарын хувьд давхцахгүй тул (автоматаар unique key constraint-д зориулсан тусгай индекс үүсгэж өгдөг) өөрсдөө индекс үүсгэх шаардлагагүй. • Индекслэснээр өгөгдлийн хэмжээ, хайх утгаас хамааралгүйгээр үргэлж ижил хугацаанд хайлтын үр дүнг буцаах боломжтой болно. • DB Server-ээс хамаараад индекслэх алгоритм нь харилцан адилгүй боловч голдуу B-Tree ашигладаг. * Оновчгүй индекс, эсвэл индексийг хэт ихээр үүсгэвэл RDBMS-н бичих хурд удаашрах сөрөг нөлөөтэй.
  • 11. SQL-Structured Query Language • Бүтэцлэгдсэн хайлтын хэл • Мэдээллийн санг үүсгэх, удирдах, түүнд хадгалагдаж байгаа мэдээлэлд хандах (өгөгдөл нэмэх, устгах, өөрчлөх, хайх) гэх мэт үйлдлийг хийж болох өөрийн гэсэн дүрэмтэй тусгай зориулалтын программчлалын хэл
  • 12. Stored Procedure • DB Server дээр ажилладаг (хадгалагддаг) SQL дээр бичигдсэн программ. • Голдуу тайлан бэлдэх, их хэмжээний өгөгдлийг боловсруулах, өгөгдлийн нэг хэлбэрээс нөгөөд хувиргах гэх мэтийн өндөр хурд шаардсан процесст ашиглана. • Stored Procedure нь урьдчилан хөрвүүлэгдсэн (оновчлогдсон) шууд ажиллахад бэлэн программын код байдаг тул маш хурдан ажиллладаг.
  • 13. Stored Function • Stored Procedure-тай төстэй боловч query дотроос дууаж болно.
  • 14. RDBMS-Relational Database Management System • RDB + түүн дээр зохицуулалт хийдэг программ • RDB дээр мэдээллийн сан үүсгэх-зохион байгуулах, өгөгдөл оруулах, засах, өгөгдөл нөөцлөх-сэргээх, серверийн төлвийг хянах гэх мэтийн үйлдлийг хийх боломжоор хангагдсан системийг хэлнэ. • RDBMS-н жишээ: MySQL, MS SQL Server, Oracle DB Server • RDBMS-нь өгөгдөл оруулах, хайх, устгах, засах ажиллагааг зааварчлах зориулалт бүхий хэлтэй байдаг: Голдуу SQL (Structured Query Language)-г энэ зорилгоор ашиглана.
  • 15. SQL is standard language for RDB. Гэхдээ өөрийн гэсэн онцлогтой SQL бүхий серверүүд байдаг. Ихэнх DB cерверт стандарт SQL дээр өөрсдийн серверийн онцлогийг тусгасан нэмэлтийг хийж өгсөн байдаг. • T-SQL (Microsoft SQL Server) • PL/SQL (Oracle DB Server) • PL/pgSQL (PostgreSQL DB Server) • Standard SQL + MySQL specific extension * PL = Procedural Language
  • 16. SQL SQL-г үүрэг зориулалтаар нь: • DDL: Data Definition Language create table, create view, drop table, alter table, … • DML: Data Manipulation Language insert into …, update …. where …, delete from … where …, select … from where …
  • 17. Дадлагын цаг • MySQL Server суурилуулах • MySQL Workbench суурилуулах • Дасгал ажил хийх • references: 1. http://www.w3schools.com/sql 2. http://dev.mysql.com/doc/refman/5.6/en/
  • 19. Creating and dropping database Launch MySQL command line client - unicode • show databases; or show schemas; • show tables; • create database my_db1; • create schema my_db2; • drop database my_db1; • drop schema my_db2; • create schema my_db; • connect my_db; • show tables;
  • 20. Creating table Доорхыг mysql command line client дээр ажиллуулж үзье! • CREATE TABLE customer ( customer_id INT PRIMARY KEY, email VARCHAR(20), given_name VARCHAR (20), surname VARCHAR (20) ); • desc/describe customer • Reference mysql data types: http://dev.mysql.com/doc/refman/5.6/en/data- types.html
  • 21. Creating table Доорхийг MySQL Workbench дээр ажиллуулж үзье! Menu-р үүсгэж бас үзэх! • CREATE TABLE purchase_order ( order_id INT AUTO_INCREMENT, customer_id INT, order_date DATETIME NOT NULL, primary key (order_id), constraint customer_id foreign key (customer_id) references customer (customer_id) ); • desc purchase_order
  • 22. Creating table: Дасгал • product-г өөрсдөө үүсгэх • order_detail-г menu-с үүсгэх
  • 23. Altering table Бие даан аlter table-г ашиглан • customer.email талбарт not null, unique constraints нэмэх • customer.given_name-д not null хязгаарлалт нэмэх (menu ашиглах) • Alter table-р талбарын нэр, авах утга, хязгаарлалт зэргийг өөрчилж болно.
  • 24. Inserting data • insert into customer (customer_id, email, given_name) values(11, ‘c1@mail.mn’, ‘c1’); • insert into customer values(22, ‘foo@bar.mn’, ‘foo’, ‘bar’); • insert into customer values( 33, null, null, null); -- error • Үлдсэн хүснэгтэнд өгөгдөл оруулж үзэх
  • 25. Searching data • select customer_id, given_name from customer where customer_id = 1 • Бусад хүснэгтийн хувьд select query бичиж үзэх
  • 26. Searching data select o.order_id, c.given_name, p.product_name, p.description, d.quantity, d.quantity * p.price as total, o.order_date From customer as c, purchase_order o, order_detail d, product p Where c.customer_id = o.customer_id and o.order_id = d.order_id and d.product_id = p.product_id order by o.customer_id asc, p.product_name desc;
  • 27. Summarizing data select c.given_name, sum(d.quantity * p.price) as total from customer as c, purchase_order o, order_detail d, product p where c.customer_id = o.customer_id and o.order_id = d.order_id and d.product_id = p.product_id group by c.given_name order by total
  • 28. Хийж үзэцгээе! • Бүтээгдэхүүн тус бүр нийт хэдэн ширхэг борлогдсон эсэхийг групплэж харуулна уу!
  • 29. Updating data • update customer set surname=‘rentsen’ where customer_id = 1 • Бусад хэрэглэгчдийн овгийг өөрчилж үзэх • http://www.w3schools.com/sql/sql_update.as p
  • 30. Deleting • Delete from customer where customer_id = 11 • Delete from customer where customer_id in(22, 33) • Болгоомжтой! Бүх өгөгдөл устна: Delete from customer • truncate <table_name>: roll back хийдэггүй, trigger ажилладаггүй учир delete-с хурдан
  • 31. Creating Function • CREATE FUNCTION total (price decimal, quantity int) RETURNS INTEGER BEGIN RETURN price*quantity; END
  • 32. Calling function • select total(5, 2) • select total(5, 2) from dual
  • 33. Creating Stored Procedure CREATE PROCEDURE create_statistics() BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK; SELECT 'An error has occurred, operation roll backed.‘ END; delete from customer_purchasing_statistics; insert into customer_purchasing_statistics (select c.customer_id, total(p.price, d.quantity) as total from customer as c, purchase_order o, order_detail d, product p where c.customer_id = o.customer_id and o.order_id = d.order_id and d.product_id = p.product_id group by c.given_name); commit; END
  • 34. Calling Stored Function • call create_statistics();
  • 36. Backup & Restore data • http://dev.mysql.com/doc/workbench/en/wb- admin-export-import.html
  • 41. SQL tuning & improving performance • Adding indexes, stored procedures • Turn on cache & increasing cache size
  • 42. Recommendations to write fast query • http://www.infoworld.com/article/2628420/data base/7-performance-tips-for-faster-sql- queries.html • http://www.infoworld.com/article/2604472/data base/10-more-dos-and-donts-for-faster-sql- queries.html • http://www.developer.com/db/10-ways-to- improve-sql-query-performance.html • http://itpro.nikkeibp.co.jp/article/COLUMN/2006 0111/227105/

Editor's Notes

  1. Sequential, Random access
  2. Тухайн query cache дотор байхгүй бол, клиентээс илгээх бүрт хөрвүүлэлт・оновчлол хийгднэ. Үүний дараа cache руу хийгднэ
  3. SEQUEL (Structured English QUEry Language)