کار با داده ها در MySQL Engin
عملیات CRUD داده ها در جداول پایگاه داده توسط موتور mysql انجام می شوند . نگارش این دستورات همان syntax می باشد. با استفاده از دستورات INSERT , SELECT , UPDATE , DELETE می توان این عملیات ها را اجرا کرد.
عملیات CRUD روی داده ها
ایجاد یک رکورد یا Create : برای ایجاد یک رکورد در جدول از قالب های زیر استفاده می کنیم:
INSERT INTO [table_name] VALUES ([value1] , [value2] , [value3]); INSERT INTO [table_name] VALUES ([value1] , [value2] , [value3]),([value4] , [value5] , [value6]); INSERT INTO [table_name]([column_name1] , [column_name1] , [column_name1]) VALUES ([value1] , [value2] , [value3]);
- در خط اول تنها با استفاده از ساختار جدول ستون های رکورد را پر می کنیم.
- در نوع خط دوم چند رکورد را با یک کوئری وارد می کنیم.
- در نوع خط سوم با توجه به ساختاری که در کوئری وارد کرده ایم ستون ها را پر می کنیم.
خواندن رکوردها یا Read : جهت خواندن رکورد ها از کلمه کلیدی SELECT استفاده می کنیم . این دستور امکانات بسیار زیادی جهت شخصی سازی داده برگشتی دارد که در ادامه و نیز درس های بعدی به آن ها اشاره می کنیم.
SELECT [column_name1] , [column_name2] FROM [table_name]; SELECT * FROM [table_name] WHERE [condition]; SELECT [column_name] FROM [table_name] WHERE [condition] ORDER BY [column_name] ASC; SELECT [column_name] FROM [table_name] WHERE [condition] ORDER BY [column_name] DESC; SELECT [column_name] FROM [table_name] WHERE [condition] LIMIT [x] OFFSET [y]; SELECT [column_name] FROM [table_name] WHERE [condition] LIMIT [x] , [y]; SELECT [column_name] AS [temporary_column_name] FROM [table_name] WHERE [condition]; SELECT [column_name] AS [temporary_column_name] , [column_name2] AS [temporary_column_name2] FROM [table_name] WHERE [condition]; SELECT [column_name] FROM [table_name] GROUP BY [column_name];
WHERE : برای ایجاد شرط در خروجی . مثلا پست های یک پست تایپ با مقدار product رو بده :
SELECT * FROM wp_posts WHERE post_type = 'product';
LIKE : این دستور برای بررسی شبیه بودن به یک رشته استفاده می شود و به صورت ترکیبی با WHERE به کار گرفته می شود :
SELECT * FROM wp_postsmeta WHERE meta_key LIKE "rng_%";
ORDER BY : مرتب سازی خروجی بر اساس یک ستون خاص . پس از آن کلمه کلیدی ASC , DESC را می آوریم که ASC یک مثلث رو به بالا یعنی صعودی ( از کوچکتر شروع و به بزرگتر ختم ) می باشد و DESC عکس آن . پیش فرض ORDER BY id ASC
می باشد.
LIMIT : اگر بخواهیم تعداد خاصی از ردیف ها را برگردانیم ، به طور مثال 5 ردیف اول را بر گرداند. از این امکان به همراه امکان OFFSET برای ایجاد صفحه بندی استفاده می شود (معادل posts_per_pages)
OFFSET : آدرس اولیه دادن از خروجی های مربوطه مثلا از ردیف ۱۰ ام به بعد . حال اگر به صورت ترکیبی با LIMIT استفاده شود می شود از ردیف offset ام limit تا ردیف برگردان.
SELECT * FROM wp_posts LIMIT x OFFSET y SELECT * FROM wp_posts LIMIT y,x
با استفاده از LIMIT , OFFSET می توانیم یک pagination ایجاد کنیم . برای این کار لازم است دو پارامتر limit , paged را داشته باشیم. با استفاده از فرمول زیر می توانیم آن را بدست بیاوریم .قسمت دوم در فرمول زیر از اتحاد جمله مشترک در ریاضی استفاده کردیم تا فرمول ساده تر گردد.
DISTINCT : نتایج تکراری را حذف می کند ( برای خروجی یک ستون استفاده می شود ).
SELECT DISTINCT post_type FROM wp_posts;
نکته : می توان از عبارت های محاسباتی در دستورات SELECT استفاده کرد ( با استفاده از کلمه کلیدی AS می توانید یک نام معادل برای ستون در خروجی انتخاب کنید) به طور مثال :
SELECT name , price*1000000 AS final_price FROM cars;
GROUP BY : نتیجه خروجی را بر اساس یک ستون خاص گروه بندی می کند.در مثال زیر پست تایپ ها را به همراه تعداد پستی که از آن ها موجود است بر می گرداند. با استفاده از تابع GROUP_CONTACT می توان سلول های غیر یکتا را به صورت یک رشته قابل ترجمه به آرایه تبدیل کنیم.
SELECT post_type , count(*) FROM wp_posts GROUP by post_type
بروزرسانی فیلد ها Update : بروزرسانی فیلد ها با استفاده از کلید های UPDATE , SET , WHERE .
UPDATE [table_name] SET [column_name]=[value] WHERE [condition]; UPDATE [table_name] SET [column_name1]=[value1] , [column_name2]=[value2] WHERE [condition];
حذف رکوردها Delete : حذف رکورد با استفاده از کلید های DELETE , WHERE :
DELETE FROM [table_name] WHERE [condition];
HAVING : اعمال یک شرط روی هر یک از رکورد های کوئری جاری . این کلمه کلیدی به این دلیل اضافه شد که WHERE با توابع محاسباتی کل (aggregate functions) مثل COUNT , AVG , SUM , MAX , MIN قابل پیاده سازی نیست .
SELECT viewers.id, viewers.identifier, COUNT(messages.id) AS new_message_count FROM wp_irc_viewers AS viewers INNER JOIN wp_irc_messages AS messages ON viewers.id = messages.viewer_id INNER JOIN wp_irc_messagemeta AS messagemeta ON messagemeta.message_id = messages.id WHERE messagemeta.meta_key = 'seen' AND messagemeta.meta_value = 0 HAVING new_message_count > 0 ORDER BY new_message_count
عملکرد کوئری بالا این است که بازدید کننده هایی که پیام های جدیدی دارند را از سه جدول veiwers , messages , messagemeta بر میگرداند. ستون new_message_count که تابع COUNT روی آن اجرا شده است حتی اگر پیامی نداشته باشد باز هم مقدار 0 را بر می گرداند به این دلیل که یک ستون مقدار دارد مقادیر دیگر مثل بازدید کننده برابر با null است ولی ردیف را برمیگرداند . ما نمی توانیم با WHERE شرطی تعیین کنیم که اگر تعداد پیام ها کم تر از 1 بود ردیف را بر نگردان . به همین دلیل با کلمه کلیدی HAVING تعیین می کنیم که اگر تعداد پیام های جدید بیشتر از 1 بود مقداری را برنگردان.
UNION : ادغام دو کوئری برای یک خروجی . حال چه با داده اصلی چه با داده با کوئری دوم . مثلا اگر بخواهید به جدول دومی که خروجی داده است یک یا چند ردیف اضافه کنیم.
SELECT COUNT(*) AS count ,post_status FROM wp_posts WHERE post_type = 'product' GROUP BY post_status UNION SELECT (SELECT COUNT(*) FROM wp_posts WHERE post_type = 'product') AS count , 'All' AS post_status;
در مثال بالا می توانیم دو کوئری از یک جنس را هم داشته باشیم . می توانیم یک سری ردیف های ثابت بدون ارتباط با پایگاه داده وارد کنیم.
SELECT age, name FROM users UNION SELECT 25 AS age, 'Betty' AS name
همچنین می توانیم دو تا کوئری با خروجی یک فرمت را با هم UNION کنیم.
دیدگاهتان را بنویسید