<commit_before>---
layout: single
title:  "CÁC CÂU LỆNH SQL CĂN BẢN HAY SỬ DỤNG"
date:   2017-09-05
categories: [SQL]
tags: [CSDL,DBMS,SQL,SQL server]
---
1. Tạo và quản lý CSDL

 * Tạo CSDL mới:
 ```sql
 CREATE DATABASE DatabaseName
 ```

 * Mở CSDL để làm việc:
 ```sql
 USE DatabaseName
 ```

 * Xóa CSDL:
 ```sql
 DROP DATABASE DatabaseName
 ```

 * Đổi tên CSDL:
 ```sql
 ALTER DATABASE DatabaseName
    MODIFY NAME = NewDatabaseName
 ```

 * Tạo bảng:
 ```sql
 CREATE TABLE TableName
 (
 ColumnName1 KieuDuLieu1 [NOT NULL]
 ColumnName2 KieuDuLieu2 [NOT NULL]
 )
 ```

 * Thay đổi cấu trúc bảng:
   * Thêm 1 cột mới vào bảng:
  ```sql
  ALTER TABLE TenBang ADD TenCot KieuDuLieu
  ```

   * Xóa 1 cột trong bảng:
  ```sql
  ALTER TABLE TenBang DROP COLUMN TenCot
  ```

   * Sử đổi kiểu dữ liệu của cột:
  ```sql
  ALTER TABLE TenBang ALTER COLUMN TenCot NewKieuDuLieu
  ```

   * Đổi tên cột:
  ```sql
  EXEC sp_rename 'TableName.ColumnName', 'NewColumnName'
  ```

* Tạo các ràng buộc:
  * Ràng buộc khóa chính (**Primary Key Constraint**):
 ```sql
 ALTER TABLE TenBang ADD CONSTRAINT TenRangBuoc PRIMARY KEY ThuocTinhKhoa
 -- ThuocTinhKhoa phải khác NULL
 ```
 Bạn có thể tạo ràng buộc khóa chính ngay từ khi tạo bảng: Ví dụ tạo khóa chính là cột **MaPhong** trong bảng **PhongBan**
 ```sql
 CREATE TABLE PhongBan(
 MaPhong Char(5),
 TenPhg VARCHAR(20))
 CONSTRAINT pk_PhongBan PRIMARY KEY (MaPhong)
 )
  ```

  * Ràng buộc duy nhất: Cách tạo ra _Unique Constraint_ cũng tương tự như _Primary Key Constraint_ chỉ việc thay chữ **Primary Key** thành **Unique**
 > Chỉ có Một PRIMARY KEY CONSTRAINT trong một table trong khi ta có thể có Nhiều UNIQUE CONSTRAINT trên một table
  * Ràng buộ khóa ngoại (Foreign Key Constraint):
 ```sql
 ALTER TABLE TenBang ADD CONSTRAINT TenRangBuoc FOREIGN KEY CacCotKhoaNgoai REFERENCES TenBang CacCotKhoaChinh
 ```
 Ví dụ:
 ```sql
 ALTER TABLE NHANVIEN ADD CONSRAINT
 fk_nhanvien_maphong FOREIGN KEY(MAPHONG)
 REFERENCES PHONGBAN(MaPhong)
 ```

2. Các câu lệnh truy vấn dữ liệu:
* Truy vấn cơ bản: Gồm 3 mệnh đề quyền lực
```sql
SELECT Column1, Column2
FROM Table1, Table2
WHERE DieuKien<commit_msg>edit sql<commit_after>---
layout: single
title:  "CÁC CÂU LỆNH SQL CĂN BẢN HAY SỬ DỤNG"
date:   2017-09-05
categories: [SQL]
tags: [CSDL,DBMS,SQL,SQL server]
---
1. Tạo và quản lý CSDL

 * Tạo CSDL mới:
 ```sql
 CREATE DATABASE DatabaseName
 ```

 * Mở CSDL để làm việc:
 ```sql
 USE DatabaseName
 ```

 * Xóa CSDL:
 ```sql
 DROP DATABASE DatabaseName
 ```

 * Đổi tên CSDL:
 ```sql
 ALTER DATABASE DatabaseName
    MODIFY NAME = NewDatabaseName
 ```

 * Tạo bảng:
 ```sql
 CREATE TABLE TableName
 (
 ColumnName1 KieuDuLieu1 [NOT NULL]
 ColumnName2 KieuDuLieu2 [NOT NULL]
 )
 ```

 * Thay đổi cấu trúc bảng:
   * Thêm 1 cột mới vào bảng:
  ```sql
  ALTER TABLE TenBang ADD TenCot KieuDuLieu
  ```

   * Xóa 1 cột trong bảng:
  ```sql
  ALTER TABLE TenBang DROP COLUMN TenCot
  ```

   * Sử đổi kiểu dữ liệu của cột:
  ```sql
  ALTER TABLE TenBang ALTER COLUMN TenCot NewKieuDuLieu
  ```

   * Đổi tên cột:
  ```sql
  EXEC sp_rename 'TableName.ColumnName', 'NewColumnName'
  ```

* Tạo các ràng buộc:
  * Ràng buộc khóa chính (**Primary Key Constraint**):
 ```sql
 ALTER TABLE TenBang ADD CONSTRAINT TenRangBuoc PRIMARY KEY ThuocTinhKhoa
 -- ThuocTinhKhoa phải khác NULL
 ```
 Bạn có thể tạo ràng buộc khóa chính ngay từ khi tạo bảng: Ví dụ tạo khóa chính là cột **MaPhong** trong bảng **PhongBan**
 ```sql
 CREATE TABLE PhongBan(
 MaPhong Char(5),
 TenPhg VARCHAR(20))
 CONSTRAINT pk_PhongBan PRIMARY KEY (MaPhong)
 )
  ```

  * Ràng buộc duy nhất: Cách tạo ra _Unique Constraint_ cũng tương tự như _Primary Key Constraint_ chỉ việc thay chữ **Primary Key** thành **Unique**
 > Chỉ có Một PRIMARY KEY CONSTRAINT trong một table trong khi ta có thể có Nhiều UNIQUE CONSTRAINT trên một table
  * Ràng buộc khóa ngoại (Foreign Key Constraint): Khóa ngoại của một table được xem như con trỏ trỏ tới khóa chính của table khác.
 ```sql
 ALTER TABLE TenBang ADD CONSTRAINT TenRangBuoc FOREIGN KEY CacCotKhoaNgoai REFERENCES TenBang CacCotKhoaChinh
 ```
 Ví dụ:
 ```sql
 ALTER TABLE NHANVIEN ADD CONSRAINT
 fk_nhanvien_maphong FOREIGN KEY(MAPHONG)
 REFERENCES PHONGBAN(MaPhong)
 ```
 Hoặc có thể ràng buộc khóa ngoại ngay từ khi tạo bảng:
 ```sql
 CREATE TABLE DIEMSV
 (
 STT INT NOT NULL AUTO_INCREMENT,
 MaSV varchar(8) NOT NULL,
 MonHoc varchar(6) NOT NULL,
 HKI, HKII, ĐTB_Nam INT,
 PRIMARY KEY (STT),
 FOREIGN KEY (MaSV) REFERENCES HSSV(MaSV)
 )
 ```

2. Các câu lệnh truy vấn dữ liệu:
* Truy vấn cơ bản: Gồm 3 mệnh đề quyền lực
```sql
SELECT Column1, Column2
FROM Table1, Table2
WHERE DieuKien
{'fraction_non_alphanumeric': 0.0908894645941278, 'fraction_numerical': 0.01079447322970639, 'mean_word_length': 3.7762886597938143, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5828488', 'n_tokens_mistral': 2222, 'n_tokens_neox': 2166, 'n_words': 640}