In the next lectures you will learn What is SQL How to access mySQL database How to create a basic mySQL database How to use some basic queries How to use PHP and mySQL Web Programming
Introduction to SQL SQL یک زبان کامپیوتری است که توسط موسسه ANSI (American National Standards Institute) برای دسترسی و تغییر پایگاههای داده استاندارد شده است. SQL مخفف Structured Query Language است. با استفاده از SQL می توان : به یک پایگاه داده دسترسی پیدا کرد. یک پرس و جو را اجرا کرد و داده ها را بازیابی نمود. یک رکورد را اضافه، حذف یا تازه (update) نمود. برنامه های مختلفی از زبان SQL استفاده می کنند. مثل : MS Access, DB2, Informix, MS SQL Server, Oracle, Sybase, mySQL تمام این برنامه ها باید دستوراتی مثل SELECT, UPDATE, DELETE, INSERT, WHERE را پیاده کنند. این برنامه ها البته دستورات مخصوص به خود را نیز دارند.
SQL Database Tables هر پایگاه داده ای شامل یک یا چند جدول است. هر جدول دارای یک نام است و دارای تعدادی رکورد است. LastNameFirstNameAddressCity HansenOlaTimoteivn 10 Sandnes SvendsonToveBorgvn 23Sandnes PettersenKariStorgt 20Stavanger این جدول سه رکورد دارد و دارای چهار ستون است. ( LastName, FirstName, Address, and City ) مثلا نام جدول زیر "Persons ” است:
SQL Queries می توان با استفاده از SQL یک پرس وجو انجام داد. در جواب، مجموعه ای از رکوردها بر می گردد. LastName Hansen Svendson Pettersen مثالی از یک پرس وجو : SELECT LastName FROM Persons; جواب سوال فوق : درسیستم پایگاه داده mySQL باید یک ; در انتهای هر عبارت SQL قرار بگیرد.
SQL Data Languages قسمت Data Definition Language (DDL) از زبان SQL اجازه تشکیل و حذف جداول را می دهد. CREATE TABLE - creates a new database table ALTER TABLE - alters (changes) a database table DROP TABLE - deletes a database table CREATE INDEX - creates an index (search key) DROP INDEX - deletes an index پرس وجو و دستورات به روز رسانی قسمت Data Manipulation Language (DML) زبان SQL را تشکیل می دهند. SELECT - extracts data from a database table UPDATE - updates data in a database table DELETE - deletes data from a database table INSERT INTO - inserts new data into a database table
Logging into mySQL Server اگر از طریق خط فرمان وارد یک سرور زبان MySQL شوید، با پیام خوشامد گویی زیر روبرو می شوید : bash-2.05b$ mysql -h mysql martin Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is to server version: Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> از اینجا به بعد می توانید یک جدول را ایجاد یا حذف کرده یا مقادیر رکوردها را تغییر دهید. اما ابتدا لازم است به سرور بگویید از کدام پایگاه داده استفاده می کنید. mysql> use martin; Database changed
Creating a Table حال یک جدول درست می کنیم : mysql> CREATE TABLE students( -> num INT NOT NULL AUTO_INCREMENT, -> f_name VARCHAR(48), -> l_name VARCHAR(48), -> student_id INT, -> VARCHAR(48), -> PRIMARY KEY(num)); Query OK, 0 rows affected (0.02 sec) تا وقتی که ; را وارد نکنید، استفاده از enter ایرادی ندارد.
Viewing The Table Structure با استفاده از DESCRIBE می توان ساختار جدول ایجاد شده را مشاهده نمود : mysql> DESCRIBE students; | Field | Type | Null | Key | Default | Extra | | num | int(11) | NO | PRI | NULL | auto_increment | | f_name | varchar(48) | YES | | NULL | | | l_name | varchar(48) | YES | | NULL | | | student_id | int(11) | YES | | NULL | | | | varchar(48) | YES | | NULL | |
Inserting Data با استفاده از INSERT INTO می توان یک ردیف جدید به جدول اضافه کرد : mysql> INSERT INTO students -> Query OK, 1 row affected (0.00 sec) با استفاده از SELECT FROM می توان مقادیر جدول را بازیابی نمود. mysql> SELECT * FROM students; | num | f_name | l_name | student_id | | | 1 | Russell | Martin | | | row in set (0.00 sec)
Inserting Some More Data یک عنصر جدید را به جدول اضافه می کنیم : mysql> INSERT INTO students -> Query OK, 1 row affected (0.01 sec) mysql> SELECT * FROM students; | num | f_name | l_name | student_id | | | 1 | Russell | Martin | | | | 2 | James | Bond | 7 | | rows in set (0.00 sec)
Getting Data Out of the Table دستور SELECT اصلی ترین روش برای بازیابی اطلاعات یک جدول است. SELECT * FROM students; ستاره در اینجا به معنای تمام ستونها است. می توان یک یا چند ستون مشخص را درخواست نمود : SELECT f_name,l_name FROM students; | f_name | l_name | | Russell | Martin | | James | Bond | rows in set (0.00 sec)
Getting Data Out of the Table (cont.) می توان با استفاده از WHERE اطلاعات درخواستی را دقیقتر بیان نمود : SELECT * FROM students WHERE l_name= ‘ Bond ’ ; | num | f_name | l_name | student_id | | | 2 | James | Bond | 7 | | row in set (0.00 sec) SELECT student_id, FROM students WHERE l_name= ‘ Bond ’ ; | student_id | | | 7 | | row in set (0.00 sec)
Altering the Table عبارت ALTER TABLE برای ایجاد یا حذف ستونهای یک جدول استفاده می شود. mysql> ALTER TABLE students ADD date DATE; Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM students; | num | f_name | l_name | student_id | | date | | 1 | Russell | Martin | | | NULL | | 2 | James | Bond | 7 | | NULL | rows in set (0.00 sec)
Updating the Table دستور UPDATE برای تغییر مقادیر جدول استفاده می گردد. mysql> UPDATE students SET date=' ' WHERE num=1; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> SELECT * FROM students; | num | f_name | l_name | student_id | | date | | 1 | Russell | Martin | | | | | 2 | James | Bond | 7 | | NULL | rows in set (0.00 sec)
Deleting Some Data دستور DELETE برای حذف ردیفهای یک جدول استفاده می گردد. mysql> DELETE FROM students WHERE l_name='Bond'; Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM students; | num | f_name | l_name | student_id | | date | | 1 | Russell | Martin | | | | row in set (0.00 sec)
The Final Table ما یک ستون دیگر به جدول اضافه می کنیم و تعدادی رکورد به جدول حاصل اضافه می کنیم : mysql> ALTER TABLE students ADD gr INT; Query OK, 1 row affected (0.01 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM students; | num | f_name | l_name | student_id | | date | gr | | 1 | Russell | Martin | | | | NULL | row in set (0.00 sec) mysql> UPDATE students SET gr=3 WHERE num=1; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> SELECT * FROM students; | num | f_name | l_name | student_id | | date | gr | | 1 | Russell | Martin | | | | 3 | row in set (0.00 sec) mysql> INSERT INTO students 11-15’, 4);...
The Final Table (cont.)... mysql> INSERT INTO students CURRENT_DATE, 2); Note: CURRENT_DATE is a built-in SQL command which (as expected) gives the current (local) date. mysql> SELECT * FROM students; | num | f_name | l_name | student_id | | date | gr | | 1 | Russell | Martin | | | | 3 | | 5 | Kate | Ash | | | | 5 | | 3 | James | Bond | 7 | | | 4 | | 4 | Bob | Jones | | | | 3 | | 6 | Pete | Lofton | 76 | | | 2 | | 7 | Polly | Crackers | 1717 | | | 4 | | 8 | Hugh | Milner | | | | 2 | rows in set (0.00 sec) mysql> exit Bye
Other SQL Commands SHOW tables; لیستی از جداول پایگاه داده را نشان می دهد. ALTER TABLE students DROP ; ستون را از تمام ردیفها حذف می کند. DROP TABLE students; جدول students را به همراه تعریف آن از بین می برد. DELETE FROM students; تمام ردیفهای جدول students را حذف می کند. DELETE FROM students WHERE (num > 5) AND (num <= 10); تمام ردیفهایی که مقدار num آنها بین 5 و 10 است را حذف می کند. HELP; برای گرفتن راهنمایی، HELP DROP; برای گرفتن راهنمایی در مورد دستور DROP.
Putting Content into Your Database with PHP می توان به راحتی توابع PHP و پرس وجوهای MySQL را ترکیب نمود : Host: mysql Database: martin Username: martin Password: وصل شدن به پایگاه داده و ورود به آن mysql_connect("host","username","password"); انتخاب پایگاه داده : mysql_select_db("database"); ارسال پرس وجوهای مختلف جهت اضافه کردن، حذف کردن یا به روز رسانی یک یا چند رکورد mysql_query("query"); قطع ارتباط با سرور پایگاه داده : mysql_close();
Student Database: data_in.php Putting Data in the DB <?php /*insert students into DB*/ if(isset($_POST["submit"])) { $db = mysql_connect("mysql”, ”martin"); mysql_select_db("martin"); $date=date("Y-m-d"); /* Get the current date in the right SQL format */ $sql="INSERT INTO students VALUES(NULL,'“. $_POST[“f_name"]. "','“. $_POST["l_name"]. "',“. $_POST["student_id"]. ",'“. $_POST[" "]. "','“. $date. "',“. $_POST["gr"]. ")"; /* construct the query */ mysql_query($sql); mysql_close(); echo" Thank you. The data has been entered. \n"; echo' Back to registration ‘. “\n”; echo' View the student lists ‘.”\n”; }
Student Database: data_in.php else { ?> Enter your items into the database First Name: Last Name: ID: Group: <?php } ?> view the output page
Getting Content out of Your Database with PHP وصل شدن به سرور و انتخاب پایگاه داده : mysql_connect("host","username","password"); mysql_select_db("database"); ارسال یک پرس وجو و خواندن نتایج بصورت آرایه : $result=mysql_query("query"); خواندن یک ردیف و یک فیلد : $num=mysql_numrows($result); $variable=mysql_result($result,$i,"fieldname"); یا خواندن ردیفها بصورت تک تک : $row=mysql_fetch_array($result); بستن ارتباط mysql_close();
Student Database: data_out.php Getting Data out of the DB Student Database Order the full list of students by date, id, or by surname. Or only see the list of students in group
Student Database: data_out.php <?php /*get students from the DB */ $db = mysql_connect("mysql",“martin"); mysql_select_db(“martin", $db); switch($_GET["order"]){ case 'date': $sql = "SELECT * FROM students ORDER BY date"; break; case ‘student_id': $sql = "SELECT * FROM students ORDER BY student_id"; break; case ‘l_name': $sql = "SELECT * FROM students ORDER BY l_name"; break; default: $sql = “SELECT * FROM students”; } if(isset($_POST["submit"])){ $sql = “SELECT * FROM students WHERE gr=“. $_POST["gr"]; } $result=mysql_query($sql); while($row=mysql_fetch_array($result)){ echo " Name: “. $row["l_name"]. ', ‘. $row["f_name"]. " \n"; echo " ID: “. $row[“student_id"]. " “. $row[" "]. " Group: “. $row["gr"]. " Posted: “. $row["date"]. " \n"; } mysql_close(); ?> view the output page
Can Do Even More with PHP ایجاد جدول حذف ردیفها و ستونها به روز رسانی ارسال پرس وجو برای چندین جدول ارتباط با چند پایگاه داده