ایجاد جدول و دیتابیس با استفاده از SQLCMD

در این درس می خواهیم یک دیتابیس که شامل یک جدول و چندین رکورد است را ایجاد کنیم. قصد داریم که ایجاد دیتابیس و جدول را از دو را به شما آموزش دهیم.اگر SQL Management Studio بر روی سیستم شما نصب نیست می توانیم از cmd و ابزار sqlcmd استفاده کنیم. برای این کار می توانید از دستورات SQL که قبلا در مورد آنها بحث کردیم استفاده نمایید. اگر هم از SQL Management studio استفاده می کنید صبر کنید تا در بخشهای بعدی توضیح دهیم.

 

اتصال به Microsoft SQL Server از طریق ابزار sqlcmd

برای باز کردن پنجره Cmd در ویندوز XP به مسیر Start > Run رفته و در داخل کادر Run کلمه cmd را تایپ نمایید.در ویندوز Vista و 7 از منوی استارت و در داخل کادر جستجوی آن کلمه cmd را تایپ کرده و دکمه Enter را بزنید.
create-database-and-table-with-sqlcmd-01
دستوری که به ما اجازه اتصال به SQL Server را می دهد sqlcmd می باشد. با نوشتن کلمه sqlcmd به شما اجازه کار با دستورات SQL داده می شود. در جدول زیر چندین گزینه و همچنین کاربرد آنها در هنگام کار با sqlcmd ذکر شده اند :

گزینه توضیح
-U شناسه ورود کاربر. اگر این گزینه تعیین نشود SQL از اعتبارسنجی ویندوز استفاده می کند.
-P پسورد کاربر. اگر این گزینه تعیین نشود و –U تعیین شود sqlcmd در مورد پسورد به شما هشدار می دهد.
-S نام سروری که می خواهید به آن وصل شوید را مشخص می کند.

در درس های قبلی با چگونگی نام گذاری سرور آشنا شدید (که ما از نام SQLEXPRESS استفاده کردیم). دانستن این نام در هنگام اتصال به دیتابیس مهم است.همچنین یک کلمه عبور برای اکانت sa در نظر گرفتیم. با استفاده از این کلمه عبور می توانیم وارد سرور شویم. در زیر چگونگی اتصال به SQLEXPRESS با استفاده از اکانت sa نشان داده شده است.

C:\Users\YourName>sqlcmd -S .\SQLEXPRESS -U sa -P mypassword

گزینه S– نشان دهنده این است که ما از سرور SQLEXPRESS استفاده می کنیم. هنگام تعیین سرور لازم است که نام یا IP کامپیوتری که سرور در آن قرار دارد را نیز مشخص کنیم. اگر با مفاهیم شبکه و ip آشنایی ندارید، برای اتصال به SQLEXPRESS می توانید بعد از نام کامپیوترتان یا بعد از گذاشتن یک علامت نقطه کلمه SQLEXPRESS را تایپ کنید. برای کلمه کاربری و رمز عبور هم می توانید از گزینه های U– وP– استفاده نمایید. ما از اکانت sa و پسوردی که در هنگام نصب SQL server ایجاد کرده ایم استفاده می کنیم. اگر در به یاد آوری پسورد با مشکل مواجه شدید می توانید با حذف گزینه های U– و P– از اعتبارسنجی ویندوز استفاده کنید.

C:\Users\YourName>sqlcmd -S .\SQLEXPRESS

دستور بالا از اعتبار کاربری که با آن وارد محیط ویندوز شده اید استفاده می کند. ورود با sa به شما اجازه کنترل کامل بر روی دیتابیس را می دهد. بعد از تایپ دستور بالا، دکمه enter را فشار دهید. اگر همه چیز به خوبی پیش برود خطی مانند شکل زیر (1>) ظاهر می شود که نشان دهنده این است که برنامه منتظر دریافت ورودی از کاربر است.

C:\Users\YourName>sqlcmd -S .\SQLEXPRESS
1>

اگر به هر دلیلی با پیغام خطا مواجه شدید، کد بالا را به صورت زیر تغییر دهید :

C:\Users\YourName>sqlcmd -S localhost\sqlexpress
1>

با وارد کردن کد بالا، پنجره CMD به صورت زیر در می آید :
create-database-and-table-with-sqlcmd-02

 

ایجاد دیتابیس با استفاده از ابزار sqlcmd

در این بخش می خواهیم یک دیتابیس با نام University که شامل جدول Students است را ایجاد کنیم. برای ان کار دستور SQL زیر را می نویسیم :

1> CREATE DATABASE University

با فشار دادن دکمه Enter هیچ اتفاقی نمی افتد و برنامه منتظر دریافت دستور بعدی می شود. برای اجرای دستور لازم است کلمه GO را تایپ کرده و دکمه Enter را بزنید.

1> CREATE DATABASE University
2> GO

برای اینکه دستورات تاثیر خود را بگذارند لازم است چند ثانیه صبر کنید. اگر همه چیز به خوبی پیش رود و برنامه پیغام خطا ندهد کد زیر نمایش داده می شود :

1> CREATE DATABASE University
2> GO
1>

 

ایجاد جدول با استفاده از ابزار sqlcmd

برای ایجاد جدول student که شامل جزییاتی در مورد چندین دانش آموز است ابتدا باید از ایجاد دیتابیس مطمئن شوید برای این کار دستور زیر را تایپ کنید :

1> USE University
2> GO

معنای دستور بالا این است که ما می خواهیم تغییراتی در دیتابیسی به نام University بدهیم. همچنین یک پیغام مبنی بر اعمال تغییرات به شما نشان داده می شود.
اجازه دهید که جدول Students را ایجاد کنیم. دستور SQL زیر را می نویسیم :

1> CREATE TABLE Students
2> (
3>    StudentID int identity primary key,
4>    FirstName varchar(50),
5>    LastName varchar(50),
6>    Gender varchar(10),
7>    Age int,
8>    Address varchar(50)
9> )
10> GO
1>

جدول ایجاد شده دارای 6 ستون می باشد. ستون اول StudentID است، که آن را به عنوان کلید اصلی و از نوع int تعریف کرده ایم. دیگر ستون های آن به ترتیب عبارتند از FirstName، LastName، Gender، Age و Address که نوع آنها مشخص شده است. با اجرای دستور فوق جدول ایجاد می شود. نکته ای که در کد بالا وجود دارد و بهتر است که در همین جا به آن اشاره کنیم مربوط به خط 3 و کلمات identity و primary key می باشد.

 

اضافه کردن رکوردها با استفاده از sqlcmd

حال که جدول مان را ایجاد کرده ایم اجازه دهید اطلاعات مربوط به چند دانش آموز را به آن اضافه کنیم. در زیر اطلاعات مربوط به چند دانش آموز که به جدول اضافه کرده ایم نشان داده شده است :

StudentID FirstName LastName Gender Age Address
1 Edward Lyons Male 17 Spencer Street
2 Jimmie Vargas Male 18 Blue Bay Avenue
3 Monica Ward Female 16 Mapple Street
4 Joann Jordan Female 17 Spencer Street
5 Cheryl Swanson Female 17 Wacky Street
6 Clara Webb Female 18 Spooner Street
7 Zack Norris Male 19 Blue Bay Avenue
8 Randall May Male 18 Golden Street
9 Jessica Cole Female 17 Mapple Street
10 Oscar Manning Male 18 Mapple Street

حال که 10 رکورد داریم اجازه دهید آنها را با استفاده از دستورات SQL به جدول Students اضافه کنیم :

1> INSERT INTO Students (FirstName, LastName, Gender, Age, Address) VALUES 
2>   ('Edward', 'Lyons', 'Male', 17, 'Spencer Street'),
3>   ('Jimmie', 'Vargas', 'Male', 18, 'Blue Bay Avenue'),
4>   ('Monica', 'Ward', 'Female', 16, 'Mapple Street'),
5>   ('Joann', 'Jordan', 'Female', 17, 'Spencer Street'),
6>   ('Cheryl', 'Swanson', 'Female', 17, 'Wacky Street'),
7>   ('Clara', 'Webb', 'Female', 18, 'Spooner Street'),
8>   ('Zack', 'Norris', 'Male', 19, 'Blue Bay Avenue'),
9>   ('Randall', 'May', 'Male', 18, 'Golden Street'),
10>  ('Jessica', 'Cole', 'Female', 17, 'Mapple Street'),
11>  ('Oscar', 'Manning', 'Male', 18, 'Mapple Street') 
12> GO

از یک نسخه اصلاح شده دستور INSERT INTO که به ما اجازه وارد کردن چندین رکورد را به صورت یکجا می دهد، استفاده می کنیم. هر رکورد در داخل پرانتز قرار دارد و رکوردها به وسیله کاما از هم جدا شده اند. بعد از اجرای دستورات SQL، جدول Students باید دارای 10 رکورد باشد. اگر همه چیز به درستی انجام شود، یک پیغام نشان داده می شود که نشان دهنده تعداد رکوردهایی است که دستکاری (اضافه) شده اند. همه کدهایی که تا الان برای ایجاد دیتابیس University نوشته ایم به صورت زیر است :

Microsoft Windows[Version 6.1.7601]
Copyright(c) 2009 Microsoft Corporation.All rights reserved.

C:\Users\YourName>sqlcmd -S.\SQLEXPRESS
1> CREATE DATABASE University
2> GO
1> USE University
2> GO
Changed database context to 'University'.
1> CREATE TABLE Students
2> (
3>    StudentID int identity primary key,
4>    FirstName varchar(50),
5>    LastName varchar(50),
6>    Gender varchar(10),
7>    Age int,
8>    Address varchar(50)
9> )
10> GO
1> INSERT INTO Students(FirstName, LastName, Gender, Age, Address) VALUES
2>  ('Edward', 'Lyons', 'Male', 17, 'Spencer Street'),
3>  ('Jimmie', 'Vargas', 'Male', 18, 'Blue Bay Avenue'),
4>  ('Monica', 'Ward', 'Female', 16, 'Mapple Street'),
5>  ('Joann', 'Jordan', 'Female', 17, 'Spencer Street'),
6>  ('Cheryl', 'Swanson', 'Female', 17, 'Wacky Street'),
7>  ('Clara', 'Webb', 'Female', 18, 'Spooner Street'),
8>  ('Zack', 'Norris', 'Male', 19, 'Blue Bay Avenue'),
9>  ('Randall', 'May', 'Male', 18, 'Golden Street'),
10> ('Jessica', 'Cole', 'Female', 17, 'Mapple Street'),
11> ('Oscar', 'Manning', 'Male', 18, 'Mapple Street')
12> GO

(10 rows affected)
1>

حال می خواهیم با توجه به مطالبی که در درس قبل یاد گرفتیم، عملیات مختلفی بر روی بانک انجام دهیم. دستور INSERT را که در بالا برای وارد کردن اطلاعات انجام داده ایم. حال برای نمایش اطلاعات می خواهیم از دستور SELECT استفاده کنیم. در ادامه کدهای بالا دستور زیر را بنویسید :

1> SELECT* FROM Students
2> GO

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

StudentID       FirstName       LastName        Gender      Age     Address
-----------------------------------------------------------------------------------
1               Edward          Lyons           Male        17      Spencer Street
2               Jimmie          Vargas          Male        18      Blue Bay Avenue
3               Monica          Ward            Female      16      Mapple Street
4               Joann           Jordan          Female      17      Spencer Street
5               Cheryl          Swanson         Female      17      Wacky Street
6               Clara           Webb            Female      18      Spooner Street
7               Zack            Norris          Male        19      Blue Bay Avenue			
8               Randall         May             Male        18      Golden Street
9               Jessica         Cole            Female      17      Mapple Street
10              Oscar           Manning         Male        18      Mapple Street
(10 rows affected)
1>

اگر بخواهید اطلاعات یک یا چند ستون خاص را نمایش دهید کافیست از کد زیر استفاده کنید :

1> SELECT FirstName, LastName  FROM Students
2> GO

کد بالا فقط اطلاعات مربوط به ستون های FirstName و LastName را نمایش می دهد :

FirstName       LastName 
-------------------------
Edward          Lyons    
Jimmie          Vargas   
Monica          Ward     
Joann           Jordan   
Cheryl          Swanson  
Clara           Webb     
Zack            Norris   		
Randall         May      
Jessica         Cole     
Oscar           Manning

حال فرض کنید که می خواهیم نام خانوادگی و سن شخصی که اسمش Edward است را از جدول استخراج کنیم. برای این کار از دستور WHERE به صورت زیر استفاده می کنیم :

1> SELECT LastName, Age FROM Students WHERE FirstName = 'Edward';
2> GO

خروجی کد بالا به صورت زیر است :

LastName       Age
------------------
Lyons          17 

حال می خواهیم اشخاصی که StudentID آنها کمتر از 5 است را استخراج کرده و به صورت نزولی مرتب کنیم. برای این کار به صورت زیر عمل می کنیم :

1> SELECT StudentID, FirstName, LastName FROM Students WHERE StudentID < 5 ORDER BY studentID DESC;
2> GO

کد بالا 4 نفر اول را استخراج کرده و بر اساس ستون StudentID از بزرگ به کوچک مرتب می کند. خروجی کد بالا به صورت زیر است :

StudentID       FirstName       LastName
----------------------------------------
4               Joann           Jordan
3               Monica          Ward
2               Jimmie          Vargas
1               Edward          Lyons

فرض کنید می خواهید تمامی نام هایی که در داخل آنها ar وجود دارد را استخراج کنید. در این صورت از عبارت LIKE به صورت زیر استفاده کنید :

1> SELECT FirstName FROM Students WHERE FirstName LIKE '%ar%'
2> GO

کد بالا تمامی نام هایی که در آنها دو حرف a و r پشت سر هم آمده اند را استخراجی می کند :

FirstName
----------
Edward
Clara
Oscar

اگر بخواهیم مثلا سن شخصی به نام Edward را از 17 به 20 تغییر دهیم می توانیم از دستور UPDATE استفاده کنیم :

1> UPDATE Students SET Age = 20 WHERE StudentID = 1
2> GO

در دستور بالا گفته ایم که سن شخصی از جدول Students را که StudentID آن برابر 1 است را به 20 تغییر بده. حال اگر با استفاده از یک دستور SELECT همه داده ها را نمایش دهیم مشاهده می کنید که سن Edward به 20 تغییر کرده است. همانطور که مشاهده می کنید استفاده از دستورات SQL بسیار آسان است. شما می توانید بقیه دستورات را که در درس قبل آموختید را به صورت بالا امتحان کنید.

لطفا اگر نظر، پیشنهاد و یا انتقادی در باره مطلب بالا دارید در قسمت زیر و اگر سوالی دارید در بخش پرسش و پاسخ مطرح بفرمایید.

  1. رضا پاسخ دادن

    آقا واقعا دمت گرم… سایتت حرف نداره.
    لطفا بخش Ado رو تکمیل کن.ممنون.

  2. جواد پاسخ دادن

    با عرض سلام و خسته نباشید اگه امکانش هستش نحوه ای ارتباط دادن sql server 2008 r2 رو با سی شارپ دات نت بگید و اینکه نحوه ای insetr , Edit ,delete ,search رو هم بگید منظورم این هستش که نحوه ای کد نویسی چطور هستش من قبلا میومدم از طریق vb.net این کارو می کردم و حالا می خواهم با سی شارپ این کارو انجام بدم ممنون میشم اگه توضیح بدید تصویری و اینکه چطور از کجا شروع کنم که داخل دیتاگریدویو اطلاعات اضافه بشه و حذف بشه و …
    با تشکر از سایت خوب شما

  3. مهدی پاسخ دادن

    سلام، در هنگام اجرای پرس و جو … Debugging query ادامه پیدا میکنه و ننتیجه ای نمی بینم ! باید چکار کنم ؟ من جدولم و پرس و جوم ایرادی ندارد.

  4. javad پاسخ دادن

    با سلام و خسته نباشید لطفا برید سر اصل مطلب یعنی نحوه ویرایش و جست و جو و غیره… با کلاس ها بگید ممنون از لطف شما

  5. ali پاسخ دادن

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

    • یونس ابراهیمی پاسخ دادن

      سلام، ممنون میشم سوالتونو توی انجمن مطرح بفرمایید