Nafaqat aloqalar to'plamini, balki har bir munosabatlar to'g'risidagi ma'lumotlar, shu jumladan: Har bir munosabat uchun sxema. Har bir atribut bilan bog'liq bo'lgan qiymatlar domeni. Butunlik uchun cheklovlar Har bir munosabatlar uchun saqlanadigan ko'rsatkichlar to'plami. Har bir munosabat uchun xavfsizlik va avtorizatsiya to'g'risidagi ma'lumotlar. Diskdagi har bir aloqaning jismoniy saqlash tuzilishi.
Yuqoridagi jadvaldagi eslatmalar:
Ma'lumotlar turi ustunning qaysi turini ushlab turishini belgilaydi. Mavjud barcha ma'lumotlar turlari to'g'risida to'liq ma'lumot olish uchun bizning ma'lumot turlari ma'lumotnomamizga o'ting.
Ma'lumotlar turidan so'ng, har bir ustun uchun boshqa ixtiyoriy xususiyatlarni belgilashingiz mumkin:
NULL - Har bir satrda ushbu ustun uchun qiymat bo'lishi kerak, nol qiymatlarga ruxsat berilmaydi
DEFAULT qiymati - boshqa qiymat o'tmaganda qo'shilgan birlamchi qiymatni o'rnating
UNSIGNED - Raqam turlari uchun ishlatiladi, saqlangan ma'lumotni musbat raqamlarga va nolga cheklaydi
AUTO INCREMENT - MySQL avtomatik ravishda har safar yangi yozuv qo'shilganda maydon qiymatini 1 ga oshiradi
PRIMARY KEY - Jadvaldagi satrlarni aniq aniqlash uchun ishlatiladi. PRIMARY KEY sozlamali ustun ko'pincha ID raqamidir va ko'pincha AUTO_INCREMENT bilan ishlatiladi
Har bir jadvalda asosiy kalit ustun bo'lishi kerak (bu holda: "id" ustuni). Jadvaldagi har bir yozuv uchun uning qiymati noyob bo'lishi kerak.
Vazifalar jadvalida quyidagi ustunlar mavjud: Task_id - bu avtomatik ravishda oshiriladigan ustun. Agar vazifa_id ustuniga qiymat ko'rsatmasdan jadvalga yangi qator qo'shish uchun INSERT operatoridan foydalansangiz, MySQL avtomatik ravishda 1 dan boshlab task_id uchun ketma-ket butun sonni hosil qiladi. Sarlavha ustuni o'zgaruvchan belgilar qatori ustuni bo'lib, maksimal uzunligi 255 ni tashkil etadi. Bu ustunga uzunligi 255 dan oshadigan satrni kiritishingiz mumkin emasligini anglatadi. NO NULL cheklovi ustun NULL qabul qilmasligini bildiradi. Boshqacha qilib aytganda, ushbu ustunni kiritganingizda yoki yangilaganingizda NULL bo'lmagan qiymatni berishingiz kerak. Boshlanish sanasi va muddati - bu DATE ustunlari. Ushbu ustunlarda NULL cheklovi yo'qligi sababli ular NULLni saqlashlari mumkin. Start_date ustunida joriy sananing standart qiymati mavjud. Boshqacha qilib aytganda, agar siz yangi qatorni kiritishda start_date ustuniga qiymat bermasangiz, start_date ustuni ma'lumotlar bazasi serverining joriy sanasini oladi. Holat va ustuvorlik NULL ga ruxsat bermaydigan TINYINT ustunlaridir. Ta'rif ustuni NULL ni qabul qiladigan TEXT ustunidir. Yaratilgan_at bu vaqtni odatiy qiymat sifatida qabul qiladigan TIMESTAMP ustunidir. Task_id - vazifalar jadvalining asosiy kaliti. Bu task_id ustunidagi qiymatlar jadvaldagi satrlarni aniq belgilaydi degan ma'noni anglatadi.
Ma'lumot turlari
Ma'lumot turlari jadvalning ma'lum bir ustunida saqlanishi mumkin bo'lgan ma'lumotlarning xususiyatini belgilaydi
MySQL ma'lumotlarning uchta asosiy toifasiga ega, aniqrog'i
Raqamli,
Matn
Sana / vaqt.
Raqamli ma'lumotlar turlari
Raqamli ma'lumotlarni saqlash uchun raqamli ma'lumotlar turlaridan foydalaniladi. Ma'lumotlaringiz oralig'i raqamli turlarning pastki va yuqori chegaralari o'rtasida ekanligiga ishonch hosil qilish juda muhimdir.
TINYINT () -128 dan 127 gacha normal
0 dan 255 gacha YO'Q.
SMALLINT () -32768 dan 32767 gacha normal
0 dan 65535 gacha YO'Q.
MEDIUMINT () -8388608 dan 8388607 gacha normal
0 dan 16777215 gacha YO'Q.
INT () -2147483648 dan 2147483647 gacha normal
0 dan 4294967295 gacha YO'Q.
BIGINT () -9223372036854775808 dan 9223372036854775807 gacha normal
0 dan 18446744073709551615 BILMAYDI.
FLOAT Suzuvchi o'nlik kasrli kichik taxminiy raqam.
DOUBLE (,) Suzuvchi o'nlik kasrli katta son.
DECIMAL (,) DOUBLE simli sifatida saqlanib, o'nlik kasrlarni olishga imkon beradi. Valyuta qiymatlarini saqlash uchun tanlov.
Matn ma'lumotlari turlari
Ma'lumotlar turi toifasi nomi shundan dalolat beradiki, bular matn qiymatlarini saqlash uchun ishlatiladi Har doim matnli ma'lumotlarning uzunligi maksimal uzunlikdan oshmasligiga ishonch hosil qiling.
CHAR () uzunligi 0 dan 255 gacha belgilar.
VARCHAR () uzunligi 0 dan 255 gacha bo'lgan o'zgaruvchan qism.
TINYTEXT maksimal uzunligi 255 ta belgidan iborat satr.
TEXT Maksimal uzunligi 65535 belgidan iborat satr.
BLOB maksimal uzunligi 65535 belgidan iborat satr.
MEDIUMTEXT - maksimal uzunligi 16777215 ta belgi.
MEDIUMBLOB Maksimal uzunligi 16777215 ta belgi.
LONGTEXT uzunligi 4294967295 belgidan iborat bo'lgan sim.
LONGBLOB Maksimal uzunligi 4294967295 belgidan iborat sim.
Sana / vaqt
Sana YYYY-OM-DD
DATETIME YYYY-MM-DD HH: MM: SS
TIMESTAMP YYYYMMDDHHMMSS
TIME SO: MM: SS
Yuqoridagilardan tashqari MySQL-da ba'zi boshqa ma'lumotlar turlari mavjud.
ENUM Oldindan belgilangan matn qiymatlari ro'yxatidan tanlangan matn qiymatini saqlash uchun
SET Bu oldindan belgilangan matn qiymatlari ro'yxatidan tanlangan matn qiymatlarini saqlash uchun ham ishlatiladi. U bir nechta qiymatlarga ega bo'lishi mumkin.
BOOL qiymatlarini saqlash uchun ishlatiladigan TINYINT (1) uchun BOOL sinonimi
BINARY CHAR-ga o'xshash, farq matnlar ikkilik formatda saqlanadi.
VARBINARY VARCHAR singari, farqi shundaki, matnlar ikkilik formatda saqlanadi.
Mysql ma'lumotlar bazasini yaratish uchun qadamlar
Ma'lumotlar bazasini ikki shaklda yarating
1) Oddiy SQL so'rovini bajarish bilan
2) MySQL Workbench-da oldinga muhandislik yordamida
Ushbu qo'llanmada siz quyidagilarni bilib olasiz:
Ma'lumotlar bazasini yarating
MySQL jadvallarini tuzish
Ma'lumot turlari
Oldinga muhandislik MySQL ishchi ER diagrammasi
SQL boshlanuvchisi sifatida avval so'rov usulini ko'rib chiqamiz.
Ma'lumotlar bazasini yarating
CREATE DATABASE - ma'lumotlar bazasini yaratish uchun SQL buyrug'i.
Tasavvur qiling, "filmlar" nomi bilan ma'lumotlar bazasini yaratishingiz kerak. Siz buni quyidagi SQL buyrug'ini bajarib bajarishingiz mumkin.
DATABASE filmlarini yaratish;
Eslatma: CREATE DATABASE o'rniga CREATE SCHEMA buyrug'ini ishlatishingiz mumkin
Endi SQL so'rovimizni yanada ko'proq parametrlar va spetsifikatsiyalar qo'shib yaxshilaylik.
BOR EMAS
Bitta MySQL server bir nechta ma'lumotlar bazalariga ega bo'lishi mumkin. Agar siz bitta MySQL serveriga kira olmasangiz yoki bir nechta ma'lumotlar bazalari bilan ishlashingiz kerak bo'lsa, mavjud ma'lumotlar bazasi nomi bilan yangi ma'lumotlar bazasini yaratishga urinish ehtimoli mavjud. AGAR YO'Q bo'lsa, ma'lumotlar bazasini yaratishdan oldin MySQL serveriga o'xshash nomli ma'lumotlar bazasining mavjudligini tekshirish to'g'risida ko'rsatma bering.
Agar mavjud bo'lmaganda ma'lumotlar bazasi, agar berilgan nom mavjud ma'lumotlar bazasi nomiga zid bo'lmasa, yaratiladi. Agar mavjud bo'lmasalar, MySQL xato qiladi.
DATABASEIF YARATISH filmlar mavjud emas;
Taqqoslash va belgilar to'plami
Taqqoslash - bu taqqoslashda ishlatiladigan qoidalar to'plami. Ko'p odamlar ingliz tilidan boshqa ma'lumotlarni saqlash uchun MySQL-dan foydalanadilar. Ma'lumotlar MySQL-da ma'lum belgilar to'plamidan foydalanib saqlanadi. Belgilar to'plamini viz, server, ma'lumotlar bazasi, jadval va ustunlarning turli darajalarida aniqlash mumkin.
Taqqoslash qoidalarini tanlashingiz kerak, ular o'z navbatida tanlangan belgilar to'plamiga bog'liq.
Masalan, Latin1 belgilar to'plami, shved harflarini sezmaydigan buyurtma bo'lgan latin1_swedish_ci taqqoslash usulidan foydalanadi.
BOShQA MA'LUMOTLARNI yarating, agar CHARACTER SET lotin1 latin1_swedish_ci
Arab, xitoy va hk kabi mahalliy tillardan foydalanganda eng yaxshi amaliyot bu Unicode (utf-8) belgilar to'plamini tanlash bo'lib, u bir nechta to'plamlarga ega yoki faqat odatiy holatga utf8-general-ci.
Barcha to'plamlar va belgilar to'plamlarining ro'yxatini bu erda topishingiz mumkin
SQL buyrug'ini bajarib, mavjud ma'lumotlar bazalari ro'yxatini ko'rishingiz mumkin.
MA'LUMOTLARNI KO'RING
ALTER TABLE jadvalning tuzilishini o'zgartiradi. Masalan, ustunlarni qo'shish yoki o'chirish, indekslarni yaratish yoki yo'q qilish, mavjud ustunlar turini o'zgartirish yoki ustunlarning nomini o'zgartirish yoki jadvalning o'zi. Bundan tashqari, jadval uchun ishlatiladigan saqlash mexanizmi yoki jadval sharhi kabi xususiyatlarni o'zgartirishingiz mumkin.
ALTER TABLE-dan foydalanish uchun jadval uchun ALTER, CREATE va INSERT imtiyozlari kerak. Jadvalni o'zgartirish uchun eski jadvalda ALTER va DROP, yangi jadvalda ALTER, CREATE va INSERT talab qilinadi.
Jadval nomidan keyin qanday o'zgartirishlar kiritilishini ko'rsating. Agar hech kim berilmasa, ALTER TABLE hech narsa qilmaydi.
Ruxsat berilgan ko'pgina o'zgartirishlar uchun sintaksis CREATE TABLE iboralariga o'xshash. ustun_dasturlash shartlari CREATE TABLE uchun ADD va CHANGE uchun bir xil sintaksisdan foydalanadi. Qo'shimcha ma'lumot olish uchun 13.1.20-bo'limga qarang, "Jadvalni tuzing".
COLUMN so'zi majburiy emas va RENAME COLUMN-dan tashqari (ustun nomini o'zgartirish operatsiyasini RENAME jadval nomini o'zgartirish operatsiyasidan ajratish uchun) tashqari, qoldirilishi mumkin.
Qo'shish, ALTER, DROP va CHANGE so'zlarini vergul bilan ajratilgan bitta ALTER TABLE gapida ruxsat etiladi. Bu standart SQL-ga MySQL kengaytmasi bo'lib, u ALTER TABLE iborasi uchun har bir banddan faqat bittasiga ruxsat beradi.
jadvalning tuzilishini o'zgartiradi. Masalan, ustunlarni qo'shish yoki o'chirish, indekslarni yaratish yoki yo'q qilish, mavjud ustunlar turini o'zgartirish yoki ustunlarning nomini o'zgartirish yoki jadvalning o'zi. Bundan tashqari, jadval uchun ishlatiladigan saqlash mexanizmi yoki jadval sharhi kabi xususiyatlarni o'zgartirishingiz mumkin.
ALTER TABLE-dan foydalanish uchun jadval uchun ALTER, CREATE va INSERT imtiyozlari kerak. Jadvalni o'zgartirish uchun eski jadvalda ALTER va DROP, yangi jadvalda ALTER, CREATE va INSERT talab qilinadi.
Jadval nomidan keyin qanday o'zgartirishlar kiritilishini ko'rsating. Agar hech kim berilmasa, ALTER TABLE hech narsa qilmaydi.
Ruxsat berilgan ko'pgina o'zgartirishlar uchun sintaksis CREATE TABLE iboralariga o'xshash. ustun_dasturlash shartlari CREATE TABLE uchun ADD va CHANGE uchun bir xil sintaksisdan foydalanadi. Qo'shimcha ma'lumot olish uchun 13.1.20-bo'limga qarang, "Jadvalni tuzing".
COLUMN so'zi majburiy emas va RENAME COLUMN-dan tashqari (ustun nomini o'zgartirish operatsiyasini RENAME jadval nomini o'zgartirish operatsiyasidan ajratish uchun) tashqari, qoldirilishi mumkin.
Qo'shish, ALTER, DROP va CHANGE so'zlarini vergul bilan ajratilgan bitta ALTER TABLE gapida ruxsat etiladi. Bu standart SQL-ga MySQL kengaytmasi bo'lib, u ALTER TABLE iborasi uchun har bir banddan faqat bittasiga ruxsat beradi. Masalan, bitta iborada bir nechta ustunlarni tashlash uchun quyidagilarni bajaring:
ALTER Jadval t2 TUZISH UCHUN c, YUQORI KUMUSH d;
Agar saqlash mexanizmi ALTER TABLE urinishini qo'llab-quvvatlamasa, ogohlantirish paydo bo'lishi mumkin. Bunday ogohlantirishlarni SHOW OGOHLANTIRISH bilan ko'rsatish mumkin. 13.7.7.40 bo'limiga qarang, "Ogohlantirishlar to'g'risidagi bayonotni ko'rsating". ALTER TABLE nosozliklarni bartaraf etish bo'yicha ma'lumot uchun B.4.6.1 bo'limiga qarang, "ALTER TABLE bilan bog'liq muammolar".
Yaratilgan ustunlar to'g'risida ma'lumot olish uchun 13.1.9.2-qism, "ALTER TABLE va generated Column" -ga qarang.
Foydalanish misollari uchun 13.1.9.3 bo'limiga qarang, "ALT TABLE Misollar".
MySQL 8.0.17-dagi InnoDB va keyinchalik keySpart spetsifikatsiyasi yordamida JSON ustunlariga ko'p qiymatli indekslarni qo'shishni qo'llab-quvvatlaydi (CAST json_path AS ARRAY turi). Ko'p qiymatli indekslarni yaratish va ulardan foydalanish, shuningdek ko'p o'lchovli indekslarni cheklash va cheklash to'g'risida batafsil ma'lumot olish uchun Ko'p qiymatli indekslarga qarang.
Mysql_info () C API funktsiyasi yordamida siz ALTER TABLE tomonidan nechta qator nusxa ko'chirilganligini bilib olishingiz mumkin. 28.6.6.36 bo'limiga qarang, "mysql_info ()".
Ushbu bo'limda quyidagi mavzular ostida tavsiflangan ALTER TABLE bayonotiga qo'shimcha jihatlar mavjud:
Jadval parametrlari
Ishlash va kosmik talablar
Muvofiqlikni boshqarish
Ustunlarni qo'shish va tushirish
Ustunlarni qayta nomlash, qayta belgilash va tartibini o'zgartirish
Birlamchi kalitlar va ko'rsatkichlar
Chet el kalitlari va boshqa cheklovlar
Belgilar to'plamini o'zgartirish
InnoDB jadvallarini import qilish
MyISAM jadvallari uchun qator buyurtmasi
Bo'linishni sozlash
Jadval parametrlari
table_options, CREATE TABLE bayonotida ishlatilishi mumkin bo'lgan jadval parametrlarini bildiradi, masalan ENGINE, AUTO_INCREMENT, AVG_ROW_LENGTH, MAX_ROWS, ROW_FORMAT yoki TABLESPACE.
Jadvalning barcha variantlarini tavsiflash uchun 13.1.20-bo'limga qarang, "Jadvalni tuzing". Ammo, ALTER TABLE jadval variantlari sifatida berilganida, DATA DIRECTORY va INDEX DIRECTORY xususiyatlarini inkor etadi. ALTER TABLE ularga faqat qismlarga ajratish variantlari sifatida ruxsat beradi va sizdan FILE imtiyoziga ega bo'lishingizni talab qiladi.
ALTER TABLE bilan jadval variantlarini ishlatish bitta jadval xususiyatlarini o'zgartirishning qulay usulini ta'minlaydi. Masalan:
Agar hozirda t1 InnoDB jadvali bo'lmasa, ushbu ibora saqlash mexanizmini InnoDB ga o'zgartiradi:
ALTER Jadval t1 ENGINE = InnoDB;
Jadvallarni InnoDB saqlash dvigateliga almashtirishda ko'rib chiqish uchun 15.6.1.5-bo'limga qarang, "MyISAM-dan InnoDB-ga jadvallarni o'zgartirish".
ENGINE yozuvini ko'rsatganingizda, ALTER TABLE jadvalni qayta tiklaydi. Agar jadvalda belgilangan saqlash mexanizmi bo'lsa ham, bu to'g'ri.
Mavjud InnoDB jadvalida ALTER TABLE tbl_name ENGINE = INNODB-ni ishga tushirish "null" ALTER TABLE operatsiyasini bajaradi, bu 15.11.4-bo'limda "Jadvalni defragmentatsiya qilish" bo'limida tavsiflangan InnoDB jadvalini defragatsiya qilish uchun ishlatilishi mumkin. InnoDB jadvalida ALTER TABLE tbl_name FORCE-ni ishlatish xuddi shu funktsiyani bajaradi.
ALTER TABLE tbl_name ENGINE = INNODB va ALTER TABLE tbl_name FORCE onlayn DDL dan foydalaning. Qo'shimcha ma'lumot olish uchun 15.12 bo'limiga qarang, "InnoDB va Online DDL".
Jadvalning saqlash dvigatelini o'zgartirishga urinish natijasi kerakli saqlash dvigatelining mavjudligiga yoki "Server SQL rejimlari" 5.1.11-da tavsiflangan NO_ENGINE_SUBSTITUTION SQL rejimiga bog'liq.
Ma'lumotlarning tasodifiy yo'qolishining oldini olish uchun ALTER TABLE-dan jadvalni saqlash mexanizmini MERGE yoki BLACKHOLE ga o'zgartirish mumkin emas.
Siqilgan qatorlarni saqlash formatidan foydalanish uchun InnoDB jadvalini o'zgartirish uchun:
Ishlash va kosmik talablar
ALTER TABLE operatsiyalari quyidagi algoritmlardan biri yordamida ishlov beriladi:
COPY: Operatsiyalar asl jadvalning nusxasida bajariladi va jadval ma'lumotlari asl jadvaldan yangi jadval qatoriga ketma-ket ko'chiriladi. Bir vaqtning o'zida DML-ga ruxsat berilmaydi.
INPLACE: Operatsiyalar jadval ma'lumotlarini nusxalashdan saqlanishadi, ammo jadvalni joyida tiklashlari mumkin. Jadvaldagi eksklyuziv metadata qulflanishi operatsiyani tayyorlash va bajarish bosqichlarida qisqa vaqt ichida olinishi mumkin. Odatda, parallel DML qo'llab-quvvatlanadi.
INSTANT: Operatsiyalar faqat ma'lumotlar lug'atida metadata o'zgartiradi. Tayyorlash va ijro etish paytida hech qanday maxsus metadata qulflari olinmaydi va jadval ma'lumotlari ta'sirlanmaydi va operatsiyalar bir zumda amalga oshiriladi. Bir vaqtning o'zida DML-ga ruxsat beriladi. (MySQL 8.0.12 da tanishtirilgan)
ALGORITHM bandi ixtiyoriydir. Agar ALGORITHM bandi o'tkazib yuborilgan bo'lsa, MySQL saqlash mexanizmlari uchun ALGORITHM = INSTANT va ALTER TABLE bandlaridan foydalanadi. Aks holda, ALGORITHM = INPLACE ishlatiladi. Agar ALGORITHM = INPLACE qo'llab-quvvatlanmasa, ALGORITHM = COPY ishlatiladi.
ALGORITHM gapini ko'rsatish operatsiyani bajarish uchun belgilangan algoritmni uni qo'llab-quvvatlaydigan omillar va saqlash mexanizmlari uchun ishlatilishini talab qiladi, yoki boshqa xato bilan ishlamay qolishi kerak. ALGORITHM = DEFAULTni belgilash, ALGORITHM gapini o'tkazib yuborish bilan bir xil.
COPY algoritmidan foydalanadigan ALTER TABLE operatsiyalari jadvalni o'zgartiradigan boshqa operatsiyalarni bajarilishini kutishadi. Jadval nusxasiga o'zgartirishlar kiritilgandan so'ng ma'lumotlar nusxa ko'chiriladi, asl jadval o'chiriladi va jadval nusxasi asl jadval nomi bilan o'zgartiriladi. ALTER TABLE operatsiyasi bajarilganda, asl jadval boshqa sessiyalar tomonidan o'qilishi mumkin (qisqa vaqt bundan mustasno). ALTER TABLE operatsiyasi boshlangandan so'ng boshlangan jadvalga yangilanadi va yozadi, yangi jadval tayyor bo'lgunga qadar to'xtatiladi, so'ng avtomatik ravishda yangi jadvalga yo'naltiriladi. Jadvalning vaqtinchalik nusxasi asl jadvalning ma'lumotlar bazasi katalogida yaratilgan, agar u boshqa katalogda joylashgan ma'lumotlar bazasiga jadvalni ko'chiradigan RENAME TO operatsiyas
Do'stlaringiz bilan baham: |