Ms sql server so'rovlariga misollar. Management Studio'da SQL so'rovlarini bajarish

SQL - Strukturaviy so'rovlar tili.
Ushbu umumiy ko'rinishda biz SQL so'rovlarining eng keng tarqalgan turlarini ko'rib chiqamiz.
SQL standarti aniqlangan ANSI(Amerika milliy standartlar instituti).
SQL - bu relyatsion ma'lumotlar bazalariga qaratilgan maxsus til.

SQL-ni bo'lish:


DDL
(Ma'lumotlarni aniqlash tili) - ANSI sxemasini tavsiflash tili deb ataladigan til ma'lumotlar bazasida ob'ektlarni (jadvallar, indekslar, skanerlar va boshqalar) yaratadigan buyruqlardan iborat.
DML(Ma'lumotlarni manipulyatsiya qilish tili) Bu har qanday vaqtda jadvallarda qanday qiymatlar ko'rsatilishini aniqlaydigan buyruqlar to'plami.
DCD(Ma'lumotlarni boshqarish tili) foydalanuvchiga muayyan harakatlarni bajarishga ruxsat berish yoki bermaslikni aniqlaydigan vositalardan iborat. Ular ANSI DDL ning bir qismidir. Bu nomlarni unutmang. Bular har xil tillar emas, balki SQL buyruqlarining funksiyalariga ko‘ra guruhlangan bo‘limlaridir.

Ma'lumotlar turlari:

SQL Server - Ma'lumotlar turlari

Tavsif

bigint (int 8)

bigint (int 8)

ikkilik(n)

ikkilik(n) yoki tasvir

xarakter
(sinonim char)

milliy xarakter yoki ntext

xarakterga ega(sinonim char o'zgaruvchan varchar)

milliy xarakterga ega yoki ntext

Sana vaqti

sana vaqti

kasr

u raqamli

ikki tomonlama aniqlik

ikki tomonlama aniqlik

butun son (int 4) (sinonimi: int)

butun son (int 4)

milliy xarakter(sinonimi: milliy xarakter, nchar)

milliy xarakter

Raqamli(sinimlar: kasr, dek)

milliy xarakterga ega(sinonimlar: milliy belgi turlicha, nvarchar)

Turli xil milliy xarakter

Kichik sana vaqti

sana vaqti

kichik (int 2)

kichik (int 2)

Kichik pul

sql_variant

Endi qoʻllab-quvvatlanmaydi

Nmatn
SQL Server 2005 da foydalanish uchun eskirgan.

Vaqt tamg'asi

Qo'llab-quvvatlanmaydi

tinyint (int 1)

tinyint (int 1)

Uniqueidentifier

noyob identifikator

varbinar(n)

varbinar(n) yoki tasvir

kichik sana vaqti

sana vaqti

kichik (int 2)

kichik (int 2)

mayda pul

sql_variant

Qo'llab-quvvatlanmaydi

vaqt tamg'asi

Qo'llab-quvvatlanmaydi

tinyint (int 1)

tinyint (int 1)

noyob identifikator

noyob identifikator

varbinar(n)

varbinar(n) yoki tasvir

SQL Server 2000 da ma'lumotlar turlari jadvali

SORAV NIMA?

So'rov Ma'lumotlar bazasi dasturiga bergan buyruq. So'rovlar DML tilining bir qismidir. Barcha SQL so'rovlari bitta buyruqdan iborat. Ushbu buyruqning tuzilishi aldamchi darajada sodda, chunki siz uni juda murakkab baholashlar va ma'lumotlarni manipulyatsiya qilish uchun kengaytirishingiz kerak.

SELECT buyrug'i:

TANLASH"Tanlash" eng ko'p ishlatiladigan buyruq bo'lib, u jadvaldan ma'lumotlarni tanlash uchun ishlatiladi.
SELECT yordamida so'rov turi:

foydalanuvchilar_bazasidan identifikator, foydalanuvchi_nomi, shahar, tug'ilgan_kunni TANGLASH;

Bunday so'rov users_base jadvalidan SELECT buyrug'idan keyin vergul bilan belgilangan ustunlarning barcha qiymatlarini chiqaradi. Bundan tashqari, siz barcha ustunlarni bitta belgi bilan ko'rsatishingiz mumkin, ya'ni *. foydalanuvchilar_bazasidan * TANLASH; - bunday so'rov jadvaldagi barcha ma'lumotlarni ko'rsatadi.

SELECT buyruqlar tuzilishi:

SELECT (So'rovda ko'rsatiladigan vergul bilan ajratilgan ustunlar nomlari) FROM (ma'lumotlar bazasidagi jadval nomi)
so'rovning eng oddiy turidir. Ma'lumotni olish qulayligi uchun qo'shimcha buyruqlar mavjud (quyida "Funktsiyalar" ga qarang)

DML buyruqlari:

Qiymatlarni uchta DML (Data Manipulation Language) buyrug'i bilan joylashtirish va maydonlardan olib tashlash mumkin:
KIRITMOQ(Kiritmoq)
YANGILANISH(yangilash, o'zgartirish),
OʻCHIRISH(O'chirish)

INSERT buyrug'i:

INSERT INTO users_base (foydalanuvchi_nomi, shahar, tug'ilgan_kuni) VALUES ('Aleksandr', 'Rostov', '20.06.1991');

INSERT buyrug'i INTO prefiksi bilan birga keladi (in to - in), so'ngra biz ma'lumotlarni kiritishimiz kerak bo'lgan ustunlar nomlari qavs ichida, keyin VALUES buyrug'i (qiymatlari) keladi va qavs ichida o'z navbatida qiymatlar mavjud. (ustunlar bilan qiymatlar tartibiga rioya qilish kerak, qiymatlar siz ko'rsatgan ustunlar bilan bir xil tartibda bo'lishi kerak).

UPDATE buyrug'i:

UPDATE users_base SET user_name = "Aleksey";

UPDATE buyrug'i jadvaldagi qiymatlarni yangilaydi. Avval UPDATE buyrug'ining o'zi, so'ngra SET buyrug'i (to'plamlari) dan keyin jadval nomi, so'ngra ustun nomi va uning qo'shtirnoq ichidagi qiymati (qiymat satr formatiga ega bo'lsa, agar bu raqamli qiymat bo'lsa va ustun bo'lsa, tirnoq qo'yiladi) vchar ma'lumotlar turiga va boshqa qator turlariga bog'lanmagan, tirnoq belgilari ma'nosiz.)

DELETE buyrug'i:

DELETE FROM users_base WHERE user_name = 'Vasily';

DELETE buyrug'i butun qatorni o'chiradi, QAYER mezoni (Qaerda) bo'yicha qatorni aniqlaydi. Bunday holda, ushbu so'rov foydalanuvchi_name ustunining qiymati Vasiliy bo'lgan barcha qatorlarni o'chirib tashlaydi. WHERE mezoni va boshqalar haqida birozdan keyin gaplashamiz.

Mezonlar, funktsiyalar, shartlar va boshqalar. SQL da bizga nima yordam beradi:

WHERE — SELECT va boshqa DML buyruqlarining bandi boʻlib, jadvaldagi istalgan qator uchun sharti rost yoki notoʻgʻri boʻlishi mumkin boʻlgan predikatlarni oʻrnatish imkonini beradi. Buyruq jadvaldan faqat ushbu bayonot to'g'ri bo'lgan qatorlarni oladi.
Misol:
Identifikator, shahar, tug'ilgan_kunni users_base FROM TANGLASH QERDA user_name = "Aleksey";- bunday so'rov faqat WHERE shartiga mos keladigan qatorlarni, ya'ni user_name ustunida Aleksey qiymatiga ega bo'lgan barcha qatorlarni ko'rsatadi.

ORDER BY - tanlangan qatorlarni saralash sharti. ASC va DESC 2 mezoniga ega. ASC (A dan Z gacha yoki 0 dan 9 gacha saralash)

DESC (ASC qarshisi).
Misol:
foydalanuvchilar_bazasidan identifikator, shahar, tug'ilgan_kunni TANLASH. - bunday so'rov foydalanuvchi nomi ustuni bo'yicha A dan Z gacha (A-Z; 0-9) saralangan qiymatlarni ko'rsatadi.

U WHERE bandi bilan birgalikda ham ishlatilishi mumkin.
Misol:
Identifikator, shahar, tug'ilgan_kunni TANGLASH FROM users_base WHERE user_name = 'Aleksey' BY ID ASC BUYRUG'I;

DISTINCT (a'lo) - SELECT bandidagi takroriy qiymatlarni yo'q qilish yo'lini ta'minlaydigan argument. Bular. agar sizda ustunda takroriy qiymatlar bo'lsa, masalan, user_name, u holda DISTINCT siz uchun faqat bittasini ko'rsatadi, masalan, ma'lumotlar bazasida Aleksey ismli 2 kishi bor, keyin DISTINCT funksiyasidan foydalangan holda so'rov sizga faqat 1 tani ko'rsatadi. birinchi bo'lib duch keladigan qiymat ...
Misol:
foydalanuvchilar_bazasidan DISTINCT foydalanuvchi_nomini tanlang;- bunday so'rov foydalanuvchi_nomi ustunidagi barcha yozuvlarning qiymatlarini aks ettiradi, lekin ular takrorlanmaydi, ya'ni. agar sizda cheksiz miqdordagi takroriy qiymatlar bo'lsa, ular ko'rsatilmaydi ...

AND - argument sifatida ikkita mantiqiy (A VA B ko'rinishida) oladi va ularni rostga qarshi baholaydi, ularning ikkalasi ham haqiqatmi.
Misol:
SELECT * FROM users_base WHERE city = “Rostov” VA user_name = “Aleksandr”;- jadvaldagi barcha qiymatlarni shahar nomi bir qatorda ko'rsatadi (bu holda Rostov va foydalanuvchi nomi Aleksandr.

OR - argument sifatida ikkita mantiqiy (A YOKI B shaklida) oladi va ulardan biri to'g'ri yoki yo'qligini baholaydi.

SELECT * FROM users_base WHERE city = "Rostov" OR user_name = "Aleksandr";- qatorda Rostov shahri nomi yoki Aleksandr foydalanuvchi nomi yozilgan jadvaldagi barcha qiymatlar ko'rsatiladi.

EMAS - argument sifatida bitta mantiqiy (NOT A shaklida) oladi va uning qiymatini noto'g'ridan rostga yoki rostdan noto'g'riga almashtiradi.
SELECT * FROM users_base WHERE city = “Rostov” OR NOT user_name = “Aleksandr”;- jadvaldagi barcha qiymatlarni aks ettiradi, unda Rostov shahri nomi bir qatorda topiladi yoki foydalanuvchi nomi aniq Aleksandr bo'lmaydi.

IN - bu qiymat kiritilishi yoki kiritilmasligi mumkin bo'lgan qiymatlar to'plamini belgilaydi.
* foydalanuvchilar_bazasidan TANLASH QAYERDA shahar ('Vladivostok', 'Rostov');- bunday so'rov jadvaldagi barcha qiymatlarni ko'rsatadi, unda ko'rsatilgan shaharlarning nomlari shahar ustunida joylashgan.

Bet IN operatoriga o'xshaydi. To'plamdagi raqamlar bilan belgilashdan farqli o'laroq, IN kabi, BETWEEN qiymatlari kamayishi kerak bo'lgan diapazonni belgilaydi, bu esa predikatni to'g'ri qiladi.
* 1 dan 10 gacha identifikator QAYERDA foydalanuvchilar_bazasidan TANLASH;- id ustunida 1 dan 10 gacha bo'lgan jadvaldagi barcha qiymatlarni ko'rsatadi

COUNT - so'rov tanlangan qator raqamlari yoki NULL bo'lmagan maydon qiymatlarini ishlab chiqaradi.
foydalanuvchilar_bazasidan COUNT (*) TANLANG;- berilgan jadvaldagi qatorlar sonini aks ettiradi.
foydalanuvchilar_bazasidan COUNT ta (Foydalanuvchi_nomi) TANLASH;- foydalanuvchi nomlari bilan qatorlar sonini ko'rsatadi (takrorlanmaydi)

SUM - berilgan maydon uchun barcha tanlangan qiymatlarning arifmetik yig'indisini ishlab chiqaradi.
foydalanuvchilar_bazasidan SUM (id) ni tanlang;- id ustunidagi barcha qatorlar qiymatlari yig'indisini ko'rsatadi.

AVG - bu maydon uchun barcha tanlangan qiymatlarni o'rtacha.
users_base FROM AVG (id) ni tanlang;- id ustunidagi barcha tanlangan qiymatlarning o'rtacha qiymatini chop etadi

MAX - bu maydon uchun barcha tanlangan qiymatlarning eng kattasini ishlab chiqaradi.

MIN - ushbu maydon uchun barcha tanlangan qiymatlarning eng kichigini ishlab chiqaradi.

Jadvallarni yaratish:

CREATE TABLE users_base (id butun soni, foydalanuvchi_nomi matni, shahar matni, tug'ilgan_kun sanasi);- bunday buyruqni bajarish jadvalni yaratishga olib keladi, unga ko'ra men misollar keltirdim ... Bu erda hamma narsa oddiy, CREATE TABLE buyrug'ini yozing, keyin biz yaratmoqchi bo'lgan jadval nomini, keyin qavs ichida, vergul bilan ajratilgan, ustunlar nomlari va ularning ma'lumotlar turi. Bu SQL da jadval yaratishning standart usuli. Endi men SQL Server 2005 da jadvallar yaratishga misol keltiraman:

ANSI_NULLS NI O'RING
Bor
QUOTED_IDENTIFIERNI YOQING
Bor
AGAR MAVJUD BO'lmasa (Tanlang * FROM sys.objects WHERE object_id = OBJECT_ID (N ".") VA (N "U") kiriting)
BOSHLASH
JADVAL TUZISH. (

NULL EMAS,
NULL EMAS,
NULL EMAS,
KLASTER BO'LGAN ASOSIY KALIT
ASC


OXIRI
Bor
ANSI_NULLS NI O'RING
Bor
QUOTED_IDENTIFIERNI YOQING
Bor
AGAR MAVJUD BO'lmasa (Tanlang * FROM sys.objects WHERE object_id = OBJECT_ID (N ".") VA (N "U") kiriting)
BOSHLASH
JADVAL TUZISH. (
IDENTITY (1,1) NULL EMAS,
NULL,
NULL,
KLASTER BO'LGAN ASOSIY KALIT
ASC
) BILAN (IGNORE_DUP_KEY = OFF) ON
) TEXTIMAGE_ONDA
OXIRI
Bor
ANSI_NULLS NI O'RING
Bor
QUOTED_IDENTIFIERNI YOQING
Bor
AGAR MAVJUD BO'lmasa (Tanlang * FROM sys.objects WHERE object_id = OBJECT_ID (N ".") VA (N "U") kiriting)
BOSHLASH
JADVAL TUZISH. (
IDENTITY (1,1) NULL EMAS,
NULL,
NULL,
KLASTER BO'LGAN ASOSIY KALIT
ASC
) BILAN (IGNORE_DUP_KEY = OFF) ON
) ON
OXIRI

SQL Server 2005 da sintaksis boshqa mavzu, men shunchaki SQL dasturlash asoslarini tasvirlab berganimni ko'rsatmoqchi edim, agar siz asoslarni o'zingiz bilsangiz yuqoriga chiqishingiz mumkin.

Agar sizda ushbu mavzu bo'yicha savollaringiz bo'lsa, menga sovunga yozing

So'rovlar qo'shtirnoqsiz yoziladi, chunki MySQL, MS SQL va PostGree ular boshqacha.

SQL so'rovi: jadvaldan belgilangan (majburiy) maydonlarni olish

TANLASH identifikatori, mamlakat_sarlavhasi, jadval_nomidan_odamlar soni

Biz yozuvlar ro'yxatini olamiz: HAMMA mamlakatlar va ularning aholisi. Kerakli maydonlarning nomlari vergul bilan ajratiladi.

TANLOV * jadval_nomi

* barcha maydonlarni bildiradi. Ya'ni, taassurotlar bo'ladi HAMMA NARSA ma'lumotlar maydonlari.

SQL so'rovi: dublikatlardan tashqari jadvaldan yozuvlarni chiqarish

Jadval_nomidan DISTINCT mamlakat_sarlavhasini tanlang

Biz yozuvlar ro'yxatini olamiz: foydalanuvchilarimiz joylashgan mamlakatlar. Bir mamlakatdan ko'plab foydalanuvchilar bo'lishi mumkin. Bunday holda, bu sizning iltimosingiz.

SQL so'rovi: jadvaldagi yozuvlarni belgilangan shartga muvofiq ko'rsatish

identifikatorni, mamlakat_sarlavhasini, shahar_sarlavhasini jadval_nomidan TANlang. QAYERDA_odamlar soni> 100000000

Biz rekordlar ro'yxatini olamiz: aholisi soni 100 000 000 dan ortiq bo'lgan mamlakatlar.

SQL so'rovi: jadvaldagi yozuvlarni buyurtma bilan ko'rsatish

TANLASH identifikatori, shahar_sarlavhasini jadval_nomidan BUYURTISH shahar_sarlavhasi

Biz yozuvlar ro'yxatini olamiz: alifbo tartibida shaharlar. A boshida, I oxirida.

TANLASH identifikatori, shahar_sarlavhasini jadval_nomidan TARTIB BY city_title DESC

Biz yozuvlar ro'yxatini olamiz: teskari shaharlar ( DESC) ok. Boshida I, oxirida A.

SQL so'rovi: yozuvlar sonini hisoblash

Jadval_nomidan COUNT ta (*) TANLANG

Jadvaldagi yozuvlar sonini (sonini) olamiz. Bunday holda, yozuvlar ro'yxati YO'Q.

SQL so'rovi: kerakli yozuvlar diapazonini chiqarish

TANLOV * jadval_nomi LIMIT 2, 3

Jadvaldan 2 (ikkinchi) va 3 (uchinchi) yozuvlarni olamiz. So'rov WEB sahifalarida navigatsiya yaratishda foydalidir.

Shartlar bilan SQL so'rovlari

Mantiqiy operatorlar yordamida berilgan shartga muvofiq jadvaldan yozuvlarni chiqarish.

SQL so'rovi: VA qurilishi

SELECT id, city_title FROM table_name WHERE country = "Rossiya" VA neft = 1

Biz rekordlar ro'yxatini olamiz: Rossiyadan shaharlar VA neft olish imkoniyatiga ega. Operator ishlatilganda VA, keyin ikkala shart ham mos kelishi kerak.

SQL so'rovi: YOKI qurish

SELECT id, city_title FROM table_name WHERE country = "Rossiya" OR country = "AQSh"

Biz rekordlar ro'yxatini olamiz: Rossiyaning barcha shaharlari YOKI AQSH. Operator ishlatilganda YOKI, keyin kamida bitta shart mos kelishi kerak.

SQL so'rovi: VA YO'Q

SELECT identifikatori, user_login FROM table_name WHERE country = "Rossiya" VA COUNT_comments EMAS<7

Biz yozuvlar ro'yxatini olamiz: Rossiyadan barcha foydalanuvchilar VA kim yasagan KAM EMAS 7 ta fikr.

SQL so'rovi: IN (B) konstruktsiyasi

SELECT ID, user_login FROM table_name WHERE IN IN ("Rossiya", "Bolgariya", "Xitoy")

Biz yozuvlar ro'yxatini olamiz: yashovchi barcha foydalanuvchilar ( IN) (Rossiya, Bolgariya yoki Xitoy)

SQL so'rovi: qurilishda EMAS

SELECT identifikatori, user_login FROM table_name QAYERDA BO'LMAGAN mamlakat ("Rossiya", "Xitoy")

Biz yozuvlar ro'yxatini olamiz: yashamaydigan barcha foydalanuvchilar ( YO'Q) (Rossiya yoki Xitoy).

SQL so'rovi: IS NULL konstruktsiyasi (bo'sh yoki bo'sh EMAS)

SELECT id, user_login FROM table_name WHERE status NULL

Biz yozuvlar ro'yxatini olamiz: holati aniqlanmagan barcha foydalanuvchilar. NULL alohida mavzu va shuning uchun alohida tekshiriladi.

SELECT identifikatori, user_login FROM table_name WHERE holati NULL EMAS

Biz yozuvlar ro'yxatini olamiz: holati belgilangan barcha foydalanuvchilar (NOT NO).

SQL so'rovi: LIKE tuzilishi

TANLASH identifikatori, foydalanuvchi_login FROM jadval_nomi QAYERDA familiya "Ivan%" kabi

Biz yozuvlar ro'yxatini olamiz: familiyasi "Ivan" kombinatsiyasi bilan boshlangan foydalanuvchilar. % belgisi HAR QANDAY belgilar sonini bildiradi. % belgisini topish uchun siz "Ivan \%" dan qochishingiz kerak.

SQL so'rovi: BETWEEN konstruktsiyasi

identifikatorni, foydalanuvchi_loginni jadval_nomidan tanlang QAYERDA ish haqi 25000 dan 50000 gacha

Biz yozuvlar ro'yxatini olamiz: 25 000 dan 50 000 gacha maosh oladigan foydalanuvchilar.

KO'P mantiqiy operatorlar mavjud, shuning uchun SQL server hujjatlarini batafsil o'rganing.

Murakkab SQL so'rovlari

SQL so'rovi: bir nechta so'rovlarni birlashtirish

(SELECT identifikatori, user_login FROM table_name1) UNION (SELECT id, user_login FROM table_name2)

Biz yozuvlar ro'yxatini olamiz: tizimda ro'yxatdan o'tgan foydalanuvchilar, shuningdek, forumda alohida ro'yxatdan o'tgan foydalanuvchilar. UNION operatori bilan bir nechta so'rovlarni birlashtirish mumkin. UNION SELECT DISTINCT kabi ishlaydi, ya'ni u takroriy qiymatlarni o'chiradi. Mutlaqo barcha yozuvlarni olish uchun siz UNION ALL operatoridan foydalanishingiz kerak.

SQL so'rovi: MAX, MIN, SUM, AVG, COUNT maydon qiymatlarini hisoblash

Bittaning chiqishi, jadvaldagi hisoblagichning maksimal qiymati:

jadval_nomidan MAX (hisoblagich) ni tanlang

Bittaning chiqishi, jadvaldagi hisoblagichning minimal qiymati:

jadval_nomidan MIN (hisoblagich) TANLANING

Jadvaldagi barcha hisoblagich qiymatlarining yig'indisini ko'rsatish:

jadval_nomidan SUM (hisoblagich) ni tanlang

Hisoblagichning o'rtacha qiymatini jadvalda ko'rsatish:

jadval_nomidan AVG (hisoblagich) ni tanlang

Jadvaldagi hisoblagichlar sonini ko'rsatish:

jadval_nomidan COUNT ta (hisoblagich) TANGLASH

1-sonli ustaxonadagi hisoblagichlar sonini jadvalda ko'rsatish:

TANLANGAN COUNT (hisoblagich) table_name WHERE office = "1-do'kon"

Bu eng mashhur buyruqlar. Iloji bo'lsa, hisoblash uchun bunday turdagi SQL so'rovlaridan foydalanish tavsiya etiladi, chunki hech qanday dasturlash muhiti o'z ma'lumotlarini qayta ishlashda SQL serverining o'zi bilan ma'lumotlarni qayta ishlash tezligi bilan taqqoslana olmaydi.

SQL so'rovi: yozuvlarni guruhlash

Qit'a, SUM (mamlakat_hududi) GURUHI BO'YICHA mamlakatlardan TANLASH

Biz rekordlar ro'yxatini olamiz: qit'aning nomi va ularning barcha mamlakatlari maydonlarining yig'indisi bilan. Ya'ni, agar har bir mamlakat o'z maydoni qayd etilgan mamlakatlar katalogi mavjud bo'lsa, GROUP BY bandidan foydalanib, siz har bir qit'aning hajmini bilib olishingiz mumkin (materiklar bo'yicha guruhlash asosida).

SQL so'rovi: taxallus orqali bir nechta jadvallardan foydalanish

o.order_no, o.amount_paid, c.company FROM buyurtmalar AS o, mijoz AS WHERE o.custno = c.custno AND c.city = "Tyumen" ni tanlang.

Biz yozuvlar ro'yxatini olamiz: faqat Tyumenda yashovchi mijozlardan buyurtmalar.

Aslida, ushbu turdagi to'g'ri ishlab chiqilgan ma'lumotlar bazasi bilan so'rov eng tez-tez uchraydi, shuning uchun MySQL-da yuqorida yozilgan koddan bir necha baravar tezroq ishlaydigan maxsus operator joriy etildi.

Buyurtmalardan o.order_no, o.summa_paid, z.company NI TANGLASH, mijozni z ON (z.custno = o.custno)

Ichki so'rovlar

TANLOV * jadval_nomidan QAYERDA ish haqi = (xodimdan MAX (ish haqi) ni tanlang)

Biz bitta rekordni olamiz: maksimal ish haqi bo'lgan foydalanuvchi haqida ma'lumot.

Diqqat! Ichki quyi so'rovlar SQL serverlaridagi to'siqlardan biridir. Moslashuvchanligi va kuchi bilan birga ular serverdagi yukni ham sezilarli darajada oshiradi. Bu boshqa foydalanuvchilarning ishida halokatli sekinlashuvga olib keladi. Ichki so'rovlar bilan rekursiv qo'ng'iroqlar hollari juda keng tarqalgan. Shuning uchun, men o'rnatilgan so'rovlardan foydalanishni EMAS, ularni kichikroqlarga bo'lishni tavsiya qilaman. Yoki yuqoridagi LEFT JOIN kombinatsiyasidan foydalaning. Ushbu turdagi so'rovlarga qo'shimcha ravishda, so'rovlar xavfsizlik buzilishining kuchaygan o'chog'idir. Agar siz ichki quyi so'rovlardan foydalanishga qaror qilsangiz, ularni juda ehtiyotkorlik bilan loyihalashingiz va ma'lumotlar bazalari (test ma'lumotlar bazalari) nusxalarida dastlabki ishlarni bajarishingiz kerak.

SQL so'rovlari ma'lumotlarni o'zgartiradi

SQL so'rovi: INSERT

Ko'rsatmalar KIRITMOQ jadvalga yozuvlar kiritish imkonini beradi. Oddiy so'zlar bilan aytganda, jadvaldagi ma'lumotlar bilan chiziq yarating.

Variant raqami 1. Ko'rsatmalar tez-tez ishlatiladi:

INSERT INTO table_name (id, user_login) VALUES (1, "ivanov"), (2, "petrov")

Jadvalda " jadval_nomi“Birdaniga 2 (ikki) foydalanuvchi kiritiladi.

Variant raqami 2. Uslubdan foydalanish qulayroq:

INSERT table_name SET id = 1, user_login = "ivanov"; INSERT table_name SET id = 2, user_login = "petrov";

Bu o'zining afzalliklari va kamchiliklariga ega.

Asosiy kamchiliklari:

  • Ko'pgina kichik SQL so'rovlari bitta katta SQL so'roviga qaraganda biroz sekinroq ishlaydi, ammo boshqa so'rovlar xizmat uchun navbatga qo'yiladi. Ya'ni, agar katta SQL so'rovi 30 daqiqa davomida bajarilsa, bu vaqt davomida qolgan so'rovlar bambuk chekadi va o'z navbatini kutadi.
  • So'rov avvalgi versiyadan ko'ra kattaroq bo'lib chiqdi.

Asosiy afzalliklari:

  • Kichik SQL so'rovlari paytida boshqa SQL so'rovlari bloklanmaydi.
  • O'qish qulayligi.
  • Moslashuvchanlik. Ushbu parametrda siz tuzilishga rioya qila olmaysiz, faqat kerakli ma'lumotlarni qo'shishingiz mumkin.
  • Arxivlarni shu tarzda shakllantirishda siz bir qatorni osongina nusxalashingiz va uni buyruq qatori (konsol) orqali ishga tushirishingiz mumkin, shu bilan butun ARXIVni tiklamaysiz.
  • Yozish uslubi UPDATE bayonotiga o'xshaydi, bu uni eslab qolishni osonlashtiradi.

SQL so'rovi: UPDATE

YANGILANISh jadval_nomi SET user_login = "ivanov", user_familiya = "Ivanov" WHERE id = 1

Jadvalda " jadval_nomi"Id = 1 bo'lgan yozuvda user_login va user_familiya maydonlarining qiymatlari belgilangan qiymatlarga o'zgartiriladi.

SQL so'rovi: DELETE

id = 3 bo'lgan jadval_nomidan o'chirish

ID raqami 3 bo'lgan yozuv table_name jadvalida o'chiriladi.

  1. Barcha maydon nomlarini kichik harflar bilan yozish va agar kerak bo'lsa, Delphi, Perl, Python va Ruby kabi turli xil dasturlash tillari bilan mos kelishi uchun ularni majburiy bo'sh joy "_" bilan ajratish tavsiya etiladi.
  2. O'qilishi uchun SQL buyruqlarini KAPITAL harflar bilan yozing. Har doim esda tutingki, sizdan keyin boshqa odamlar kodni o'qishi mumkin, va ehtimol siz N vaqtdan keyin o'zingiz o'qiysiz.
  3. Ismning boshidan maydonlarni, keyin esa harakatni nomlang. Masalan: city_status, user_login, user_name.
  4. SQL, PHP yoki Perl da (nom, sanab, havola) kabi muammolarga olib kelishi mumkin bo'lgan turli tillarda qo'shimcha so'zlardan qochishga harakat qiling. Masalan: havoladan MS SQL da foydalanish mumkin, lekin MySQL da saqlangan.

Ushbu material kundalik ish uchun qisqacha ma'lumotnoma bo'lib, ma'lum bir ma'lumotlar bazasi uchun SQL so'rovlarining asosiy manbai bo'lgan super mega nufuzli manba bo'lishga da'vo qilmaydi.

MS SQL Server ma'lumotlar bazasidagi ma'lumotlar ustidagi asosiy operatsiyalarni ko'rsatadigan dasturni ishlab chiqing, xususan:

  • ma'lumotlar bazasini ilovaga ulash;
  • formada ma'lumotlar bazasi jadvallarini ko'rsatish;
  • ma'lumotlar bazasiga yangi yozuv qo'shish;
  • yozuvni tahrirlash;
  • yozuvni o'chirish.

U Education.dbo ma'lumotlar bazasiga asoslangan bo'lib, uni yaratish jarayoni batafsil tavsiflangan

1-rasmda Education.dbo maʼlumotlar bazasining tuzilishi koʻrsatilgan. Rasmdan ko'rinib turibdiki, ma'lumotlar bazasi shunday nomlanadi:

sasha-pc \ sqlexpress.Education.dbo

Bu erda "sasha-pc" - tarmoqdagi kompyuterning identifikatori, "sqlexpress" - ma'lumotlar bazasi serverining nomi, "Education.dbo" - ma'lumotlar bazasi nomi.

Guruch. 1. Ma'lumotlar bazasi Education.dbo

Ma'lumotlar bazasi ikkita jadvalni o'z ichiga oladi: Student va Session. Jadvallarning tuzilishi quyidagicha.

Talabalar stoli.

Sessiya stoli.

Ishlash

1. MS Visual Studio dasturida Windows Forms ilovasi sifatida yangi loyiha yarating.

Windows Forms Application turidagi yangi loyiha yarating. Yangi loyihani yaratish misoli batafsil tavsiflangan

2. Student jadvalidagi ma'lumotlarni ko'rsatish uchun yangi ko'rinish yaratish.

Ma'lumotlar bazasi jadvallaridagi ma'lumotlarni ko'rsatish uchun turli usullardan foydalanishingiz mumkin. Ulardan biri MS Visual Studio dasturi yordamida shakllanadigan ko'rinishlarni yaratishdir.

Bizning holatda jadval ma'lumotlari DataGridView tipidagi boshqaruv elementida shaklda ko'rsatiladi. Ko'rinishlarni yaratgandan so'ng, ularni DataGridView elementlari bilan bog'lash juda qulay.

Ko'rinishni yaratish uchun kontekst menyusidan "Yangi ko'rinish qo'shish" buyrug'ini chaqirish kerak, bu esa Education.dbo ma'lumotlar bazasining "Ko'rishlar" elementini o'ng tugmasini bosish orqali chaqiriladi (2-rasm).

Guruch. 2. Yangi ko'rinish qo'shish buyrug'ini chaqirish

Natijada "Jadval qo'shish" oynasi ochiladi (3-rasm). Oynada siz ko'rinishga qo'shilgan jadvallarni tanlashingiz kerak.

Guruch. 3. Yangi ko'rinish asos bo'ladigan jadvallarni tanlash

Bizning holatda, Talabalar jadvalini tanlang va Qo'shish tugmasini bosish orqali tanlovimizni tasdiqlang. Keyingi qadam Yopish tugmasini tanlash orqali oynani yopishdir.

Amalga oshirilgan harakatlardan so'ng, ko'rinishda (shaklda) ko'rsatilishi kerak bo'lgan maydonlarni tanlashingiz kerak bo'lgan oyna paydo bo'ladi. Biz barcha maydonlarni tanlaymiz (4-rasm).

Maydonlarni tanlaganingizda, Talabalar jadvalining maydonlari ish maydonining yuqori qismida ko'rsatiladi. «Sichqoncha» yordamida taqdimot uchun kerakli maydonlarni tanlash mumkin.

Shunga ko'ra, oynaning o'rta qismida tanlangan maydonlarning nomlari, ular joylashgan jadval (4-rasmga qarang), saralash, filtrlash imkoniyati va boshqalar ko'rsatiladi.

Ko'rinishni yaratish uchun ishlatiladigan tegishli SQL so'rovi matni panelning pastki qismida ko'rsatiladi.

Guruch. 4. Ko'rinishda ko'rsatish uchun Talabalar jadvalining maydonlarini tanlash

Jamoani tanlagandan keyin

Fayl-> Hammasini saqlash Fayl-> Ko'rinishni saqlash1

ko'rinish nomini belgilashingiz kerak bo'lgan oyna ochiladi. "Talabani ko'rish" nomini o'rnating (5-rasm).

Guruch. 5. Taqdimot uchun nom belgilash

Amalga oshirilgan harakatlardan so'ng, ko'rish oynasi 6-rasmda ko'rsatilgandek ko'rinadi.

Guruch. 6. Ma'lumotlar bazasida Studentni ko'rish

Endi siz DataGridView boshqaruvini ko'rinishga joylashtirishingiz va ulashingiz mumkin.

3. DataGridView boshqaruvini joylashtirish va ma'lumotlar bazasi bilan aloqani o'rnatish.

DataGridView boshqaruvini joylashtirishdan oldin siz "Form1.cs" forma dizayn rejimiga kirishingiz kerak.

DataGridView elementi ma'lumotlarni ko'rsatishi mumkin bo'lgan jadvaldir. Ushbu boshqaruv elementi ToolBox panelida joylashgan. Birinchidan, forma hajmini biroz moslashtiramiz, so'ngra unga DataGridView boshqaruvini joylashtiramiz (7-rasm). Bu sukut bo'yicha dataGridView1 nomli ob'ektni yaratadi.

Guruch. 7. DataGridView boshqaruvi va ma'lumotlar manbasini tanlash oynasi

Shaklning yuqori o'ng burchagidagi DataGridView turini boshqarish elementini qo'ygandan so'ng, siz ma'lumotlar manbai sozlamalarini tanlashingiz mumkin. Shunga ko'ra, "DataGridView Tasks" oynasi ochiladi. Ushbu oynada "Ma'lumotlar manbasini tanlash" qalqib chiquvchi menyusini tanlang.

Ochilgan menyuda "Loyiha ma'lumotlar manbasini qo'shish ..." buyrug'ini tanlang (7-rasm). Shundan so'ng, sehrgar oynasi ochiladi, unda ma'lumotlar manbai ketma-ket tanlangan.

8-rasmda oyna ko'rsatilgan " Ma'lumotlar manbasini sozlash ustasi", unda ma'lumotlar manbai turi tanlangan. Bizning holatda, "Ma'lumotlar bazasi" ni o'rnating.

Guruch. 8. Ma'lumotlar manbai turini tanlash

Keyingi oynada (9-rasm) ma'lumotlar manbai modeli tanlanadi. Dataset-ni tanlang.

Guruch. 9. Ma'lumotlar manbai modelini tanlash

10-rasmda ko'rsatilgan oynada siz ma'lumotlar bazasiga ulanish uchun foydalanmoqchi bo'lgan ma'lumotlar ulanishini belgilashingiz kerak. Bizning holatda, siz ma'lumotlar bazasini tanlashingiz kerak " sasha-pc \ sqlexpress \ Education.dbo«.

Guruch. 10. Ma'lumot ulanishini tanlash

Keyingi oynada (11-rasm) Ulanish satrini dastur konfiguratsiya fayliga saqlash taklif etiladi. Biz hamma narsani avvalgidek qoldiramiz va keyingi oynaga o'tamiz.

Guruch. 11. Ilova konfiguratsiya faylida ulanish satrini Connection String ma'lumotlar bazasiga saqlash taklifi

Ma'lumotlar bazasiga ulanish yaratilgandan so'ng ko'plab ma'lumotlar bazasi ob'ektlari ko'rsatiladi (12-rasm). Bizning holatda, biz "Talabani ko'rish" ko'rinishini va undan barcha maydonlarni tanlashimiz kerak. Belgilangan maydonlar DataGridView tipidagi komponentda ko'rsatiladi.

Guruch. 12. DataGridView da ko'rsatiladigan ma'lumotlar bazasi ob'ektlarini tanlash

“Finish” tugmasi tanlangach, Education.dbo ma’lumotlar bazasining tanlangan obyektlari (View Student) ko‘rsatiladi (13-rasm).

Guruch. 13. View Student ning tanlangan maydonlari bilan DataGridView turini boshqarish

Xuddi shunday, siz ma'lumotlar bazasidagi istalgan jadvaldagi istalgan maydonlarni o'z ichiga olgan ko'rinishlarni sozlashingiz mumkin. Bundan tashqari, bitta ko'rinishda turli jadvallardagi maydonlar ko'rsatilishi mumkin.

4. DataGridView tipidagi boshqaruv elementi ko'rinishini o'rnatish.

Agar siz dasturni bajarish uchun ishga tushirsangiz, siz ma'lumotlar bazasidagi Student jadvaliga mos keladigan View Student ko'rinishining ma'lumotlarini olasiz (14-rasm).

Guruch. 14. Ilovani bajarish uchun ishga tushirish

14-rasmdan ko'rinib turibdiki, dataGridView1 jadvalidagi ma'lumotlar an'anaviy tarzda ko'rsatiladi, lekin dizaynni sozlash mumkin.

DataGridView turini boshqarish ko'rsatiladigan maydonlarning ko'rinishini sozlash imkonini beradi.

Maydonlarni tahrirlash buyruqlarini chaqirish uchun dataGridView1 boshqaruv elementini o'ng tugmasini bosib kontekst menyusiga qo'ng'iroq qilish kifoya.

Menyuda DataGridView ko'rinishini va ishlashini boshqarish imkonini beruvchi turli xil foydali buyruqlar mavjud:

  • boshqaruvni bloklash buyrug'i (Lock Controls);
  • ko'rinishda ko'rsatilgan maydonlarni tahrirlash buyrug'i (Ustunlarni tahrirlash ...);
  • yangi maydonlarni qo'shish buyrug'i, masalan, hisoblangan (Ustun qo'shish).

Bizning holatda, siz "Ustunlarni tahrirlash ..." buyrug'ini tanlashingiz kerak (15-rasm).

Guruch. 15. Kontekst menyusidan «Ustunlarni tahrirlash ...» buyrug'i

Natijada, "Ustunlarni tahrirlash" oynasi ochiladi, unda siz taqdimot maydonlarining ko'rinishini o'zingizning xohishingizga ko'ra sozlashingiz mumkin (16-rasm).

Guruch. 16. "Talabani ko'rish" ko'rinishida maydonlar turini o'rnatish oynasi

Har qanday maydon uchun 16-rasmdagi oynada siz nom, tekislash, kenglik, ma'lumotlarni tahrirlash imkoniyati va boshqalarni sozlashingiz mumkin.

5. Ulanish satri

Ma'lumotlar bazasiga o'zgartirish kiritish uchun siz ma'lumotlar bazasiga ulanish satrini olishingiz kerak Connection String.

Ma'lumotlar bazasi ulanish qatorini olishning turli usullari mavjud. Ulardan biri Education.dbo ma'lumotlar bazasining Properties oynasida ushbu qatorni o'qishga asoslangan (17-rasm).

Guruch. 17.Ulanish satrining ta’rifi

Satrni saqlash uchun dasturga turdagi ichki o'zgaruvchi kiritiladi ip... Buferdan foydalanib, ulanish satrini satr turining tavsiflangan o'zgaruvchisiga nusxalang.

Form1 klassi tavsifining boshida "Form1.cs" fayli matnida siz o'zgaruvchini tavsiflashingiz kerak:

string conn_string =;

Hozirgi vaqtda Form1 sinfining matni quyidagicha:

umumiy qisman sinf Form1: Shakl { string conn_string = @ "Ma'lumotlar manbai = (mahalliy) \ SQLEXPRESS; Boshlang'ich katalog = Ta'lim; Integratsiyalashgan xavfsizlik = rost; Pooling = noto'g'ri"; umumiy shakl 1 () { InitializeComponent (); } xususiy void Form1_Load (ob'ekt jo'natuvchisi, EventArgs e) { // TODO: Ushbu kod qatori ma'lumotlarni "educationDataSet.View_Student" jadvaliga yuklaydi. Agar kerak bo'lsa, uni ko'chirishingiz yoki olib tashlashingiz mumkin. } }

6. Ma'lumotlarni manipulyatsiya qilish buyruqlarini ko'rsatishning yangi shaklini yaratish.

Joriy yozuv ma'lumotlarini qayta ishlash imkoniyatiga ega bo'lish uchun siz yangi shakl yaratishingiz kerak. MS Visual Studio dasturida yangi forma yaratish jarayoni - C # batafsil yoritilgan.

Yangi shakl qo'shish quyidagi buyruq bilan amalga oshiriladi:

Loyiha -> Windows formasini qo'shish ...

Ochilgan "Yangi element" oynasida "Windows formasi" bandini tanlang.

Yangi forma faylining nomini sukut bo'yicha "Form2.cs" qoldiring.

18-rasmda yangi shaklning ko'rinishi ko'rsatilgan.

Shaklga quyidagi turdagi boshqaruv elementlarini joylashtiring:

  • Tugma turidagi ikkita boshqaruv (OK va Bekor qilish tugmalari). Shunga ko'ra, button1 va button2 nomli ikkita ob'ekt olinadi;
  • axborot xabarlarini yaratish uchun Label tipidagi to'rtta boshqaruv;
  • Num_book, Name, Group, Year maydonlariga ma'lumotlarni kiritish uchun TextBox tipidagi to'rtta boshqaruv elementi.

Siz boshqaruv elementlarining quyidagi xususiyatlarini sozlashingiz kerak:

  • boshqaruv tugmasi1 xususiyatida Text = "OK";
  • boshqaruv tugmasi2 xususiyatida Text = "Bekor qilish";
  • boshqaruv tugmasi1 xususiyatida DialogResult = "OK";
  • boshqaruv tugmasi2 xususiyatida DialogResult = "Bekor qilish";
  • boshqaruv label1 xususiyatida Text = "Num_book";
  • boshqaruv label2 xususiyatida Text = "Ism";
  • boshqaruv label3 xususiyatida Text = "Guruh";
  • nazorat label4 xususiyatida Matn = "Yil".

Shuningdek, biz TextBox tipidagi boshqaruv elementlarining ko'rinishini o'rnatdik. Buning uchun barcha boshqaruv elementlarida textBox1, textBox2, textBox3, textBox4, Modifikatorlar = “ommaviy” xossa qiymati.

Guruch. 18. Yangi yaratilgan shaklning ko'rinishi

7. Talabalar jadvalidagi ma'lumotlarni manipulyatsiya qilish buyruqlarini chaqirish tugmalarini qo'shish.

Keyingi ish uchun Form1 asosiy formasiga o'tish uchun sichqonchani ishlatishingiz kerak.

Form1 ilovasining asosiy shakliga uchta tugma qo'shing. button1, button2, button3 nomli uchta ob'ekt o'zgaruvchilari avtomatik ravishda yaratiladi. Ushbu tugmalarning har birida quyidagi sozlamalarni bajaring (Xususiyatlar oynasi):

  • tugmada button1 xususiyati Matn = "Qo'shish ..." (yozuvni kiritish);
  • tugmachada buton2 xususiyati Matn = "Tahrirlash ..." (yozuvni o'zgartirish);
  • tugmada button3 xususiyati Matn = "O'chirish".

Kiritilgan o'zgartirishlar natijasida asosiy shakl 19-rasmda ko'rsatilgandek ko'rinadi.

Guruch. 19. Asosiy ariza shakli

8. «Vstavka...» tugmasini bosish hodisasini dasturlash.

"Qo'shish ..." tugmasini bosish uchun hodisa ishlov beruvchisi quyidagicha ko'rinadi:

shaxsiy bekor tugmasi1_Click_1 (ob'ekt jo'natuvchisi, EventArgs e) { string cmd_text; Form2 f2 = yangi Form2 (); agar (f2.ShowDialog () == DialogResult .OK) { cmd_text = "Talabalar qadriyatiga kiriting (" + "" "+ f2.textBox1.Text +" "," "+ f2.textBox2.Text + "", "" + f2.textBox3.Text + "", "+ f2.textBox4.Text + ")"; // ma'lumotlar bazasiga ulanishni yarating SqlConnection sql_conn = yangi SqlConnection (conn_string); // SQL tilida buyruq yaratish SqlCommand sql_comm = yangi SqlCommand (cmd_text, sql_conn); sql_conn.Open (); // ochiq ulanish sql_comm.ExecuteNonQuery (); // SQL tilida buyruqni bajarish sql_conn.Close (); // ulanishni yoping bu .view_StudentTableAdapter.Fill (bu .educationDataSet.View_Student); } }

Form2 birinchi chaqiriladi. "OK" (tegishli tugmani bosish) natijasini olgandan so'ng, Form2 da TextBox tipidagi elementlardagi to'ldirilgan maydonlar SQL so'rovlar qatoriga kiritiladi. Yangi qator qo'shish uchun SQL so'rovi quyidagicha ko'rinadi:

INSERT INTO Student VALUES (qiymat1, qiymat2, qiymat3, qiymat4)

bu yerda 1-qiymat baho kitobi raqamiga mos keladi; qiymat2 - talaba familiyasi; qiymat3 - talaba tahsil olayotgan guruh; qiymat 4 - kirish yili.

Ma'lumotlar bazasiga ulanish qatori Ulanish satri conn_string o'zgaruvchisida tasvirlangan (5-betga qarang). SqlConnection klassi ob'ekti ilovani ma'lumotlar manbalari bilan bog'laydi. Bundan tashqari, Connection klassi foydalanuvchi autentifikatsiyasi, tarmoqqa ulanish, ma'lumotlar bazasini identifikatsiyalash, ulanishni buferlash va tranzaksiyalarni qayta ishlash bilan shug'ullanadi.

Jadvalga yozuv qo'shadigan SQL buyrug'i SqlCommand sinfida inkapsullangan. SqlCommand klassi konstruktori ikkita parametrni oladi: SQL so'rovlar qatori (cmd_text o'zgaruvchisi) va SqlConnection sinfining ob'ekti.

ExecuteNonQuery () usuli IDBCommand interfeysida amalga oshiriladi. Usul ma'lumotlarni qaytarmaydigan SQL buyruqlarini amalga oshiradi. Bu buyruqlar INSERT, DELETE, UPDATE va ma'lumotlarni qaytarmaydigan saqlangan protseduralarni o'z ichiga oladi. ExecuteNonQuery () usuli unga jalb qilingan yozuvlar sonini qaytaradi.

9. "O'zgartirish ..." tugmasini bosish hodisasini dasturlash.

"Tahrirlash ..." tugmasini bosish uchun hodisa ishlov beruvchisi quyidagicha ko'rinadi:

xususiy bekor tugmasi2_Click (ob'ekt jo'natuvchisi, EventArgs e) (string cmd_text; Form2 f2 = new Form2 (); int index; string num_book; index = dataGridView1.CurrentRow.Index; num_book = Convert .ToString (dataGridView1.Value);x1; .Text = num_book; f2.textBox2.Text = .ToStringga aylantirish (dataGridView1.Value); f2.textBox3.Text = .ToStringga aylantirish (dataGridView1.Value); f2.textBox4.Text = .ToStringga aylantirish); (dataG) f2.ShowDialog () == DialogResult .OK) (cmd_text = "Talabalar to'plamini YANGILASH_kitob raqami =" "+ f2.textBox1.Text + "", "+" = "" + f2.textBox2.Text + "", "+" = "" + f2.textBox3.Text + "", "+" Year = "+ f2 .textBox4.Text + "WHERE Num_book =" "+ num_book +" ""; SqlConnection sql_conn = yangi SqlConnection (conn_string); SqlCommand sql_comm = yangi Sql_buyrug‘i (cmd_text, sql_conn.Ocul_view.connect.Ocul_); To'ldirish (bu .educationDataSet.View_Student);))

Ushbu ishlov beruvchida faol yozuvning joriy qiymatini yangilaydigan SQL UPDATE buyrug'i bajariladi.

10. "O'chirish" tugmasini bosish hodisasini dasturlash.

"O'chirish" tugmasini bosish uchun hodisa ishlov beruvchisi quyidagicha ko'rinadi:

xususiy bekor tugmasi3_Click (ob'ekt jo'natuvchisi, EventArgs e) (string cmd_text = "Talabadan o'chirish"; int indeksi; string num_book; indeks = dataGridView1.CurrentRow.Index; num_book = Convert.ToString (dataGridView1.Value =); cmd_t "Talaba QERDAN O'CHIRISh. " "+ num_book + "" "; SqlConnection sql_conn = yangi SqlConnection (conn_string); SqlCommand sql_comm = yangi SqlCommand (cmd_text, sql_conn); sql_conn.Open (); sql_comm.ExecuteNonccation.hissettu.

Ushbu ishlov beruvchida SQL DELETE buyrug'i bajariladi.

Aloqador mavzular

  • Microsoft Access ma'lumotlar bazasi jadvalini ko'rsatish

SQL Server Management Studio barcha turdagi so'rovlarni yaratish uchun to'liq vositani taqdim etadi. Uning yordami bilan siz so'rovlarni yaratishingiz, saqlashingiz, yuklashingiz va tahrirlashingiz mumkin. Bundan tashqari, siz hech qanday serverga ulanmasdan so'rovlar bilan ishlashingiz mumkin. Ushbu vosita, shuningdek, turli loyihalar uchun so'rovlarni loyihalash imkoniyatini beradi.

So'rovlar muharriri orqali ham, Yechim Explorer orqali ham so'rovlar bilan ishlash imkoniyatini beradi. Ushbu maqola ikkala vositani ham qamrab oladi. SQL Server Management Studio ning ushbu ikkita komponentiga qo'shimcha ravishda biz o'rnatilgan tuzatuvchi yordamida SQL kodini tuzatishni ko'rib chiqamiz.

So'rov muharriri

So'rovlar muharriri panelini ochish uchun So'rovlar muharriri, SQL Server Management Studio asboblar panelida Yangi so'rov tugmasini bosing. Siz ushbu panelni faqat Database Engine so'rovlarini emas, balki barcha mumkin bo'lgan so'rovlarni yaratish uchun tugmalarni ko'rsatish uchun kengaytirishingiz mumkin. Odatiy bo'lib, yangi Database Engine so'rovi yaratiladi, lekin asboblar panelidagi tegishli tugmani bosish orqali siz MDX, XMLA va boshqa so'rovlarni ham yaratishingiz mumkin.

So'rovlar muharriri panelining pastki qismidagi holat satri muharrirning serverga ulanish holatini ko'rsatadi. Agar serverga ulanish avtomatik ravishda o'rnatilmagan bo'lsa, So'rovlar muharriri ishga tushirilganda Serverga ulanish dialog oynasi paydo bo'ladi, unda siz ulanish uchun server va autentifikatsiya rejimini tanlashingiz mumkin.

So'rovlarni oflayn rejimda tahrirlash serverga ulangandan ko'ra ko'proq moslashuvchanlikni ta'minlaydi. So‘rovlarni tahrirlash uchun serverga ulanish shart emas va so‘rovlar muharriri oynasini bir serverdan uzish (So‘rov -> Ulanish -> Ajratish menyusi buyrug‘i yordamida) va boshqa muharrir oynasini ochmasdan boshqasiga ulanish mumkin. Oflayn tahrirlashni tanlash uchun ma'lum bir so'rov turi muharririni ishga tushirganingizda paydo bo'ladigan Server ulanishi dialog oynasida "Bekor qilish" tugmasini bosing.

So'rovlar muharriridan quyidagi vazifalarni bajarish uchun foydalanishingiz mumkin:

    Transact-SQL operatorlarini yaratish va bajarish;

    yaratilgan Transact-SQL bayonotlarini faylga saqlash;

    umumiy so'rovlarni bajarish rejalarini tuzish va tahlil qilish;

    tanlangan so'rovni bajarish rejasini grafik tasvirlash.

So'rovlar muharriri o'rnatilgan matn muharriri va turli harakatlar uchun tugmalar to'plamiga ega asboblar panelini o'z ichiga oladi. So'rovlar muharririning asosiy oynasi gorizontal ravishda So'rovlar paneli (yuqorida) va Natijalar paneli (pastda) bo'linadi. Yuqori panelga Transact-SQL operatorlari (ya'ni so'rovlar) kiritiladi va quyi panelda ushbu so'rovlarni tizim tomonidan qayta ishlash natijalari ko'rsatiladi. Quyidagi rasmda so'rovlar muharririga so'rov kiritish misoli va bu so'rov natijalari ko'rsatilgan:

USE so'rovidagi birinchi bayonot SampleDb ma'lumotlar bazasidan joriy ma'lumotlar bazasi sifatida foydalanishni buyuradi. Ikkinchi ibora, SELECT, Xodimlar jadvalidagi barcha qatorlarni oladi. Ushbu so'rovni bajarish va natijalarni ko'rsatish uchun So'rovlar muharriri asboblar panelida "Bajarish" tugmasini bosing yoki F5 tugmasini bosing.

So'rovlar muharririning bir nechta oynasini ochishingiz mumkin, ya'ni. Ma'lumotlar bazasi mexanizmining bir yoki bir nechta nusxalariga bir nechta ulanishlarni amalga oshirish. SQL Server Management Studio asboblar panelidagi New Query tugmasini bosish orqali yangi ulanish yaratiladi.

So'rovlar muharriri oynasining pastki qismidagi holat satrida so'rovlar ko'rsatmalarining bajarilishi bilan bog'liq quyidagi ma'lumotlar ko'rsatiladi:

    joriy operatsiya holati (masalan, "So'rov muvaffaqiyatli yakunlandi");

    ma'lumotlar bazasi serverining nomi;

    joriy foydalanuvchining nomi va server jarayonining identifikatori;

    joriy ma'lumotlar bazasi nomi;

    oxirgi so'rovni bajarish uchun sarflangan vaqt;

    topilgan qatorlar soni.

SQL Server Management Studio ning asosiy kuchli tomonlaridan biri uning foydalanish qulayligi bo'lib, u Query Editor uchun ham amal qiladi. So'rovlar muharriri Transact-SQL bayonotlarini kodlashni osonlashtiradigan ko'plab xususiyatlarni qo'llab-quvvatlaydi. Xususan, Transact-SQL bayonotlarining o'qilishini yaxshilash uchun sintaksisni ta'kidlashdan foydalanadi. Barcha zahiradagi so'zlar ko'k rangda, o'zgaruvchilar qora rangda, chiziqlar qizil rangda va izohlar yashil rangda ko'rsatiladi.

Bundan tashqari, so'rovlar muharriri kontekstga sezgir yordamga ega Dinamik yordam, bu orqali siz ma'lum bir ko'rsatma haqida ma'lumot olishingiz mumkin. Agar siz bayonot sintaksisini bilmasangiz, uni tahrirlovchida tanlang va keyin F1 tugmasini bosing. Shuningdek, Books Online-dan yordam olish uchun turli Transact-SQL bayonotlarining parametrlarini ajratib ko'rsatishingiz mumkin.

SQL Management Studio SQL Intellisense-ni qo'llab-quvvatlaydi, bu avtomatik to'ldirish vositasining bir turi. Boshqacha qilib aytganda, ushbu modul Transact-SQL bayonotlarining qisman kiritilgan elementlarini eng katta ehtimol bilan yakunlashni taklif qiladi.

Object Explorer so'rovlarni tahrirlashda ham yordam berishi mumkin. Masalan, agar siz Xodimlar jadvali uchun CREATE TABLE bayonotini qanday yaratishni bilmoqchi bo'lsangiz, Object Explorer-da ushbu jadvalni sichqonchaning o'ng tugmasi bilan bosing va paydo bo'lgan yorliq menyusidan Skript jadvali sifatida -> CREATE to -> New Query Editor-ni tanlang. Oyna.jadvallar -> CREATE dan foydalanish -> Yangi so'rovlar muharriri oynasi). Shu tarzda yaratilgan CREATE TABLE operatorini o'z ichiga olgan So'rovlar muharriri oynasi quyidagi rasmda ko'rsatilgan. Ushbu imkoniyat, shuningdek, saqlangan protseduralar va funktsiyalar kabi boshqa ob'ektlar bilan ishlaydi.

Ob'ekt brauzeri ma'lum bir so'rov uchun bajarilish rejasini grafik ko'rsatish uchun juda foydali. So'rovni bajarish rejasi - bu ma'lum bir so'rov uchun bir nechta mumkin bo'lgan bajarishlar orasidan so'rovlarni optimallashtiruvchi tomonidan tanlangan bajarish rejasi. Tahrirlovchining yuqori paneliga kerakli so'rovni kiriting, So'rov -> Taxminiy bajarilish rejasini ko'rsatish menyusidan buyruqlar ketma-ketligini tanlang va bu so'rovni bajarish rejasi muharrir oynasining pastki panelida ko'rsatiladi.

Yechim Explorer

SQL Server Management Studio'da so'rovlarni tahrirlash yechimlar usuliga asoslanadi. Agar siz "Yangi so'rov" tugmasi yordamida bo'sh so'rov yaratsangiz, u bo'sh yechimga asoslanadi. Buni bo'sh so'rov ochilgandan so'ng darhol View -> Solution Explorer menyusidan buyruqlar ketma-ketligini bajarish orqali ko'rish mumkin.

Yechim bir, bir yoki bir nechta loyihalar bilan bog'lanishi mumkin. Hech qanday loyiha bilan bog'lanmagan bo'sh yechim. Loyihani yechim bilan bog‘lash uchun bo‘sh yechim, Yechim Explorer va So‘rovlar muharririni yoping va Fayl -> Yangi -> Loyiha menyusidagi buyruqlar ketma-ketligiga amal qilib, yangi loyiha yarating. Ochilgan Yangi loyiha oynasida o'rta panelda SQL Server skriptlari variantini tanlang. Loyiha - bu ma'lum bir joyda fayllarni tashkil qilish usuli. Siz loyihangizga nom berishingiz va diskdagi joyni tanlashingiz mumkin. Yangi loyiha yaratganingizda, yangi yechim avtomatik ravishda ishga tushiriladi. Siz Solution Explorer yordamida mavjud yechimga loyiha qo'shishingiz mumkin.

Yaratilgan har bir loyiha uchun Solution Explorer ulanishlar, so'rovlar va boshqa papkalarni ko'rsatadi. Berilgan loyiha uchun yangi so'rovlar muharriri oynasini ochish uchun uning "So'rovlar" jildini o'ng tugmasini bosing va kontekst menyusidan "Yangi so'rov" ni tanlang.

Nosozliklarni tuzatish SQL Server

SQL Server 2008-dan boshlab, o'rnatilgan kodni tuzatuvchiga ega. Nosozliklarni tuzatish seansini boshlash uchun SQL Server Management Studio-ning asosiy menyusidan Nosozliklarni tuzatish -> Nosozliklarni tuzatishni boshlash-ni tanlang. Biz tuzatuvchining buyruqlar to'plamidan foydalangan holda misol yordamida qanday ishlashini ko'rib chiqamiz. Paket - bu SQL ko'rsatmalari va protsessual kengaytmalar ketma-ketligi bo'lib, ular mantiqiy birlikni tashkil qiladi, ular o'z ichiga olgan barcha bayonotlarni bajarish uchun Ma'lumotlar bazasi mexanizmiga yuboriladi.

Quyidagi rasmda p1 loyihasida ishlaydigan xodimlar sonini hisoblaydigan paket ko'rsatilgan. Agar bu raqam 4 yoki undan ko'p bo'lsa, tegishli xabar ko'rsatiladi. Aks holda, xodimlarning ismi va familiyasi ko'rsatiladi.

Muayyan ko'rsatma bo'yicha paketning bajarilishini to'xtatish uchun rasmda ko'rsatilganidek, to'xtash nuqtalarini o'rnatishingiz mumkin. Buni amalga oshirish uchun to'xtatmoqchi bo'lgan chiziqning chap tomoniga bosing. Nosozliklarni tuzatish boshlanishida bajarish sariq o'q bilan belgilangan kodning birinchi qatorida to'xtaydi. Amalga oshirish va disk raskadrovkani davom ettirish uchun Debug -> Continue menyu buyrug'ini bajaring. To'plam ko'rsatmalari birinchi to'xtash nuqtasiga qadar davom etadi va sariq o'q u erda to'xtaydi.

Nosozliklarni tuzatish bilan bog'liq ma'lumotlar So'rovlar muharriri oynasining pastki qismidagi ikkita panelda ko'rsatiladi. Har xil turdagi disk raskadrovka ma'lumotlari haqidagi ma'lumotlar ushbu panellarda bir nechta yorliqlarga to'plangan. Chap panelda “Avtomobillar”, “Mahalliylar” va beshtagacha “Tomosha qilish” yorliqlari mavjud. O'ng panelda qo'ng'iroqlar to'plami, mavzular, uzilish nuqtalari, buyruqlar oynasi, darhol oyna va chiqish yorliqlari mavjud. Mahalliylar yorlig'i o'zgaruvchilar qiymatlarini ko'rsatadi, Qo'ng'iroqlar to'plami yorlig'i qo'ng'iroqlar to'plami qiymatlarini va Breakpoints yorliqlarida to'xtash nuqtasi ma'lumotlarini ko'rsatadi.

Nosozliklarni tuzatish jarayonini tugatish uchun asosiy menyudan Debug -> Stop Diskageni tuzatish buyruqlar ketma-ketligini bajaring yoki tuzatuvchi asboblar panelidagi ko'k tugmani bosing.

SQL Server 2012 bir nechta yangi xususiyatlar bilan SQL Server Management Studio'da o'rnatilgan tuzatuvchi funksiyasini kengaytiradi. Endi siz unda bir qator quyidagi operatsiyalarni bajarishingiz mumkin:

    To'xtash nuqtasi shartini belgilang. To'xtash nuqtasi holati SQL ifodasi boʻlib, uning hisoblangan qiymati kodning bajarilishi shu nuqtada toʻxtab qolmaydimi yoki yoʻqligini aniqlaydi. To'xtash nuqtasi shartini belgilash uchun kerakli to'xtash nuqtasi uchun qizil belgini o'ng tugmasini bosing va kontekst menyusidan Shart-ni tanlang. Breakpoint Condition dialog oynasi ochiladi, unda siz kerakli mantiqiy ifodani kiritasiz. Bunga qo'shimcha ravishda, agar siz ijroni to'xtatishingiz kerak bo'lsa, ifoda rost bo'lsa, siz "Is True" tugmachasini o'rnatishingiz kerak. Agar ijroni to'xtatish kerak bo'lsa, ifoda o'zgargan bo'lsa, u holda "O'zgartirilganda" radio tugmachasini tanlashingiz kerak.

    To'xtash nuqtasiga urishlar sonini belgilang. Urishlar soni - bajarilish vaqtida to'xtash nuqtasiga necha marta urilganiga asoslanib, berilgan nuqtada bajarishni to'xtatish sharti. Belgilangan o'tishlar soniga va berilgan to'xtash nuqtasi uchun belgilangan boshqa shartlarga erishilganda, tuzatuvchi belgilangan harakatni amalga oshiradi. Hitga asoslangan bekor qilish sharti quyidagilardan biri bo'lishi mumkin:

    1. shartsiz (standart amal) (Har doim sindirish);

      Uning soni belgilangan qiymatga teng bo'lganda sindirish;

      Urishlar soni belgilangan qiymatning ko'paytmasiga teng bo'lganda buzish;

      Uning soni belgilangan qiymatdan katta yoki teng bo'lganda tanaffus qiling.

    Nosozliklarni tuzatish vaqtida urishlar sonini o'rnatish uchun "To'xtash nuqtalari" yorlig'idagi kerakli to'xtash nuqtasi belgisini o'ng tugmasini bosing, kontekst menyusidan Hit soni ni tanlang, so'ngra ochilgan Breakpoint Hit Count dialog oynasida yuqoridagi ro'yxatdagi shartlardan birini tanlang. Qiymat talab qiladigan variantlar uchun uni shart ochiladigan ro'yxatining o'ng tomonidagi matn maydoniga kiriting. Belgilangan shartlarni saqlash uchun OK tugmasini bosing.

    To'xtash nuqtasi filtrini belgilang. To'xtash nuqtasi filtri to'xtash nuqtasini faqat belgilangan kompyuterlar, jarayonlar yoki oqimlarda ishlashini cheklaydi. To'xtash nuqtasi filtrini o'rnatish uchun kerakli to'xtash nuqtasini o'ng tugmasini bosing va kontekst menyusidan Filtrni tanlang. Keyin ochilgan "To'xtash nuqtasi filtrlari" dialog oynasida ushbu to'xtash nuqtasining bajarilishini cheklamoqchi bo'lgan resurslarni belgilang. Belgilangan shartlarni saqlash uchun OK tugmasini bosing.

    To'xtash nuqtasida harakatni ko'rsating. Qachon Hit bandi paketning bajarilishi berilgan to'xtash nuqtasiga to'g'ri kelganda bajarilishi kerak bo'lgan harakatni belgilaydi. Odatiy bo'lib, agar urish sharti va to'xtash sharti bajarilsa, bajarish to'xtatiladi. Shu bilan bir qatorda, oldindan belgilangan xabarni ko'rsatish mumkin.

    To'xtash nuqtasiga tegilganda harakatni belgilash uchun kerakli to'xtash nuqtasi uchun qizil belgini o'ng tugmasini bosing va kontekst menyusidan Qachon urishni tanlang. Ko'rsatilgan "When Breakpoint is Hit" dialog oynasida kerakli amalni tanlang. Belgilangan shartlarni saqlash uchun OK tugmasini bosing.

    Tezkor tomosha oynasidan foydalaning. QuickWatch oynasida siz Transact-SQL ifodasining qiymatini ko'rishingiz va keyin ushbu ifodani Watch oynasida saqlashingiz mumkin. Tezkor tomosha oynasini ochish uchun Debug menyusidan Tezkor tomoshani tanlang. Bu oynadagi ifoda yoki ifoda ochiladigan roʻyxatidan tanlanishi mumkin yoki uni shu maydonga kiritishingiz mumkin.

    Tezkor ma'lumot uchun maslahatdan foydalaning. Kod identifikatori ustiga kursorni olib kelsangiz, Tez ma'lumot vositasi o'z reklamasini qalqib chiquvchi oynada ko'rsatadi.

SQL yoki Strukturaviy so'rovlar tili relyatsion ma'lumotlar bazasi tizimidagi (RDBMS) ma'lumotlarni manipulyatsiya qilish uchun ishlatiladi. Ushbu maqolada har bir dasturchi bilishi kerak bo'lgan tez-tez ishlatiladigan SQL buyruqlari haqida so'z boradi. Ushbu material ish intervyusidan oldin o'zlarining SQL bilimlarini yangilamoqchi bo'lganlar uchun idealdir. Buni amalga oshirish uchun maqolada keltirilgan misollarni tahlil qiling va ma'lumotlar bazalari orqali juftlikda nimalarni boshdan kechirganingizni eslang.

E'tibor bering, ba'zi ma'lumotlar bazasi tizimlari har bir bayonot oxirida nuqta-vergulni talab qiladi. Nuqtali vergul SQL-dagi har bir bayonotning oxiri uchun standart ko'rsatkichdir. Misollar MySQL-dan foydalanadi, shuning uchun nuqta-vergul qo'yiladi.

Misollar uchun ma'lumotlar bazasini sozlash

Jamoalar qanday ishlashini ko'rsatish uchun ma'lumotlar bazasini yarating. Ishlash uchun ikkita faylni yuklab olishingiz kerak: DLL.sql va InsertStatements.sql. Shundan so'ng, terminalni oching va MySQL konsoliga quyidagi buyruq bilan kiring (ushbu maqolada MySQL tizimda allaqachon o'rnatilgan deb taxmin qilinadi):

Mysql -u root -p

Keyin parolingizni kiriting.

Quyidagi buyruqni bajaring. Ma’lumotlar bazasini “universitet” deb ataymiz:

MA'LUMOTLAR BAZASINI YARATING universitet; USE universiteti; MANBA ; MANBA

Ma'lumotlar bazasi buyruqlari

1. Mavjud ma'lumotlar bazalarini ko'rish

MA'LUMOT BAZALARINI KO'RSATISH;

2. Yangi ma'lumotlar bazasini yaratish

MA'LUMOTLAR BAZA YARASH;

3. Foydalanish uchun ma'lumotlar bazasini tanlash

FOYDALANISH ;

4..sql faylidan SQL buyruqlarini import qilish

MANBA ;

5. Ma'lumotlar bazasini o'chirish

TO'CHIRISH MA'LUMOTLAR BAZASI ;

Jadvallar bilan ishlash

6. Ma'lumotlar bazasida mavjud jadvallarni ko'rish

JADVALLARNI KO'RSATISH;

7. Yangi jadval yaratish

JADVAL YARATISH ( , , ASOSIY KOLOT ( ), CHET KALİT ( ) ADABIYOTLAR ());

CREATE TABLE yordamida yaxlitlik cheklovlari

Jadvaldagi ma'lum ustunlar uchun cheklovlar yaratish kerak bo'lishi mumkin. Jadvalni yaratishda siz quyidagi cheklovlarni o'rnatishingiz mumkin:

  • jadval katakchasi NULL bo'lishi mumkin emas;
  • birlamchi kalit - PRIMARY KEY (col_name1, col_name2, ...);
  • xorijiy kalit - FOREIGN KEY (col_namex1,..., col_namexn) ADBIYoTLAR jadval_nomi (col_namex1,..., col_namexn).

Bir nechta asosiy kalitlarni belgilash mumkin. Bunday holda siz kompozit asosiy kalitni olasiz.

Misol

"O'qituvchi" jadvalini yarating:

CREATE TABLE instruktori (ID CHAR (5), nomi VARCHAR (20) NO NULL, bo'lim_nomi VARCHAR (20), ish haqi NUMERIC (8,2), BIRINCHI KEY (ID), FOREIGN KEY (dept_name) REFERANSLAR bo'limi (dept_name));

8. Jadval ma'lumotlari

Jadval ustunlari haqidagi turli ma'lumotlarni (qiymat turi, kalit yoki yo'q) quyidagi buyruq yordamida ko'rishingiz mumkin:

TA’SFRI BERING ;

9. Jadvalga ma'lumotlarni qo'shish

INSERT INTO (, , , ...) QIYMATLAR ( , , , …);

Jadvaldagi har bir ustunga ma'lumotlarni qo'shishda ustun nomlarini ko'rsatish shart emas.

INSERT INTO QIYMATLAR ( , , , …);

10. Jadval ma'lumotlarini yangilash

YANGILANISH SET = , = , ... QAYERDA ;

11. Jadvaldan barcha ma'lumotlarni olib tashlash

OʻCHIRISH ;

12. Jadvalni o'chirish

JADVALNI QILISH ;

So'rovlarni bajarish uchun buyruqlar

13. TANLASH

SELECT ma'lum bir jadvaldan ma'lumotlarni olish uchun ishlatiladi:

TANLASH , ,… FROM ;

Quyidagi buyruq jadvaldagi barcha ma'lumotlarni ko'rsatishi mumkin:

dan * dan tanlang ;

14. DISTINCT ni tanlang

Jadval ustunlari ikki nusxadagi ma'lumotlarni o'z ichiga olishi mumkin. Faqat takrorlanmaydigan ma'lumotlarni olish uchun SELECT DISTINCT-dan foydalaning.

DISTINCT TANLASH , ,… FROM ;

15. QAYERDA

Soʻrovda shartlarni belgilash uchun SELECTda WHERE kalit soʻzidan foydalanishingiz mumkin:

TANLASH , ,… FROM QAYERDA ;

So'rovda quyidagi shartlar ko'rsatilishi mumkin:

  • matnni taqqoslash;
  • raqamli qiymatlarni solishtirish;
  • mantiqiy amallar VA (va), OR (yoki) va EMAS (inkor).

Misol

Quyidagi buyruqlarni sinab ko'ring. QAYERDA ko'rsatilgan shartlarga e'tibor bering:

SELECT * FROM kurs WHERE dept_name = 'Komp. Ilmiy '; * QAYoDA kursdan kreditlar> 3 ni tanlang; TANLASH * Kursdan WHERE dept_name = "Komp. Sci." VA kreditlar> 3;

16. GURUH BY

GROUP BY bandi ko'pincha chiqish qiymatlarini guruhlash uchun COUNT, MAX, MIN, SUM va AVG kabi jamlangan funktsiyalar bilan ishlatiladi.

TANLASH , ,… FROM GURUH BO'YICHA ;

Misol

Keling, har bir fakultet uchun kurslar sonini ko'rsatamiz:

COUNT TANI (kurs_identifikatori), bo'lim_nomini FROM kurs GROUP BY dept_name;

17. EGA

HAVING kalit so'zi SQL ga qo'shildi, chunki WHERE ni yig'ish funktsiyalari bilan ishlatib bo'lmaydi.

TANLASH , , ... FROM GURUH BO'YICHA EGA

Misol

Keling, bir nechta kursga ega fakultetlarni sanab o'tamiz:

COUNT ta (kurs_identifikatori), boʻlim_nomini SOʻNTA (kurs_identifikatori) boʻlgan kurs GURUHIDAN boʻlim_nomi boʻyicha TANLASH> 1;

18. Buyurtma berish

ORDER BY so'rov natijalarini kamayish yoki o'sish tartibida tartiblash uchun ishlatiladi. Agar ASC yoki DESC saralash usuli ko'rsatilmagan bo'lsa, ORDER BY o'sish tartibida tartiblanadi.

TANLASH , ,… FROM Buyurtma berish , , ... ASC |DESC;

Misol

Kurslar roʻyxatini kreditlar sonining oʻsish va kamayish tartibida koʻrsatamiz:

TANLASH * Kurs TARTIBI BO'YICHA kreditlar; TANLASH * Kurs TARTIBI BO'YICHA kreditlar DESC;

19. Orasida

BETWEEN ma'lumotlar qiymatlarini belgilangan diapazondan tanlash uchun ishlatiladi. Raqamli va matn qiymatlari, shuningdek sanalardan foydalanish mumkin.

TANLASH , ,… FROM QAYERDA ORASIDA VA ;

Misol

Maoshi 50 000 dan ortiq, lekin 100 000 dan kam bo'lgan o'qituvchilar ro'yxati:

* O'qituvchidan TANGLAING: ish haqi 50000 dan 100000 gacha;

20. LAYK

LIKE operatori WHERE da shunga o'xshash qiymat uchun qidiruv sxemasini belgilash uchun ishlatiladi.

LIKE-da ikkita bepul operator qo'llaniladi:

  • % (hech biri, bir yoki bir nechta belgilar);
  • _ (bitta belgi).
TANLASH , ,… FROM QAYERDA LAYK ;

Misol

Keling, nomi "to" ni o'z ichiga olgan kurslar ro'yxatini va nomi "CS-" bilan boshlanadigan kurslar ro'yxatini ko'rsatamiz:

* Kursdan ‘% dan %’ gacha sarlavhani TANLASH; * Kursdan QAYERDA kurs_id "CS -___" SIYAH TANLASH;

21. IN

WHERE bandi uchun bir nechta qiymatlarni belgilash uchun IN dan foydalanishingiz mumkin:

TANLASH , ,… FROM QAYERDA IN ( , , …);

Misol

Keling, Comp dan talabalar ro'yxatini ko'rsatamiz. Fizika fanlari va fani. Ing.:

SELECT * FROM student WHERE dept_name IN ('Komp. Sci.', 'Fizika', 'Elec. Eng.');

22. QO'SHILING

JOIN ikki yoki undan ortiq jadvallarni umumiy atributlardan foydalangan holda ulash uchun ishlatiladi. Quyidagi rasmda SQL-da birlashtirishning turli usullari ko'rsatilgan. Chap tashqi birlashma va o'ng tashqi birlashma o'rtasidagi farqga e'tibor bering:

TANLASH , ,… FROM QO'SHILING ON = ;

1-misol

Biz barcha kurslar ro'yxatini va fakultetlar haqida tegishli ma'lumotlarni ko'rsatamiz:

TANLASH * Kursdan JOIN bo'limi ON course.dept_name = Department.dept_name;

2-misol

Keling, barcha kerakli kurslarni va ular haqida tafsilotlarni sanab o'tamiz:

prereq.course_id, sarlavha, bo'lim_nomi, kreditlar, prereq_id NI TANGLASH prereq FROM CHAP TAShQIY JOIN kursi ON prereq.course_id = course.course_id;

3-misol

Kerakli yoki kerak emasligidan qat'i nazar, barcha kurslar ro'yxatini ko'rsatamiz:

Kurs.kurs_identifikatori, sarlavha, boʻlim_nomi, kreditlar, prereq_id NI TANGLASH prereq FROM RIGHT OUTER JOIN course ON prereq.course_id = course.course_id;

23. Ko'rish

View - ifodani bajarish orqali yaratilgan virtual SQL jadvali. U qatorlar va ustunlarni o'z ichiga oladi va oddiy SQL jadvaliga juda o'xshaydi. Ko'rish har doim ma'lumotlar bazasidan eng so'nggi ma'lumotlarni ko'rsatadi.

Yaratilish

KOʻRISH YARATISH TANLANGAN AS , ,… FROM QAYERDA ;

Oʻchirilmoqda

KO'RISH ;

Misol

Keling, 3 kreditli kurslardan iborat ko'rinish yarataylik:

24. Agregat funktsiyalari

Ushbu funktsiyalar ko'rib chiqilayotgan ma'lumotlar bilan bog'liq umumiy natijani olish uchun ishlatiladi. Quyidagi agregat funktsiyalar keng tarqalgan:

  • COUNT (col_name) - qatorlar sonini qaytaradi;
  • SUM (col_name) - berilgan ustundagi qiymatlar yig'indisini qaytaradi;
  • AVG (col_name) - berilgan ustunning o'rtacha qiymatini qaytaradi;
  • MIN (col_name) - berilgan ustun uchun eng kichik qiymatni qaytaradi;
  • MAX (col_name) - berilgan ustun uchun eng katta qiymatni qaytaradi.

25. Ichki ichki so‘rovlar

Ichki quyi so'rovlar - bu SQL so'rovlari bo'lib, ular boshqa so'rovga joylashtirilgan SELECT, FROM va WHERE bandlarini o'z ichiga oladi.

Misol

Keling, 2009 yil kuzida va 2010 yil bahorida o'qitiladigan kurslarni topamiz:

SELECT DISTINCT course_id FROM bo'limi WHERE semestr = 'Kuz' VA yil = 2009 AND course_id IN (SELECT course_id FROM bo'limi WHERE semestr = 'Bahor' VA yil = 2010);