|
|
|
|
|
|
|
|
|
|||
|
آموزش پی اچ پی -> قسمت پنجم ، اتصال به SQL و انجام عمل
نویسنده : مهرداد دیزاین | تاریخ ارسال : شنبه 19 / 10 / 1388 | 13 : 12 | تعداد بازدید : 623
سلام به همه دوستان عزيز، پرس جو ؟ SELECT: اول يه مثال ميزنيم تا گيج نشويد:SELECT user FROM userTable اين Query از تمامي ركورد هاي جدول userTable فيلد user را پيدا مي كند.يكي ديگه : SELECT user, name, lastName, Id FROM userTable اين يكي تمامي فيلد هاي ذكر شده جلوي دستور SELECT را از جدول userTable پيدا مي كنه.اگه همه فيلد ها رو بخواييم نشون بده چي ؟ بايد همه فيلد ها رو جلوي SELECT بنويسيم؟ براي اين كار به جاي اين كه نام همه فيلد ها رو بنويسيد مي تونيد از * استفاده كنيد يعني : SELECT * FROM userTable اگه يه شرط داشتيم چي؟ مثلا "كاربري رو پيدا كن كه نام كاربري اون ali و پسورد اون 123 است"...براي شرط در query ها از WHERE استفاده ميكنيم. اينطوري: SELECT * FROM userTable WHERE userName = "ali" معني اين: تمام ركورد هاي جدول userTable رو پيدا كن كه شرطuserName = "ali" رو داشته باشند.اگه شرط هامون چند حالت داشته باشند ؟ مثلا اين: SELECT * FROM userTable WHERE userName = "ali" AND userPassword="123" يعني: تمام ركورد هاي جدول userTable را پيدا كن كه فيلد userName اون برابر با ali و فيلد userPassword اون برابر با 123 باشه.به همين ترتيب ميتونه به جاي AND كلمه OR را قرار بدين همچنين ميتونين هر شرطي خواستيد اضاف كنيد. مرتب سازي داده هاي خروجي: براي مرتب كردن خروجي براساس يك فيلد از اين دستور توي Query استفاده ميكنيم. ORDER BY FieldName ASC كه FieldName نام فيلدي هست كه مرتب سازي بر اساس اون صورت مي گيره و اون ASC ميگه كه مرتب سازي صعودي باشه ؛ اگه بخواييم مرتب سازي نزولي باشه به جاي ASC از DESC استفاده مي كنيم.مثال: SELECT * FROM postTable WHERE postId>50 ORDER BY postTitle ASC يعني چه ..؟تمام ركورد هاي جدول postTable رو پيدا كن كه مقدار فيلد postId اون بزرگتر از 50 باشه و اون رو بر اساس فيلد postTitle به صورت صعودي مرتب كن. اگه نخواييم داده هاي تكراري نشون داده بشن چي ؟ از GROUP BY FieldName مثلا : SELECT * FROM postTable WHERE senderId=103 GROUP BY postID يعني؟ : تمام ركورد ها را از جدول postTable نمايش بده كه فيلد postID (كد ارسال كننده) اون برابر 103 است. و پست هاي تكراري رو حذف كن.(اون ركورد هايي كه postID مشابهي دارند فقط يكي شون رو نشون بده)شايد مثال خوبي نباشه.. جستجو: براي جستجو در داده هاي يه جدول به صورتي كه مثلا اگه ali رو جستجو گرديم تمامي نتايجي كه شامل عبارت ali ميشود را نشان دهيم. SELECT * FROM postTable WHERE postBody LIKE "%ali%" تمام چيزهايي كه توش ali باشه رو پيدا ميكنه اگه بخواييم فقط اونايي كه اولشون با ali شروع مي شه به جاي "%ali%" فقط آخرش % مي گذاريم يعني :SELECT * FROM postTable WHERE postBody LIKE "ali%" داشت يادم مي رفت براي شمردن نتيجه يك SELECT كه فقط تعداد برامون مهم باشه از تابع COUNT استفاده مي كنيم: SELECT COUNT(*) FROM userTable WHERE registerDate < "85/10/15" البته توابع ديگه اي هم هست كه فعلا نمي گم چون ممكنه سر در گم بشيد.INSERT: اين query براي درج ركود جديد توي جدول استفاده ميشه.اين طوري: INSERT INTO myTable (userName, userPassword, userReallyName) (تو چند خط نوشتم كه راحتتر خونده بشه البته توصيه مي شه توي برنامه هاتون هم اينطوري بنويسيد)VALUES ("ali", "123", "Ali Agho") خوب اين query يه ركورد جديد رو توي جدول myTable درج ميكنه كه مقدار فيلد userName اون ali و مقدار فيلد userPassword اون 123 و مقدار فيلد userReallyName اون Ali Agho هست. تو پرانتز اولي اگه فيلدي رو ننويسيد اشكالي نداره (البته اگه فيلد اون Not NULL نباشه) مقدار Default توش قرار ميگيره كه اگه موقع ساختن جدول تعيين نشده باشه Null خواهد شد. در هر صورت بايستي تعداد فيلدي كه توي پرانتز اولي مي نويسيد با تعداد فيلد پرانتز دوم برابر باشه. در ضمن ميتونيد كلا پرانتز اول رو نگذاريد اونوقت توي پرانتز دوم براي تمام فيلد ها بايستي مقدار تعيين كنيد. يه نكته : توي MySQL ميتونيد n تا ركورد رو با يه query درج كنيد. مثال: INSERT INTO myTable به همين سادگي.VALUES ("ali", "123", "Ali Agho"), ("mojataba", "1100012", "Agh Mojtaba"), ("reza", "1545587ax1", "Agha Reza") UPDATE: براي ويرايش يه چيز استفاده ميشه. مثلا تغيير پسورد، ويرايش يه مطلب و ...مثال: UPDATE myTable SET userName="ali" يعني : براي تمام ركورد هاي جدول myTable مقدار فيلد userName رو به ali تغيير بده ...تمام ركورد ها چرا ؟ براي اين كه شرطي تعيين نكرديم. اگه اين طوري بنويسيم اون وقت محدود به ركورد (هاي) خاصي مي شه: UPDATE myTable SET userName="ali" WHERE userID=53 فقط ركورد هايي كه مقدار فيلد userID اونا برابر با 53 باشه تغيير ميكنند.ما ميتونيم همزمان چند تا فيلد رو با هم تغيير بديم: UPDATE myTable WHERE اينجا مثل توي SELECT هست.SET userName="ali", userPassword="123", userReallyName = "Ali Aghoye Gol" WHERE userID=53 DELETE: براي حذف ركورد از جدول استفاده ميشه. مثلا:DELETE FROM myTable تمامي ركورد هاي جدول myTable رو حذف ميكنه.توجه : 1- اينجا بعد از DELETE و قبل از FROM چيزي نيست با SELECT اشتباه نكنيد. 2- بايد خيلي مواظب اين جور query ها باشيد. چون بعضي وقت ها به خاطر يه اشتباه كوچولو خيلي چيزا از دست ميروند. اگه بخواهيم ركورد(هاي) خاصي رو حذف كنيم بايستي از شرط استفاده كنيم مثل update : DELETE FROM myTable WHERE userID=662 فقط ركورد هايي رو حذف مي كنه كه مقدار فيلد userID اونا برابر 662 باشه.--------------- خوب و اين بود query. من سعي كردم خيلي ساده بگم و چيزهايي كه فعلا لازم نبود نگفتم، به موقع كه بهش رسيديم چيزهايي كه لازمه رو ميگم. موفق و پيروز باشيد. کلمات کلیدی : آموزش پی اچ پی ، کار با MYSQL |
|


