نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی
  • خانه
  • ویندوز 10
  • SQL: یک زبان جهانی برای کار با پایگاه های داده. مقدمه ای بر MS SQL Server و T-SQL

SQL: یک زبان جهانی برای کار با پایگاه های داده. مقدمه ای بر MS SQL Server و T-SQL

زبان برنامه نویسی

SQL (Structured Query Language - Structured Query Language) یک زبان مدیریت پایگاه داده برای پایگاه های داده رابطه ای است. SQL خود یک زبان برنامه نویسی کامل تورینگ نیست، اما استاندارد آن به شما امکان می دهد پسوندهای رویه ای برای آن ایجاد کنید که عملکرد آن را به یک زبان برنامه نویسی کامل گسترش دهد.

این زبان در دهه 1970 تحت نام "SEQUEL" برای سیستم مدیریت پایگاه داده System R (DBMS) ایجاد شد. بعداً برای جلوگیری از تضاد علامت تجاری به "SQL" تغییر نام داد. در سال 1979، SQL برای اولین بار به عنوان یک محصول تجاری، Oracle V2 منتشر شد.

اولین استاندارد زبان رسمی توسط ANSI در سال 1986 و ISO در سال 1987 به تصویب رسید. از آن زمان، چندین نسخه دیگر از استاندارد ایجاد شده است، برخی از آنها نسخه های قبلی را با تغییرات جزئی تکرار می کنند، برخی دیگر ویژگی های مهم جدیدی به خود گرفته اند.

علیرغم وجود استانداردها، اکثر پیاده سازی های رایج SQL به قدری متفاوت هستند که به ندرت می توان کد را از یک DBMS به DBMS دیگر بدون تغییرات عمده منتقل کرد. این به دلیل طولانی بودن و پیچیدگی استاندارد و همچنین عدم وجود مشخصات در برخی زمینه های مهم اجرا می باشد.

SQL به عنوان یک راه ساده و استاندارد برای بازیابی و دستکاری داده های موجود در یک پایگاه داده رابطه ای ایجاد شد. بعداً پیچیده‌تر از آنچه در نظر گرفته شده بود به ابزاری برای توسعه‌دهنده تبدیل شد، نه کاربر نهایی. در حال حاضر، SQL (بیشتر توسط Oracle پیاده سازی شده است) محبوب ترین زبان پایگاه داده باقی مانده است، اگرچه تعدادی جایگزین وجود دارد.

SQL از چهار بخش مجزا تشکیل شده است:

  1. زبان تعریف داده (DDL) برای تعریف ساختارهای داده ذخیره شده در پایگاه داده استفاده می شود. دستورات DDL به شما این امکان را می دهد که اشیاء فردی را در پایگاه داده ایجاد، اصلاح و حذف کنید. انواع اشیاء معتبر به DBMS مورد استفاده بستگی دارد و معمولاً شامل پایگاه‌های داده، کاربران، جداول و تعدادی از اشیاء پشتیبانی کوچکتر مانند نقش‌ها و نمایه‌ها می‌شود.
  2. زبان دستکاری داده ها (DML) برای بازیابی و اصلاح داده ها در پایگاه داده استفاده می شود. عبارات DML به شما امکان می دهد داده ها را در جداول بازیابی، درج، اصلاح و حذف کنید. گاهی اوقات عبارات انتخابی بازیابی اطلاعات بخشی از DML در نظر گرفته نمی شوند زیرا وضعیت داده ها را تغییر نمی دهند. تمام عبارات DML اعلانی هستند.
  3. زبان تعریف دسترسی به داده (DCL) برای کنترل دسترسی به داده ها در پایگاه داده استفاده می شود. عبارات DCL برای امتیازات اعمال می شود و به شما اجازه می دهد تا حقوق اعمال برخی از عبارات DDL و DML را برای اشیاء پایگاه داده خاص اعطا یا لغو کنید.
  4. زبان کنترل تراکنش (TCL) برای کنترل پردازش تراکنش ها در پایگاه داده استفاده می شود. به طور معمول، عبارات TCL شامل commit برای انجام تغییرات ایجاد شده در طول تراکنش، بازگشت به عقب برای لغو آنها، و savepoint برای تقسیم تراکنش به چندین بخش کوچکتر است.

لازم به ذکر است که SQL یک پارادایم برنامه نویسی اعلانی را پیاده سازی می کند: هر عبارت فقط اقدام لازم را توصیف می کند و DBMS تصمیم می گیرد که چگونه آن را انجام دهد. عملیات اولیه لازم برای انجام عمل را برنامه ریزی کرده و آنها را اجرا می کند. با این حال، برای استفاده مؤثر از قدرت SQL، توسعه‌دهنده باید بداند که چگونه DBMS هر عبارت را تجزیه می‌کند و طرح اجرای آن را ایجاد می‌کند.

مثال ها:

سلام دنیا!:

مثال برای Oracle 10g SQL، Oracle 11g SQL

رشته «Hello, World!» از جدول داخلی dual انتخاب شده است که برای جستارهایی که نیازی به دسترسی به جداول واقعی ندارند استفاده می شود.

"Hello World!" از دوگانه ;

فاکتوریل:

مثال برای Oracle 10g SQL، Oracle 11g SQL

SQL از حلقه‌ها، بازگشت‌ها یا توابع تعریف‌شده توسط کاربر پشتیبانی نمی‌کند. این مثال یک راه حل ممکن را با استفاده از:

  • سطح شبه ستون برای ایجاد شبه جداول t1 و t2 حاوی اعداد از 1 تا 16،
  • مجموع تابع مجموع، که به شما امکان می دهد عناصر یک مجموعه را بدون استفاده صریح از یک حلقه جمع کنید.
  • و توابع ریاضی ln و exp، که به شما امکان می‌دهند محصول (برای محاسبه فاکتوریل مورد نیاز) را با مجموع (ارائه شده توسط SQL) جایگزین کنید.

رشته "0! = 1 اینچ در مجموعه ردیف های حاصل گنجانده نمی شود، زیرا تلاش برای ارزیابی ln(0) منجر به یک استثنا می شود.

اعداد فیبوناچی:

مثال برای Oracle 10g SQL، Oracle 11g SQL

SQL از حلقه‌ها یا بازگشتی پشتیبانی نمی‌کند، و الحاق فیلدها از ردیف‌های مختلف در یک جدول یا پرس و جو، یک تابع تجمیع استاندارد نیست. این مثال استفاده می کند:

  • فرمول بینه و توابع ریاضی ROUND، POWER و SQRT برای محاسبه عدد فیبوناچی n-ام.
  • سطح شبه ستون برای ایجاد یک شبه جدول t1 حاوی اعداد از 1 تا 16.
  • تابع داخلی SYS_CONNECT_BY_PATH برای الحاق مرتب اعداد دریافتی.

SELECT REPLACE (MAX (SYS_CONNECT_BY_PATH (fib || ", " , "/" ))، "/" , "" ) || "..." fiblist FROM ( SELECT n , fib , ROW_NUMBER () OVER (ORDER BY n ) r FROM (انتخاب n , دور ((قدرت ((1 + sqrt (5 )) * 0 . 5 , n ) - قدرت ((1 - sqrt (5 )) * 0 . 5 , n )) / sqrt (5 )) fib from (انتخاب سطح n از اتصال دوگانه توسط سطح<= 16 ) t1 ) t2 ) START WITH r = 1 CONNECT BY PRIOR r = r - 1 ;

سلام دنیا!:

مثال برای نسخه های Microsoft SQL Server 2005 , Microsoft SQL Server 2008 R2 , Microsoft SQL Server 2012 , MySQL 5 , PostgreSQL 8.4 , PostgreSQL 9.1 , sqlite 3.7.3

"Hello World!" ;

فاکتوریل:

مثال برای Microsoft SQL Server 2005 , Microsoft SQL Server 2008 R2 , Microsoft SQL Server 2012

تعریف بازگشتی فاکتوریل استفاده می شود که از طریق یک پرس و جو بازگشتی پیاده سازی می شود. هر خط از پرس و جو شامل دو فیلد عددی n و n! است و هر خط بعدی با استفاده از داده های قبلی محاسبه می شود.

شما می توانید فاکتوریل های عدد صحیح را فقط تا 20 محاسبه کنید!. وقتی می خواهید عدد 21 را محاسبه کنید! یک "خطای سرریز حسابی" رخ می دهد، به عنوان مثال. سرریز رخ می دهد.

برای اعداد واقعی فاکتوریل 100 محاسبه می شود! (برای انجام این کار، در مثال، باید در خط 3، bigint را با float جایگزین کنید)

اعداد فیبوناچی:

مثال برای Microsoft SQL Server 2005 , Microsoft SQL Server 2008 R2 , Microsoft SQL Server 2012

یک تعریف تکراری از اعداد فیبوناچی استفاده می شود که از طریق یک پرس و جو بازگشتی پیاده سازی می شود. هر خط از پرس و جو شامل دو عدد مجاور در دنباله است و خط بعدی به عنوان (آخرین عدد، مجموع اعداد) خط قبلی محاسبه می شود. بنابراین، همه اعداد به جز اولین و آخرین دو بار اتفاق می‌افتند، بنابراین تنها اعداد اول هر ردیف در نتیجه گنجانده می‌شوند.

فاکتوریل:

مثال برای Oracle 10g SQL، Oracle 11g SQL

این مثال استفاده از دستور مدل را نشان می‌دهد که از Oracle 10g در دسترس است، که اجازه می‌دهد رشته‌های پرس و جو به عنوان عناصر آرایه در نظر گرفته شوند. هر خط شامل دو فیلد است - خط شماره n و f فاکتوریل آن.

n || "!=" || f فاکتوریل از مدل دوگانه، تمام ابعاد ردیف‌ها را با (0 d) اندازه‌گیری می‌کند (0 f, 1 n) قوانین تکرار (17) (f [تکرار_تعداد] = رمزگشایی (تعداد_تکرار، 0، 1، f [تکرار_شماره - 1] * تعداد_تکرار) , n [ iteration_number ] = iteration_number );

اعداد فیبوناچی:

مثال برای Oracle 10g SQL، Oracle 11g SQL

این مثال استفاده از دستور مدل را نشان می‌دهد که از Oracle 10g در دسترس است، که اجازه می‌دهد رشته‌های پرس و جو به عنوان عناصر آرایه در نظر گرفته شوند. هر خط شامل دو فیلد است - خود عدد فیبوناچی و الحاق همه اعداد کوچکتر یا مساوی با آن. الحاق تکراری اعداد در همان پرس و جوی که در آن تولید می شوند آسان تر و سریعتر از تجمیع به عنوان یک عملیات مستقل است.

حداکثر (ها) || را انتخاب کنید ", ..." from (انتخاب s از مدل دوگانه برگرداندن همه ابعاد ردیف ها با ( 0 d ) اقدامات (cast (" " as varchar2 (200)) s , 0 f ) قواعد iterate (16) (f [ iteration_number ] = رمزگشایی (تکرار_تعداد , 0 , 1 , 1 , 1 , f [تکرار_تعداد - 1 ] + f [تکرار_تعداد - 2 ])، s [تکرار_تعداد] = رمزگشایی (تکرار_تعداد , 0 , to_char (f [تکرار_تعداد_تکرار])، 1 ] || "، " || to_char (f [ تکرار_شماره ])) ) );

فاکتوریل:

مثال برای MySQL نسخه 5

concat (cast (t2 . n به عنوان char )، "!= " , cast (exp (sum (log (t1 . n )))) به عنوان char )) از ( انتخاب @ i := @ i + 1 AS n از TABLE , (انتخاب @ i := 0 ) به عنوان حد sel1 16 ) t1 , ( @ j : = @ j + 1 AS n را از TABLE انتخاب کنید , ( @ j := 0 ) را به عنوان sel1 حد 16 انتخاب کنید ) t2 که در آن t1 . n<= t2 . n group by t2 . n

اعداد فیبوناچی:

مثال برای MySQL نسخه 5

TABLE را با هر جدولی که می توانید به آن دسترسی داشته باشید، جایگزین کنید، مانند mysql.help_topic.

concat (group_concat (جداکننده f "، ")، "، ...") را از (انتخاب @ f := @ i + @ j به عنوان f، @ i := @ j، @ j := @ f از TABLE انتخاب کنید، (انتخاب @ i := 1، @ j := 0 ) sel1 حد 16 ) t

سلام دنیا!:

مثال برای Oracle 10g SQL، Oracle 11g SQL

این مثال از یک بلوک PL/SQL ناشناس استفاده می کند که پیامی را با استفاده از بسته dbms_output در خروجی استاندارد چاپ می کند.

dbms_output را شروع کنید. put_line ("سلام، جهان!"); پایان ؛

فاکتوریل:

مثال برای Oracle 10g SQL، Oracle 11g SQL

این مثال محاسبه فاکتوریل تکراری را با استفاده از PL/SQL نشان می دهد.

n عدد را اعلام کنید := 0 ; fnumber := 1 ; شروع در حالی که (n<= 16 ) loop dbms_output . put_line (n || "! = " || f ); n : = n + 1 ; f : = f * n ; end loop ; end ;

اعداد فیبوناچی:

مثال برای Oracle 10g SQL، Oracle 11g SQL

این مثال از تعریف تکراری اعداد فیبوناچی استفاده می کند. اعداد از قبل محاسبه شده در ساختار داده varray، مشابه یک آرایه ذخیره می شوند.

بردار نوع اعلان varray (16) عدد است. بردار fib := vector(); شماره من svarchar2(100); شروع فیب . گسترش (16); فیب (1) := 1 ; فیب (2) := 1 ; s:=fib(1) || "، " || fib(2) || "، "؛ برای i در 3 .. 16 حلقه فیب (i ) : = fib (i - 1 ) + fib (i - 2 ); s := s || fib(i) || "، "؛ حلقه پایانی؛ dbms_output . put_line(s || "..."); پایان ؛

معادله درجه دوم:

مثال برای Oracle 10g SQL، Oracle 11g SQL

این مثال با SQL*Plus، TOAD و PL/SQL Developer تست شده است.

SQL خالص به شما امکان می دهد متغیرها را در طول اجرای پرس و جو به عنوان متغیرهای جایگزین وارد کنید. برای تعریف چنین متغیری، نام آن (در این مورد A، B و C) باید هر بار که به متغیر اشاره می‌شود، با علامت علامت و جلوی آن استفاده شود. هنگامی که یک پرس و جو اجرا می شود، از کاربر خواسته می شود که مقادیر تمام متغیرهای جایگزین استفاده شده در پرس و جو را وارد کند. پس از وارد کردن مقادیر، هر ارجاع به چنین متغیری با مقدار خود جایگزین می شود و کوئری حاصل اجرا می شود.

روش های مختلفی برای وارد کردن مقادیر برای متغیرهای جایگزین وجود دارد. در این مثال، اولین ارجاع به هر متغیر به جای یک آمپرسند، با یک آمپرسند دوتایی && جلوتر می‌آید. بنابراین، مقدار هر متغیر فقط یک بار وارد می‌شود و همه ارجاع‌های بعدی به آن با همان مقدار جایگزین می‌شوند (هنگام استفاده از یک آمپر در SQL*Plus، مقدار هر مرجع به همان متغیر باید جداگانه وارد شود) . در PL/SQL Developer، ارجاع به همه متغیرها باید قبل از یک & باشد، در غیر این صورت خطای ORA-01008 "Not all variables bound" رخ می دهد.

خط اول مثال، کاراکتر جداکننده اعشاری را مشخص می کند، که هنگام تبدیل اعداد ریشه به رشته استفاده می شود.

درخواست خود از چهار درخواست مختلف تشکیل شده است. هر پرس و جو رشته ای حاوی نتیجه محاسبات را در یکی از موارد (A=0، D=0، D>0 و D برمی گرداند.<0) и ничего — в трех остальных случаях. Результаты всех четырех запросов объединяются, чтобы получить окончательный результат.

تغییر مجموعه جلسات NLS_NUMERIC_CHARACTERS = ". "; "نه یک معادله درجه دوم" را انتخاب کنید. ans از dual که در آن && A = 0 union "x =" || را انتخاب کنید to_char (-&& B / 2 /& A ) از dual Where & A != 0 و & B *& B - 4 *& A *&& C = 0 union "x1 =" را انتخاب کنید || to_char ((-& B + sqrt (& B *& B - 4 *& A *& C )) / 2 /& A ) || "، x2 = " || to_char (-& B - sqrt (& B *& B - 4 *& A *& C )) / 2 /& A از dual Where & A != 0 and & B *& B - 4 *& A *& C > 0 اتحاد "x1 = (" || to_char (-& B / 2 /& A ) || "," || to_char (sqrt (-& B *& B + 4 *& A *& C ) / 2 /& A ) || ")، " || "x2 = (" || to_char (-& B / 2 /& A ) || "," || to_char (- sqrt (-& B *& B + 4 *& A *& C ) / 2 /& A ) || ")" از dual Where & A != 0 and & B *& B - 4 *& A *& C< 0 ;

زبان پرس و جو ساختار (SQL) در نتیجه توسعه مدل داده های رابطه ای ایجاد شد و در حال حاضر استاندارد زبان واقعی برای DBMS رابطه ای است. زبان SQL امروزه توسط تعداد زیادی DBMS از انواع مختلف پشتیبانی می شود.

نام زبان SQL معمولا با حروف "es-q-el" تلفظ می شود. گاهی اوقات از نام یادگاری "See-Quel" استفاده می شود.

زبان SQL (با کمترین تلاش از طرف او) ویژگی های زیر را در اختیار کاربر قرار می دهد:

ایجاد پایگاه داده و جداول با توضیح کامل ساختار آنها

انجام عملیات دستکاری داده های اولیه: درج، تغییر، حذف داده ها

پرس و جوهای ساده و پیچیده را انجام دهید.

زبان SQL از نظر رابطه کامل است.

ساختار و نحو دستورات آن بسیار ساده است و زبان خود جهانی است، یعنی نحو و ساختار دستورات آن هنگام انتقال از یک DBMS به DBMS دیگر تغییر نمی کند.

زبان SQL دو جزء اصلی دارد:

DDL (زبان تعریف داده) برای تعریف ساختارهای پایگاه داده و کنترل دسترسی به داده ها

DML (زبان دستکاری داده ها) برای بازیابی و به روز رسانی داده ها استفاده می شود.

زبان SQL غیر رویه ای است، یعنی هنگام استفاده از آن، باید مشخص کنید که چه اطلاعاتی باید به دست آید، نه اینکه چگونه می توان آن را به دست آورد. دستورات SQL کلمات معمولی انگلیسی (SELECT، INSERT و غیره) هستند. ابتدا عبارات SQL DML را در نظر بگیرید:

SELECT - واکشی داده ها از پایگاه داده

INSERT - درج داده ها در جدول

به روز رسانی - به روز رسانی داده ها در یک جدول

DELETE - حذف داده ها از جدول

عبارت SELECT

دستور SELECT اقداماتی معادل عملیات جبر رابطه ای زیر انجام می دهد: انتخاب، پروژه و پیوستن.

ساده ترین پرس و جوی SQL با استفاده از آن به صورت زیر است:

col_name را از TBL انتخاب کنید

پس از کلمه کلیدی select، فهرستی از ستون‌هایی که با کاما از هم جدا شده‌اند، وجود دارد که داده‌های آنها در نتیجه پرس و جو برگردانده می‌شود. کلمه کلیدی from مشخص می کند که داده ها از کدام جدول (یا نمای) بازیابی می شوند.

نتیجه یک کوئری انتخابی همیشه یک جدول است که به آن جدول نتیجه می گویند. علاوه بر این، نتایج یک پرس و جو اجرا شده با دستور select می تواند برای ایجاد یک جدول جدید استفاده شود. اگر نتایج دو پرس و جو در برابر جداول مختلف فرمت یکسانی داشته باشند، می توان آنها را در یک جدول ترکیب کرد. همچنین جدول به دست آمده در نتیجه یک پرس و جو می تواند موضوع پرس و جوهای بعدی شود.

برای انتخاب تمام ستون ها و تمام ردیف های یک جدول، کافی است یک SELECT * FROM tbl صادر کنید.

یک جدول محصول حاوی اطلاعات قیمت برای محصولات مختلف را در نظر بگیرید:

درخواست نتیجه

انتخاب * از محصول؛

کل محصول جدول خواهد بود.

شما می توانید ستون های خاصی از یک جدول را با استفاده از یک پرس و جو انتخاب کنید

SELECT col1, col2, … , coln FROM tbl;

بنابراین، نتیجه پرس و جو

نوع انتخاب، قیمت از محصول؛

یک میز وجود خواهد داشت

در صورت نیاز به تغییر ترتیب ستون‌ها در جدول حاصل، از لیست ستون‌ها در دستور select نیز استفاده می‌شود:

برای انتخاب تنها ردیف‌های جدولی که محدودیت‌های خاصی را برآورده می‌کنند، از کلمه کلیدی ویژه Where استفاده می‌شود و به دنبال آن یک شرط منطقی وجود دارد. اگر ورودی این شرط را برآورده کند، در نتیجه لحاظ می شود. در غیر این صورت، ورودی حذف می شود.

به عنوان مثال، انتخاب آن دسته از محصولات از جدول Product که قیمت آنها شرط Price را برآورده می کند<3200, можно осуществить, используя запрос

انتخاب * از محصول که در آن قیمت<3200;

نتیجه او:

شرط را می توان با استفاده از عملگرهای منطقی NOT , AND, OR, XOR ترکیب و ترکیب کرد، به عنوان مثال: که در آن id_ Price>500 AND Price<3500. Допускается также использование выражений в условии: where Price>(1+1) و ثابت های رشته ای: Where name= "autobalances".

استفاده از ساختار BETWEEN var1 AND var2 به شما امکان می دهد بررسی کنید که آیا مقادیر یک عبارت در بازه var1 تا var2 قرار می گیرند (از جمله این مقادیر):

انتخاب * از محصولی که قیمت آن بین 3000 تا 3500 است.

بر اساس قیاس با عملگر NOT BETWEEN، عملگر NOT IN وجود دارد.

نام ستون های مشخص شده در عبارت SELECT را می توان تغییر نام داد. برای این کار از کلمه کلیدی AS استفاده می شود که البته می توان آن را حذف کرد زیرا به طور ضمنی به آن اشاره شده است. مثلا یک درخواست

SELECT Type AS model، Type_id AS num FROM محصول که در آن Type_id =3 است

باز خواهد گشت (نام مستعار باید بدون نقل قول نوشته شود):

عملگر LIKE برای مقایسه یک رشته با یک الگو است:

SELECT * از tbl که در آن col_name مانند "abc" است

این کوئری فقط رکوردهایی را برمی گرداند که حاوی مقدار رشته abc در ستون col_name هستند.

دو کاراکتر عام در الگو مجاز است: "_" و "%". اولی جایگزین یک کاراکتر دلخواه در الگو می شود و دومی جایگزین دنباله ای از کاراکترهای دلخواه می شود. بنابراین، "abc%" با هر رشته ای که با abc شروع می شود، "abc_" با هر رشته ای از 4 کاراکتر که با abc شروع می شود، "%z" با هر رشته ای که با z ختم می شود مطابقت دارد، و در نهایت "%z%" - دنباله هایی از کاراکترهای حاوی z.

می توانید تمام رکوردها را در جدول Product که در آن مقدار Type با حرف "a" شروع می شود به صورت زیر پیدا کنید:

انتخاب * از محصول که در آن نوع LIKE "a%";

ترازو کامیون

اگر رشته جستجو حاوی یک کاراکتر عام باشد، باید یک کاراکتر کنترلی را در عبارت ESCAPE مشخص کنید. این کاراکتر کنترل باید در الگو قبل از کاراکتر عام استفاده شود، که نشان می‌دهد دومی باید به عنوان یک کاراکتر معمولی در نظر گرفته شود. به عنوان مثال، اگر می خواهید تمام مقادیر حاوی کاراکتر "_" را در یک فیلد خاص پیدا کنید، الگوی "%_%" همه رکوردها را از جدول برمی گرداند. در این مورد، الگو باید به صورت زیر نوشته شود:

"%|_%" ESCAPE "|"

برای بررسی اینکه آیا مقدار با رشته "20% مطابقت دارد" می توانید از عملگر زیر استفاده کنید:

مانند "20#%" ESCAPE "#"

عملگر IS NULL به شما امکان می دهد عدم وجود (حضور) یک مقدار NULL را در فیلدهای یک جدول بررسی کنید. استفاده از عملگرهای مقایسه معمولی در این موارد می‌تواند منجر به نتایج نادرست شود، زیرا مقایسه در برابر NULL منجر به ناشناخته (ناشناخته) می‌شود. بنابراین، شرایط انتخاب باید به شکل زیر باشد:

جایی که col_name به جای Where col_name=NULL NULL است.

نتیجه واکشی پیش‌فرض رکوردها را به همان ترتیبی که در پایگاه داده ذخیره می‌شوند، برمی‌گرداند. اگر می خواهید رکوردها را بر اساس یکی از ستون ها مرتب کنید، باید از عبارت ORDER BY استفاده کنید که پس از آن نام این ستون مشخص می شود:

SELECT * FROM tbl ORDER BY col_name.

در نتیجه این پرس و جو، رکوردها به ترتیب صعودی مقدار ویژگی col_name برگردانده می شوند.

سوابق را می توان بر اساس چندین ستون نیز مرتب کرد. برای انجام این کار، نام آنها باید بعد از ORDER BY مشخص شود و با کاما از هم جدا شوند:

SELECT * FROM tbl ORDER BY col_name1، col_name2.

رکوردها بر اساس فیلد col_name1 مرتب خواهند شد. اگر چندین رکورد با یک مقدار در ستون col_name1 وجود داشته باشد، آنها بر اساس فیلد col_name2 مرتب می شوند.

اگر می خواهید رکوردها را به ترتیب معکوس مرتب کنید (مثلاً بر اساس تاریخ نزولی)، باید ORDER BY col_name DESC را مشخص کنید.

برای مرتب سازی مستقیم، کلمه کلیدی ASC وجود دارد که به عنوان مقدار پیش فرض پذیرفته می شود.

اگر نتیجه انتخاب شامل صدها و هزاران رکورد باشد، خروجی و پردازش آنها زمان قابل توجهی را می گیرد.

بنابراین، اطلاعات اغلب صفحه بندی شده و به صورت تکه ای به کاربر ارائه می شود. صفحه بندی با کلمه کلیدی محدود و به دنبال آن تعداد ورودی هایی برای نمایش استفاده می شود. کوئری زیر 10 رکورد اول را بازیابی می کند و همزمان در فیلد col_name1 مرتب می شود:

SELECT * FROM tbl ORDER BY col_name1 DESC LIMIT 10

برای استخراج 10 رکورد بعدی، از کلمه کلیدی limit با دو مقدار استفاده می شود: اولی موقعیت نمایش نتیجه را مشخص می کند، و دومی تعداد رکوردهای بازیابی را مشخص می کند:

SELECT * FROM tbl ORDER BY col_name1 DESC LIMIT 10,10

برای بازیابی 10 رکورد بعدی، از ساختار LIMIT 20، 10 استفاده کنید.

امروزه، دوره های SQL "برای آدمک ها" روز به روز محبوب تر می شوند. این را می توان بسیار ساده توضیح داد، زیرا در دنیای مدرن می توانید به طور فزاینده ای خدمات وب به اصطلاح "پویا" را مشاهده کنید. آنها با یک پوسته نسبتاً انعطاف پذیر متمایز می شوند و بر اساس همه برنامه نویسان تازه کار هستند که تصمیم می گیرند سایت ها را اختصاص دهند، اول از همه، در دوره های SQL "برای آدمک" ثبت نام کنند.

چرا این زبان را مطالعه کنید؟

اول از همه، SQL به منظور ایجاد بیشتر برنامه های کاربردی متنوع برای یکی از محبوب ترین موتورهای وبلاگ امروزی - وردپرس - آموزش داده می شود. پس از گذراندن چند درس ساده، از قبل می توانید پرس و جوهایی با هر پیچیدگی ایجاد کنید، که فقط سادگی این زبان را تایید می کند.

SQL چیست؟

یا یک زبان پرس و جو ساختاریافته، با یک هدف واحد ایجاد شده است: تعیین دسترسی به آنها و پردازش آنها در دوره های زمانی نسبتاً کوتاه. اگر مقدار SQL را بدانید، برای شما مشخص خواهد شد که این سرور متعلق به زبان های به اصطلاح "غیر رویه ای" است. یعنی قابلیت های آن فقط شامل شرح هر مؤلفه یا نتیجه ای است که می خواهید در آینده در سایت مشاهده کنید. اما چه زمانی نشان نمی دهد که دقیقاً چه نتایجی قرار است به دست آید. هر درخواست جدید در این زبان، همانطور که بود، یک "افزونه" اضافی است. به ترتیبی که آنها در پایگاه داده وارد می شوند، کوئری ها اجرا می شوند.

چه رویه هایی را می توان با استفاده از این زبان انجام داد؟

با وجود سادگی، پایگاه داده SQL به شما اجازه می دهد تا طیف گسترده ای از پرس و جوها را ایجاد کنید. پس اگر این زبان برنامه نویسی مهم را یاد بگیرید چه کاری می توانید انجام دهید؟

  • ایجاد انواع جداول؛
  • دریافت، ذخیره و اصلاح داده های دریافتی؛
  • ساختار جداول را به صلاحدید خود تغییر دهید.
  • اطلاعات دریافت شده را در بلوک های منفرد ترکیب کنید.
  • محاسبه داده های دریافتی؛
  • حفاظت کامل از اطلاعات را تضمین کنید.

چه دستوراتی در این زبان محبوب ترین هستند؟

اگر تصمیم دارید در دوره های SQL "for dummies" شرکت کنید، اطلاعات دقیقی در مورد دستوراتی که در ایجاد پرس و جو با آن استفاده می شود، دریافت خواهید کرد. رایج ترین آنها امروزه عبارتند از:

  1. DDL دستوری است که داده ها را تعریف می کند. برای ایجاد، تغییر و حذف طیف گسترده ای از اشیاء در پایگاه داده استفاده می شود.
  2. DCL فرمانی است که داده ها را مدیریت می کند. برای دسترسی کاربران مختلف به اطلاعات موجود در پایگاه داده و همچنین استفاده از جداول یا نماها استفاده می شود.
  3. TCL تیمی است که انواع تراکنش ها را مدیریت می کند. هدف اصلی آن تعیین مسیر معامله است.
  4. DML - داده های دریافتی را دستکاری می کند. وظیفه آن این است که به کاربر اجازه دهد اطلاعات مختلف را از پایگاه داده منتقل کند یا در آنجا وارد کند.

انواع امتیازاتی که در این سرور وجود دارد

امتیازها آن دسته از اقداماتی هستند که یک کاربر خاص می تواند مطابق با وضعیت خود انجام دهد. البته حداقلی ترین، ورود به سیستم معمولی است. البته، امتیازات ممکن است در طول زمان تغییر کنند. موارد قدیمی حذف و موارد جدید اضافه خواهند شد. امروزه، همه کسانی که در دوره‌های SQL Server "for dummies" شرکت می‌کنند، می‌دانند که چندین نوع اقدام مجاز وجود دارد:

  1. نوع شی - کاربر مجاز است هر دستوری را فقط در رابطه با یک شی خاص که در پایگاه داده است اجرا کند. در عین حال، امتیازات برای اشیاء مختلف متفاوت است. آنها همچنین نه تنها به یک کاربر خاص، بلکه به جداول نیز گره خورده اند. اگر شخصی با استفاده از توانایی های خود جدولی ایجاد کند، مالک آن محسوب می شود. بنابراین، اعطای امتیازات جدید به سایر کاربران مرتبط با اطلاعات موجود در آن در حق اوست.
  2. نوع سیستم به اصطلاح حق چاپ داده است. کاربرانی که چنین امتیازاتی را دریافت کرده اند می توانند اشیاء مختلفی را در پایگاه داده ایجاد کنند.

تاریخچه ایجاد SQL

این زبان توسط آزمایشگاه تحقیقاتی IBM در سال 1970 ایجاد شد. در آن زمان نام آن تا حدودی متفاوت بود (SEQUEL) اما پس از چند سال استفاده تغییر کرد، کمی کاهش یافت. با وجود این، حتی امروزه نیز بسیاری از کارشناسان شناخته شده جهان در زمینه برنامه نویسی، هنوز این نام را به روش قدیمی تلفظ می کنند. SQL تنها با هدف اختراع زبانی ساخته شد که به قدری ساده باشد که حتی کاربران عادی اینترنت نیز بتوانند بدون هیچ مشکلی آن را یاد بگیرند. یک واقعیت جالب این است که در آن زمان SQL تنها چنین زبانی نبود. در کالیفرنیا، گروه دیگری از متخصصان انگرس مشابهی را توسعه دادند، اما هرگز فراگیر نشد. قبل از سال 1980، انواع مختلفی از SQL وجود داشت که فقط کمی با یکدیگر متفاوت بودند. برای جلوگیری از سردرگمی، یک نسخه استاندارد در سال 1983 ایجاد شد که امروزه نیز محبوب است. دوره های SQL "برای dummies" به شما این امکان را می دهد که در چند هفته اطلاعات بیشتری در مورد این سرویس بیاموزید و آن را به طور کامل درک کنید.

زبان پرس و جو ساختاریافته (زبان پرس و جو ساختاریافته) یا SQL- یک زبان برنامه نویسی اعلامی برای استفاده در پایگاه های داده شبه رابطه ای است. بسیاری از ویژگی‌های اولیه SQL توسط محاسبات چندگانه تصاحب شده‌اند، اما الحاقات اخیر به SQL شامل جبر رابطه‌ای بیشتر و بیشتر می‌شود.
SQL در ابتدا توسط IBM ایجاد شد، اما بسیاری از فروشندگان گویش های خود را توسعه داده اند. این استاندارد در سال 1986 توسط موسسه استاندارد ملی آمریکا (ANSI) و در سال 1987 توسط ISO به تصویب رسید. در استاندارد زبان برنامه نویسی SQL، ANSI بیان کرد که تلفظ رسمی SQL "es cue el" است. با این حال، بسیاری از متخصصان پایگاه داده از تلفظ "عامیانه" "Sequel" استفاده کردند که نشان دهنده نام اصلی زبان، Sequel است، که بعداً به دلیل تضاد علامت تجاری و نامگذاری در IBM تغییر کرد. برنامه نویسی برای مبتدیان.
زبان برنامه نویسی SQLدر سال 1992 بازنگری شد و این نسخه با نام SQL-92 شناخته می شود. سپس سال 1999 دوباره مورد بازنگری قرار گرفت تا به SQL تبدیل شود: 1999 (AKA SQL3). برنامه نویسی برای آدمک ها SQL 1999 از اشیایی پشتیبانی می کند که قبلاً در نسخه های دیگر پشتیبانی نمی شدند، اما تنها در اواخر سال 2001، تنها چند سیستم مدیریت پایگاه داده از پیاده سازی SQL پشتیبانی می کردند: 1999.
SQL، اگرچه به عنوان ANSI و ISO تعریف شده است، اما دارای تغییرات و پسوندهای بسیاری است که بیشتر آنها دارای ویژگی های خاص خود هستند، مانند پیاده سازی "PL/SQL" شرکت Oracle یا پیاده سازی Sybase و مایکروسافت به نام "Transact-SQL" که می تواند کاربر را گیج می کند.اصول برنامه نویسی. همچنین غیر معمول نیست که پیاده‌سازی‌های تجاری پشتیبانی از ویژگی‌های کلیدی استاندارد، مانند انواع داده‌ها مانند تاریخ و زمان را به نفع برخی از ویژگی‌های خود حذف کنند. در نتیجه، برخلاف ANSI C یا ANSI Fortran، که معمولاً می‌توانند از پلتفرم به پلتفرم بدون تغییرات ساختاری عمده منتقل شوند، پرس‌و‌جوهای زبان برنامه‌نویسی SQL به ندرت می‌توانند بین سیستم‌های پایگاه داده مختلف بدون تغییرات عمده منتقل شوند. اکثر افراد در زمینه پایگاه داده معتقدند که این عدم قابلیت همکاری عمدی است تا هر توسعه دهنده سیستم مدیریت پایگاه داده خود را ارائه دهد و خریدار را به یک پایگاه داده خاص گره بزند.
همانطور که از نام آن پیداست، زبان برنامه نویسی SQL برای یک هدف خاص و محدود طراحی شده است - پرس و جو از داده های موجود در یک پایگاه داده رابطه ای. به این ترتیب، این مجموعه ای از دستورالعمل های زبان برنامه نویسی برای ایجاد نمونه های داده است، نه یک زبان رویه ای مانند C یا BASIC، که برای حل طیف وسیع تری از مسائل طراحی شده اند. پسوندهای زبانی مانند "PL/SQL" برای رفع این محدودیت با افزودن عناصر رویه ای به SQL و در عین حال حفظ مزایای SQL طراحی شده اند. روش دیگر اجازه دادن به پرس و جوهای SQL برای تعبیه دستورات زبان برنامه نویسی رویه ای و تعامل با پایگاه داده است. به عنوان مثال، Oracle و دیگران از زبان جاوا در پایگاه داده پشتیبانی می کنند، در حالی که PostgreSQL اجازه می دهد تا توابع به زبان Perl، Tcl یا C نوشته شوند.
یک شوخی SQL: "SQL نه ساختار یافته است و نه یک زبان." نکته شوخی این است که SQL یک زبان تورینگ نیست. .

* از T را انتخاب کنید
C1 C2
1 آ
2 ب
C1 C2
1 آ
2 ب
C1 را از T انتخاب کنید
C1
1
2
C1 C2
1 آ
2 ب
* را از T انتخاب کنید که C1=1 است
C1 C2
1 آ

با توجه به جدول T، یک کوئری Select * از T همه عناصر تمام ردیف‌های جدول را نمایش می‌دهد.
از همان جدول، یک کوئری Select C1 از T عناصر ستون C1 تمام سطرهای جدول را نمایش می دهد.
از همان جدول، پرس و جو Select * از T که در آن C1=1 تمام عناصر تمام ردیف هایی را که مقدار ستون C1 "1" است، نمایش می دهد.

کلمات کلیدی SQL

کلمات SQL به چند گروه تقسیم می شوند.

اولی است زبان دستکاری داده یا DML(زبان مدیریت داده). DML زیرمجموعه ای از زبانی است که برای پرس و جو از پایگاه داده، افزودن، به روز رسانی و حذف داده ها استفاده می شود.

  • SELECT یکی از متداول ترین دستورات DML است که به کاربر اجازه می دهد یک پرس و جو را به عنوان توضیحی از نتیجه مورد نظر به عنوان یک مجموعه مشخص کند. پرس و جو مشخص نمی کند که نتایج چگونه باید ارائه شوند - ترجمه پرس و جو به شکلی که می تواند در پایگاه داده انجام شود، وظیفه سیستم پایگاه داده، به طور خاص تر بهینه ساز پرس و جو است.
  • INSERT برای افزودن ردیف ها (مجموعه رسمی) به جدول موجود استفاده می شود.
  • UPDATE برای تغییر مقادیر داده ها در یک ردیف جدول موجود استفاده می شود.
  • DELETE ردیف های موجود را برای حذف از جدول مشخص می کند.

می توان گفت که سه کلمه کلیدی دیگر در گروه DML قرار می گیرند:

  • BEGIN WORK (یا START TRANSACTION، بسته به گویش SQL) را می توان برای علامت گذاری شروع یک تراکنش پایگاه داده استفاده کرد که یا به طور کامل اجرا می شود یا اصلا اجرا نمی شود.
  • COMMIT بیان می کند که تمام تغییرات داده ها پس از انجام عملیات ذخیره می شوند.
  • ROLLBACK مشخص می‌کند که تمام تغییرات داده‌ها از زمان آخرین commit یا rollback باید نادیده گرفته شوند، تا جایی که به پایگاه داده به عنوان "بازگشت" متعهد شده است.

COMMIT و ROLLBACK در زمینه هایی مانند کنترل تراکنش ها و قفل ها استفاده می شوند. هر دو دستورالعمل تمام تراکنش‌های جاری (مجموعه‌های عملیات پایگاه داده) را تکمیل می‌کنند و تمام قفل‌های تغییر داده‌ها را در جداول آزاد می‌کنند. وجود یا عدم وجود یک BEGIN WORK یا عبارت مشابه به اجرای خاص SQL بستگی دارد.

دسته دوم از کلمات کلیدی به گروه اشاره دارد زبان تعریف داده یا DDL (زبان تعریف داده). DDLبه کاربر اجازه می دهد تا جداول جدید و عناصر مرتبط را تعریف کند. اکثر پایگاه های داده تجاری SQL دارای پسوندهای DDL خود هستند که امکان کنترل عناصر غیر استاندارد اما معمولا حیاتی یک سیستم خاص را فراهم می کند.
نکات اصلی DDL دستورات ایجاد و حذف هستند.

  • CREATE اشیاء (مانند جداول) را برای ایجاد در پایگاه داده مشخص می کند.
  • DROP مشخص می کند که کدام اشیاء موجود در پایگاه داده معمولاً برای همیشه حذف می شوند.
  • برخی از سیستم های پایگاه داده نیز از دستور ALTER پشتیبانی می کنند که به کاربر اجازه می دهد یک شی موجود را به روش های مختلف تغییر دهد، مانند اضافه کردن ستون ها به جدول موجود.

سومین گروه از کلمات کلیدی SQL هستند زبان کنترل داده یا DCL (زبان کنترل داده). DCLمسئولیت حقوق دسترسی به داده ها را بر عهده دارد و به کاربر اجازه می دهد تا کنترل کند چه کسی برای مشاهده یا دستکاری داده ها در پایگاه داده دسترسی دارد. در اینجا دو کلمه کلیدی اصلی وجود دارد:

  • GRANT - به کاربر اجازه می دهد تا عملیات را انجام دهد
  • ReEVOKE - توانایی کاربر برای انجام عملیات را حذف یا محدود می کند.

سیستم های پایگاه داده با استفاده از SQL

  • InterBase
  • MySQL
  • اوراکل
  • PostgreSQL
  • SQL Server

چگونه یک متخصص توسعه وب سایت شویم و شروع به کسب درآمد کنیم؟ دوره های ویدیویی ارزان با مقدمه مقدماتی.

زبان SQL

بنابراین به طور کلی با مفاهیم اولیه تئوری پایگاه داده آشنا شدیم که برای MySQL نصب و پیکربندی شد. اکنون زمان یادگیری نحوه دستکاری داده های ذخیره شده در پایگاه داده است. برای این ما نیاز داریم SQL - زبان پرس و جو ساخت یافته این زبان امکان ایجاد، ویرایش و حذف اطلاعات ذخیره شده در پایگاه داده، ایجاد پایگاه داده های جدید و موارد دیگر را فراهم می کند. SQL یک استاندارد ANSI (موسسه استاندارد ملی آمریکا) و ISO (سازمان استاندارد بین المللی) است.

کمی تاریخ

اولین استاندارد بین المللی زبان SQL در سال 1989 به تصویب رسید، اغلب نامیده می شود SQL/89 . از جمله کاستی های این استاندارد، اول از همه، این است که بسیاری از ویژگی های مهم را به عنوان تعریف شده در پیاده سازی تعیین می کند. این منجر به اختلافات زیادی در پیاده سازی زبان توسط سازندگان مختلف شد. علاوه بر این، شکایاتی در مورد عدم ارجاع در این استاندارد به جنبه های کاربردی زبان، مانند تعبیه آن در زبان برنامه نویسی C وجود داشته است.

استاندارد بعدی زبان بین المللی SQL در پایان سال 1992 به تصویب رسید و به نام SQL/92 . معلوم شد که بسیار دقیق تر و کامل تر از SQL/89 اگرچه بدون نقص نبود در حال حاضر اکثر سیستم ها تقریباً به طور کامل این استاندارد را اجرا می کنند. با این حال، همانطور که می دانید، پیشرفت نمی تواند متوقف شود و در سال 1999 استاندارد جدیدی ظاهر شد SQL :1999، همچنین به عنوان SQL3. SQL3 به عنوان "شی گرا" مشخص می شود SQL و اساس چندین سیستم مدیریت پایگاه داده شی-رابطه ای است (به عنوان مثال، Oracle's ORACLE8، Informix's Universal Server، و IBM's DB2 Universal Database). این استاندارد فقط یک ادغام نیست SQL-92 و تکنولوژی شی. این شامل تعدادی از پسوندهای سنتی است SQL و خود سند به گونه ای طراحی شده است که در آینده به کار موثرتری در زمینه استانداردسازی دست یابد.

تا آنجا که به MySQL مربوط می شود، SQL92 سطح ورودی است، شامل چندین برنامه افزودنی برای این استاندارد است و هدف آن پشتیبانی کامل از استاندارد ANSI SQL99 بدون کاهش سرعت و کیفیت کد است.

بعد، در مورد اصول اولیه زبان صحبت می کنیم SQL ، ما به اجرای آن در MySQL DBMS پایبند خواهیم بود.

عملگرهای زبان پایه SQL

توابع هر DBMS عبارتند از:

  1. ایجاد، حذف، تغییر پایگاه داده (DB)؛
  2. افزودن، تغییر، حذف، تخصیص حقوق کاربر؛
  3. ورود، حذف و تغییر داده ها در پایگاه داده (جدول و سوابق).
  4. واکشی داده ها از پایگاه داده

فقط مدیران پایگاه داده یا کاربران ممتاز به دو عملکرد اول دسترسی دارند. بیایید در نظر بگیریم که دو کار آخر چگونه حل می شوند (در واقع اینها هفت کار هستند).

قبل از انجام هر کاری با داده ها، باید جداولی ایجاد کنید که این داده ها در آنها ذخیره شوند، یاد بگیرید که چگونه ساختار این جداول را تغییر دهید و در صورت لزوم آنها را حذف کنید. برای این، در زبان SQL اپراتورها وجود دارد ایجاد جدول, جدول تغییراتو میز رها کردن.

عبارت CREATE TABLE

mysql>CREATE TABLE Persons (id INT PRIMARY KEY AUTO_INCREMENT، name_name VARCHAR(50)، last_name VARCHAR(100)، death_date INT، توضیحات TEXT، عکس INT، شهروندی CHAR(50) DEFAULT "Russia"); مثال 10.1. ایجاد جدول اشخاص

با دستور SHOW مخصوص MySql، می توانید پایگاه های داده موجود، جداول موجود در پایگاه داده و فیلدهای یک جدول را مشاهده کنید.

نمایش همه پایگاه های داده:

mysql>نمایش پایگاه های داده؛

پایگاه داده کتاب را به روز کنید و همه جداول را در آن نشان دهید:

mysql>usebook; mysql>نمایش جداول.

نمایش تمام ستون ها در جدول اشخاص:

mysql> نشان دادن ستون هایی از Personas.

بیانیه DROP TABLE

اپراتور میز رها کردنیک یا چند جدول را حذف می کند. تمام داده ها و تعاریف جدول حذف شده اند، بنابراین هنگام استفاده از این دستور باید مراقب باشید.

نحو:

DROP TABLE table_name [، table_name، ...]

در MySQL نسخه 3.22 به بعد، می توانید از کلمات کلیدی IF EXISTS برای ایجاد خطا در صورت عدم وجود جداول مشخص شده استفاده کنید.

گزینه های RESTRICT و CASCADE انتقال برنامه را از سایر DBMS ها آسان تر می کند. در حال حاضر فعال نیستند.

mysql> TABLE IF EXISTS را رها کنید افراد، مصنوعات، تست. مثال 10.2. با استفاده از عبارت DROP TABLE

بیانیه ALTER TABLE

اپراتور جدول تغییراتامکان تغییر ساختار جدول موجود را فراهم می کند. برای مثال، می‌توانید ستون‌ها را اضافه یا حذف کنید، فهرست‌ها را ایجاد یا رها کنید، یا نام ستون‌ها یا خود جدول را تغییر دهید. همچنین می توانید نظر جدول و نوع آن را تغییر دهید.

نحو:

ALTER TABLE جدول_نام alter_specification [, alter_specification ...]

می توانید تغییرات زیر را در جدول ایجاد کنید (همه آنها در alter_specification ثبت شده اند):

  • اضافه کردن یک فیلد:

    اضافه کردن ستون_تعریف

    افزودن (تعریف_ستون، تعریف_ستون، ...)

  • اضافه کردن شاخص ها:

    اضافه کردن INDEX [index_name] (index_column_name،...)یا ADD کلید اولیه (نام_ستون_شاخص، ...)یا ADD منحصر به فرد [index_name] (index_column_name،...)یا ADD FULLTEXT [index_name] (index_column_name،...)

  • تغییر میدان:

    ALTER column_name (SET DEFAULT به معنای واقعی | رها کردن پیش فرض)یا CHANGE old_column_name column_definitionیا تغییر ستون_تعریف

  • حذف یک فیلد، فهرست، کلید:

    DROP column_name DROP PRIMARY KEY DROP INDEX index_name

  • تغییر نام جدول:

    RENAME new_table_name

  • ترتیب مجدد فیلدهای جدول:

    سفارش بر اساس فیلد

    جدول_گزینه ها

اگر اپراتور جدول تغییراتبرای تغییر تعریف نوع یک ستون استفاده می شود، اما نام جدول را توصیف کنیدنشان می دهد که ستون تغییر نکرده است، پس شاید MySQL به یکی از دلایلی که در بخش خاصی از مستندات توضیح داده شده است، این اصلاح را نادیده می گیرد. به عنوان مثال، اگر بخواهید یک ستون VARCHAR را به CHAR تغییر دهید، اگر جدول دارای ستون های با طول متغیر دیگر باشد، MySQL به استفاده از VARCHAR ادامه خواهد داد.

اپراتور جدول تغییراتدر حین اجرا، یک کپی موقت از جدول اصلی ایجاد می کند. تغییر مورد نیاز روی نسخه انجام می شود، سپس جدول اصلی حذف می شود و جدول جدید تغییر نام می دهد. این کار به گونه ای انجام می شود که همه به روز رسانی ها، به جز موارد ناموفق، به طور خودکار وارد جدول جدید شوند. در زمان اجرا جدول تغییراتجدول اصلی توسط سایر مشتریان قابل خواندن است. عملیات به‌روزرسانی و نوشتن روی این جدول تا زمانی که جدول جدید آماده شود به حالت تعلیق در می‌آید. لازم به ذکر است که هنگام استفاده از هر گزینه دیگری برای ALTER TABLE به جز RENAME، MySQL همیشه یک جدول موقت ایجاد می کند، حتی اگر داده ها به شدت نیاز به کپی نداشته باشند (مثلاً هنگام تغییر نام یک ستون).

مثال 10.3. بیایید یک فیلد برای ثبت سال تولد فرد به جدول افراد ایجاد شده اضافه کنیم:

mysql> ALTER TABLE افراد اضافه کردن bday عدد صحیح بعد از last_name; مثال 10.3. افزودن فیلدی به جدول اشخاص برای ثبت سال تولد یک فرد

بنابراین، ما یاد گرفتیم که چگونه با جداول کار کنیم: آنها را ایجاد، حذف و اصلاح کنیم. حال بیایید دریابیم که چگونه با داده هایی که در این جداول ذخیره شده است، همین کار را انجام دهیم.

عبارت SELECT

اپراتور انتخاب کنیدبرای بازیابی ردیف های انتخاب شده از یک یا چند جدول استفاده می شود. یعنی با کمک آن، ستون‌ها یا عباراتی را که باید استخراج شوند (select_expressions)، جداول (table_references) که باید از آن‌ها انتخاب شود، و احتمالاً شرط (where_definition) را تنظیم می‌کنیم که داده‌های این ستون‌ها باید مطابقت داشته باشند. ، و ترتیبی که داده ها قرار است داده شوند.

علاوه بر این، اپراتور انتخاب کنیدمی توان از آن برای استخراج ردیف های محاسبه شده بدون ارجاع به جدول استفاده کرد. به عنوان مثال، برای محاسبه 2*2 برابر است، فقط باید بنویسید

mysql> SELECT 2*2;

ساختار اپراتور ساده شده انتخاب کنیدرا می توان به صورت زیر نشان داد:

براکت های مربع به این معنی است که استفاده از عملگر در آنها اختیاری است، نوار عمودی | به معنای لیستی از گزینه های ممکن است. کلمه کلیدی ORDER BY با نام ستون، یک عدد (عدد صحیح بدون علامت)، یا یک فرمول و روش ترتیب (صعودی - ASC، یا نزولی - DESC) دنبال می‌شود. پیش‌فرض ترتیب صعودی است.

وقتی در select_expression "*" می نویسیم به این معنی است که همه ستون ها را انتخاب می کنیم. علاوه بر "*"، توابعی مانند max، min و avg را می توان در select_expressions استفاده کرد.

مثال 10.4. از جدول اشخاص، تمام داده‌هایی را که فیلد first_name دارای مقدار «Alexander» است، انتخاب کنید:

عنوان و توضیحات (عنوان، توضیحات) مصنوع شماره 10 را انتخاب کنید:

عبارت INSERT

اپراتور درج کنیدردیف های جدید را در جدول موجود درج می کند. اپراتور چندین فرم دارد. پارامتر table_name در تمامی این فرم ها جدولی را که قرار است ردیف ها در آن وارد شوند را مشخص می کند. ستون هایی که مقادیر برای آنها تنظیم شده است در لیست نام ستون ها (column_name) یا در قسمت SET مشخص می شوند.

نحو:

    درج جدول_نام [(نام_ستون،...)] VALUES (عبارت،...)، (...)،...

    این فرم فرمان درج کنیدردیف ها را دقیقاً همانطور که در دستور مشخص شده است درج می کند. ستون ها در داخل پرانتز بعد از نام جدول و مقادیر آنها بعد از کلمه کلیدی VALUES لیست شده است.

    مثلا:

    mysql> INSERT INTO Persons (Last_name, Bday) VALUES("Ivanov", "1934");

    ردیفی را در جدول اشخاص درج می کند که در آن مقادیر نام خانوادگی (نام خانوادگی) و تاریخ تولد (bday) به ترتیب روی "Ivanov" و "1934" تنظیم می شود.

    نام جدول را درج کنید [(نام_ستون،...)] انتخاب کنید ...

    این فرم فرمان درج کنیدردیف های انتخاب شده از جدول یا جداول دیگری را درج می کند.

    مثلا:

    مقدار شناسه انتخاب شده از جدول اشخاص را در جدول Artifacts در قسمت "نویسنده" (نویسنده) درج می کند، با این شرط که نام خانوادگی فرد Ivanov باشد.

    INSERT table_name SET column_name=expression، column_name=expression، ...

    مثلا:

    mysql> INSERT INTO Persons SET last_name="Petrov", first_name="Ivan";

    این دستور مقدار "Petrov" را در جدول Persons در قسمت last_name و رشته "Ivan" را در قسمت first_name وارد می کند.

فرم درج ... مقادیر multilist در MySQL نسخه 3.22.5 و بالاتر پشتیبانی می شود. نحو بیان ستون_نام=عبارتدر MySQL نسخه 3.22.10 و بالاتر پشتیبانی می شود.

قراردادهای زیر اعمال می شود.

  • اگر لیست ستونی برای درج ... مقادیریا درج ... انتخاب کنید، سپس مقادیر همه ستون ها باید در لیست VALUES() یا در نتیجه کار تعریف شوند. انتخاب کنید. اگر ترتیب ستون ها در جدول نامشخص است، می توانید استفاده کنید نام جدول را توصیف کنید.
  • هر ستونی که صراحتاً مقداری داده نشده باشد، به مقدار پیش‌فرض خود تنظیم می‌شود. به عنوان مثال، اگر یک لیست مشخص از ستون ها، تمام ستون های یک جدول مشخص را مشخص نکند، ستون هایی که ذکر نشده اند به مقادیر پیش فرض خود تنظیم می شوند.
  • این عبارت می تواند به هر ستونی اشاره کند که قبلاً در لیست مقادیر ذکر شده است. برای مثال می توانید موارد زیر را مشخص کنید:

    mysql> INSERT INTO table_name (col1,col2) VALUES(15,col1*2);

    اما نمی توانید مشخص کنید:

    mysql> INSERT INTO table_name (col1,col2) VALUES(col2*2,15);

ما هنوز در مورد سه پارامتر اختیاری موجود در هر سه شکل دستور بحث نکرده‌ایم: LOW_PRIORITY، DELAYED، و IGNORE.

گزینه های LOW_PRIORITY و DELAYED زمانی استفاده می شوند که تعداد زیادی از کاربران روی یک جدول کار می کنند. آنها برای تعیین اولویت این عملیات بر عملیات سایر کاربران تجویز می کنند. اگر کلمه کلیدی LOW_PRIORITY مشخص شده باشد، این دستور اجرا می شود درج کنیدتا زمانی که سایر مشتریان خواندن این جدول را به پایان نرسانند به تعویق خواهد افتاد. در این حالت، کلاینت باید صبر کند تا دستور insert داده شده تکمیل شود، که در صورت استفاده زیاد از جدول، زمان قابل توجهی می‌برد. در مقابل فرمان درج با تاخیربه این سرویس گیرنده اجازه می دهد تا بدون توجه به سایر کاربران، فوراً عملیات را ادامه دهد.

اگر در یک تیم درج کنیدکلمه کلیدی IGNORE مشخص می شود، سپس تمام ردیف هایی که کلیدهای تکراری دارند اولیهیا منحصر بفرددر این جدول نادیده گرفته می شود و در جدول گنجانده نمی شود. اگر IGNORE را مشخص نکنید، این عملیات درج زمانی متوقف می شود که ردیفی پیدا شود که دارای مقدار تکراری یک کلید موجود است.

بیانیه به روز رسانی

نحو:

اپراتور به روز رسانیمقادیر ستون های جدول موجود را با توجه به مقادیر وارد شده به روز می کند. دستور SET مشخص می کند که کدام ستون ها باید اصلاح شوند و چه مقادیری باید در آنها تنظیم شوند. بند WHERE، در صورت وجود، مشخص می کند که کدام ردیف ها به روز شوند. در غیر این صورت، تمام ردیف ها به روز می شوند. اگر یک بند ORDER BY مشخص شده باشد، ردیف ها به ترتیب مشخص شده در آن به روز می شوند.

اگر کلمه کلیدی LOW_PRIORITY مشخص شده باشد، این دستور اجرا می شود به روز رسانیتا زمانی که سایر مشتریان خواندن این جدول را به پایان نرسانند به تاخیر افتاد.

اگر کلمه کلیدی IGNORE مشخص شده باشد، حتی اگر یک خطای کلید تکراری رخ دهد، دستور به روز رسانی لغو نخواهد شد. ردیف هایی که باعث تداخل می شوند به روز نمی شوند.

اگر عبارتی که مقدار جدیدی را برای یک ستون مشخص می کند از نام آن فیلد استفاده کند، دستور به روز رسانیاز مقدار فعلی برای آن ستون استفاده می کند. به عنوان مثال، دستور زیر ستون death_date را به مقدار یک بزرگتر از مقدار فعلی آن تنظیم می کند:

mysql> UPDATE Persons SET death_date=death_date+1;

در MySQL 3.23، می‌توانید از گزینه LIMIT # استفاده کنید تا مطمئن شوید که فقط تعداد مشخصی از ردیف‌ها اصلاح شده‌اند.

به عنوان مثال، چنین عملیاتی عنوان عنوان را در ردیف اول جدول نمایشگاه های ما با رشته "Lamp computer" جایگزین می کند:

mysql> UPDATE Artifacts SET title="(!LANG:Lamp" Limit 1;!}

بیانیه را حذف کنید

اپراتور حذفردیف هایی را از جدول table_name که شرایط مشخص شده در Where_definition را برآورده می کنند حذف می کند و تعداد رکوردهای حذف شده را برمی گرداند.

اگر اپراتور حذفبدون تعریف WHERE اجرا می شود، سپس تمام ردیف ها حذف می شوند.

نحو:

برای مثال دستور زیر از جدول Persons حذف می شود

برترین مقالات مرتبط