Əsas səhifə > MySQL > View ilə invalid data handling

View ilə invalid data handling

View və ondan istifadə səsəbləri,həmçinin view-dan necə istifadə etmək lazımdı ondan danışacıq.Daha sonra isə view vasitəsilə invalid data handling-ə baxacıq. Buna oxşar bir yazım var artıq SQL_MODE ilə invalid data handling
Aşağıdakı documentation-da View-dan istifadənin mümkün səbəbləri göstərilmişdir.Oxuyaraq davam edin…
Reasons to Use Views
Views provide several benefits compared to selecting data directly from base tables:

Access to data becomes simplified:

A view can be used to perform a calculation and display its result. For example, a view definition that invokes aggregate functions can be used to display a summary.

A view can be used to select a restricted set of rows by means of an appropriate WHERE clause, or to select only a subset of a table’s columns.

A view can be used for selecting data from multiple tables by using a join or union.
A view performs these operations automatically. Users need not specify the expression on which a calculation is based, the conditions that restrict rows in the WHERE clause, or the conditions used to match tables for a join.

Views can be used to display table contents differently for different users, so that each user sees only the data pertaining to that user’s activities. This improves security by hiding information from users that they should not be able to access or modify. It also reduces distraction because irrelevant columns are not displayed.

If you need to change the structure of your tables to accommodate certain applications, a view can preserve the appearance of the original table structure to minimize disruption to other applications. For example, if you split a table into two new tables, a view can be created with the name of the original table and defined to select data from the new tables such that the view appears to have the original table structure.

View özünü virtual cədvəl kimi aparır. Hər hansı table-a sanki dolayısı ilə çatırsan. Bir cədvəlin ya tam kopyasını ya da müəyyən bizə lazım olan hissəsini çıxardaraq view yarada bilərik.
Misallarla izah etməyə calışaq. Table yaradaq(hazır dump faylımdan götürmüşəm):

CREATE TABLE employees (
  emp_id int(11) NOT NULL AUTO_INCREMENT,
  Emp_Name varchar(30) DEFAULT NULL,
  address varchar(10) NOT NULL,
  salary varchar(10) NOT NULL,
  PRIMARY KEY (`emp_id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1;

Və insert edək:

INSERT INTO employees() VALUES (12,'Sales','0','2500'),(13,'IT','0','3500'),(14,'Admin','0','4500'),(15,'Admin','0','5500'),(16,'President','0','10500');


Bəli şəkildən də göründüyü kimi insert-imiz uğurludur və daha aşağıda da göründüyü kimi bizdə 4 column var.

İndi isə istəyirəm ki bu table üstündə bir view yaradım…Və bu view bütün column-lardan təşkil olunsun…

create view emp_view as select * from employees;

Və həqiqətən də employees table-ın bütün sütunlarından ibarət bir view yaradıldı

Select verdikdə isə görürük ki, employees cədvəlində olan bütün məlumatlar eynisi ilə emp_view-dədir:

İndi isə biraz dəyişikliklər etməklə müxtəlif view-lar yaradaq. employees cədvəlindən yalnız emp_id və emp_name-i götürək.

create view emp_view2 as select emp_id,emp_name from employees;


Indi isə salary-si 4500-dən çox olanları seçib view yaradaq:

alter table employees modify salary int not null;

create view emp_view3 as select * from employees where salary>'4500';


Bəli bizə lazım olan idi🙂
Onu da qeyd edək ki, view vasitəsilə base table-ı (view yaradılarkən istifadə olunan cədvəl.indiki halda employees) UPDATE, DELETE və İNSERT yəni dəyişə bilərik. Bu haqda ətraflı yazmıram sadə bir şeydi əslində. Adi table-ı necə UPDATE, DELETE və İNSERT ediriksə view-nu da elə edirik.

*İnvalid Data Handling*
Bu Maraqlı xüsusiyyəti misal üzərində göstərməyə çalışaq. Bir yeni cədvəl yaradaq:

CREATE TABLE employee(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(15),
salary DOUBLE,
PRIMARY KEY(id)
);

Və VIEW yaradaq:

CREATE VIEW emp_view AS
SELECT *
FROM for_view
WHERE salary>2000 WITH CHECK OPTION;

Table boş olsa belə View yarada bilərik. İndi isə VIEW vasitəsilə insert verək:

INSERT INTO emp_view(name,salary) VALUES('Orxan',3000);

İndi isə bir başqa insert:

INSERT INTO emp_view(name,salary) VALUES('Esger',1500);

İndi isə izah edək. Deyək ki bizə lazımdı ki , hər hansı bir user işçilərin maaşlarını daxil edərkən 2000-dən aşağı maaşları (səhvən) daxil etməsin(çünki 2000-dən aşağı maaş alan yoxdu😛 ). Və yaxud istənilən başqa şərt. Və əgər belə bir şey olsa bu rəqəm daxil edilməsin, əksinə error versin.

SQL Error (1369): CHECK OPTION failed 'test.emp_view'

Bunun səbəbi VIEW-nu yaradarkən WITH CHECK OPTION-nun əlavə edilməsidir.Təbii ki user input-u hər hansı kodla da yoxlamaq olar amma mənə elə gəlir ki, bu daha sadədir.
Və əgər yoxlasaq görərik ki, həm base table, həm də view dəyişilib və səhv məlumat həqiqətən də daxil edilməyib.

Təbii ki, istənilən VIEW ilə bunları etmək olmur.Yalnız UPDATABLE VIEW sayılan VIEW-lar.UPDATE,DELETE və İNSERT oluna bilən VIEW-lar UPDATABLE VIEW adlanırlar.
Hər hansı VIEW-nun UPDATABLE olub-olmadığını öyrənmək üçün:

SELECT * FROM information_schema.views WHERE table_name='emp_view' AND table_schema='test';

İS_UPDATABLE:YES — bəli bu VIEW UPDATABLE-dır.
VIEW metadata-nı həm də :

SHOW CREATE TABLE emp_view;

Və ya:

SHOW CREATE VIEW emp_view;

Daha ətraflı:
CREATE VIEW Syntax
Using Views
Updatable and Insertable Views
The INFORMATION_SCHEMA VIEWS Table

Kateqoriyalar: MySQL Etiketlər: , , ,
  1. Hələlik heç bir şərh yoxdur
  1. No trackbacks yet.

Bir cavab yazın

Sistemə daxil olmaq üçün məlumatlarınızı daxil edin və ya ikonlardan birinə tıklayın:

WordPress.com Loqosu

WordPress.com hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Twitter rəsmi

Twitter hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Facebook fotosu

Facebook hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Google+ foto

Google+ hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

%s qoşulma

%d bloqqer bunu bəyənir: