T-SQL - คู่มือฉบับย่อ
ในปี 1970 ผลิตภัณฑ์ที่เรียกว่า 'SEQUEL' ซึ่งเป็นภาษาแบบสอบถามภาษาอังกฤษที่มีโครงสร้างซึ่งพัฒนาโดย IBM และต่อมา SEQUEL ได้เปลี่ยนชื่อเป็น 'SQL' ซึ่งย่อมาจาก Structured Query Language
ในปี 1986 SQL ได้รับการรับรองจาก ANSI (American National Standards Institute) และในปี 1987 ได้รับการรับรองจาก ISO (International Standards Organization)
SQL เป็นภาษาเคียวรีโครงสร้างซึ่งเป็นภาษาฐานข้อมูลทั่วไปสำหรับผลิตภัณฑ์ RDBMS ทั้งหมด ผู้จำหน่ายผลิตภัณฑ์ RDBMS ที่แตกต่างกันได้พัฒนาภาษาฐานข้อมูลของตนเองโดยการขยาย SQL สำหรับผลิตภัณฑ์ RDBMS ของตนเอง
T-SQL ย่อมาจาก Transact Structure Query Language ซึ่งเป็นผลิตภัณฑ์ของ Microsoft และเป็นส่วนขยายของภาษา SQL
ตัวอย่าง
MS SQL Server - SQL \ T-SQL
ORACLE - SQL \ PL-SQL
ชนิดข้อมูล SQL Server เป็นแอตทริบิวต์ที่ระบุประเภทข้อมูลของวัตถุใด ๆ แต่ละคอลัมน์ตัวแปรและนิพจน์มีชนิดข้อมูลที่เกี่ยวข้องใน SQL Server ชนิดข้อมูลเหล่านี้สามารถใช้ได้ในขณะสร้างตาราง คุณสามารถเลือกประเภทข้อมูลเฉพาะสำหรับคอลัมน์ตารางตามความต้องการของคุณ
SQL Server มีเจ็ดประเภทรวมถึงประเภทข้อมูลอื่น ๆ สำหรับการใช้งาน
ประเภทตัวเลขที่แน่นอน
ประเภท | จาก | ถึง |
---|---|---|
bigint | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
int | -2,147,483,648 | 2,147,483,647 |
Smallint | -32,768 | 32,767 |
Tinyint | 0 | 255 |
นิดหน่อย | 0 | 1 |
ทศนิยม | -10 ^ 38 +1 | 10 ^ 38 –1 |
ตัวเลข | -10 ^ 38 +1 | 10 ^ 38 –1 |
เงิน | -922,337,203,685,477.5808 | +922,337,203,685,477.5807 |
smallmoney | -214,748.3648 | +214,748.3647 |
ตัวเลขและทศนิยมเป็นชนิดข้อมูลที่มีความแม่นยำและมาตราส่วนคงที่และเทียบเท่ากับฟังก์ชัน
ประเภทตัวเลขโดยประมาณ
ประเภท | จาก | ถึง |
---|---|---|
ลอย | -1.79E + 308 | 1.79E + 308 |
จริง | -3.40E + 38 | 3.40E + 38 |
ประเภทวันที่และเวลา
ประเภท | จาก | ถึง |
---|---|---|
datetime(ความแม่นยำ 3.33 มิลลิวินาที) |
1 ม.ค. 1753 | 31 ธ.ค. 9999 |
smalldatetime(ความแม่นยำ 1 นาที) |
1 ม.ค. 1900 | 6 มิ.ย. 2579 |
date(ความแม่นยำ 1 วันแนะนำใน SQL Server 2008) |
1 ม.ค. 0001 | 31 ธ.ค. 9999 |
datetimeoffset(ความแม่นยำ 100 นาโนวินาทีแนะนำใน SQL Server 2008) |
1 ม.ค. 0001 | 31 ธ.ค. 9999 |
datetime2(ความแม่นยำ 100 นาโนวินาทีแนะนำใน SQL Server 2008) |
1 ม.ค. 0001 | 31 ธ.ค. 9999 |
time(ความแม่นยำ 100 นาโนวินาทีแนะนำใน SQL Server 2008) |
00: 00: 00.0000000 น | 23: 59: 59.9999999 |
สตริงอักขระ
ซีเนียร์ No | ประเภทและคำอธิบาย |
---|---|
1 | char ข้อมูลอักขระที่ไม่ใช่ Unicode ความยาวคงที่โดยมีความยาวสูงสุด 8,000 อักขระ |
2 | varchar ข้อมูลที่ไม่ใช่ Unicode ที่มีความยาวตัวแปรซึ่งมีอักขระไม่เกิน 8,000 ตัว |
3 | Varchar (max) ข้อมูลที่ไม่ใช่ Unicode ที่มีความยาวตัวแปรที่มีความยาวสูงสุด 231 อักขระ (แนะนำใน SQL Server 2005) |
4 | text ข้อมูลที่ไม่ใช่ Unicode ที่มีความยาวตัวแปรโดยมีความยาวสูงสุด 2,147,483,647 อักขระ |
สตริงอักขระ Unicode
ซีเนียร์ No | ประเภทและคำอธิบาย |
---|---|
1 | nchar ข้อมูล Unicode ความยาวคงที่ซึ่งมีความยาวสูงสุด 4,000 อักขระ |
2 | nvarchar ข้อมูล Unicode ความยาวตัวแปรที่มีความยาวสูงสุด 4,000 อักขระ |
3 | Nvarchar (max) ข้อมูล Unicode ความยาวตัวแปรที่มีความยาวสูงสุด 2 30อักขระ (แนะนำใน SQL Server 2005) |
4 | ntext ข้อมูล Unicode ความยาวตัวแปรที่มีความยาวสูงสุด 1,073,741,823 อักขระ |
สตริงไบนารี
ซีเนียร์ No | ประเภทและคำอธิบาย |
---|---|
1 | binary ข้อมูลไบนารีความยาวคงที่ที่มีความยาวสูงสุด 8,000 ไบต์ |
2 | varbinary ข้อมูลไบนารีความยาวตัวแปรที่มีความยาวสูงสุด 8,000 ไบต์ |
3 | varbinary(max) ข้อมูลไบนารีความยาวตัวแปรที่มีความยาวสูงสุด 2 31ไบต์ (แนะนำใน SQL Server 2005) |
4 | image ข้อมูลไบนารีความยาวตัวแปรที่มีความยาวสูงสุด 2,147,483,647 ไบต์ |
ประเภทข้อมูลอื่น ๆ
sql_variant - เก็บค่าของประเภทข้อมูลที่รองรับ SQL Server ยกเว้นข้อความ ntext และการประทับเวลา
timestamp - จัดเก็บหมายเลขเฉพาะของฐานข้อมูลที่ได้รับการอัปเดตทุกครั้งที่มีการอัปเดตแถว
uniqueidentifier - จัดเก็บตัวระบุที่ไม่ซ้ำกันทั่วโลก (GUID)
xml- จัดเก็บข้อมูล XML คุณสามารถจัดเก็บอินสแตนซ์ XML ในคอลัมน์หรือตัวแปร (แนะนำใน SQL Server 2005)
cursor - การอ้างอิงเคอร์เซอร์
table - จัดเก็บชุดผลลัพธ์สำหรับการประมวลผลในภายหลัง
hierarchyid - ความยาวตัวแปรชนิดข้อมูลระบบที่ใช้เพื่อแสดงตำแหน่งในลำดับชั้น (แนะนำใน SQL Server 2008)
การสร้างตารางพื้นฐานเกี่ยวข้องกับการตั้งชื่อตารางและการกำหนดคอลัมน์และประเภทข้อมูลของแต่ละคอลัมน์
เซิร์ฟเวอร์ SQL CREATE TABLE คำสั่งใช้เพื่อสร้างตารางใหม่
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง CREATE TABLE -
CREATE TABLE table_name(
column1 datatype,
column2 datatype,
column3 datatype,
.....
columnN datatype,
PRIMARY KEY( one or more columns ));
CREATE TABLE คือคีย์เวิร์ดที่บอกระบบฐานข้อมูลว่าคุณต้องการทำอะไร ในกรณีนี้คุณต้องการสร้างตารางใหม่ ชื่อเฉพาะหรือตัวระบุสำหรับตารางเป็นไปตามคำสั่ง CREATE TABLE จากนั้นในวงเล็บจะแสดงรายการที่กำหนดแต่ละคอลัมน์ในตารางและประเภทข้อมูลประเภทใด ไวยากรณ์จะชัดเจนขึ้นเพื่อทำความเข้าใจด้วยตัวอย่างต่อไปนี้
สามารถสร้างสำเนาของตารางที่มีอยู่ได้โดยใช้คำสั่ง CREATE TABLE และคำสั่ง SELECT คุณสามารถตรวจสอบรายละเอียดทั้งหมดได้ที่สร้างตารางโดยใช้ตารางอื่น
ตัวอย่าง
ในตัวอย่างนี้ให้สร้างตาราง CUSTOMERS โดยมี ID เป็นคีย์หลักและ NOT NULL เป็นข้อ จำกัด ที่แสดงว่าฟิลด์เหล่านี้ไม่สามารถเป็น NULL ได้ในขณะที่สร้างระเบียนในตารางนี้ -
CREATE TABLE CUSTOMERS(
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25) ,
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID));
คุณสามารถตรวจสอบได้ว่าสร้างตารางของคุณสำเร็จหรือไม่โดยดูที่ข้อความที่แสดงโดยเซิร์ฟเวอร์ SQL มิฉะนั้นคุณสามารถใช้คำสั่งต่อไปนี้ -
exec sp_columns CUSTOMERS
คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้
TABLE_QUALIFIER TABLE_OWNER TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME
PRECISION LENGTH SCALE RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE
SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SS_DATA_TYPE
TestDB dbo CUSTOMERS ID 4 int 10 4 0 10 0
NULL NULL 4 NULL NULL 1 NO 56
TestDB dbo CUSTOMERS NAME 12 varchar 20 20 NULL NULL 0
NULL NULL 12 NULL 20 2 NO 39
TestDB dbo CUSTOMERS AGE 4 int 10 4 0 10 0
NULL NULL 4 NULL NULL 3 NO 56
TestDB dbo CUSTOMERS ADDRESS 1 char 25 25 NULL NULL 1
NULL NULL 1 NULL 25 4 YES 39
TestDB dbo CUSTOMERS SALARY 3 decimal 18 20 2 10 1
NULL NULL 3 NULL NULL 5 YES 106
ขณะนี้คุณสามารถดูตาราง CUSTOMERS ในฐานข้อมูลของคุณซึ่งคุณสามารถใช้เพื่อจัดเก็บข้อมูลที่จำเป็นเกี่ยวกับลูกค้าได้
เซิร์ฟเวอร์ SQL DROP TABLE คำสั่งใช้เพื่อลบนิยามตารางและข้อมูลดัชนีทริกเกอร์ข้อ จำกัด และข้อกำหนดสิทธิ์สำหรับตารางนั้นทั้งหมด
Note - คุณต้องระวังขณะใช้คำสั่งนี้เพราะเมื่อลบตารางแล้วข้อมูลทั้งหมดที่มีอยู่ในตารางก็จะหายไปตลอดกาล
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง DROP TABLE -
DROP TABLE table_name;
ตัวอย่าง
ให้เราตรวจสอบตารางลูกค้าก่อนจากนั้นเราจะลบออกจากฐานข้อมูล -
Exec sp_columns CUSTOMERS;
คำสั่งดังกล่าวแสดงตารางต่อไปนี้
TABLE_QUALIFIER TABLE_OWNER TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME
PRECISION LENGTH SCALE RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE
SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SS_DATA_TYPE
TestDB dbo CUSTOMERS ID 4 int 10 4 0 10 0
NULL NULL 4 NULL NULL 1 NO 56
TestDB dbo CUSTOMERS NAME 12 varchar 20 20 NULL NULL 0
NULL NULL 12 NULL 20 2 NO 39
TestDB dbo CUSTOMERS AGE 4 int 10 4 0 10 0
NULL NULL 4 NULL NULL 3 NO 56
TestDB dbo CUSTOMERS ADDRESS 1 char 25 25 NULL NULL 1
NULL NULL 1 NULL 25 4 YES 39
TestDB dbo CUSTOMERS SALARY 3 decimal 18 20 2 10 1
NULL NULL 3 NULL NULL 5 YES 106
ตารางลูกค้ามีอยู่ในฐานข้อมูลดังนั้นให้เราวางลง คำสั่งต่อไปนี้เป็นคำสั่งเดียวกัน
DROP TABLE CUSTOMERS;
Command(s) completed successfully.
ด้วยคำสั่งดังกล่าวคุณจะไม่ได้รับแถวใด ๆ
Exec sp_columns CUSTOMERS;
No rows\data will be displayed
เซิร์ฟเวอร์ SQL INSERT INTO คำสั่งใช้เพื่อเพิ่มแถวข้อมูลใหม่ลงในตารางในฐานข้อมูล
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์พื้นฐานสองประการของคำสั่ง INSERT INTO
INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]
VALUES (value1, value2, value3,...valueN);
โดยที่ column1, column2, ... columnN คือชื่อของคอลัมน์ในตารางที่คุณต้องการแทรกข้อมูล
คุณไม่จำเป็นต้องระบุชื่อคอลัมน์ในแบบสอบถาม SQL หากคุณกำลังเพิ่มค่าสำหรับคอลัมน์ทั้งหมดของตาราง แต่ตรวจสอบให้แน่ใจว่าลำดับของค่าอยู่ในลำดับเดียวกับคอลัมน์ในตาราง ต่อไปนี้เป็นไวยากรณ์ SQL INSERT INTO -
INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
ตัวอย่าง
คำสั่งต่อไปนี้จะสร้างหกระเบียนในตารางลูกค้า -
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'kaushik', 23, 'Kota', 2000.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Chaitali', 25, 'Mumbai', 6500.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (5, 'Hardik', 27, 'Bhopal', 8500.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (6, 'Komal', 22, 'MP', 4500.00 );
ไวยากรณ์
คุณสามารถสร้างเรกคอร์ดในตาราง CUSTOMERS โดยใช้ไวยากรณ์ที่สองดังนี้ -
INSERT INTO CUSTOMERS VALUES (7, 'Muffy', 24, 'Indore', 10000.00 );
ข้อความข้างต้นทั้งหมดจะสร้างบันทึกต่อไปนี้ในตารางลูกค้า -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
เติมข้อมูลหนึ่งตารางโดยใช้ตารางอื่น
คุณสามารถเติมข้อมูลลงในตารางโดยใช้คำสั่ง SELECT บนตารางอื่นหากตารางอื่นมีชุดฟิลด์ซึ่งจำเป็นสำหรับการเติมข้อมูลในตารางแรก ต่อไปนี้เป็นไวยากรณ์ -
INSERT INTO first_table_name
SELECT column1, column2, ...columnN
FROM second_table_name
[WHERE condition];
เซิร์ฟเวอร์ SQL SELECTคำสั่งใช้เพื่อดึงข้อมูลจากตารางฐานข้อมูลซึ่งส่งคืนข้อมูลในรูปแบบของตารางผลลัพธ์ ตารางผลลัพธ์เหล่านี้เรียกว่าresult-sets.
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง SELECT -
SELECT column1, column2, columnN FROM table_name;
โดยที่ column1, column2 ... คือเขตข้อมูลของตารางที่มีค่าที่คุณต้องการดึงข้อมูล หากคุณต้องการดึงฟิลด์ทั้งหมดที่มีอยู่ในฟิลด์คุณสามารถใช้ไวยากรณ์ต่อไปนี้ -
SELECT * FROM table_name;
ตัวอย่าง
พิจารณาตารางลูกค้าที่มีบันทึกต่อไปนี้ -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
คำสั่งต่อไปนี้เป็นตัวอย่างซึ่งจะดึงข้อมูล ID ชื่อและฟิลด์เงินเดือนของลูกค้าที่มีอยู่ในตาราง CUSTOMERS -
SELECT ID, NAME, SALARY FROM CUSTOMERS;
คำสั่งดังกล่าวจะสร้างผลลัพธ์ต่อไปนี้
ID NAME SALARY
1 Ramesh 2000.00
2 Khilan 1500.00
3 kaushik 2000.00
4 Chaitali 6500.00
5 Hardik 8500.00
6 Komal 4500.00
7 Muffy 10000.00
หากคุณต้องการดึงฟิลด์ทั้งหมดของตาราง CUSTOMERS ให้ใช้แบบสอบถามต่อไปนี้ -
SELECT * FROM CUSTOMERS;
ข้างต้นจะให้ผลลัพธ์ดังต่อไปนี้
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
เซิร์ฟเวอร์ SQL UPDATE แบบสอบถามใช้เพื่อแก้ไขระเบียนที่มีอยู่ในตาราง
คุณสามารถใช้ WHERE clause กับ UPDATE query เพื่ออัปเดตแถวที่เลือกมิฉะนั้นแถวทั้งหมดจะได้รับผลกระทบ
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์พื้นฐานของการสอบถาม UPDATE พร้อมด้วย WHERE clause -
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
คุณสามารถรวม N จำนวนเงื่อนไขโดยใช้ตัวดำเนินการ AND หรือ OR
ตัวอย่าง
พิจารณาตารางลูกค้าที่มีบันทึกต่อไปนี้ -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
คำสั่งต่อไปนี้เป็นตัวอย่างซึ่งจะอัปเดต ADDRESS สำหรับลูกค้าที่มี ID คือ 6 -
UPDATE CUSTOMERS
SET ADDRESS = 'Pune'
WHERE ID = 6;
ตารางลูกค้าจะมีบันทึกต่อไปนี้ -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 Pune 4500.00
7 Muffy 24 Indore 10000.00
หากคุณต้องการแก้ไขค่าคอลัมน์ ADDRESS และ SALARY ทั้งหมดในตาราง CUSTOMERS คุณไม่จำเป็นต้องใช้คำสั่ง WHERE คำถาม UPDATE จะเป็นดังนี้ -
UPDATE CUSTOMERS
SET ADDRESS = 'Pune', SALARY = 1000.00;
ตารางลูกค้าจะมีบันทึกต่อไปนี้
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Pune 1000.00
2 Khilan 25 Pune 1000.00
3 kaushik 23 Pune 1000.00
4 Chaitali 25 Pune 1000.00
5 Hardik 27 Pune 1000.00
6 Komal 22 Pune 1000.00
7 Muffy 24 Pune 1000.00
เซิร์ฟเวอร์ SQL DELETE แบบสอบถามใช้เพื่อลบระเบียนที่มีอยู่ออกจากตาราง
คุณต้องใช้ WHERE clause กับ DELETE query เพื่อลบแถวที่เลือกมิฉะนั้นระเบียนทั้งหมดจะถูกลบ
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์พื้นฐานของ DELETE query กับ WHERE clause -
DELETE FROM table_name
WHERE [condition];
คุณสามารถรวม N จำนวนเงื่อนไขโดยใช้ตัวดำเนินการ AND หรือ OR
ตัวอย่าง
พิจารณาตารางลูกค้าที่มีบันทึกต่อไปนี้ -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
คำสั่งต่อไปนี้เป็นตัวอย่างซึ่งจะลบลูกค้าซึ่งมี ID คือ 6 -
DELETE FROM CUSTOMERS
WHERE ID = 6;
ตารางลูกค้าจะมีบันทึกต่อไปนี้
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
7 Muffy 24 Indore 10000.00
หากคุณต้องการลบระเบียนทั้งหมดจากตาราง CUSTOMERS คุณไม่จำเป็นต้องใช้คำสั่ง WHERE ลบแบบสอบถามจะเป็นดังนี้ -
DELETE FROM CUSTOMERS;
ตารางลูกค้าตอนนี้จะไม่มีบันทึกใด ๆ
เซิร์ฟเวอร์ MS SQL WHERE อนุประโยคใช้เพื่อระบุเงื่อนไขในขณะที่ดึงข้อมูลจากตารางเดียวหรือเข้าร่วมกับหลายตาราง
หากเงื่อนไขที่กำหนดเป็นที่พอใจระบบจะส่งคืนค่าเฉพาะจากตารางเท่านั้น คุณจะต้องใช้คำสั่ง WHERE เพื่อกรองระเบียนและดึงเฉพาะระเบียนที่จำเป็น
คำสั่ง WHERE ไม่เพียง แต่ใช้ในคำสั่ง SELECT เท่านั้น แต่ยังใช้ในคำสั่ง UPDATE, DELETE ฯลฯ ซึ่งเราจะตรวจสอบในบทต่อ ๆ ไป
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง SELECT พร้อมด้วย WHERE clause -
SELECT column1, column2, columnN
FROM table_name
WHERE [condition]
คุณสามารถระบุเงื่อนไขโดยใช้ตัวดำเนินการเปรียบเทียบหรือเชิงตรรกะเช่น>, <, =, LIKE, NOT ฯลฯ ตัวอย่างต่อไปนี้จะทำให้แนวคิดนี้ชัดเจน
ตัวอย่าง
พิจารณาตารางลูกค้าที่มีบันทึกต่อไปนี้ -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
คำสั่งต่อไปนี้เป็นตัวอย่างที่จะดึงฟิลด์ ID ชื่อและเงินเดือนจากตาราง CUSTOMERS ที่เงินเดือนมากกว่า 2000
SELECT ID, NAME, SALARY
FROM CUSTOMERS
WHERE SALARY > 2000;
คำสั่งดังกล่าวจะสร้างผลลัพธ์ต่อไปนี้
ID NAME SALARY
4 Chaitali 6500.00
5 Hardik 8500.00
6 Komal 4500.00
7 Muffy 10000.00
คำสั่งต่อไปนี้เป็นตัวอย่างซึ่งจะดึงฟิลด์ ID ชื่อและเงินเดือนจากตารางลูกค้าสำหรับลูกค้าที่มีชื่อ 'Hardik' สิ่งสำคัญคือต้องทราบว่าควรกำหนดสตริงทั้งหมดไว้ในเครื่องหมายคำพูดเดี่ยว ('') ในขณะที่ค่าตัวเลขควรกำหนดโดยไม่มีเครื่องหมายคำพูดใด ๆ ตามตัวอย่างข้างต้น
SELECT ID, NAME, SALARY
FROM CUSTOMERS
WHERE NAME = 'Hardik';
คำสั่งดังกล่าวจะสร้างผลลัพธ์ต่อไปนี้
ID NAME SALARY
5 Hardik 8500.00
เซิร์ฟเวอร์ MS SQL LIKEอนุประโยคใช้เพื่อเปรียบเทียบค่ากับค่าที่คล้ายกันโดยใช้ตัวดำเนินการสัญลักษณ์แทน มีสัญลักษณ์แทนสองตัวที่ใช้ร่วมกับตัวดำเนินการ LIKE -
- เครื่องหมายเปอร์เซ็นต์ (%)
- ขีดล่าง (_)
เครื่องหมายเปอร์เซ็นต์แสดงถึงศูนย์หนึ่งหรือหลายอักขระ ขีดล่างแสดงถึงตัวเลขหรืออักขระตัวเดียว สามารถใช้สัญลักษณ์ร่วมกันได้
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์พื้นฐานของ% และ _
SELECT *\column-list FROM table_name
WHERE column LIKE 'XXXX%'
or
SELECT *\column-list FROM table_name
WHERE column LIKE '%XXXX%'
or
SELECT *\column-list FROM table_name
WHERE column LIKE 'XXXX_'
or
SELECT *\column-list FROM table_name
WHERE column LIKE '_XXXX'
or
SELECT *\column-list FROM table_name
WHERE column LIKE '_XXXX_'
คุณสามารถรวม N จำนวนเงื่อนไขโดยใช้ตัวดำเนินการ AND หรือ OR XXXX อาจเป็นค่าตัวเลขหรือสตริงก็ได้
ตัวอย่าง
ต่อไปนี้เป็นตัวอย่างจำนวนหนึ่งที่แสดงว่าส่วนไหนที่มีส่วนคำสั่ง LIKE ต่างกันโดยมีตัวดำเนินการ '%' และ '_'
ซีเนียร์ No | คำชี้แจงและคำอธิบาย |
---|---|
1 | WHERE SALARY LIKE '200%' ค้นหาค่าใด ๆ ที่เริ่มต้นด้วย 200 |
2 | WHERE SALARY LIKE '%200%' ค้นหาค่าใด ๆ ที่มี 200 ในตำแหน่งใด ๆ |
3 | WHERE SALARY LIKE '_00%' ค้นหาค่าใด ๆ ที่มี 00 ในตำแหน่งที่สองและสาม |
4 | WHERE SALARY LIKE '2_%_%' ค้นหาค่าใด ๆ ที่ขึ้นต้นด้วย 2 และมีความยาวอย่างน้อย 3 อักขระ |
5 | WHERE SALARY LIKE '%2' ค้นหาค่าใด ๆ ที่ลงท้ายด้วย 2 |
6 | WHERE SALARY LIKE '_2%3' ค้นหาค่าใด ๆ ที่มี 2 ในตำแหน่งที่สองและลงท้ายด้วย 3 |
7 | WHERE SALARY LIKE '2___3' ค้นหาค่าใด ๆ ในตัวเลขห้าหลักที่ขึ้นต้นด้วย 2 และลงท้ายด้วย 3 |
พิจารณาตารางลูกค้าที่มีบันทึกต่อไปนี้
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
คำสั่งต่อไปนี้เป็นตัวอย่างซึ่งจะแสดงระเบียนทั้งหมดจากตาราง CUSTOMERS โดยที่ SALARY เริ่มต้นด้วย 200
SELECT * FROM CUSTOMERS
WHERE SALARY LIKE '200%';
คำสั่งดังกล่าวจะสร้างผลลัพธ์ต่อไปนี้
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
3 kaushik 23 Kota 2000.00
เซิร์ฟเวอร์ MS SQL ORDERBY clause ใช้เพื่อเรียงลำดับข้อมูลจากน้อยไปมากหรือมากไปหาน้อยโดยยึดตามคอลัมน์อย่างน้อยหนึ่งคอลัมน์ แบบสอบถามการจัดเรียงฐานข้อมูลบางรายการส่งผลให้เรียงลำดับจากน้อยไปมากตามค่าเริ่มต้น
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง ORDER BY
SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];
คุณสามารถใช้คอลัมน์ได้มากกว่าหนึ่งคอลัมน์ในคำสั่ง ORDER BY ตรวจสอบให้แน่ใจว่าคอลัมน์ใดที่คุณใช้จัดเรียงคอลัมน์นั้นควรอยู่ในรายการคอลัมน์
ตัวอย่าง
พิจารณาตารางลูกค้าที่มีบันทึกต่อไปนี้ -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
คำสั่งต่อไปนี้เป็นตัวอย่างซึ่งจะเรียงลำดับผลลัพธ์จากน้อยไปหามากตาม NAME และ SALARY
SELECT * FROM CUSTOMERS
ORDER BY NAME, SALARY
คำสั่งดังกล่าวจะสร้างผลลัพธ์ต่อไปนี้
ID NAME AGE ADDRESS SALARY
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
3 kaushik 23 Kota 2000.00
2 Khilan 25 Delhi 1500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
1 Ramesh 32 Ahmedabad 2000.00
คำสั่งต่อไปนี้เป็นตัวอย่างซึ่งจะเรียงลำดับผลลัพธ์จากมากไปหาน้อยตาม NAME
SELECT * FROM CUSTOMERS
ORDER BY NAME DESC
คำสั่งดังกล่าวจะให้ผลลัพธ์ดังต่อไปนี้ -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
7 Muffy 24 Indore 10000.00
6 Komal 22 MP 4500.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
5 Hardik 27 Bhopal 8500.00
4 Chaitali 25 Mumbai 6500.00
เซิร์ฟเวอร์ SQL GROUP BY อนุประโยคถูกใช้ร่วมกับคำสั่ง SELECT เพื่อจัดเรียงข้อมูลที่เหมือนกันเป็นกลุ่ม
GROUP BY clause ตามหลัง WHERE clause ในคำสั่ง SELECT และนำหน้า ORDER BY clause
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์พื้นฐานของ GROUP BY clause GROUP BY clause ต้องเป็นไปตามเงื่อนไขใน WHERE clause และต้องนำหน้า ORDER BY clause ถ้ามีการใช้
SELECT column1, column2
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2
ORDER BY column1, column2
ตัวอย่าง
พิจารณาว่าตารางลูกค้ามีบันทึกต่อไปนี้ -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
หากคุณต้องการทราบจำนวนเงินเดือนทั้งหมดของลูกค้าแต่ละรายต่อไปนี้จะเป็นแบบสอบถาม GROUP BY
SELECT NAME, SUM(SALARY) as [sum of salary] FROM CUSTOMERS
GROUP BY NAME;
คำสั่งดังกล่าวจะสร้างผลลัพธ์ต่อไปนี้
NAME sum of salary
Chaitali 6500.00
Hardik 8500.00
kaushik 2000.00
Khilan 1500.00
Komal 4500.00
Muffy 10000.00
Ramesh 2000.00
ตอนนี้ให้เราพิจารณาตารางลูกค้าต่อไปนี้ที่มีระเบียนต่อไปนี้ที่มีชื่อซ้ำกัน
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
หากเราต้องการทราบจำนวนเงินเดือนทั้งหมดของลูกค้าแต่ละรายต่อไปนี้จะเป็นแบบสอบถาม GROUP BY
SELECT NAME, SUM(SALARY) as [sum of salary] FROM CUSTOMERS
GROUP BY NAME
คำสั่งดังกล่าวจะสร้างผลลัพธ์ต่อไปนี้
NAME sum of salary
Hardik 8500.00
kaushik 8500.00
Komal 4500.00
Muffy 10000.00
Ramesh 3500.00
เซิร์ฟเวอร์ MS SQL DISTINCT คีย์เวิร์ดใช้ร่วมกับคำสั่ง SELECT เพื่อกำจัดเร็กคอร์ดที่ซ้ำกันทั้งหมดและดึงเฉพาะเร็กคอร์ดที่ไม่ซ้ำกัน
อาจเกิดสถานการณ์ขึ้นเมื่อคุณมีระเบียนที่ซ้ำกันหลายรายการในตาราง ในขณะที่เรียกข้อมูลดังกล่าวควรดึงเฉพาะระเบียนที่ไม่ซ้ำกันแทนที่จะดึงข้อมูลที่ซ้ำกัน
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์พื้นฐานของคีย์เวิร์ด DISTINCT เพื่อกำจัดเร็กคอร์ดที่ซ้ำกัน
SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]
ตัวอย่าง
พิจารณาตารางลูกค้าที่มีบันทึกต่อไปนี้
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
ให้เราดูว่าแบบสอบถาม SELECT ต่อไปนี้ส่งคืนระเบียนเงินเดือนที่ซ้ำกันอย่างไร
SELECT SALARY FROM CUSTOMERS
ORDER BY SALARY
คำสั่งดังกล่าวจะสร้างผลลัพธ์ต่อไปนี้โดยที่เงินเดือน 2000 มาสองครั้งซึ่งเป็นเรกคอร์ดที่ซ้ำกันจากตารางเดิม
SALARY
1500.00
2000.00
2000.00
4500.00
6500.00
8500.00
10000.00
ตอนนี้ให้เราใช้คำหลัก DISTINCT กับแบบสอบถาม SELECT ด้านบนและดูผลลัพธ์
SELECT DISTINCT SALARY FROM CUSTOMERS
ORDER BY SALARY
คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้โดยที่เราไม่มีรายการที่ซ้ำกัน
SALARY
1500.00
2000.00
4500.00
6500.00
8500.00
10000.00
เซิร์ฟเวอร์ MS SQL Joinsอนุประโยคใช้เพื่อรวมระเบียนจากตารางสองตารางขึ้นไปในฐานข้อมูล JOIN เป็นวิธีการรวมฟิลด์จากสองตารางโดยใช้ค่าร่วมกันของแต่ละตาราง
พิจารณาสองตารางต่อไปนี้ (ก) ตารางลูกค้ามีดังนี้ -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
(b) อีกตารางคือ ORDERS ดังต่อไปนี้ -
OID DATE CUSTOMER_ID AMOUNT
100 2009-10-08 00:00:00.000 3 1500.00
101 2009-11-20 00:00:00.000 2 1560.00
102 2009-10-08 00:00:00.000 3 3000.00
103 2008-05-20 00:00:00.000 4 2060.00
ให้เราเข้าร่วมสองตารางนี้ในคำสั่ง SELECT ของเราดังนี้ -
SELECT ID, NAME, AGE, AMOUNT
FROM CUSTOMERS, ORDERS
WHERE CUSTOMERS.ID = ORDERS.CUSTOMER_ID
OR
SELECT A.ID, A.NAME, A.AGE, B.AMOUNT
FROM CUSTOMERS A inner join ORDERS B on A.ID = B.Customer_ID
คำสั่งดังกล่าวจะสร้างผลลัพธ์ต่อไปนี้
ID NAME AGE AMOUNT
2 Khilan 25 1560.00
3 kaushik 23 1500.00
3 kaushik 23 3000.00
4 Chaitali 25 2060.00
เป็นที่สังเกตได้ว่าการรวมจะดำเนินการในส่วนคำสั่ง WHERE สามารถใช้ตัวดำเนินการหลายตัวเพื่อเข้าร่วมตารางเช่น =, <,>, <>, <=,> =,! =, ระหว่าง, LIKE และ NOT; สามารถใช้ร่วมกับตารางได้ อย่างไรก็ตามตัวดำเนินการที่พบมากที่สุดคือสัญลักษณ์เท่ากับ
ประเภทการเข้าร่วม MS SQL Server -
มีการรวมประเภทต่างๆใน MS SQL Server -
INNER JOIN - ส่งคืนแถวเมื่อมีการจับคู่ในทั้งสองตาราง
LEFT JOIN - ส่งคืนแถวทั้งหมดจากตารางด้านซ้ายแม้ว่าจะไม่มีรายการที่ตรงกันในตารางด้านขวา
RIGHT JOIN - ส่งคืนแถวทั้งหมดจากตารางด้านขวาแม้ว่าจะไม่มีรายการที่ตรงกันในตารางด้านซ้าย
FULL JOIN - ส่งคืนแถวเมื่อมีการแข่งขันในตารางใดตารางหนึ่ง
SELF JOIN - ใช้เพื่อรวมตารางเข้ากับตัวเองราวกับว่าตารางเป็นสองตารางโดยเปลี่ยนชื่อตารางอย่างน้อยหนึ่งตารางในคำสั่ง MS SQL Server ชั่วคราว
CARTESIAN JOIN - ส่งคืนผลคูณคาร์ทีเซียนของชุดระเบียนจากตารางที่รวมสองตารางขึ้นไป
ก sub-query หรือ Inner query หรือ Nested queryเป็นแบบสอบถามภายในแบบสอบถาม SQL Server อื่นและฝังอยู่ภายในส่วนคำสั่ง WHERE แบบสอบถามย่อยใช้เพื่อส่งคืนข้อมูลที่จะใช้ในแบบสอบถามหลักเป็นเงื่อนไขในการ จำกัด ข้อมูลที่จะเรียกเพิ่มเติม
แบบสอบถามย่อยสามารถใช้กับคำสั่ง SELECT, INSERT, UPDATE และ DELETE พร้อมกับตัวดำเนินการเช่น =, <,>,> =, <=, IN, BETWEEN เป็นต้น
มีกฎสองสามข้อที่การสืบค้นย่อยต้องปฏิบัติตาม -
คุณต้องใส่เคียวรีย่อยในวงเล็บ
การสืบค้นย่อยต้องมีส่วนคำสั่ง SELECT และส่วนคำสั่ง FROM
การสืบค้นย่อยอาจรวมถึงคำสั่ง WHERE, GROUP BY และ HAVING ที่ไม่บังคับ
แบบสอบถามย่อยไม่สามารถรวมส่วนคำสั่ง COMPUTE หรือ FOR BROWSE ได้
คุณสามารถรวมคำสั่ง ORDER BY ได้ก็ต่อเมื่อรวมคำสั่ง TOP
คุณสามารถซ้อนคิวรีย่อยได้ถึง 32 ระดับ
แบบสอบถามย่อยที่มีคำสั่ง SELECT
ไวยากรณ์
แบบสอบถามย่อยมักใช้กับคำสั่ง SELECT ต่อไปนี้เป็นไวยากรณ์พื้นฐาน
SELECT column_name [, column_name ]
FROM table1 [, table2 ]
WHERE column_name OPERATOR
(SELECT column_name [, column_name ]
FROM table1 [, table2 ]
[WHERE])
ตัวอย่าง
พิจารณาตารางลูกค้าที่มีบันทึกต่อไปนี้
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
ให้เราใช้แบบสอบถามย่อยต่อไปนี้กับคำสั่ง SELECT
SELECT *
FROM CUSTOMERS
WHERE ID IN (SELECT ID FROM CUSTOMERS WHERE SALARY > 4500)
คำสั่งดังกล่าวจะสร้างผลลัพธ์ต่อไปนี้
ID NAME AGE ADDRESS SALARY
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
7 Muffy 24 Indore 10000.00
แบบสอบถามย่อยที่มีคำสั่ง INSERT
แบบสอบถามย่อยยังสามารถใช้กับคำสั่ง INSERT คำสั่ง INSERT ใช้ข้อมูลที่ส่งกลับจากเคียวรีย่อยเพื่อแทรกลงในตารางอื่น ข้อมูลที่เลือกในแบบสอบถามย่อยสามารถแก้ไขได้ด้วยฟังก์ชันอักขระวันที่หรือตัวเลขใด ๆ
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์พื้นฐาน
INSERT INTO table_name [ (column1 [, column2 ]) ]
SELECT [ *|column1 [, column2 ]
FROM table1 [, table2 ]
[ WHERE VALUE OPERATOR ]
ตัวอย่าง
พิจารณาตาราง CUSTOMERS_BKP ที่มีโครงสร้างคล้ายกับตาราง CUSTOMERS ต่อไปนี้เป็นไวยากรณ์ที่จะคัดลอกตาราง CUSTOMERS ทั้งหมดไปยัง CUSTOMERS_BKP
INSERT INTO CUSTOMERS_BKP
SELECT * FROM CUSTOMERS
WHERE ID IN (SELECT ID FROM CUSTOMERS)
แบบสอบถามย่อยพร้อมคำชี้แจง UPDATE
สามารถใช้แบบสอบถามย่อยร่วมกับคำสั่ง UPDATE สามารถอัปเดตคอลัมน์เดียวหรือหลายคอลัมน์ในตารางได้เมื่อใช้แบบสอบถามย่อยกับคำสั่ง UPDATE
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์พื้นฐาน
UPDATE table
SET column_name = new_value
[ WHERE OPERATOR [ VALUE ]
(SELECT COLUMN_NAME
FROM TABLE_NAME)
[ WHERE) ]
ตัวอย่าง
สมมติว่าเรามีตาราง CUSTOMERS_BKP ซึ่งเป็นข้อมูลสำรองของตาราง CUSTOMERS
ตัวอย่างคำสั่งต่อไปนี้จะอัปเดต SALARY 0.25 เท่าในตาราง CUSTOMERS สำหรับลูกค้าทั้งหมดที่มี AGE มากกว่าหรือเท่ากับ 27
UPDATE CUSTOMERS
SET SALARY = SALARY * 0.25
WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >= 27 )
สิ่งนี้จะส่งผลกระทบต่อสองแถวและในที่สุดตาราง CUSTOMERS จะมีบันทึกต่อไปนี้
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 500.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 2125.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
แบบสอบถามย่อยที่มีคำสั่ง DELETE
แบบสอบถามย่อยสามารถใช้ร่วมกับคำสั่ง DELETE เช่นเดียวกับข้อความอื่น ๆ ที่กล่าวถึงข้างต้น
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์พื้นฐาน
DELETE FROM TABLE_NAME
[ WHERE OPERATOR [ VALUE ]
(SELECT COLUMN_NAME
FROM TABLE_NAME)
[ WHERE) ]
ตัวอย่าง
สมมติว่าเรามีตาราง CUSTOMERS_BKP ซึ่งเป็นข้อมูลสำรองของตาราง CUSTOMERS
ตัวอย่างคำสั่งต่อไปนี้จะลบเร็กคอร์ดจากตาราง CUSTOMERS สำหรับลูกค้าทั้งหมดที่มี AGE มากกว่าหรือเท่ากับ 27
DELETE FROM CUSTOMERS
WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >=27 )
สิ่งนี้จะส่งผลกระทบต่อสองแถวและในที่สุดตารางลูกค้าจะมีบันทึกต่อไปนี้
ID NAME AGE ADDRESS SALARY
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
เซิร์ฟเวอร์ MS SQL Stored procedure ใช้เพื่อประหยัดเวลาในการเขียนโค้ดซ้ำแล้วซ้ำอีกโดยการจัดเก็บสิ่งเดียวกันในฐานข้อมูลและรับเอาต์พุตที่ต้องการโดยการส่งผ่านพารามิเตอร์
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์พื้นฐานของการสร้างกระบวนงาน Stored
Create procedure <procedure_Name>
As
Begin
<SQL Statement>
End
Go
ตัวอย่าง
พิจารณาตารางลูกค้าที่มีบันทึกต่อไปนี้
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
คำสั่งต่อไปนี้เป็นตัวอย่างที่จะดึงข้อมูลทั้งหมดจากตาราง CUSTOMERS ในฐานข้อมูล Testdb
CREATE PROCEDURE SelectCustomerstabledata
AS
SELECT * FROM Testdb.Customers
GO
คำสั่งดังกล่าวจะสร้างผลลัพธ์ต่อไปนี้
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
ก transactionเป็นหน่วยงานที่ดำเนินการกับฐานข้อมูล ธุรกรรมคือหน่วยหรือลำดับของงานที่ทำตามลำดับตรรกะไม่ว่าจะเป็นแบบกำหนดเองโดยผู้ใช้หรือโดยอัตโนมัติโดยโปรแกรมฐานข้อมูลบางประเภท
ธุรกรรมคือการเผยแพร่การเปลี่ยนแปลงอย่างน้อยหนึ่งรายการในฐานข้อมูล ตัวอย่างเช่นหากคุณกำลังสร้างบันทึกหรืออัปเดตระเบียนหรือลบระเบียนออกจากตารางแสดงว่าคุณกำลังทำธุรกรรมบนโต๊ะ เป็นสิ่งสำคัญในการควบคุมธุรกรรมเพื่อให้แน่ใจว่าข้อมูลมีความสมบูรณ์และจัดการข้อผิดพลาดของฐานข้อมูล
ในทางปฏิบัติคุณจะรวมคิวรี SQL จำนวนมากไว้ในกลุ่มและคุณจะดำเนินการทั้งหมดร่วมกันเป็นส่วนหนึ่งของธุรกรรม
คุณสมบัติของธุรกรรม
ธุรกรรมมีคุณสมบัติมาตรฐานสี่ประการดังต่อไปนี้โดยปกติจะอ้างถึงโดยตัวย่อ ACID -
Atomicity- ตรวจสอบให้แน่ใจว่าการดำเนินการทั้งหมดภายในหน่วยงานเสร็จสมบูรณ์ มิฉะนั้นธุรกรรมจะถูกยกเลิกเมื่อถึงจุดที่ล้มเหลวและการดำเนินการก่อนหน้านี้จะย้อนกลับไปสู่สถานะเดิม
Consistency - ตรวจสอบให้แน่ใจว่าฐานข้อมูลมีการเปลี่ยนแปลงสถานะอย่างเหมาะสมเมื่อทำธุรกรรมสำเร็จ
Isolation - ช่วยให้การทำธุรกรรมดำเนินการอย่างอิสระและโปร่งใสซึ่งกันและกัน
Durability - ตรวจสอบให้แน่ใจว่าผลลัพธ์หรือผลของธุรกรรมที่ตกลงกันยังคงมีอยู่ในกรณีที่ระบบล้มเหลว
การควบคุมธุรกรรม
มีคำสั่งต่อไปนี้ที่ใช้ในการควบคุมธุรกรรม -
COMMIT - เพื่อบันทึกการเปลี่ยนแปลง
ROLLBACK - เพื่อย้อนกลับการเปลี่ยนแปลง
SAVEPOINT - สร้างคะแนนภายในกลุ่มของธุรกรรมที่จะ ROLLBACK
SET TRANSACTION - ตั้งชื่อในการทำธุรกรรม
คำสั่งควบคุมธุรกรรมใช้เฉพาะกับคำสั่ง DML INSERT, UPDATE และ DELETE เท่านั้น ไม่สามารถใช้ในขณะที่สร้างตารางหรือวางตารางได้เนื่องจากการดำเนินการเหล่านี้ถูกส่งโดยอัตโนมัติในฐานข้อมูล
ในการใช้คำสั่งควบคุมธุรกรรมใน MS SQL Server เราต้องเริ่มต้นธุรกรรมด้วยคำสั่ง 'begin tran' หรือคำสั่งเริ่มต้นธุรกรรมมิฉะนั้นคำสั่งเหล่านี้จะไม่ทำงาน
คำสั่ง COMMIT
คำสั่ง COMMIT เป็นคำสั่งธุรกรรมที่ใช้เพื่อบันทึกการเปลี่ยนแปลงที่เรียกใช้โดยธุรกรรมไปยังฐานข้อมูล คำสั่งนี้บันทึกธุรกรรมทั้งหมดลงในฐานข้อมูลตั้งแต่คำสั่ง COMMIT หรือ ROLLBACK สุดท้าย
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์สำหรับคำสั่ง COMMIT
COMMIT;
ตัวอย่าง
พิจารณาตารางลูกค้าที่มีบันทึกต่อไปนี้
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
ตัวอย่างคำสั่งต่อไปนี้จะลบเร็กคอร์ดจากตารางที่มี age = 25 แล้วจึง COMMIT การเปลี่ยนแปลงในฐานข้อมูล
Begin Tran
DELETE FROM CUSTOMERS
WHERE AGE = 25
COMMIT
ด้วยเหตุนี้สองแถวจากตารางจะถูกลบและคำสั่ง SELECT จะให้ผลลัพธ์ดังต่อไปนี้
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
3 kaushik 23 Kota 2000.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
คำสั่ง ROLLBACK
คำสั่ง ROLLBACK เป็นคำสั่งธุรกรรมที่ใช้ในการเลิกทำธุรกรรมที่ยังไม่ได้บันทึกลงในฐานข้อมูล คำสั่งนี้สามารถใช้เพื่อเลิกทำธุรกรรมนับตั้งแต่คำสั่ง COMMIT หรือ ROLLBACK ล่าสุดถูกเรียกใช้
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์สำหรับคำสั่ง ROLLBACK
ROLLBACK
ตัวอย่าง
พิจารณาตารางลูกค้าที่มีบันทึกต่อไปนี้
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
ตัวอย่างคำสั่งต่อไปนี้จะลบเร็กคอร์ดจากตารางที่มี age = 25 จากนั้น ROLLBACK การเปลี่ยนแปลงในฐานข้อมูล
Begin Tran
DELETE FROM CUSTOMERS
WHERE AGE = 25;
ROLLBACK
ดังนั้นการดำเนินการลบจะไม่ส่งผลกระทบต่อตารางและคำสั่ง SELECT จะให้ผลลัพธ์ดังต่อไปนี้
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
คำสั่ง SAVEPOINT
SAVEPOINT เป็นจุดหนึ่งในการทำธุรกรรมเมื่อคุณสามารถหมุนธุรกรรมกลับไปที่จุดหนึ่งโดยไม่ต้องย้อนกลับธุรกรรมทั้งหมด
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์สำหรับคำสั่ง SAVEPOINT
SAVE TRANSACTION SAVEPOINT_NAME
คำสั่งนี้ใช้เฉพาะในการสร้าง SAVEPOINT ท่ามกลางคำสั่งธุรกรรม คำสั่ง ROLLBACK ใช้เพื่อเลิกทำกลุ่มธุรกรรม
ต่อไปนี้เป็นไวยากรณ์สำหรับการย้อนกลับไปที่ SAVEPOINT
ROLLBACK TO SAVEPOINT_NAME
ในตัวอย่างต่อไปนี้เราจะลบระเบียนที่แตกต่างกันสามรายการออกจากตาราง CUSTOMERS เราจะต้องสร้าง SAVEPOINT ก่อนการลบแต่ละครั้งเพื่อให้เราสามารถ ROLLBACK ไปที่ SAVEPOINT ได้ตลอดเวลาเพื่อให้ข้อมูลที่เหมาะสมกลับสู่สถานะเดิม
ตัวอย่าง
พิจารณาตารางลูกค้าที่มีบันทึกต่อไปนี้ -
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
ต่อไปนี้เป็นชุดปฏิบัติการ -
Begin Tran
SAVE Transaction SP1
Savepoint created.
DELETE FROM CUSTOMERS WHERE ID = 1
1 row deleted.
SAVE Transaction SP2
Savepoint created.
DELETE FROM CUSTOMERS WHERE ID = 2
1 row deleted.
SAVE Transaction SP3
Savepoint created.
DELETE FROM CUSTOMERS WHERE ID = 3
1 row deleted.
อย่างไรก็ตามการลบทั้งสามครั้งเกิดขึ้นเราได้เปลี่ยนใจและตัดสินใจที่จะ ROLLBACK ไปที่ SAVEPOINT ที่เราระบุว่าเป็น SP2 เนื่องจาก SP2 ถูกสร้างขึ้นหลังจากการลบครั้งแรกการลบสองครั้งสุดท้ายจะถูกยกเลิก -
ROLLBACK Transaction SP2
Rollback complete.
สังเกตว่ามีเพียงการลบครั้งแรกเท่านั้นที่เกิดขึ้นตั้งแต่เราย้อนกลับไปที่ SP2
SELECT * FROM CUSTOMERS
6 แถวที่เลือก
ID NAME AGE ADDRESS SALARY
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
คำสั่ง SET TRANSACTION
คำสั่ง SET TRANSACTION สามารถใช้เพื่อเริ่มต้นธุรกรรมฐานข้อมูล คำสั่งนี้ใช้เพื่อระบุลักษณะสำหรับธุรกรรมที่ตามมา
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์สำหรับ SET TRANSACTION
SET TRANSACTION ISOLATION LEVEL <Isolationlevel_name>
Indexesเป็นตารางการค้นหาพิเศษที่เครื่องมือค้นหาฐานข้อมูลสามารถใช้เพื่อเร่งความเร็วในการดึงข้อมูล ใส่เพียงแค่ไฟล์indexเป็นตัวชี้ไปยังข้อมูลในตาราง ดัชนีในฐานข้อมูลคล้ายกับดัชนีท้ายหนังสือ
ตัวอย่างเช่นหากคุณต้องการอ้างอิงหน้าทั้งหมดในหนังสือที่กล่าวถึงหัวข้อใดหัวข้อหนึ่งก่อนอื่นคุณอ้างถึงดัชนีซึ่งแสดงรายการหัวข้อทั้งหมดตามลำดับตัวอักษรจากนั้นจะอ้างถึงหมายเลขหน้าหนึ่งหรือหลายหน้า
ดัชนีช่วยเร่งความเร็วของคำสั่ง SELECT และ WHERE แต่จะทำให้การป้อนข้อมูลช้าลงด้วยคำสั่ง UPDATE และ INSERT ดัชนีสามารถสร้างหรือลดลงได้โดยไม่มีผลกระทบต่อข้อมูล
การสร้างดัชนีเกี่ยวข้องกับคำสั่ง CREATE INDEX ซึ่งช่วยให้คุณสามารถตั้งชื่อดัชนีเพื่อระบุตารางและคอลัมน์หรือคอลัมน์ใดที่จะจัดทำดัชนีและเพื่อระบุว่าดัชนีอยู่ในลำดับจากน้อยไปมากหรือมากไปน้อย
ดัชนีสามารถไม่ซ้ำกันได้เช่นเดียวกับข้อ จำกัด UNIQUE เนื่องจากดัชนีป้องกันรายการที่ซ้ำกันในคอลัมน์หรือการรวมกันของคอลัมน์ที่มีดัชนี
สร้างคำสั่ง INDEX
ต่อไปนี้เป็นไวยากรณ์พื้นฐานของ CREATE INDEX
ไวยากรณ์
CREATE INDEX index_name ON table_name
ดัชนีคอลัมน์เดียว
ดัชนีคอลัมน์เดียวคือดัชนีที่สร้างขึ้นจากคอลัมน์ในตารางเดียวเท่านั้น ต่อไปนี้เป็นไวยากรณ์พื้นฐาน
ไวยากรณ์
CREATE INDEX index_name
ON table_name (column_name)
ตัวอย่าง
CREATE INDEX singlecolumnindex
ON customers (ID)
ดัชนีเฉพาะ
ดัชนีเฉพาะไม่เพียง แต่ใช้เพื่อประสิทธิภาพเท่านั้น แต่ยังใช้เพื่อความสมบูรณ์ของข้อมูลด้วย ดัชนีที่ไม่ซ้ำกันไม่อนุญาตให้แทรกค่าที่ซ้ำกันลงในตาราง ต่อไปนี้เป็นไวยากรณ์พื้นฐาน
ไวยากรณ์
CREATE UNIQUE INDEX index_name
on table_name (column_name)
ตัวอย่าง
CREATE UNIQUE INDEX uniqueindex
on customers (NAME)
ดัชนีคอมโพสิต
ดัชนีผสมคือดัชนีในคอลัมน์สองคอลัมน์ขึ้นไปของตาราง ต่อไปนี้เป็นไวยากรณ์พื้นฐาน
ไวยากรณ์
CREATE INDEX index_name on table_name (column1, column2)
ตัวอย่าง
CREATE INDEX compositeindex
on customers (NAME, ID)
ไม่ว่าจะสร้างดัชนีคอลัมน์เดียวหรือดัชนีผสมให้พิจารณาคอลัมน์ที่คุณอาจใช้บ่อยมากในส่วนคำสั่ง WHERE ของคิวรีเป็นเงื่อนไขตัวกรอง
หากมีเพียงคอลัมน์เดียวที่ใช้ดัชนีคอลัมน์เดียวควรเป็นตัวเลือก หากมีคอลัมน์สองคอลัมน์ขึ้นไปที่ใช้บ่อยในส่วนคำสั่ง WHERE เป็นตัวกรองดัชนีผสมจะเป็นตัวเลือกที่ดีที่สุด
ดัชนีโดยนัย
ดัชนีโดยนัยคือดัชนีที่เซิร์ฟเวอร์ฐานข้อมูลสร้างขึ้นโดยอัตโนมัติเมื่อสร้างวัตถุ ดัชนีจะถูกสร้างขึ้นโดยอัตโนมัติสำหรับข้อ จำกัด ของคีย์หลักและข้อ จำกัด เฉพาะ
คำสั่ง DROP INDEX
ดัชนีสามารถลดลงได้โดยใช้คำสั่ง MS SQL SERVER DROP ควรใช้ความระมัดระวังเมื่อวางดัชนีเนื่องจากประสิทธิภาพอาจช้าลงหรือดีขึ้น
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์พื้นฐาน
DROP INDEX tablename.index_name
เมื่อใดที่ควรหลีกเลี่ยงดัชนี
แม้ว่าดัชนีจะมีจุดมุ่งหมายเพื่อเพิ่มประสิทธิภาพของฐานข้อมูล แต่ก็มีบางครั้งที่ควรหลีกเลี่ยง แนวทางต่อไปนี้ระบุว่าควรพิจารณาการใช้ดัชนีใหม่เมื่อใด -
ไม่ควรใช้ดัชนีบนโต๊ะขนาดเล็ก
ไม่ควรจัดทำดัชนีตารางที่มีการอัปเดตชุดงานขนาดใหญ่บ่อยครั้งหรือการแทรก
ไม่ควรใช้ดัชนีในคอลัมน์ที่มีค่า NULL จำนวนมาก
ไม่ควรจัดทำดัชนีคอลัมน์ที่มีการจัดการบ่อยๆ
MS SQL Server มีฟังก์ชันในตัวมากมายเพื่อดำเนินการประมวลผลข้อมูลสตริงหรือตัวเลข ต่อไปนี้เป็นรายการฟังก์ชันในตัวของ SQL ที่มีประโยชน์ทั้งหมด -
SQL Server COUNT Function - ฟังก์ชันการรวม SQL Server COUNT ใช้เพื่อนับจำนวนแถวในตารางฐานข้อมูล
SQL Server MAX Function - ฟังก์ชันการรวม SQL Server MAX ช่วยให้สามารถเลือกค่าสูงสุด (สูงสุด) สำหรับคอลัมน์หนึ่ง ๆ
SQL Server MIN Function - ฟังก์ชันการรวมขั้นต่ำของเซิร์ฟเวอร์ SQL ช่วยให้สามารถเลือกค่าต่ำสุด (ต่ำสุด) สำหรับคอลัมน์หนึ่ง ๆ
SQL Server AVG Function - ฟังก์ชันการรวม AVG ของเซิร์ฟเวอร์ SQL จะเลือกค่าเฉลี่ยสำหรับคอลัมน์ตารางบางคอลัมน์
SQL Server SUM Function - ฟังก์ชันการรวม SUM ของเซิร์ฟเวอร์ SQL ช่วยให้สามารถเลือกผลรวมสำหรับคอลัมน์ตัวเลขได้
SQL Server SQRT Function - ใช้เพื่อสร้างรากที่สองของจำนวนที่กำหนด
SQL Server RAND Function - ใช้เพื่อสร้างตัวเลขสุ่มโดยใช้คำสั่ง SQL
SQL Server CONCAT Function - ใช้เพื่อเชื่อมต่อพารามิเตอร์หลายตัวให้เป็นพารามิเตอร์เดียว
SQL Server Numeric Functions - รายการฟังก์ชัน SQL ทั้งหมดที่จำเป็นในการจัดการตัวเลขใน SQL
SQL Server String Functions - รายการฟังก์ชัน SQL ทั้งหมดที่จำเป็นในการจัดการสตริงใน SQL
สามารถใช้ฟังก์ชัน MS SQL Server String กับค่าสตริงหรือจะส่งคืนค่าสตริงหรือข้อมูลตัวเลข
ต่อไปนี้เป็นรายการฟังก์ชัน String พร้อมตัวอย่าง
แอสกี ()
ค่ารหัส Ascii จะมาเป็นเอาต์พุตสำหรับนิพจน์อักขระ
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้ค่ารหัส Ascii ของอักขระที่กำหนด
Select ASCII ('word')
CHAR ()
อักขระจะมาเป็นผลลัพธ์สำหรับรหัส Ascii หรือจำนวนเต็มที่กำหนด
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้อักขระสำหรับจำนวนเต็มที่กำหนด
Select CHAR(97)
NCHAR ()
อักขระ Unicode จะมาเป็นเอาต์พุตสำหรับจำนวนเต็มที่กำหนด
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้อักขระ Unicode สำหรับจำนวนเต็มที่กำหนด
Select NCHAR(300)
CHARINDEX ()
ตำแหน่งเริ่มต้นสำหรับนิพจน์การค้นหาที่กำหนดจะมาเป็นเอาต์พุตในนิพจน์สตริงที่กำหนด
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้ตำแหน่งเริ่มต้นของอักขระ "G" สำหรับนิพจน์สตริงที่กำหนด "KING"
Select CHARINDEX('G', 'KING')
ซ้าย()
ส่วนด้านซ้ายของสตริงที่กำหนดจนถึงจำนวนอักขระที่ระบุจะมาเป็นเอาต์พุตสำหรับสตริงที่กำหนด
ตัวอย่าง
ข้อความค้นหาต่อไปนี้จะให้สตริง "WORL" ตามจำนวนอักขระ 4 ตัวที่ระบุสำหรับสตริง "WORLD" ที่กำหนด
Select LEFT('WORLD', 4)
ขวา()
ส่วนขวาของสตริงที่กำหนดจนถึงจำนวนอักขระที่ระบุจะมาเป็นเอาต์พุตสำหรับสตริงที่กำหนด
ตัวอย่าง
ข้อความค้นหาต่อไปนี้จะให้สตริง "DIA" ตามจำนวนอักขระ 3 ตัวที่ระบุไว้สำหรับสตริงที่ระบุ "INDIA"
Select RIGHT('INDIA', 3)
การสมัครสมาชิก ()
ส่วนหนึ่งของสตริงที่ยึดตามค่าตำแหน่งเริ่มต้นและค่าความยาวจะมาเป็นเอาต์พุตสำหรับสตริงที่กำหนด
ตัวอย่าง
คำค้นหาต่อไปนี้จะให้สตริง 'WOR', 'DIA', 'ING' ตามที่เรากล่าวถึง (1,3), (3,3) และ (2,3) เป็นค่าเริ่มต้นและค่าความยาวตามลำดับสำหรับสตริงที่กำหนด 'WORLD' , 'INDIA' และ 'KING'
Select SUBSTRING ('WORLD', 1,3)
Select SUBSTRING ('INDIA', 3,3)
Select SUBSTRING ('KING', 2,3)
เลน ()
จำนวนอักขระจะมาเป็นเอาต์พุตสำหรับนิพจน์สตริงที่กำหนด
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้ 5 สำหรับนิพจน์สตริง "HELLO"
Select LEN('HELLO')
ล่าง ()
สตริงตัวพิมพ์เล็กจะมาเป็นเอาต์พุตสำหรับข้อมูลสตริงที่กำหนด
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้ "sqlserver" สำหรับข้อมูลอักขระ "SQLServer"
Select LOWER('SQLServer')
บน ()
สตริงตัวพิมพ์ใหญ่จะมาเป็นเอาต์พุตสำหรับข้อมูลสตริงที่กำหนด
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้ 'SQLSERVER' สำหรับข้อมูลอักขระ 'SqlServer'
Select UPPER('SqlServer')
ลริม ()
นิพจน์สตริงจะมาเป็นเอาต์พุตสำหรับข้อมูลสตริงที่กำหนดหลังจากลบช่องว่างนำหน้า
ตัวอย่าง
ข้อความค้นหาต่อไปนี้จะให้ "WORLD" สำหรับข้อมูลอักขระ "WORLD"
Select LTRIM(' WORLD')
RTRIM ()
นิพจน์สตริงจะมาเป็นเอาต์พุตสำหรับข้อมูลสตริงที่กำหนดหลังจากลบช่องว่างต่อท้าย
ตัวอย่าง
คำค้นหาต่อไปนี้จะให้ 'INDIA' สำหรับข้อมูลอักขระ 'INDIA'
Select RTRIM('INDIA ')
แทนที่()
นิพจน์สตริงจะมาเป็นเอาต์พุตสำหรับข้อมูลสตริงที่กำหนดหลังจากแทนที่อักขระที่ระบุทั้งหมดด้วยอักขระที่ระบุ
ตัวอย่าง
คำค้นหาต่อไปนี้จะให้สตริง "KNDKA" สำหรับข้อมูลสตริง "อินเดีย"
Select REPLACE('INDIA', 'I', 'K')
ทำซ้ำ ()
นิพจน์สตริงซ้ำจะมาเป็นเอาต์พุตสำหรับข้อมูลสตริงที่กำหนดพร้อมจำนวนครั้งที่ระบุ
ตัวอย่าง
คำค้นหาต่อไปนี้จะให้สตริง "WORLDWORLD" สำหรับข้อมูลสตริง "WORLD"
Select REPLICATE('WORLD', 2)
ย้อนกลับ ()
นิพจน์สตริงย้อนกลับจะมาเป็นเอาต์พุตสำหรับข้อมูลสตริงที่กำหนด
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้สตริง "DLROW" สำหรับข้อมูลสตริง "WORLD"
Select REVERSE('WORLD')
SOUNDEX ()
ส่งคืนรหัสสี่อักขระ (SOUNDEX) เพื่อประเมินความคล้ายคลึงกันของสองสายอักขระที่กำหนด
ตัวอย่าง
ข้อความค้นหาต่อไปนี้จะให้ 'S530' สำหรับสตริง 'Smith', 'Smyth'
Select SOUNDEX('Smith'), SOUNDEX('Smyth')
ความแตกต่าง ()
ค่าจำนวนเต็มจะมาเป็นผลลัพธ์ของสองนิพจน์ที่กำหนด
ตัวอย่าง
คำค้นหาต่อไปนี้จะให้ 4 สำหรับนิพจน์ "Smith", "Smyth"
Select Difference('Smith','Smyth')
Note - ถ้าค่าเอาต์พุตเป็น 0 แสดงว่าอ่อนแอหรือไม่มีความคล้ายคลึงกันระหว่างให้ 2 นิพจน์
พื้นที่ ()
สตริงจะมาเป็นเอาต์พุตตามจำนวนช่องว่างที่ระบุ
ตัวอย่าง
ข้อความค้นหาต่อไปนี้จะให้คำว่า "I LOVE INDIA"
Select 'I'+space(1)+'LOVE'+space(1)+'INDIA'
สิ่งที่ ()
นิพจน์สตริงจะมาเป็นเอาต์พุตสำหรับข้อมูลสตริงที่กำหนดหลังจากแทนที่จากอักขระเริ่มต้นจนถึงความยาวที่ระบุด้วยอักขระที่ระบุ
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้สตริง "AIJKFGH" สำหรับข้อมูลสตริง "ABCDEFGH" ตามอักขระเริ่มต้นที่กำหนดและความยาวเป็น 2 และ 4 ตามลำดับและ "IJK" ตามสตริงเป้าหมายที่ระบุ
Select STUFF('ABCDEFGH', 2,4,'IJK')
STR ()
ข้อมูลอักขระจะมาเป็นเอาต์พุตสำหรับข้อมูลตัวเลขที่กำหนด
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้ 187.37 สำหรับ 187.369 ที่กำหนดตามความยาวที่ระบุเป็น 6 และทศนิยมเป็น 2
Select STR(187.369,6,2)
ยูนิโคด ()
ค่าจำนวนเต็มจะมาเป็นผลลัพธ์สำหรับอักขระตัวแรกของนิพจน์ที่กำหนด
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้ 82 สำหรับนิพจน์ 'RAMA'
Select UNICODE('RAMA')
QUOTENAME ()
สตริงที่กำหนดจะมาเป็นเอาต์พุตพร้อมกับตัวคั่นที่ระบุ
ตัวอย่าง
คำค้นหาต่อไปนี้จะให้ "RAMA" สำหรับสตริง "RAMA" ที่กำหนดตามที่เราระบุเครื่องหมายคำพูดคู่เป็นตัวคั่น
Select QUOTENAME('RAMA','"')
แพทเทิร์น ()
ตำแหน่งเริ่มต้นของเหตุการณ์แรกจากนิพจน์ที่กำหนดตามที่เราระบุตำแหน่ง 'I' เป็นสิ่งจำเป็น
ตัวอย่าง
คำค้นหาต่อไปนี้จะให้ 1 สำหรับ "อินเดีย"
Select PATINDEX('I%','INDIA')
รูปแบบ()
นิพจน์ที่กำหนดจะมาเป็นผลลัพธ์ในรูปแบบที่ระบุ
ตัวอย่าง
คำค้นหาต่อไปนี้จะให้ 'Monday, November 16, 2015' สำหรับฟังก์ชัน getdate ตามรูปแบบที่ระบุโดย 'D' หมายถึงชื่อวันทำงาน
SELECT FORMAT ( getdate(), 'D')
คอนแคท ()
สตริงเดี่ยวจะมาเป็นเอาต์พุตหลังจากเชื่อมต่อค่าพารามิเตอร์ที่กำหนด
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้ 'A, B, C' สำหรับพารามิเตอร์ที่กำหนด
Select CONCAT('A',',','B',',','C')
ต่อไปนี้เป็นรายการฟังก์ชันวันที่ใน MS SQL Server
GETDATE ()
มันจะคืนวันที่ปัจจุบันพร้อมกับเวลา
ไวยากรณ์
ไวยากรณ์สำหรับฟังก์ชันข้างต้น -
GETDATE()
ตัวอย่าง
แบบสอบถามต่อไปนี้จะส่งคืนวันที่ปัจจุบันพร้อมกับเวลาใน MS SQL Server
Select getdate() as currentdatetime
DATEPART ()
มันจะส่งคืนส่วนของวันที่หรือเวลา
ไวยากรณ์
ไวยากรณ์สำหรับฟังก์ชันข้างต้น -
DATEPART(datepart, datecolumnname)
ตัวอย่าง
Example 1 - แบบสอบถามต่อไปนี้จะส่งคืนส่วนของวันที่ปัจจุบันใน MS SQL Server
Select datepart(day, getdate()) as currentdate
Example 2 - แบบสอบถามต่อไปนี้จะส่งคืนส่วนของเดือนปัจจุบันใน MS SQL Server
Select datepart(month, getdate()) as currentmonth
DATEADD ()
จะแสดงวันที่และเวลาโดยเพิ่มหรือลบช่วงวันที่และเวลา
ไวยากรณ์
ไวยากรณ์สำหรับฟังก์ชันข้างต้น -
DATEADD(datepart, number, datecolumnname)
ตัวอย่าง
แบบสอบถามต่อไปนี้จะส่งคืนวันที่และเวลาหลังจาก 10 วันจากวันที่และเวลาปัจจุบันใน MS SQL Server
Select dateadd(day, 10, getdate()) as after10daysdatetimefromcurrentdatetime
DATEDIFF ()
จะแสดงวันที่และเวลาระหว่างวันที่สองวัน
ไวยากรณ์
ไวยากรณ์สำหรับฟังก์ชันข้างต้น -
DATEDIFF(datepart, startdate, enddate)
ตัวอย่าง
แบบสอบถามต่อไปนี้จะส่งคืนความแตกต่างของชั่วโมงระหว่างวันที่ 2015-11-16 และ 2015-11-11 ใน MS SQL Server
Select datediff(hour, 2015-11-16, 2015-11-11) as
differencehoursbetween20151116and20151111
แปลง()
จะแสดงวันที่และเวลาในรูปแบบต่างๆ
ไวยากรณ์
ไวยากรณ์สำหรับฟังก์ชันข้างต้น -
CONVERT(datatype, expression, style)
ตัวอย่าง
แบบสอบถามต่อไปนี้จะส่งคืนวันที่และเวลาในรูปแบบที่แตกต่างกันใน MS SQL Server
SELECT CONVERT(VARCHAR(19),GETDATE())
SELECT CONVERT(VARCHAR(10),GETDATE(),10)
SELECT CONVERT(VARCHAR(10),GETDATE(),110)
ฟังก์ชันตัวเลข MS SQL Server สามารถใช้กับข้อมูลตัวเลขและจะส่งกลับข้อมูลตัวเลข
ต่อไปนี้เป็นรายการฟังก์ชันตัวเลขพร้อมตัวอย่าง
ABS ()
ค่าสัมบูรณ์จะมาเป็นเอาต์พุตสำหรับนิพจน์ตัวเลข
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้ค่าสัมบูรณ์
Select ABS(-22)
ACOS ()
ค่าอาร์คโคไซน์จะมาเป็นเอาต์พุตสำหรับนิพจน์ตัวเลขที่ระบุ
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้ค่าอาร์กโคไซน์เป็น 0
Select ACOS(0)
ASIN ()
ค่าอาร์คไซน์จะมาเป็นเอาต์พุตสำหรับนิพจน์ตัวเลขที่ระบุ
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้ค่าอาร์กไซน์เป็น 0
Select ASIN(0)
ATAN ()
ค่าอาร์คแทนเจนต์จะมาเป็นเอาต์พุตสำหรับนิพจน์ตัวเลขที่ระบุ
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้ค่าอาร์กแทนเจนต์เป็น 0
Select ATAN(0)
ATN2 ()
ค่าอาร์คแทนเจนต์ในจตุภาคทั้งสี่จะมาเป็นเอาต์พุตสำหรับนิพจน์ตัวเลขที่ระบุ
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้ค่าอาร์คแทนเจนต์ในทั้งสี่จตุภาคเป็น 0
Select ATN2(0, -1)
พิจารณาตารางลูกค้าที่มีบันทึกต่อไปนี้
ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 MP 4500.00
7 Muffy 24 Indore 10000.00
ระหว่าง()
หากค่ามีอยู่ระหว่างสองนิพจน์ที่กำหนดค่าเหล่านั้นจะออกมาเป็นเอาต์พุต
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้ผลลัพธ์ต่อไปนี้
SELECT salary from customers where salary between 2000 and 8500
เอาต์พุต
salary
2000.00
2000.00
6500.00
8500.00
4500.00
นาที()
ค่าต่ำสุดจะเป็นผลลัพธ์จากนิพจน์ที่กำหนด
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้ '1500.00' สำหรับนิพจน์ 'เงินเดือน' ที่กำหนดจากตารางลูกค้า
Select MIN(salary)from CUSTOMERS
สูงสุด ()
ค่าสูงสุดจะมาเป็นเอาต์พุตจากนิพจน์ที่กำหนด
ตัวอย่าง
ข้อความค้นหาต่อไปนี้จะให้ '10000.00' สำหรับนิพจน์ 'เงินเดือน' ที่กำหนดจากตารางลูกค้า
Select MAX(salary)from CUSTOMERS
SQRT ()
รากที่สองของนิพจน์ตัวเลขที่กำหนดจะมาเป็นเอาต์พุต
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้ 2 สำหรับนิพจน์ตัวเลข 4 ตัวที่กำหนด
Select SQRT(4)
PI ()
ค่า PI จะเป็นผลลัพธ์
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้ 3.14159265358979 สำหรับค่า PI
Select PI()
เพดาน()
ค่าที่กำหนดจะมาเป็นผลลัพธ์หลังจากปัดเศษทศนิยมซึ่งเป็นค่าสูงสุดถัดไป
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้ 124 สำหรับค่า 123.25 ที่กำหนด
Select CEILING(123.25)
ชั้น ()
ค่าที่กำหนดจะมาเป็นผลลัพธ์หลังจากปัดเศษทศนิยมซึ่งน้อยกว่าหรือเท่ากับนิพจน์
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้ 123 สำหรับค่า 123.25 ที่กำหนด
Select FLOOR(123.25)
บันทึก ()
ลอการิทึมธรรมชาติของนิพจน์ที่กำหนดจะมาเป็นเอาต์พุต
ตัวอย่าง
แบบสอบถามต่อไปนี้จะให้ 0 สำหรับค่า 1 ที่กำหนด
Select LOG(1)