دستورات sql , کوئری ها در mysql در php

saalek110

Well-Known Member
کد زیر دیاگرام چاپ بعد دستور select است:
HTML:
<table>
while
{
<tr>


<td></td>
<td></td>
<td></td>



</tr>
}
</tabe>
ساده ترین حالتش است.
یعنی هر ستون را در داخل یک td قرار می دهیم و tr باز و بسته داخل حلقه while است و table بیرون حلقه while

ولی میشه داخل حلقه while تعداد tr های بیشتری داشت. یعنی یک ردیف جدول دیتابیس را در چندین ردیف جدول html چاپ کرد.
 

saalek110

Well-Known Member
یک جدول تنظیمات من ساختم ، کوئری اون را ببینید:
PHP:
$sql = "UPDATE setting SET num=0 WHERE name='show_edit'";
البته یک کوئری update است و قبلا در همین تاپیک گفتیم.
ولی یک مثال یا تمرین حساب کنید.
در کوئری بالا اومدم ستون num را صفر کردم وقتی که در ستون name کلمه show_edit بوده.
متن ها باید در کوتیشن قرار بگیرند، پس show_edit داخل تک-کوتیشن است و کل کوئری داخل دابل-کوتیشن است.
 

saalek110

Well-Known Member
کوئری اینسرت به جدول نظرات:

PHP:
 $sql = "INSERT INTO `nazarat`
(`number`,`approve`,`poster`,`nazar` , `time`,`post_number`)
VALUES (NULL,'$approve','$name','$msg','$time','$post_number')";
مقدار NULL برای ستون number در نظر گرفته شده ، چون این ستون خود افزایش یابنده است.
اسامی ستون ها در کوتیشن کج است
و مقادیر در کوتیشن عمودی.
 

saalek110

Well-Known Member
کوئری خواندن جدول تنظیمات:

PHP:
$sql= "SELECT * FROM my_setting WHERE number=$number   ";

$number می بینید داخل کوتیشن نیست. چون عدد است.
اسم جدول هم داخل کوتیشن کج نیست. ولی فکر کنم دورش کوتیشن کج بزاریم هم فرقی نکند.
 

saalek110

Well-Known Member
کل تابعش این طوریه:
PHP:
function my_setting( $number) 
 {//function
 global $ccoonn;


 $sql= "SELECT * FROM my_setting WHERE number=$number   ";
 $result= mysqli_query($ccoonn ,$sql);
  while($info= mysqli_fetch_array( $result))
          {
           $num=$info['num'];
          }//while


return $num;

 }//function my_setting

تابع یعنی کدی که با گفتن اسمش اجرا بشه.
در کوئری این تابع علامت ستاره اومده ولی بعدا اومدم فقط ستون num را خوندم.
گویا این کار اشکال نداشته باشه. به جای ستاره فکر کنم می تونستم بنویسم num . اینکه میگم فکر کنم چون الان تست نکردم ولی قبلا فکر کنم تست کردم و قابل انجام بود.
 

saalek110

Well-Known Member
سیاست توجه به کدام کوئری ها در ادامه این تاپیک:

من کل ۲۵ صفحه تاپیک سایت سازی را گشتم ، کدها و نکات بالا را پیدا کردم و در پستهای قبلی این تاپیک گفتم.
در پستهای بعدی این تاپیک بعضی کوئری ها ، به کار شما می آید و بعضی نمی آید. که سعی می کنم یادم باشه خودم بگم...ولی اگر یادم رفت ، قانون کلی را گفتم و باز اینجا تکرار می کنم:


شما جداول را دستی ساختید و ستون های لازم را دستی اضافه کردید ، در phpmyadmin .
و خوندن جداول و افزودن یا کاستن یا تغییر سطر به یک جدول را با کوئری انجام دادید.


پس کوئری های ساختن جداول و افزودن ستون به یک جدول دیتابیس این تاپیک به کار شما نمی آید...
ولی کوئری های خوندن جدول و تغییر و افزودن یا حذف یک ردیف به کار شما می آید.
 

saalek110

Well-Known Member
بر اساس یک ستون مرتب کردن:

PHP:
SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC


به ترتیب صعودی یا نزولی بر اساس ستون column_ name .... معنی column میشه ستون.

PHP:
$sql = "SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname";

مثلا در کوئری بالا ، بر اساس فامیلی ، یعنی همان last name مرتب شده. و سه ستون درخواست شده که id و نام اول و نام دوم است.

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

saalek110

Well-Known Member
حذف ردیف:

PHP:
DELETE FROM table_name
WHERE some_column = some_value


PHP:
$sql = "DELETE FROM MyGuests WHERE id=3";

در کوئری بالا ، ردیفی که id برابر ۳ داره حذف میشه.
 

saalek110

Well-Known Member
آپدیت:

PHP:
UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value


PHP:
$sql = "UPDATE MyGuests SET lastname='Doe' WHERE id=2";

در کوئری بالا ، ردیفی که id اون ۲ است ، فامیلی به Doe تغییر پیدا می کند.
 

saalek110

Well-Known Member
LIMIT:

PHP:
$sql = "SELECT * FROM Orders LIMIT 30";


PHP:
$sql = "SELECT * FROM Orders LIMIT 10 OFFSET 15";

PHP:
$sql = "SELECT * FROM Orders LIMIT 15, 10";

در شرحش گفته تعداد محدودی رکورد را برمی گرداند و گفته برای جدول های بزرگ مفید است.
سالک : من خودم تمرین عملی تابحال با limit نداشتم ولی فکر کنم برای جداول بزرگ مفید باشه.
 
آخرین ویرایش:

saalek110

Well-Known Member
ساخت جدول:

PHP:
<?php
require"../base/ccoonn.php";


$sql = "CREATE TABLE MyGuests (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    firstname VARCHAR(30) NOT NULL,
    lastname VARCHAR(30) NOT NULL,
    email VARCHAR(50),
    reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    )";
 

if ($ccoonn->query($sql) === TRUE) {
  echo "table created successfully";
} else {
  echo "Error creating table: " . $ccoonn->error;
}

//$ccoonn->close();
?>


سالک: کد بالا را من اجرا کردم.جدول ساخته شد. با چند تا ستون.

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

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

saalek110

Well-Known Member
مروری بر آموزش سایت w3school داشتیم.
ایجاد دیتابیس را من ندیده گرفتم،
چون من فرض می گیرم خود صاحب هاست دیتابیس را خودش ساخته.
 

saalek110

Well-Known Member
دستور ALTER در MySQL هنگامی که می‌خواهید نام یکی از جدول‌ها یا یکی از فیلدهای جدولی را تغییر دهید، یا وقتی می‌خواهید یک ستون به جدول اضافه یا حذف کنید....




این را از اینستاگرام پیدا کردم:



Screenshot_۲۰۲۴-۰۲-۱۰_۲۰۰۰۴۳.jpg


گویا کار با تیبل است..
ایجاد تیبل t اولین کار است.

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

آخری هم ترانکیت ، یعنی خالی کردن جدول است.

همه این کارها را دستی در phpmyadmin می توانید انجام دهید. و بدون کد میشه انجام داد. یعنی شاید شما بهش نیاز ندارید.
 
آخرین ویرایش:

saalek110

Well-Known Member
برنامه من برای تغیرات بر جداول دیتابیس موقع ارتقای ورژن....
........
thinking_ver_1.png
. مثلا ستونی به جدولی اضافه کنم تا ورژن قدیمی تبدیل به ورژن جدید بشه...

یعنی کدها ، خودشون تغییراتی در جداول ایجاد کنند ، تا جداول دیتابیس برای کدهای جدید مناسب باشند. یا اینکه مثلا یک یا چند جدول جدید ایجاد شود.

یعنی شما فایلها را دانلود می کنی ، و یک تکه از کدهای فایلها جداول را تغییر میده.
ولی باید فقط یک بار این کارو بکنه.
مثلا برود جداول را چک کند ، اگر همه شرایط برقرار بود یک دیپلم به نام دیپلم ورژن بدهد.
حالا اون دیپلم کجا ثبت بشود؟ جواب: مثلا در جدول ستینگ. یک ردیف داشته باشیم به نام دیپلم.
و وقتی کدهای ورژن ۲ می خوان اجرا بشوند ، اول یک چکی از یک جا بکنند. مثلا بروند جدول ستینگ را ببینند که آیا دیپلم ورژن فعلی کسب شده یا نه.

images.png
 
آخرین ویرایش:

saalek110

Well-Known Member
در عکس زیر که از اینستاگرام است ، در مورد کلید خارجی و join صحبت شده....

ما در تاپیک سایت بسازید ، جدول ها را به هم مربوط نکردیم... با هر جدول جدا کار کردیم.

ولی عکس زیر را گذاشتم برای علاقه مندان.

Screenshot_۲۰۲۴-۰۲-۱۰_۲۱۱۲۳۵.jpg
 

saalek110

Well-Known Member
حالا اگر می خواهید ستونی که اضافه می کنید به ابتدای جدول اضافه شود در انتهای ALTER از کلمه کلیدی FIRST استفاده کنید.

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

در مثال زیر ستون i یکبار به عنوان اولین ستون به جدول اضافه می شود و بار دیگر پس از ستون c به جدول اضافه می شود:

PHP:
ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT FIRST;
ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT AFTER c;


سالک: فقط نقل شد ، تست نشد.
 

saalek110

Well-Known Member
PHP:
ALTER TABLE Customers
ADD Email varchar(255);


کلمه ADD اومده ، بعد اسم ستون و بعد دیتاتایپ.

PHP:
ALTER TABLE table_name
MODIFY COLUMN column_name datatype;

PHP:
ALTER TABLE Persons
ADD DateOfBirth date;
PHP:
ALTER TABLE Persons
MODIFY COLUMN DateOfBirth year;
در کوئری آخری اومده دیتاتایپ را به year تغییر داده ، که در حالت دو دیجیت یا ۴ دیجیت سال را نگه می دارد.
 

saalek110

Well-Known Member
PHP:
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255) NOT NULL,
    Age int
);
PHP:
ALTER TABLE Persons
MODIFY Age int NOT NULL;

در کوئری اولی یک جدول ایجاد شده که ستون Age آن NOT NULL نیست.
در کوئری دوم ستون Age را به NOT NULL تغییر داده.

 

saalek110

Well-Known Member
تعریف یونیکیو و پرایمری key:

MySQL UNIQUE Constraint
The UNIQUE constraint ensures that all values in a column are different.

Both the UNIQUE and PRIMARY KEY constraints provide a guarantee for uniqueness for a column or set of columns.

A PRIMARY KEY constraint automatically has a UNIQUE constraint.

However, you can have many UNIQUE constraints per table, but only one PRIMARY KEY constraint per table.

خط اول گویا معنی اش این میشه که یونیکیو یعنی تمام مقادیر ستون متفاوت باشد.
و خط آخر میگه پرایمری key فقط یکی در هر جدول داریم ولی یونیکیو می توانیم چند تا داشته باشیم.

 

saalek110

Well-Known Member
PHP:
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    UNIQUE (ID)
);
در کوئری بالا ، ستون ID به حالت یونیکیو ایجاد می شود.
 

جدیدترین ارسال ها

بالا