Kas yra „MySQL“ peržiūros?
VIEWS yra virtualios lentelės, kuriose nėra saugomi jokie savo duomenys, bet rodomi kitose lentelėse saugomi duomenys. Kitaip tariant, VIEWS yra ne kas kita, o SQL užklausos. Rodinyje gali būti visos arba kelios lentelės eilutės. „MySQL“ rodinyje gali būti rodomi vienos ar kelių lentelių duomenys.
„MySQL“ peržiūros sintaksė
Pažvelkime į pagrindinę sintaksę, naudojamą kuriant „MySQL“ rodinį.
CREATE VIEW `view_name` AS SELECT statement;
KUR
- "CREATE VIEW" view_name " nurodo MySQL serveriui sukurti rodinio objektą duomenų bazėje pavadinimu" view_name "
- „AS SELECT sakinys“ yra SQL sakiniai, kurie turi būti supakuoti į „MySQL“ rodinius. Tai gali būti SELECT sakinys, kuriame gali būti duomenys iš vienos lentelės arba kelių lentelių.
Kaip sukurti rodinius MySQL
Tai yra žingsnis po žingsnio, kad sukurtumėte vaizdą „MySQL“:
Dabar sukurkime savo pirmąjį vaizdą naudodami „myflixdb“, sukursime paprastą vaizdą, kuris apribos narių lentelėje matomus stulpelius.
Tarkime, kad leidimo reikalavimai nurodo, kad sąskaitų skyrius nario lentelę gali matyti tik nario numerį, vardą ir lytį. Norėdami tai pasiekti, galite sukurti VIEW -
CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;
Vykdydami pirmiau pateiktą scenarijų „MySQL“ darbastalyje prieš „myflixdb“ ir išplėsdami rodinių mazgą duomenų bazės naršyklėje, gausime šiuos rezultatus.
Atkreipkite dėmesį, kad objektas accounts_v_members dabar matomas duomenų bazės rodinių objektuose. Dabar vykdykime sakinį SELECT, kuris parodo visus laukus iš rodinio, kaip parodyta žemiau esančiame MySQL sukurti rodinio pavyzdyje.
SELECT * FROM `accounts_v_members`;
Minėto scenarijaus vykdymas MySQL darbastalyje su „myflixdb“ suteikia mums šiuos rezultatus.
membership_number | full_names | gender |
---|---|---|
1 | Janet Jones | Female |
2 | Janet Smith Jones | Female |
3 | Robert Phil | Male |
4 | Gloria Williams | Female |
5 | Leonard Hofstadter | Male |
6 | Sheldon Cooper | Male |
7 | Rajesh Koothrappali | Male |
8 | Leslie Winkle | Male |
9 | Howard Wolowitz | Male |
Grąžinti tik įgalioti sąskaitų skyriaus stulpeliai. Kita narių lentelėje pateikta informacija buvo paslėpta.
Jei norime pamatyti SQL sakinius, kurie sudaro tam tikrą vaizdą, tam galime naudoti žemiau pateiktą scenarijų.
RODYTI SUKURTI PERŽIŪRĄ `accounts_v_members`;
Vykdydami pirmiau pateiktą scenarijų, gausite rodinio pavadinimą ir SQL SELECT sakinius, naudojamus rodiniui sukurti.
Prisijungia ir peržiūri „MySQL“
Pažvelkime į gana sudėtingą pavyzdį, kuriame yra kelios lentelės ir naudojami sujungimai.
Pakuosime sukurtą JOIN, kuris gauna informaciją iš trijų (3) lentelių, būtent narių, filmų ir filmų nuomos. Žemiau yra scenarijus, kuris padeda mums tai pasiekti.
CREATE VIEW `general_v_movie_rentals` AS SELECT mb.`membership_number`,mb.`full_names`,mo.`title`,mr.`transaction_date`,mr.`return_date` FROM `movierentals` AS mr INNER JOIN `members` AS mb ON mr.`membership_number` = mb.`membership_number` INNER JOIN `movies` AS mo ON mr.`movie_id` = mo.`movie_id`;
Vykdant anksčiau pateiktus scenarijus, sukuriamas rodinys pavadinimu „general_v_movie_rentals“ mūsų „myflixdb“
Dabar pažymėkime visus laukus iš lentelės pavadinimu general_v_movie_rentals.
SELECT * FROM `general_v_movie_rentals`;
Minėto scenarijaus vykdymas „MySQL“ darbastalyje prieš „myflixdb“ suteikia mums šiuos rezultatus.
membership_number | full_names | title | transaction_date | return_date |
---|---|---|---|---|
1 | Janet Jones | Pirates of the Caribean 4 | 20-06-2012 | 28-06-2012 |
1 | Janet Jones | Forgetting Sarah Marshal | 22-06-2012 | 25-06-2012 |
3 | Robert Phil | Forgetting Sarah Marshal | 22-06-2012 | 25-06-2012 |
2 | Janet Smith Jones | Forgetting Sarah Marshal | 21-06-2012 | 24-06-2012 |
3 | Robert Phil | X-Men | 23-06-2012 | 28-06-2012 |
Atkreipkite dėmesį, kad mums nereikėjo rašyti kompleksinės JOIN užklausos, kad gautume informacijos apie narius, filmus ir išsamią filmų nuomos informaciją. Mes tiesiog naudojome rodinį įprastame SELECT sakinyje kaip ir bet kurią kitą įprastą lentelę. Rodinį galima iškviesti iš bet kurios programos dalies, veikiančios „myflixdb“ viršuje.
„MySQL“ peržiūrų metimas
DROP komandą galima naudoti norint ištrinti rodinį iš duomenų bazės, kuris nebereikalingas. Pagrindinė rodinio atsisakymo sintaksė yra tokia.
DROP VIEW ` general_v_movie_rentals `;
Kodėl verta naudoti rodinius?
Rodinius pirmiausia norėsite naudoti dėl 3 priežasčių
- Galiausiai naudosite savo SQL žinias kurdami programas, kurios duomenų bazei naudos duomenų reikalavimus. Rekomenduojama programoje naudoti VIEWS originalios lentelės struktūros, o ne naudoti pačias lenteles. Tai užtikrina, kad kai pertvarkysite savo DB, jūsų senasis kodas per rodinį matys orignalo schemą, nepažeisdamas programos.
- VIEWS padidina pakartotinį naudojimą. Jums nereikės kurti sudėtingų užklausų, susijusių su pakartotiniais prisijungimais. Visas sudėtingumas paverčiamas viena užklausos eilute, naudojant VIEWS. Tokį sutrumpintą kodą bus lengviau integruoti į jūsų programą. Tai pašalins klaidų tikimybę ir jūsų kodas bus lengviau įskaitomas.
- VIEWS padeda apsaugoti duomenis. Galite naudoti rodinius, kad vartotojams būtų rodoma tik įgaliota informacija ir slėpti neskelbtinus duomenis, pvz., Kreditinių kortelių numerius.
Santrauka
- Rodiniai yra virtualios lentelės; juose nėra grąžinamų duomenų. Duomenys saugomi lentelėse, nurodytose SELECT sakinyje.
- Rodiniai pagerina duomenų bazės saugumą rodydami tik numatytus duomenis įgaliotiems vartotojams. Jie slepia neskelbtinus duomenis.
- Rodiniai palengvina gyvenimą, nes jūs ne kartą rašote sudėtingų klausimų.
- Peržiūroje galima naudoti INSERT, UPDATE ir DELETE. Šios operacijos pakeis pagrindines VIEW lenteles. Vienintelis svarstymas yra tas, kad VIEW turėtų būti visi lentelės, į kurią jis nukreiptas, stulpeliai NOT NULL. Idealiu atveju neturėtumėte naudoti VIEWS atnaujindami.