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

Video học lập trình PHP và MySQL -Cơ bản và nâng cao (2011)


Đây là bộ giáo trình học PHP và MySQL nổi tiếng của nước ngoài
bạn phải trả một số tiến khá lớn để có thể download bộ này, tại đây ta nhắm mắt làm liều học trộm.

Download full ebook

Một số tài liệu về MySQL

Một số kiểu dữ liệu phổ biến thường được sử dụng trong MySQL

Kiểu dữ liệuMô tả
INTĐịnh dạng kiểu số nguyên có chiều dài từ 0 – 4294967214
FloatĐịnh dạng số thực có chiều dài 4 bytes
DoubleĐịnh dạng số thực có chiều dài 8 bytes
CharĐịnh dạng text chiều dài từ 0 – 255
VarcharĐịnh dạng text có chiều dài từ 0 – 255
TextĐịnh dạng text có chiều dài từ 0 – 65535
LongtextĐịnh dạng text có chiều dài 0 – 4294967214
DateLưu trữ thời gian theo định dạng YYYY-MM-DD
DateTimeTimeStampLưu trữ thời gian theo định dạng YYYY-MM-DD HH:MM:SS

Tham khảo thêm các kiểu dữ liệu trong MySQL tại: http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html

Một số video về MySQL online

Bài 9: Cơ bản về ngôn ngữ SQL và Mysql


Mysql là hệ quản trị dữ liệu miễn phí, được tích hợp sử dụng chung với apache, PHP. Chính yếu tố phát triển trong cộng đồng mã nguồn mở nên mysql đã qua rất nhiều sự hỗ trợ của những lập trình viên yêu thích mã nguồn mở. Mysql cũng có cùng một cách truy xuất và mã lệnh tương tự với ngôn ngữ SQL. Nhưng Mysql không bao quát toàn bộ những câu truy vấn cao cấp như SQL. Về bản chất Mysql chỉ đáp ứng việc truy xuất đơn giản trong quá trình vận hành của website nhưng hầu hết có thể giải quyết các bài toán trong PHP.

1- Cách khởi động và sử dụng MYSQL.

Chúng ta sử dụng command như sau:

Mysql –hname –uuser –ppass

Để truy cập vào cơ sở dữ liệu.

Hoặc sử dụng bộ appserv để vào nhanh hơn theo đường dẫn sau:

Start/ Appserv/ Mysql command Line client

Sau đó nhập password mà chúng ta đã đặt vào.

2- Những định nghĩa cơ bản:
a) Định nghĩa cơ sở dữ liệu, bảng, cột:

Cơ sở dữ liệu: là tên của cơ sở dữ liệu chúng ta muốn sử dụng

Bảng: Là 1 bảng giá trị nằm trong cơ sở dữ liệu.

Cột là 1 giá trị nằm trong bảng. Dùng để lưu trữ các trường dữ liệu.

Thuộc tính
Ví dụ:


Như vậy ta có thể hiểu như sau:

1 cơ sở dữ liệu có thể bao gồm nhiều bảng.

1 bảng có thể bao gồm nhiều cột

1 cột có thể có hoặc không có những thuộc tính.

b) Định nghĩa 1 số thuật ngữ:

NULL : Giá trị cho phép rỗng.

AUTO_INCREMENT : Cho phép giá trị tăng dần (tự động).

UNSIGNED : Phải là số nguyên dương

PRIMARY KEY : Cho phép nó là khóa chính trong bảng.

c)Loại dữ liệu trong Mysql:

Ở đây chúng tả chỉ giới thiệu 1 số loại thông dụng: 1 số dữ liệu khác có thể tham khảo trên trang chủ của mysql.


3- Những cú pháp cơ bản:

Cú pháp tạo 1 cơ sở dữ liệu:

CREATE DATABASE tên_cơ_sở_dữ_liệu;

Cú pháp sử dụng cơ sở dữ liệu: Use tên_database;

Cú pháp thoát khỏi cơ sở dữ liệu: Exit

Cú pháp tạo 1 bảng trong cơ sở dữ liệu:

CREATE TABLE user (<tên_cột> <mô_tả>,…,<tên_cột_n>…..<mô_tả_n>)

Ví dụ:
mysql> create table user(user_id INT(15) UNSIGNED NOT NULL AUTO_INCREMENT, username VARCHAR(255) NOT NULL, password CHAR(50) NOT NULL, email VARCHAR(200) NOT NULL, PRIMARY KEY (user_id));

Hiển thị có bao nhiều bảng: show tables;

Hiển thị có bao nhiêu cột trong bảng: show columns from table;

Thêm 1 cột vào bảng :

ALTER TABLE tên_bảng ADD <tên_cột> <thuộc_tính> AFTER <tên_cột>

Ví dụ:

mysql> alter table user add sex varchar(200) NOT NULL after email;

4- Thêm giá trị vào bảng:

Cú pháp:

INSERT INTO Tên_bảng(tên_cột) VALUES(Giá_trị_tương_ứng);

Ví dụ:

mysql> insert into user(username,password,email,sex,home) values("Lanna","12345","lanna@yahoo.com","F","www.abc.com");

5- Truy xuất dữ liệu:

Cú pháp:

SELECT tên_cột FROM Tên_bảng;

Ví dụ:

mysql> select user_id,username from user;

6- Truy xuất dữ liệu với điều kiện:

Cú pháp:

SELECT tên_cột FROM Tên_bảng WHERE điều kiện;
Ví dụ:

mysql> select user_id,username from user where user_id=2;

7- Truy cập dữ liệu và sắp xếp theo trình tự

Cú pháp:

SELECT tên_cột FROM Tên_bảng

WHERE điều kiện (có thể có where hoặc không)

ORDER BY Theo quy ước sắp xếp.

Trong đó quy ước sắp xếp bao gồm hai thông số là ASC (từ trên xuống dưới), DESC (từ dưới lên trên).

mysql> select user_id,username from user order by username ASC ;

8- Truy cập dữ liệu có giới hạn :

Cú pháp:

SELECT tên_cột FROM Tên_bảng

WHERE điều kiện (có thể có where hoặc không)

LIMIT vị trí bắt đầu, số record muốn lấy ra

Ví dụ:
mysql> select user_id,username from user order by username ASC limit 0,10 ;

9- Cập nhật dữ liệu trong bảng:

Cú pháp:

Update tên_bảng set tên_cột=Giá trị mới

WHERE (điều kiện).

Nếu không có ràng buộc điều kiện, chúng sẽ cập nhật toàn bộ giá trị mới của các record trong bảng.

Ví dụ:

mysql> update user set email="admin@qhonline.info" where user_id=1 ;

10- Xóa dữ liệu trong bảng:

Cú pháp:

DELETE FROM tên_bảng WHERE (điều kiện).

Nếu không có ràng buộc điều kiện, chúng sẽ xó toàn bộ giá trị của các record trong bảng.

Ví dụ

mysql>delete from user where user_id=1 ;

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


Oracle là ?

Oracle là tên của một hãng phần mềm, một hệ quản trị cơ sở dữ liệu phổ biến trên thế giới. Hãng Oracle ra đời đầu những năm 70 của thế kỷ 20 tại nước Mỹ.

Khởi đầu với phần mềm quản trị Cơ sở dữ liệu cách đây hơn 50 năm. Hiện tại ngoài sản phẩm Oracle Database Server, Oracle còn cung cấp nhiều sản phẩm phục vụ doanh nghiệp khác.

Tập đoàn Oracle
Loại hìnhPublic (NASDAQ:ORCL)
Ngành nghềPhần mềm & Cơ sở dữ liệu
Thành lậpCalifornia (1977)[1]
Trụ sở chínhRedwood Shores, California
Thành viên chủ chốtLawrence (Larry) J. Ellison, CEO
Jeff Henley, Chairman
Safra Catz, President/CFO
Chuck Phillips, President
Sản phẩmCơ sở dữ liệu Oracle
Oracle eBusiness Suite
Oracle Application Server
Oracle JDeveloper
Oracle ADF
Oracle Collaboration Suite
Oracle Enterprise Manager
Doanh thuGreen Arrow Up.svg 11,799 tỉ USD (2005)
Lợi nhuận kinh doanhGreen Arrow Up.svg 4,022 tỉ đôla Mĩ (2005)
Lãi thựcGreen Arrow Up.svg $2,886 tỉ đôla Mĩ (2005)
Nhân viên49.872 (2005)
Websitewww.oracle.com

Thanks wikipedia.org

MySQL là gì ?

MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng. Vì MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh.Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet. MySQL miễn phí hoàn toàn cho nên bạn có thể tải về MySQL từ trang chủ. Nó có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux,Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS, ...

MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu quan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL).

MySQL được sử dụng cho việc bổ trợ PHP, Perl, và nhiều ngôn ngữ khác, nó làm nơi lưu trữ những thông tin trên các trang web viết bằng PHP hay Perl,...

Hệ quản trị cơ sở dữ liệu (tiếng Anh: Database Management System - DBMS), là phần mềm hay hệ thống được thiết kế để quản trị một cơ sở dữ liệu. Cụ thể, các chương trình thuộc loại này hỗ trợ khả năng lưu trữ, sửa chữa, xóa và tìm kiếm thông tin trong một cơ sở dữ liệu (CSDL). Có rất nhiều loại hệ quản trị CSDL khác nhau: từ phần mềm nhỏ chạy trên máy tính cá nhân cho đến những hệ quản trị phức tạp chạy trên một hoặc nhiều siêu máy tính.

Tuy nhiên, đa số hệ quản trị CSDL trên thị trường đều có một đặc điểm chung là sử dụng ngôn ngữ truy vấn theo cấu trúc mà tiếng Anh gọi là Structured Query Language (SQL). Các hệ quản trị CSDL phổ biến được nhiều người biết đến là MySQL, Oracle,PostgreSQL, SQL Server, DB2, Infomix, v.v. Phần lớn các hệ quản trị CSDL kể trên hoạt động tốt trên nhiều hệ điều hành khác nhau như Linux, Unix và MacOS ngoại trừ SQL Server của Microsoft chỉ chạy trên hệ điều hành Windows.

- Ưu điểm của HQTCSDL:
  • Quản lý được dữ liệu dư thừa.
  • Đảm báo tính nhất quán cho dữ liệu.
  • Tạo khả năng chia sẻ dữ liệu nhiều hơn.
  • Cải tiến tính toàn vẹn cho dữ liệu.
- Nhược điểm:
  • HQTCSDL tốt thì khá phức tạp.
  • HQTCSDL tốt thường rất lớn chiếm nhiều dung lượng bộ nhớ.
  • Giá cả khác nhau tùy theo môi trường và chức năng.
  • HQTCSDL được viết tổng quát cho nhiều người dùng thì thường chậm.

Phát triển bởiMySQL AB
Bản mới nhất5.5.27 / 2 tháng 8, 2012
Hệ điều hànhĐa hệ điều hành
Thể loạiRDBMS
Giấy phépGPL hay Giấy phép Thương mại
Websitewww.mysql.com

Thanks wikipedia.org