Một số câu lệnh trong SQL mình sưu tầm được
2 thg 4, 2012
Để tìm cho nhanh bạn nhấn Ctrl+F và nhập lện cần tìm 
Xem thêm: http://kenhdaihoc.com/forum/showthread.php?t=3040
1) Trên cơ sở dữ liệu (database)Các phiên bản của SQL Server: Enterprise, Personal, Desktop, Developer,..Các bộ phận của SQL Server: Enterprise Manager, Query Analyzer, Books Online,..Các loại tập tin của SQL Server: data file (primary, secondary), log fileCác loại cơ sở dữ liệu của SQL Server: system database, user database create database: tạo cơ sở dữ liệucreate database HoSoSinhViencreate database HoSoSinhVienon (name=’HSSV_data’, filename=’c:\HSSV_data.mdf’)log on (name=’HSSV_log’, filename=’c:\HSSV_log.ldf’)drop database: xóa cơ sở dữ liệudrop database HoSoSinhVienalter database: sửa các thông tin của cơ sở dữ liệualter database HoSoSinhVienmodify name = HSSVexec sp_dboption: sửa các thông tin của cơ sở dữ liệuexec sp_dboption HoSoSinhVien, ‘read only’, ‘true’exec sp_dboption HoSoSinhVien, ‘autoshrink’, ‘true’exec sp_dboption HoSoSinhVien, ‘single_user’dbcc: điều khiển cơ sở dữ liệudbcc shrinkdatabase(HoSoSinhVien, 10)2) Trên bảng (table)Nhớ các kiểu số liệu: text, binary, numberic, money, datetime, bit, variantNhớ các các ràng buộc: default, check, unique, foreign, primaryNhớ các kiểu toàn vẹn: entity, domain, referential, user Nhớ các thuộc tính bổ trợ: identity, null create table: tạo bảngTạo bảng với các cộtcreate table SinhVien (MaSV int,TenSV nchar(50) )Tạo với các ràng buộccreate table SinhVien (MaSV int primary key,TenSV nvarchar(50) not null,QueQuan int references DiaPhuong(MaDP))drop table: xóa bảngdrop table SinhVienalter table..add: thêm cộtThêm cột bằng cách dùng lệnh alter table alter table SinhVienadd QueQuan intalter table..drop column: xóa cộtalter table SinhViendrop column QueQuanalter table..alter column: thêm thuộc tính not nullalter table SinhVienalter column TenSV nchar(50) not nullalter table..add primary key: thêm khóa chínhThêm ràng buộc khóa chính cần phải biến một cột null thành not null trước khi thêm. Nếu để lệnh chuyển đổi thuộc tính not null ngay cạnh lệnh thêm khóa chính thì phải chèn từ khóa go vào vì có thể lệnh trên chưa được thực hiện do đó lệnh dưới báo lỗi alter table SinhVienalter column MaSV int not null goalter table SinhVienadd primary key (MaSV)alter table..add foreign key: thêm ràng buộc khóa ngoàialter table SinhVienadd foreign key (QueQuan) references DiaPhuong(MaDP)alter table..add default: thêm ràng buộc mặc địnhalter table SinhVienadd default 'khong ten' for TenSVexec sp_help: xem thông tin bảngexec sp_help SinhVien3) Trên bản ghi (record)Nhớ thêm phần biểu thức điều kiệnNhớ thêm phần ký tự thay thếinsert..values: thêm các bản ghi vào bảnginsert into SinhVien (MaSV, TenSV, QueQuan) values (1, N’Nguyễn Văn A’, 1)insert..select: thêm các bản ghi từ bảng khác vào bảnginsert into DocGia select MaSV, TenSV, QueQuan from SinhVien insert into DocGia select MaGV, TenGV, QueQuan from GiaoVienselect..into: đưa kết quả lựa chọn vào bảng mớiselect MaSV, TenSV, Dieminto SinhVienKhafrom SinhVienwhere Diem > 7.0delete: xóa các bản ghi từ bảngdelete from SinhViendelete from SinhVien where MaSV=1234truncate: xóa toàn bộ bản ghi của bảngtruncate table SinhVienupdate: sửa các bản ghi trong bảngupdate SinhVienset NhomTruong = 1 where MaSV < 4update SinhVienset NhomTruong = 4 where (MaSV > 3 and MaSV < 8)4) Truy vấn (query)Hỗ trợ truy vấn: distinct, top, as, identityPhép toán tập hợp: in, like, betweenCác hàm tổng nhóm: sum, max, min, avg4.1) Truy vấn đơn giảnselect *: Hiện tất cả bảngselect * from SinhVienselect: Hiện một số cộtselect TenSV, DiemTBfrom SinhVienselect..where: Hiện một số dòng / bản ghiselect TenSV, DiemTBfrom SinhVienwhere DiemTB > 6.0select..order by: Hiện và sắp xếp theo điểm rồi theo tênselect TenSV, DiemTBfrom SinhVienorder by DiemTB desc, TenSV ascselect..distinct: Hiện danh sách giá trị không trùng lặpselect distinct QueQuanfrom SinhVienselect..top: Hiện các dòng đầu tiên trong bảngselect top 3 TenSV, DiemTBfrom SinhVienorder by DiemTB desc, TenSV asc4.2) Truy vấn lồng nhau (nested query)select..where (select)Hiện tất cả những người trong bảng nhân viên có lương bằng lương lớn nhất của những người có trong công ty:select TenNV, Luongfrom NhanVienwhere Luong = (select max(Luong) from NhanVien)select..where (in)Hiện tất cả những người trong bảng nhân viên có lương lớn nhất hoặc lớn nhì của những người có trong công ty:. select TenNV, Luongfrom NhanVienwhere Luong in (select top 2 Luong from NhanVien order by Luong)Câu lệnh select trong sẽ tạo ra một tập hai giá trị (top 2) đó là lương lớn nhất và lương lớn nhì. Và câu lệnh select thứ nhất sẽ chọn ra những người mà lương nằm trong tập lớn nhất và lớn nhìselect..where (in sub)Hiện ra tất cả những người có lương lớn nhất phòng của anh ta (không phải lớn nhất trong công ty mà lớn nhất trong phòng hoặc đơn vị mà anh ta thuộc về)select nv1.TenNV, nv1.Luongfrom NhanVien as nv1where nv1.Luong = (select max(Luong) from NhanVien where Phong=nv1.Phong)Câu lệnh select trong sẽ trả về giá trị lương lớn nhất nhưng không phải lớn nhất trong toàn công ty mà lớn nhất trong phòng của nv1. Sau đó câu lệnh select ngoài cùng sẽ xác định xem nv1 có được chọn không bằng cách kiểm tra lương anh ta với lương lớn nhất của phòng anh ta.4.3) Truy vấn tổng nhóm (subtotal query / grouping query)select..group by: Thống kê theo tiêu chíHiện ra số lượng các nhân viên ứng với từng quêselect QueQuan, count(*)from NhanViengroup by QueQuanĐếm số nam và số nữ trong công tyselect GioiTinh, count(*)from NhanViengroup by GioiTinhTính tổng thu nhập theo từng phòngselect Phong, sum(Luong)from NhanViengroup by Phongselect..having: Hiện ra một số nhóm phù hợpChỉ đếm số lượng người ở Hải Phòng và số lượng người ở Hà nộiselect QueQuan, count(*)from NhanViengroup by QueQuanhaving (QueQuan = ‘HP’, QueQuan = ‘HN’)Chỉ hiện ra những phòng nào có tổng thu nhập lớn hơn 500000select Phong, sum(Luong)from NhanViengroup by Phonghaving sum(Luong) > 5000000Chỉ hiện ra những tỉnh nào có số lượng người lớn hơn 10select QueQuan, count(*)from NhanViengroup by QueQuanhaving count(*) > 104.4) Truy vấn liên bảng (cross table query / joining query)select..inner join: ghép các cặp bản ghi thỏa mãn điều kiện Ghép bảng nhân viên và hiện ra tên nhân viên và tên địa phươngselect NhanVien.TenNV, DiaPhuong.TenDPfrom NhanVien inner join DiaPhuong on NhanVien.QueQuan = DiaPhuong.MaDPselect..left outer join: lấy tất cả phía trái và ghép (nếu có) với phảiLấy tất cả những nhân viên kể cả những nhân viên có quê quán không hợp lệ (nghĩa là mã quê quán không có trong bảng địa phương)select NhanVien.TenNV, DiaPhuong.TenDPfrom NhanVien left outer join DiaPhuong on NhanVien.QueQuan = DiaPhuong.MaDPselect..right outer join: lấy tất cả phía phải và ghép (nếu có) với phía tráiLấy tất cả những địa phương ghép với nhân viên, các địa phương không hợp lệ sẽ được ghép với bộ dữ liệu rỗng. Không hiện ra các nhân viên không có mã quê quán phù hợpselect NhanVien.TenNV, DiaPhuong.TenDPfrom NhanVien right outer join DiaPhuong on NhanVien.QueQuan = DiaPhuong.MaDPselect..full outer join: lấy từ hai phía và ghép nếu cóLấy tất cả những nhân viên (nếu không có quê quán phù hợp thì ghép với bộ dữ liệu rỗng) và tất cả những địa phương kể cả không có nhân viên.select NhanVien.TenNV, DiaPhuong.TenDPfrom NhanVien right outer join DiaPhuong on NhanVien.QueQuan = DiaPhuong.MaDPselect..cross join: trả về tất cả các cặp có thể ghépGhép từng nhân viên với tất cả các địa phương. Như vậy nếu có m nhân viên và có n địa phương thì bảng đích sẽ có m*n dòng. n dòng đầu cho nhân viên thứ nhất ghép với các địa phương. n dòng sau cho nhân viên thứ hai ghép với các địa phương. và tiếp tục như thế tới nhân viên thứ m.select NhanVien.TenNV, DiaPhuong.TenDPfrom NhanVien cross join DiaPhuongref: Tham khảo thêm một số lệnhXem tất cả các CƠ SỞ DỮ LIỆU người dùng trong MÁY CHỦMỗi khi một cơ sở dữ liệu được tạo ra, bảng sysdatabase trong cơ sở dữ liệu master sẽ chứa thông tin về bảng mới tạo ra đó. Do vậy chúng ta có thể liệt kê tất cả các cơ sở dữ liệu trong một máy chủ bằng cách liệt kê các bản ghi trong bảng sysdatabaseselect * from master.dbo.sysdatabaseswhere sid <> 1Xem tất cả các BẢNG người dùng trong CƠ SỞ DỮ LIỆUMỗi khi một bảng được tạo ra trong một cơ sở dữ liệu, thông tin về bảng đó sẽ được chứa trong bảng sysobjects của chính cơ sở dữ liệu chứa bảng vừa tạo. Vì vậy chúng ta có thể xem danh sách các bảng trong cơ sở dữ liệu bằng cách truy vấn bảng sysobjects. Các bảng do người dùng tạo có kiểu là ‘U’select *from Northwind.dbo.sysobjectswhere xtype='U'Trong ví dụ này, chúng ta lấy tất cả các bản ghi bảng sysobjects của cơ sở dữ liệu Northwind nhưng chỉ lấy những bảng người dùng, nghĩa là những bảng có xtype là ‘U’ Xem tất cả các CỘT thuộc về một BẢNGMỗi khi một cột trong bảng được tạo, bảng syscolumns trong cơ sở dữ liệu sẽ chứa thông tin về cột vừa tạo. Thuộc tính id của cột sẽ chứa định danh của bảng mà cột đó thuộc về. Vì vậy để xem các cột trong một bảng dữ liệu, chúng ta có thể truy vấn bảng syscolumnsdeclare @x intset @x = (select id from sysobjects where name='Employees') select * from syscolumns where id = @xTrong ví dụ này, ta khai báo biến @x kiểu int, sau đó lấy id của bảng Employees vào biến @x, rồi ta lấy tất cả các cột trong bảng syscolumns mà có id bằng @x, cũng có nghĩa là id của bảng Employees. Do vậy ta sẽ liệt kê được tất cả các cột trong bảng EmployeesSử dụng bảng tạmKhai báo bảng, cập nhật bảng, và hiện bảngdeclare @x table(MaSV int, TenSV nvarchar(20))insert into @x values(1, N'Thưởng')insert into @x values(2, N'Yến')select * from @xKhai báo bảng, tải bảng khác từ trong cơ sở dữ liệu lên bảng vừa khai báo, và hiện bảngdeclare @x table(MaSV int, TenSV nvarchar(20))insert into @x select EmployeeID, firstname from Northwind.dbo.Employeesselect * from @xSử dụng biến tạmdeclare @t moneyset @t = (select max(UnitPrice) from Northwind.dbo.products)select * from Northwind.dbo.products where UnitPrice >= @tref: Các khái niệm cơ bản của cơ sở dữ liệuCác mô hình dữ liệu (data model)+ Mô hình thứ bậc (hierarchical)+ Mô hình mạng lưới (network)+ Mô hình quan hệ (relational)Các vấn đề của lưu trữ+ Sự dư thừa (redundance)+ Sự nhất quán (consistence)+ Tính toàn vẹn (integrity)+ Sự an toàn (security)+ Sự chia sẻ (sharing)Các khái niệm cơ bản + Cơ sở dữ liệu (database)+ Bảng (table) hoặc quan hệ (relation)+ Bản ghi (record) hoặc dòng (row) hoặc bộ (tuple)+ Trường (field) hoặc cột (column)+ Mối quan hệ (relationship) được biểu hiện bằng bảng (table) hoặc khóa (key) Mối quan hệ giữa các + Tại sao phải lưu mối quan hệ+ Phương pháp lưu các mối quan hệ (dùng khóa, dùng bảng)+ Khóa chính (primary key) và khóa ngoài (foreign key)+ Vấn đề toàn vẹn tham chiếu (referential integrity)Ngôn ngữ định nghĩa và xử lý dữ liệu+ Thao tác trên các đối tượng như cơ sở dữ liệu, bảng, cột+ Phần định nghĩa cơ sở dữ liệu và bảng: create, drop, alter+ Phần cập nhật dữ liệu: insert, delete, update+ Phần truy vấn dữ liệu: join, union, projection, selection, sort, group+ Phần lập trình và thao tác: declare, set, use, goref: Liên quan tới định nghĩa bảngCác vấn đề về toàn vẹn dữ liệu+ Toàn vẹn thực thể (entity integrity): primary key, unique, identity+ Toàn vẹn tham chiếu (referential integrity): foreign key, check + Toàn vẹn miền dữ liệu (domain integrity): default, foreign key, check, not null + Toàn vẹn người dùng (user integrity): rules, stored procedures, triggersCác hỗ trợ với toàn vẹn+ Ràng buộc kiểm tra (check constraint): phải thỏa mãn điều kiện nào đó+ Ràng buộc mặc định (default constraint): phải có một giá trị mặc định+ Ràng buộc duy nhất (unique constraint): các giá trị trong cột không được trùng lặp+ Ràng buộc khóa ngoài (foreign key constraint): các giá trị phải hợp lệ với cột khóa chính tương ứng+ Ràng buộc khóa chính (primary key constraint): phải duy nhất và không trống+ Thuộc tính định danh (identity property): có thể được tăng tự động+ Thuộc tính không trống (not null property): không được phép để trốngCác kiểu dữ liệuGiá trị nhị phân: bitCác số nguyên: bigint, int, smallint, tinyintCác số thực xấp xỉ: float, realGiá trị số thực chính xác: decimal, numbericGiá trị tiền tệ: money, smallmoneyGiá trị hời gian: datetime, smalldatetimeCác chuỗi: char, varchar, text, nchar, nvarchar, ntext,Các chuỗi nhị phân: binary, varbinary, imageCác kiểu khác: cursor, table, variant, timestamp, uniqueidentifier
Xem thêm: http://kenhdaihoc.com/forum/showthread.php?t=3040
Tags:
Lập trinh-Thiết kế web,
SQL Server,
Tài liệu CNTT
Comments[ 0 ]
Đăng nhận xét