تعداد بازدید: 2314

کار با داده ها در 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 را داشته باشیم. با استفاده از فرمول زیر می توانیم آن را بدست بیاوریم .قسمت دوم در فرمول زیر از اتحاد جمله مشترک در ریاضی استفاده کردیم تا فرمول ساده تر گردد.

offset = ( limit * paged ) – limit = limit ( paged – 1 )

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 کنیم.

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای کار با داده ها در MySQL Engin

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *