Với sql, làm thế nào để bạn chọn một cột có tên firstname từ một bảng có tên người?

Bài viết được sự cho phép của tác giả Lê Chí Dũng

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,..

Với sql, làm thế nào để bạn chọn một cột có tên firstname từ một bảng có tên người?

Các loại tập tin của SQL Server: data file (primary, secondary), log file

Các loại cơ sở dữ liệu của SQL Server: system database, user database

create database HoSoSinhViencreate database HoSoSinhVien on (name=’HSSV_data’, filename=’c:HSSV_data.mdf’) log on (name=’HSSV_log’, filename=’c:HSSV_log.ldf’)

drop database HoSoSinhVien

alter database HoSoSinhVienmodify name = HSSV

exec sp_dboption HoSoSinhVien, ‘read only’, ‘true’exec sp_dboption HoSoSinhVien, ‘autoshrink’, ‘true’ exec sp_dboption HoSoSinhVien, ‘single_user’

Nhớ các kiểu số liệu: text, binary, numberic, money, datetime, bit, variant

Nhớ các các ràng buộc: default, check, unique, foreign, primary

Nhớ 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 SinhVien (MaSV int,TenSV nchar(50))

create table SinhVien (MaSV int primary key,TenSV nvarchar(50) not null,QueQuan int references DiaPhuong(MaDP))

Thêm cột bằng cách dùng lệnh alter table

alter table SinhVienadd QueQuan int

alter table SinhVien drop column QueQuan

alter table SinhVienalter column TenSV nchar(50) not null

Thê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 go alter table SinhVien add primary key (MaSV)

alter table SinhVien add foreign key (QueQuan) references DiaPhuong(MaDP)

alter table SinhVien add default 'khong ten' for TenSV

Tham khảo các vị trí tuyển dụng SQL lương cao tại Topdev.

Nhớ thêm phần biểu thức điều kiện

Nhớ thêm phần ký tự thay thế

insert into SinhVien (MaSV, TenSV, QueQuan)values (1, N’Nguyễn Văn A’, 1)

insert into DocGiaselect MaSV, TenSV, QueQuan from SinhVien insert into DocGia select MaGV, TenGV, QueQuan from GiaoVien

select MaSV, TenSV, Dieminto SinhVienKha from SinhVien where Diem > 7.0

delete from SinhViendelete from SinhVien where MaSV=1234

update SinhVienset NhomTruong = 1 where MaSV < 4 update SinhVien set NhomTruong = 4 where (MaSV > 3 and MaSV < 8)

Hỗ trợ truy vấn: distinct, top, as, identity

Phép toán tập hợp: in, like, between

Các hàm tổng nhóm: sum, max, min, avg

select TenSV, DiemTBfrom SinhVien

select TenSV, DiemTBfrom SinhVien where DiemTB > 6.0

select TenSV, DiemTBfrom SinhVien order by DiemTB desc, TenSV asc // asc sắp sếp tăng dần, desc là giảm dần

select distinct QueQuanfrom SinhVien

select top 3 TenSV, DiemTBfrom SinhVien order by DiemTB desc, TenSV asc

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 NhanVien where Luong = (select max(Luong) from NhanVien)

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 NhanVien where 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ì

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 nv1 where 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.

Hiện ra số lượng các nhân viên ứng với từng quê

select QueQuan, count(*)from NhanVien group by QueQuan

Đếm số nam và số nữ trong công ty

select GioiTinh, count(*)from NhanVien group by GioiTinh

Tính tổng thu nhập theo từng phòng

select Phong, sum(Luong)from NhanVien group by Phong

Chỉ đếm số lượng người ở Hải Phòng và số lượng người ở Hà nội

select QueQuan, count(*)from NhanVien group by QueQuan having (QueQuan = ‘HP’, QueQuan = ‘HN’)

Chỉ hiện ra những phòng nào có tổng thu nhập lớn hơn 500000

select Phong, sum(Luong)from NhanVien group by Phong having sum(Luong) > 5000000

Chỉ hiện ra những tỉnh nào có số lượng người lớn hơn 10

select QueQuan, count(*)from NhanVien group by QueQuan having count(*) > 10

Ghép bảng nhân viên và hiện ra tên nhân viên và tên địa phương

select NhanVien.TenNV, DiaPhuong.TenDP from NhanVien inner join DiaPhuong on NhanVien.QueQuan = DiaPhuong.MaDP

Lấ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.TenDP from NhanVien left outer join DiaPhuong on NhanVien.QueQuan = DiaPhuong.MaDP

Lấ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ợp

select NhanVien.TenNV, DiaPhuong.TenDP from NhanVien right outer join DiaPhuong on NhanVien.QueQuan = DiaPhuong.MaDP

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.TenDP from NhanVien right outer join DiaPhuong on NhanVien.QueQuan = DiaPhuong.MaDP

Ghé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.TenDP from NhanVien cross join DiaPhuong

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 sysdatabase

select * from master.dbo.sysdatabases where sid <> 1

Mỗ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.sysobjects where 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’

Mỗ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 syscolumns

declare @x intset @x = (select id from sysobjects where name='Employees') select * from syscolumns where id = @x

Trong 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 Employees

Khai báo bảng, cập nhật bảng, và hiện bảng

declare @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 @x

Khai 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ảng

declare @x table(MaSV int, TenSV nvarchar(20)) insert into @x select EmployeeID, firstname from Northwind.dbo.Employees select * from @x

declare @t moneyset @t = (select max(UnitPrice) from Northwind.dbo.products) select * from Northwind.dbo.products where UnitPrice >= @t

+ Mô hình thứ bậc (hierarchical)

+ Mô hình mạng lưới (network)

+ Mô hình quan hệ (relational)

+ 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ơ 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)

+ 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)

+ 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, go

+ 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, triggers

+ 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ống

Giá trị nhị phân: bit

Các số nguyên: bigint, int, smallint, tinyint

Các số thực xấp xỉ: float, real

Giá trị số thực chính xác: decimal, numberic

Giá trị tiền tệ: money, smallmoney

Giá trị hời gian: datetime, smalldatetime

Các chuỗi: char, varchar, text, nchar, nvarchar, ntext,

Các chuỗi nhị phân: binary, varbinary, image

Các kiểu khác: cursor, table, variant, timestamp, uniqueidentifier

Bài viết gốc được đăng tải tại lcdung.top

Có thể bạn quan tâm:

Xem thêm Việc làm ngành IT hấp dẫn trên TopDev