Chuyển đến nội dung chính

SQL Script dành cho người lười - Some simple SQL scripts

Người lười biếng thường hay chả muốn làm nhiều, sau đây là một số script sql dành cho copy/paste:

(thay phần bôi đậm bằng nội dung thực tế)

> Ghi chú trong SQL script 

1. Ghi chú 1 dòng, sử dụng -- 

VD: select * from users -- tất cả các dòng trong bảng users

2. Ghi chú khối, sử dụng /* */

VD:

/*

Ghi chú hàng 1

Ghi chú hàng 2

*/


> Wildcard character

%: thay thế cho nhiều ký tự hoặc không ký tự nào.

_ : thay thế cho 1 ký tự

VD: 

SELECT * FROM USERS

WHERE USERNAME LIKE 'M%'

--M% có thể là: Minh, Mạnh, M, Mai...


SELECT * FROM USERS

WHERE USERNAME LIKE 'N_M'

-- N_M có thể là: NAM, NẤM, NEM...


> Tạo database, tạo user, cấp quyền owner

a. Tạo database

USE [MASTER]

CREATE DATABASE [TENDB]

CREATE LOGIN TENUSER WITH PASSWORD=N'MATKHAU', DEFAULT_DATABASE=[TENDB]

//mật khẩu sẽ phải tuân theo password rule của windows, trường hợp không muốn theo rule của windows + password không hết hạn sử dụng sau 1 thời gian thì có thể thêm một số tùy chọn vào

CREATE LOGIN TENUSER WITH PASSWORD=N'MATKHAU', DEFAULT_DATABASE=[TENDB], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF


USE [TENDB]

CREATE USER [TENUSER] FOR LOGIN [TENUSER]

EXEC SP_ADDROLEMEMBER N'DB_OWNER', N'TENUSER'


b. Xóa database, user


USE [TENDB]

DROP USER [TENUSER]


USE [MASTER]

DROP LOGIN [TENUSER]


DROP DATABASE [TENDB]


c. Backup database

BACKUP DATABASE [TENDB]
TO DISK = N'D:\BACKUP\TENFILE.BAK'
WITH INIT, COMPRESSION


trong đó:

-INIT: ghi đè lên file nếu trùng tên

-COMPRESSION: nén file


d. Restore database

RESTORE DATABASE [TENDB] FROM  DISK = N'D:\SQL\DB.bak' WITH  FILE = 1,  MOVE N'tendb_data' TO N'D:\SQL\DB.mdf',  MOVE N'tendb_log' TO N'D:\SQL\DB.ldf',  KEEP_REPLICATION,  NOUNLOAD,  REPLACE,  STATS = 5


VD

BACKUP DATABASE [tendb] TO  DISK = N'D:\SQL\tendb.BAK' WITH NOFORMAT, NOINIT,  NAME = tendb-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

USE [master]

RESTORE DATABASE [tendb] FROM  DISK = N'D:\SQL\tendb.bak' WITH  FILE = 1,  NOUNLOAD,  REPLACE,  STATS = 5

GO

USE [tendb]

GO

ALTER DATABASE [tendb] MODIFY FILE (NAME=N'tendbold_db_data', NEWNAME=N'tendb_db_data')

GO

USE [tendb]

GO

ALTER DATABASE [tendb] MODIFY FILE (NAME=N'tendbold_db_log', NEWNAME=N'tendb_db_log')

GO



e. Set recovery mode

ALTER DATABASE [MODEL] SET RECOVERY FULL

ALTER DATABASE [MODEL] SET RECOVERY SIMPLE



> Database information


select * from sys.master_files

where name like '%tenbd%' or physical_name like '%tendb%'

-- cột [name] tương ứng với [logical name]

-- name, physical_name, size [Bytes], max_size [-1 unlimited], growth [Bytes], is_percent_growth [0/1]


ALTER DATABASE [tenbd] MODIFY FILE (NAME=N'tencu', NEWNAME=N'tenmoi')

-- thay đổi logical name của các file db


ALTER DATABASE [tenbd] MODIFY FILE ( NAME = N'tên', FILEGROWTH = 102400KB ) 

-- file growth 102400KB / 1024 = 100MB


ALTER DATABASE [tenbd] MODIFY FILE ( NAME = N'tên', FILEGROWTH = 20% )

-- 20%  growth


ALTER DATABASE [tenbd] MODIFY FILE ( NAME = N'tên', MAXSIZE = 512000KB )

-- max size là 512000KB / 1024 = 500MB


DBCC SHRINKDATABASE (N'tendb', 10)

DBCC SHRINKDATABASE (N'tendb')

DBCC SHRINKFILE (N'tendb' , 0, TRUNCATEONLY)


> TABLE SCRIPTS:

- Table #1: Insert - Update - Delete
- Table #2: Create - Alter - Drop

> Table #1 (Insert, Update, Delete):

a. INSERT

#1:

insert [ten_table] (tencot1, tencot2..)
values (giatri1, giatri2...)

VD:

insert  Nhavien (maso, ten, gioitinh)
values (482, N'Nguyen Van A', 0)

#2:

insert into [ten_table] (tencot1, tencot2..)
select (tencota, tencotb..)
from  [ten_table] 
where [điều kiện]


b. UPDATE

update [ten_table]
set password = 'mk_moi'
where userid = [user_id]

VD: 

update [webpages_membership]
set 
password = 'AIVOHTC1sKNgwcC1gykk4DtfQtuO9UITCjvP17jK9DlTp4gv3740WZbh5Qb+BBINbg=='
where userid = (select userid from [userprofile] where username = 'administrator')


c. DELETE

DELETE FROM <table name> WHERE <condition>

VD: 

-- delete all rows in table Users

delete from users


--delete rows where username have the second character is 'c'

delete from User 

where username like '_c%'


> Table #2: Create - Alter - Drop: 

a. Create

b. Alter

alter table

c. Drop



Truncate + Shrink database:

truncate table [ten_table]

DBCC SHRINKDATABASE ([ten_db], 10);

Nhận xét

Bài đăng phổ biến từ blog này

Windows Server - Khắc phục lỗi Windows Server 2016/2019/2022 tự shutdown sau khi hết hạn trial

Khắc phục Windows Server tự shutdown sau khi hết hạn trial Sau khi thời gian trial của Windows Server 2016/2019/2022 hết thời gian trial, Windows sẽ tự shutdown. Có thể xem trong Event Viewer > Windows Logs > System: Để tăng thời gian trial, có thể thực hiện theo các bước sau:  Mở Windows PowerShell B1:  > slmgr -dlv B2: > slmgr -rearm B3:  Restart Windows B4:  > slmgr -dli

Chỉnh số ngày làm việc trong 1 tuần trong Microsoft Project

  Mặc định số ngày làm việc 1 tuần trong Microsoft Project là từ thứ 2 đến thứ 6 Để thay đổi số ngày làm việc mặc định này ta thực hiện như sau: - Vào mục Project > Change Working Time - Tạo mới 1 bộ lịch mới theo nhu cầu: - Chọn giờ cho từng ngày trong tuần:

Xóa nhanh tất cả dữ liệu trong một bảng Microsoft SQL Server bằng TRUNCATE

 Thường chúng ta sẽ  sử dụng câu lệnh DELETE để xóa dữ liệu, và xóa hết dữ liệu trong một bảng bằng câu lệnh có cú pháp "delete from table <tên của bảng>". Cách xóa này thường rất mất thời gian, nếu dữ liệu trong bảng nhiều. Vậy có cách nào xóa nhanh hơn không? Chúng ta có thể sử dụng câu lệnh TRUNCATE để xóa tất cả dữ liệu trong bảng với thời gian nhanh hơn nhiều so với sử dụng câu lệnh xóa thông thường. Nhưng có một số vấn đề cần phải lưu ý khi thực hiện truncate dữ liệu của một bảng, đó là: - Truncate sẽ xóa hết tất cả (lưu ý là "tất cả" nhé) - Không truncate được khi bảng có khóa ngoại (trừ trường hợp khóa ngoại trong chính bảng cần xóa) - Khi đã truncate rồi khi không có cửa để phục hồi lại như sử dụng lệnh delete đâu nha. Cú pháp: TRUNCATE TABLE <TÊN BẢNG> Một số sql script hữu ích sử dụng kèm: 1. Giảm dung lượng theo phần trăm Cách này sẽ giảm kích thước của database (gồm cả file data và file log) xuống duy trì 10% free cho database: DBCC SHRINKDA