Thứ Năm, 22 tháng 11, 2012

Một vài lệnh cơ bản và hay dùng trong MSQL cho sinh viên


SELECT
FROM
WHERE
ORDER BY
LIMIT
DESC
round
avg
day
month
year
date
curdate
datediff
fomat
date_format
length
upper
lower
trim
left
right
concat
****
        select Ten_sua,Trong_luong,Don_gia
from sua
order by Ten_sua ASC, Don_gia DESC
---------------------------------------
select `Ten_sua`,`Trong_luong`,`Don_gia`
from sua
order by  `Ten_sua` ASC,`Don_gia` DESC
--------------------------------------
liệt kê danh dach tên sửa có chữ bắt đầu bằng S

select ten_sua, trong_luong, don_gia, tp_dinh_duong
from sua
where ten_sua like 'S%'
//

select ten_sua, trong_luong, don_gia, tp_dinh_duong
from sua
where left(ten_sua,1)='S'
-------------------------------------
liệt kê danh sách sửa mà trong tên sửa có từ 'grow'

select *
from sua
where ten_sua like '%g%'

liệt kê sửa có trọng lượng là 180,200,900gr
select *
from sua
where trong_luong in(180,200,900)
--------------------------------------
liệt kê sữa có trọng lượng >=900 hoặc mã hãng sữa '02'

select *
from sua
where trong_luong>=900 or ma_hang_sua='%02%'

---------------------------------------
liệt kê danh sách sửa có đơn giá >500
SELECT ten_sua,don_gia,trong_luong
FROM sua
WHERE don_gia > 500
ORDER BY ten_sua DESC
--------------------------------------
danh sách 10 sữa có đơn giá cao nhất
SELECT ten_sua,don_gia, tp_dinh_duong
FROM sua
ORDER BY don_gia DESC
LIMIT 0,10
---------------------------------------
truy vấn chọn lọc dữ liệu
SELECT danh sách các cột | biểu thức
FROM nhiều bảng và xác định mối kết hợp (inne,left,right) giữa các hảng
INNER JOIN
WHERE các điều kiện lọc
ORDER BY tên cột cần sắp xếp ASC| DESC
LIMIT vị trí mẩu tin đầu, số lượng mẩu tin sẻ lấy
---------------------------------------
Liệt kê danh sách các sữa của hãng Abbott có: tên sữa, trọng lượng, lợi ích, trong đó trọng lượng sắp tăng dần 
SELECT ten_sua, trong_luong, loi_ich
FROM sua
INNER JOIN hang_sua on sua.ma_hang_sua = hang_sua.ma_hang_sua
WHERE ten_hang_sua like '%a%' <- tìm tương đối
WHERE ten_hang_sua ='Abbott' <- tìm tuyệt đối
ORDER BY trong_luong
------------------------------------
Cho biết 3 sản phẩm sữa của hãng Vinamilk có trọng lượng nặng nhất, gồm các thông tin: Tên sữa, trọng lượng 
SELECT ten_sua, trong_luong
FROM sua
INNER JOIN hang_sua on sua.ma_hang_sua=hang_sua.ma_hang_sua
WHERE ten_hang_sua like '%h%'
ORDER BY trong_luong DESC
--------------------------------------
Cho biết trị giá trung bình của các hóa đơn được làm tròn đến hàng nghìn 
SELECT round(avg(so_luong*don_gia),-3 as tri_gia_trung_binh
FROM ct_hoa_don
-------------------------------------
Liệt kê danh sách các hóa đơn trong tháng 7 năm 2007 
SELECT *
FROM hoa_don
WHERE month(ngay_hd)=7 and
year(ngay_hd)=2007
------------------------------------
Liệt kê danh sách các hãng sữa có tên hãng sữa, địa chỉ, điện thoại, trong đó tên hãng sữa in HOA 
SELECT upper(ten_hang_sua), dia_chi, dien_thoai
FROM hang_sua
-----------------------------------
Liệt kê danh sách sữa đã bán được trong tháng 8 năm 2007 có 
tên sữa, trọng lượng, đơn giá, trong đó: trọng lượng có thêm 'gr', đơn giá có định dạng tiền tệ và có thêm 'VNĐ' 

SELECT ten_sua, concat(trong_luong,'gr'),
concat(format(c.don_gia,0),'VND')
FROM ct_hoa_don c INNER JOIN hoa_don h on (c.so_hoa_don = h.so_hoa_don)
INNER JOIN sua s on (s.ma_sua = c.ma_sua)
WHERE month(ngay_hd) = 8 and
year(ngay_hd) = 2007
-----------------------------------
Liệt kê danh sách sữa có trọng lượng từ 400gr đến 500 gr, 
có thêm cột đánh giá như sau: 
nếu giá sữa nhỏ hơn 100.000 VNĐ thì đánh giá là "Sữa giá trung bình", 
nếu giá trên 100.000 VNĐ thì đánh giá là "Sữa giá cao" 
SELECT *, if(don_gia<100000,'Sua gia trung binh','sua gia cao') as danh_gia
FROM sua
WHERE trong_luong between 400 and 500
----------------------------------
Liệt kê danh sách hóa đơn kèm theo ngày được định dạng như sau
"Thứ <Tên thứ tiếng Việt> ngày … tháng  … năm …", sắp theo ngày tăng dần 
SELECT *, concat(CASE WEEKDAY('ngay_hd')
WHEN 1 THEN 'thứ hai'
WHEN 2 THEN 'thứ ba'
WHEN 3 THEN 'thứ tư'
WHEN 4 THEN 'thứ năm'
WHEN 5 THEN 'thứ sáu'
WHEN 6 THEN 'thứ bảy'
WHEN 0 THEN 'chủ nhật'
END,date_format('ngay_hd','Ngày %d tháng %m năm %Y')) as thu_hoan_chinh
FROM hoa_don
ORDER BY ngay_hd
??????
---------------------
Thống kê số khách hàng nam – số hàng nữ và tổng số khách hàng 
SELECT sum(if(phai=1,1,0)) as tong_nu,
sum(if(phai=0,1,0)) as tong_nam,
count(*) as tong_khach_hang
FROM khach_hang
---------------------------
Thống kê tổng số sản phẩm theo hãng sữa, gồm các thông tin:
tên hãng sữa, tổng số sản phẩm. Có sắp tăng theo tổng số sản phẩm 

SELECT ten_hang_sua, count(*) as tong_so_sp
FROM sua
INNER JOIN hang_sua on sua.ma_hang_sua = hang_sua.ma_hang_sua
ORDER BY ten_hang_sua
ORDER BY count(*)
---------------------------
===========================
1.5
Truy vấn có nhóm dữ liệu & thông kê
SELECT danh sách các cột
FROM danh sách các bảng và mối quan hệ
WHERE điều kiện lọc
GROUP BY danh sách cột được chọn
HAVING điều kiện lọc nhóm
ORDER BY danh sách cột sắp xếp ASC | DESC
---------------------------
1.5 1
SELECT ten_hang_sua, count(*) as tong_so_sp
FROM sua INNER    JOIN   hang_sua    ON
sua.ma_hang_sua=hang_sua.ma_hang_sua
GROUP BY ten_hang_sua
ORDER BY count(*)

1.5 Thống kê số sản phẩm bán được trong tháng 8-2007 của mỗi sữa 
SELECT ma_sua
FROM ct_hoa_don c inner join hoa_don h on c.so_hoa_don = h.so_hoa_don
WHERE month(ngay_hd)=8 and year(ngay_hd)=2007
GROUP BY ma_sua
--------
1.5
Hãy cho biết những hóa đơn mua hàng có tổng trị giá lớn hơn 2.000.000 VNĐ 
SELECT so_hoa_don, sum(so_luong*don_gia) as tong_tg
FROM ct_hoa_don
GROUP BY so_hoa_don
HAVING sum(so_luong*don_gia)>2000000
---------
Làm quen với cách viết truy vấn con
SELECT danh sách các cột
FROM danh sách các bảng và mối quan hệ
WHERE điều kiện so sánh (SELECT ... FROM ... WHERE... )
ORDER BY tên cột sắp xếp ASC | DESC
---
1.6
Liệt kê các khách hàng chưa mua hàng 
SELECT *
FROM khach_hang
WHERE ma_khach_hang not in (select ma_khach_hang from hoa_don)
---
1.6
Liệt kê danh sách sữa có cùng hãng sữa với sữa có mã sữa là ‘AB0002’ 

SELECT *
FROM sua
WHERE ma_hang_sua = (select ma_hang_sua from sua where ma_sua='AB0002')
---
1.7
Làm quen với cách viết truy vấn tạo bảng
CREATE TABLE <tên bảng>
{
tên_cột_1 kiểu dữ liệu [primary key] [null | not null],
tên_cột_1 kiểu dữ liệu [null | not null],
...
}
1.7
Hãy tạo ra một bảng mới có tên là bang_tam có cấu trúc giống như bảng sữa 
CREATE TABLE bang_tam
(
ma_sua varchar(6) primary key  not null,
ten_sua varchar(50) not null,
ma_hang_sua varchar(20) not null,
ma_loai_sua varchar(3) not null,
trong_luong int,
don_gia int,
tp_dinh_duong text,
loi_ich text,
hinh varchar(200)
)
---
Hãy tạo một bảng mới có tên là bang_vinamilk có cấu trúc giống như bảng sữa 
viết giống như bang_tam chỉ thay tên, cách nhanh nhất là sao chép lệnh và tạo bảng bằng lệnh
+++++++++++++++++++++++++++++++++++++++++++++++++
1.8
Làm quen với cách viết truy vấn thêm dữ liệu
loại 1
INSERT INTO <tên bảng> (tên cột 1, tên cột 2, ...)
VALUES (giá trị 1, giá trị 2,...)
loại 2
INSERT INTO <tên bảng> (danh sách các cột)
SELECT <danh sách các cột>
FROM <tên bảng nguồn>
---
Thêm một khách hàng mới vào bảng khach_hang với những thông tin sau: 
Mã khách hàng: KH007 
Tên khách hàng: Mai Anh 
Phái: 1 (Nữ) 
Địa chỉ: 132 Quang Trung Q.GV TP.HCM 
Điện thoại: 8954671 
Email: mai_anh@hotmail.com 
INSERT INTO khach_hang
VALUES ('kh007','mai anh',1,'132 Quang Trung Q.GV TP.HCM','8954671','mai_anh@hotmail.com')
---
Thêm các thông tin có trong bảng sữa vào bang_tam 
INSERT INTO bang_tam
SELECT *
FROM sua
---
1.9
Biết cách viết truy vấn cập nhật dữ liệu
UPDATE tên_bảng
SET <tên cột 1>= giá trị 1
WHERE



Chủ đề: