Thứ Hai, 25 tháng 2, 2013

Làm thẻ div có thanh cuộn


 Dùng thuộc tính: overflow:auto;

#thediv_scroll{
height:300px;
width:300px;
margin-left:300px;
border:1px #999999 solid;
padding: 5px 5px 5px 5px;/* canh chinh noi dung va le the div*/
overflow:auto; /* thuoc tinh nay lam xuat hien thanh cuon*/

}

<body>
<div id="thediv_scroll">

Khi bạn đưa nội dung dài hơn chiều cao và chiều rộng của thẻ div thì trình duyệt sẽ tự động sinh ra thanh cuôn ngang và thanh cuộn dọc giống như iFrame. Kỹ thuật này hiện có khá nhiều Website sử dụng để có cách thể hiện nội dung riêng biệt của mình.
sẽ tự động sinh ra thanh cuôn ngang và thanh cuộn dọc giống như iFrame.sẽ tự động sinh ra thanh cuôn ngang và thanh cuộn dọc giống như iFrame.sẽ tự động sinh ra thanh cuôn ngang và thanh cuộn dọc giống như iFrame.sẽ tự động sinh ra thanh cuôn ngang và thanh cuộn dọc giống như iFrame.sẽ tự động sinh ra thanh cuôn ngang và thanh cuộn dọc giống như iFrame.sẽ tự động sinh ra thanh cuôn ngang và thanh cuộn dọc giống như iFrame.

</div>
</body>

Đổ bóng thẻ DIV với CSS3


Thuộc tính mới "box-shadow" của CSS3 là một trong những thuộc tính khá
hữu dụng và được sử dụng nhiều trong quá trình viết CSS. Với thuộc tính
này bạn có thể tạo cho các thành phần trong website của mình hiệu ứng
bóng đổ đẹp mắt. Tuy nhiên thuộc tính này không được hỗ trợ trên toàn bộ
các trình duyệt hiện tại, thuộc tính này chỉ được hỗ trợ từ Safari 3+,
Firefox 3.1 (Alpha), Chrome, Opera và IE 9+.
#yourdiv {
box-shadow: thamso1, thamso2, thamso3, mau;
}

  1. thamso1: Bóng đổ theo chiều ngang, nghĩa là phần bóng đổ sẽ lệch về phía phải của đối tượng.
  2. thamso2: Bóng đổ theo chiều dọc, nghĩa là phần bóng đổ sẽ lệch về phía trên của đối tượng.
  3. thamso3: Độ rộng hay còn gọi là độ dày của bóng đổ.
  4. màu: Màu sắc của phần bóng đổ.
EX:
#yourdiv {
background: #eee;
box-shadow: 5px 5px 5px #666;
-moz-box-shadow: 5px 5px 5px #666;
-webkit-box-shadow: 5px 5px 5px #666;
margin-right: 5px;
padding: 20px;
}
-----
#yourdiv {
background: #eee;
box-shadow: -5px -5px 5px #666;
-moz-box-shadow: -5px -5px 5px #666;
-webkit-box-shadow: -5px -5px 5px #666;
margin-right: 5px;
padding: 20px;
}




box-shadow



box-shadow: -5px -5px 5px #666;

Đổ bóng thẻ DIV với CSS3..


  1. Ví dụ:
    Chúng ta thực hiện việc đổ bóng về phía phải – dưới:




    box-shadow: 5px 5px 5px #666;
    -moz-box-shadow: 5px 5px 5px
    #666;
    -webkit-box-shadow: 5px 5px 5px
    #666;
    • Đối số 1: Qui định đổ bóng theo chiều ngang (đơn vị px).
    • Đối số 2: Qui định đổ bóng theo chiều dọc (đơn vị px).
    • Đối số 3: Độ rộng của bóng đổ (đơn vị px).
    • Đối số 4: Màu của bóng đổ.


Bóng đổ về phía trên – trái: Chỉ cần thực hiện với dấu (-) ở trước là dc kết quả mong muốn:
box-shadow: -5px -5px 5px #666;
-moz-box-shadow: -5px -5px 5px #666;
-webkit-box-shadow: -5px -5px 5px #666;

box-shadow: 0px 0px 6px rgba(0, 0, 0, 10);
-moz-box-shadow:0px 0px 6px rgba(0, 0, 0, 10);
-webkit-box-shadow: 0px 0px 6px rgba(0, 0, 0, 10);



Tạo góc bo tròn bằng CSS


Tạo góc bo tròn bằng CSS

  1. Bo tròn 4 gốc:

    -moz-border-radius: 10px;
    -webkit-border-radius: 10px;


    Code:
    -moz-border-radius: 10px;
    -webkit-border-radius: 10px;
    width:350px;
    background-color:#999999;
    border:1px #0066FF solid;
    height:100px;

    ex :

    <html>
    <head></head>
    <style type="text/css">
    botron{

    -moz-border-radius: 10px;
    -webkit-border-radius: 10px;
    width:350px;
    background-color:#999999;
    border:1px #0066FF solid;
    height:100px;

    }

    </style>
    <body>
    <div id="botron"></div>
    </body>
    </html>
     

  2. Bo tròn góc trên trái

    -moz-border-radius-topleft:10px;

    -webkit-border-top-left-radius:10px;




  3. Bo góc tròn dưới trái   

    -moz-border-radius-bottomleft:10px;
    -webkit-border-bottom-left-radius:10px;


  4. Bo góc tròn trên phải  

    -moz-border-radius-topright:10px;
    -webkit-border-top-right-radius:10px;



  5. Bo tròn góc dưới phải   

    -moz-border-radius-bottomright:10px;
    -webkit-border-bottom-right-radius:10px;
                   
               

** at 07/22/2012 10:44 am comment
nhưng sao khi mình viết thẻ không có gợi ý là sao hả bạn. có phải add gì nữa ko
hoadiepdo99 at 07/22/2012 07:54 pm reply
minh vi du cho ban xem do [img]1[/img]
** at 07/22/2012 10:38 am comment
à mình làm đc rồi.cảm ơn nhé
** at 07/22/2012 10:23 am comment
bạn ơi, sao mình ko làm đc bo tròn góc vậy.đây là css mấy vậy bạn

Ký tự đặc biệt trong HTML, HTML Cheatsheet


Special Characters in HTML

left single quote
right single quote
single low-9 quote
left double quote
right double quote
double low-9 quote
dagger
double dagger
per mill sign
single left-pointing angle quote
single right-pointing angle quote
black spade suit
black club suit
black heart suit
black diamond suit
overline, = spacing overscore
leftward arrow
upward arrow
rightward arrow
downward arrow
trademark sign
unused �-


horizontal tab

line feed

unused

space

exclamation mark !
!
double quotation mark " "
number sign #
#
dollar sign $
$
percent sign %
%
ampersand & & &
apostrophe '
left parenthesis (
(
right parenthesis )
)
asterisk *
*
plus sign +
+
comma ,
,
hyphen -
-
period .
.
slash / /
digits 0-9 0-
9


colon :
:
semicolon ;
;
less-than sign < < <
equals sign =
=
greater-than sign > > >
question mark ?
?
at sign @
@
uppercase letters A-Z A-
Z


left square bracket [
[
backslash \
\
right square bracket ]
]
caret ^
^
horizontal bar (underscore) _
_
grave accent `
`
lowercase letters a-z a-
z


left curly brace {
{
vertical bar |
|
right curly brace }
}
tilde ~
~
unused -


en dash
em dash
unused ˜-
Ÿ


nonbreaking space      
inverted exclamation ¡ ¡ ¡
cent sign ¢ ¢ ¢
pound sterling £ £ £
general currency sign ¤ ¤ ¤
yen sign ¥ ¥ ¥
broken vertical bar ¦ ¦ or &brkbar; ¦
section sign § § §
umlaut ¨ ¨ or &die; ¨
copyright © © ©
feminine ordinal ª ª ª
left angle quote « « «
not sign ¬ ¬ ¬
soft hyphen ­ ­ ­
registered trademark ® ® ®
macron accent ¯ ¯ or &hibar; ¯
degree sign ° ° °
plus or minus ± ± ±
superscript two ² ² ²
superscript three ³ ³ ³
acute accent ´ ´ ´
micro sign µ µ µ
paragraph sign
middle dot · · ·
cedilla ¸ ¸ ¸
superscript one ¹ ¹ ¹
masculine ordinal º º º
right angle quote » » »
one-fourth ¼ ¼ ¼
one-half ½ ½ ½
three-fourths ¾ ¾ ¾
inverted question mark ¿ ¿ ¿
uppercase A, grave accent À À À
uppercase A, acute accent Á Á Á
uppercase A, circumflex accent   Â
uppercase A, tilde à à Ã
uppercase A, umlaut Ä Ä Ä
uppercase A, ring Å Å Å
uppercase AE Æ Æ Æ
uppercase C, cedilla Ç Ç Ç
uppercase E, grave accent È È È
uppercase E, acute accent É É É
uppercase E, circumflex accent Ê Ê Ê
uppercase E, umlaut Ë Ë Ë
uppercase I, grave accent Ì Ì Ì
uppercase I, acute accent Í Í Í
uppercase I, circumflex accent Î Î Î
uppercase I, umlaut Ï Ï Ï
uppercase Eth, Icelandic Ð Ð Ð
uppercase N, tilde Ñ Ñ Ñ
uppercase O, grave accent Ò Ò Ò
uppercase O, acute accent Ó Ó Ó
uppercase O, circumflex accent Ô Ô Ô
uppercase O, tilde Õ Õ Õ
uppercase O, umlaut Ö Ö Ö
multiplication sign × × ×
uppercase O, slash Ø Ø Ø
uppercase U, grave accent Ù Ù Ù
uppercase U, acute accent Ú Ú Ú
uppercase U, circumflex accent Û Û Û
uppercase U, umlaut Ü Ü Ü
uppercase Y, acute accent Ý Ý Ý
uppercase THORN, Icelandic Þ Þ Þ
lowercase sharps, German ß ß ß
lowercase a, grave accent à à à
lowercase a, acute accent á á á
lowercase a, circumflex accent â â â
lowercase a, tilde ã ã ã
lowercase a, umlaut ä ä ä
lowercase a, ring å å å
lowercase ae æ æ æ
lowercase c, cedilla ç ç ç
lowercase e, grave accent è è è
lowercase e, acute accent é é é
lowercase e, circumflex accent ê ê ê
lowercase e, umlaut ë ë ë
lowercase i, grave accent ì ì ì
lowercase i, acute accent í í í
lowercase i, circumflex accent î î î
lowercase i, umlaut ï ï ï
lowercase eth, Icelandic ð ð ð
lowercase n, tilde ñ ñ ñ
lowercase o, grave accent ò ò ò
lowercase o, acute accent ó ó ó
lowercase o, circumflex accent ô ô ô
lowercase o, tilde õ õ õ
lowercase o, umlaut ö ö ö
division sign ÷ ÷ ÷
lowercase o, slash ø ø ø
lowercase u, grave accent ù ù ù
lowercase u, acute accent ú ú ú
lowercase u, circumflex accent û û û
lowercase u, umlaut ü ü ü
lowercase y, acute accent ý ý ý
lowercase thorn, Icelandic þ þ þ
lowercase y, umlaut ÿ ÿ ÿ
Alpha Α
Α
alpha α
α
Beta Β
Β
beta β
β
Gamma Γ
Γ
gamma γ
γ
Delta Δ
Δ
delta δ
δ
Epsilon Ε
Ε
epsilon ε
ε
Zeta Ζ
Ζ
zeta ζ
ζ
Eta Η
Η
eta η
η
Theta Θ
Θ
theta θ
θ
Iota Ι
Ι
iota ι
ι
Kappa Κ
Κ
kappa κ
κ
Lambda Λ
Λ
lambda λ
λ
Mu Μ
Μ
mu μ
μ
Nu Ν
Ν
nu ν
ν
Xi Ξ
Ξ
xi ξ
ξ
Omicron Ο
Ο
omicron ο
ο
Pi Π
Π
pi π
π
Rho Ρ
Ρ
rho ρ
ρ
Sigma Σ
Σ
sigma σ
σ
Tau Τ
Τ
tau τ
τ
Upsilon Υ
Υ
upsilon υ
υ
Phi Φ
Φ
phi φ
φ
Chi Χ
Χ
chi χ
χ
Psi Ψ
Ψ
psi ψ
ψ
Omega Ω
Ω
omega ω
ω
password dot
bullet

Cách nhúng google map vào website


Mở cửa sổ mới

<a href="http://google.com/" onclick="window.open(this.href, 'popupwindow',
  'width=400,height=300,scrollbars,resizable');
  return false;">      

Tao favicon cho website


Đôi nét về Joomla


Joomla! là một hệ quản trị nội dung mã nguồn mở (Open Source Content Management Systems). Joomla! được viết bằng ngôn ngữ PHP và kết nối tới cơ sở dữ liệu MySQL , cho phép người sử dụng có thể dễ dàng xuất bản các nội dung của họ lên Internet hoặc Intranet.
Joomla có các đặc tính cơ bản là: bộ đệm trang (page caching) để tăng tốc độ hiển thị, lập chỉ mục, đọc tin RSS (RSS feeds), trang dùng để in, bản tin nhanh, blog, diễn đàn, bình chọn, lịch biểu, tìm kiếm trong Site và hỗ trợ đa ngôn ngữ.
Joomla! được phát âm theo tiếng Swahili như là 'jumla' nghĩa là "đồng tâm hiệp lực", điều này các bạn có thể thấy ngay ở trên logo của Joomla.
Joomla! được sử dụng ở khắp mọi nơi trên thế giới, từ những website cá nhân cho tới những hệ thống Website doanh nghiệp có tính phức tạp cao, cung cấp nhiều dịch vụ và ứng dụng. Joomla có thể dễ dàng cài đặt, dễ dàng quản lý và có độ tin cậy cao.
Joomla! có mã nguồn mở do đó việc sử dụng Joomla là hoàn toàn miễn phí cho tất cả mọi người trên toàn thế giới.
Hiện tại Joomla đang có hai phiên bản, phiên bản 1.0 và phiên bản 1.5. Hiện phiên bản 1.0 đang được phát triển tới 1.0.15, còn phiên bản 1.5 thì được phát triển tới 1.5.5. Các bạn có thể tải hai phiên bản của Joomla theo link phía cuối bài viết.
Đối với giao diện của Joomla! bạn có thể tùy biến theo sự sắp đặt của mình. Để thấy được tính mềm dẻo trong thiết kế giao diện bạn có thể vào 2 công ty hàng đầu trong lĩnh vực thiết kế template cho Joomla đó là: JoomlArtRockettheme.

Download Joomla (J!)

CMS - Hệ Thống Quản Trị Nội Dung


CMS - Hệ Thống Quản Trị Nội Dung

Chúng ta đã từng nghe đến các CMS hoặc đã xài qua các CMS, hiện nay các CMS được sử dụng rất nhiều và rộng khắp trên thế giới. Vì vậy việc chọn CMS cho việc quản lý nội dung cho website trên môi trường internet rất nhanh chóng và dễ dàng triển khai.

CMS là gì?

CMS là chữ viết tắt của Content Management System dùng cho việc quản lý, chỉnh sửa, cập nhật nội dung, hình ảnh, lưu trữ dữ liệu… trên nền internet. Các CMS được thiết kế dùng cho những việc sau:
- Cho phép người dùng đóng góp và chia sẻ dữ liệu, lưu trữ dữ liệu trên internet.
- Kiểm soát truy cập dữ liệu, dựa trên vai trò người dùng (xác định thông tin người dùng hay nhóm người sử dụng có thể xem, chỉnh sửa, xuất bản …).
- Giúp dễ dàng lưu trữ và phục hồi dữ liệu.
- Giúp dễ dàng chia sẽ thông tin, hình ảnh … giữa những người sử dụng.
- Bao gồm các công cụ giúp cho việc tìm kiếm, quản lý phiên bản (version) và phát hành thông tin, định dạng thông tin một cách nhanh chóng và dễ dàng.

CMS có những dạng nào?

Hệ Thống Quản Lý Nội Dung Cấp Doanh Nghiệp (ECM)

Một ECM (Enterprise Content Management systems) là hệ thống quản lý nội dung dành cho cấp doanh nghiệp, tổ chức lớn … Sử dụng để quản lý nội dung, tài liệu, chi tiết và hồ sơ liên quan đến các quá trình tổ chức của một doanh nghiệp. Mục đích và kết quả là quản lý nội dung thông tin trong cấu trúc của tổ chức, với sự đa dạng của tất cả các định dạng và vị trí. Hệ thống quản lý nội dung liên quan đến các tổ chức thương mại.

Hệ Thống Quản Lý Nội Dung Web (WCM)

Một WCM (Web Content Management systems) là một hệ thống CMS được thiết kế để đơn giản hóa việc xuất bản nội dung đến các trang web và các thiết bị di động ... Đặc biệt cho phép người dùng soạn thảo nội dung và gửi nội dung mà không đòi hỏi kiến thức kỹ thuật về HTML hoặc tải lên các tập tin. Một số nội dung dựa trên hệ thống quản lý web tồn tại cả trong các mã nguồn mở và các lĩnh vực thương mại.

Nhóm Hệ Thống Quản Lý Nội Dung Web (GMS)

GMS (web Group content Management Systems) rất giống với WCM, với sự khác biệt chính là việc thực hiện một số yêu cầu cụ thể. Những yêu cầu này nhằm mục đích để đáp ứng nhu cầu của các nhóm, tổ chức nhỏ thường gặp khó khăn trong việc quản lý hình ảnh trực tuyến của họ giao tiếp với các thành viên của họ và các sự kiện, kế hoạch, lịch trình và phân công nhiệm vụ cho các dự án nội bộ. Thông thường những công việc này được phân phối bởi công cụ khác nhau và GMS hợp nhất chúng lại thành một.

Component Hệ Thống Quản Lý Nội Dung (Component Content Management System)

Trong một hệ thống quản lý nội dung, nội dung được lưu trữ và quản lý ở các tài liệu phụ (hoặc thành phần) để sử dụng lại.

Một số CMS hiện nay đang được ưa chuộng

Lợi ích sử dụng css


CSS là gì?
CSS là viết tắt của từ Cascading Style Sheet. CSS là ngôn ngữ định dạng cho các tài liệu được viết bằng HTML, XHTML, ...
CSS dùng để làm gì?
CSS dùng để định dạng các đối tượng trên website như: văn bản, hình ảnh, table, ... Bạn chỉ cần tạo ra một mẫu định dạng cho đối tượng rồi áp dụng chúng cho các đối tượng cùng loại mà không hề phải định dạng lại.
  1. Tăng tốc độ website.Thời gian load một website sẽ nhanh hơn. Dung lượng của một trang web sẽ nhẹ hơn 50% so với cách làm cổ điển.
    Theo cơ sở của DOM thì:
    - Table: web browser phải load cả <table>…</table> thì mới có thể dựng thành DOM tree và hiển thị ra màn hình.
    - Div: chỉ cần load <div>..</div> là đã có thể dựng được DOM tree và hiển thị.
    Như vậy, quá trình hiển thị 1 trang table-less sẽ nhanh hơn 1 trang table. Hơn nữa, cùng 1 cấu trúc nhưng DOM tree của table sẽ lớn và phức tạp hơn của div rất nhiều, điều này cũng ảnh hưởng đến bộ nhớ và tốc độ xử lý của browser.
    Chưa kể, cùng 1 trang nhưng nếu dùng table thì code HTML sẽ lớn hơn dùng div. Code CSS có dùng div có thể sẽ lớn hơn, nhưng CSS được load 1 lần, sau đó được cache trên client.
  2. Thời gian phát triển website nhanh hơnThông qua một thao tác về thiết kế: thay đổi CSS, thì hàng ngàn trang web sẽ được thay đổi theo.
  3. Dễ kiểm soát thông qua vị trí các thành phần trên web. iệc đánh ID trên từng thẻ DIV, sẽ dễ dàng hơn
  4. Các trang web tách biệt phần thiết kế và nội dung.
  5. Thể hiện 1 phông cách chuyên nghiệp

LINQ là gì


LINQ là gì

LINQ là gì
1. LINQ là gì ?
Để giảm gánh nặng thao tác trên nhiều ngôn ngữ khác nhau và cải thiện năng suất lập trình, Microsoft đã phát triển giải pháp tích hợp dữ liệu cho .NET Framework có tên gọi là LINQ (Language Integrated Query), đây là thư viện mở rộng cho các ngôn ngữ lập trình C# và Visual Basic.NET (có thể mở rộng cho các ngôn ngữ khác) cung cấp khả năng truy vấn trực tiếp dữ liệu Object, CSDL và XML.
LINQ là một tập hợp các thành phần mở rộng cho phép viết các câu truy vấn dữ liệu ngay trong một ngôn ngữ lập trình, như C# hoặc VB.NET.
LINQ là từ viết tắt của “Language-Integrated Query”
2. Tôi cần có gì để lập trình LINQ ?
LINQ có từ bản .NET 3.5, vậy nên tối thiểu chương trình của bạn phải chạy trên nền tảng này.
Visual Studio 2008, hoặc các phiên bản Express của nó là các bộ công cụ phát triển tiêu biểu cho ứng dụng dùng LINQ.
Tải về Visual Studio 2008 tại đây.
Tải về Visual Studio Express tại đây.
3. LINQ và ADO.NET khác nhau chỗ nào ?
Nôm na, LINQ là tập mở rộng cho phép viết các câu truy vấn ngay trong các ngôn ngữ lập trình. Nó cho phép bạn làm việc với các kiểu tập hợp dữ liệu, như XML, collection, array,… và cả CSDL.
ADO.NET là công nghệ cho phép các ứng dụng có thể kết nối và làm việc với các loại CSDL khác nhau (truy vấn, cập nhật, thêm, xóa, gọi thủ tục…).
Bản thân LINQ không phải là một công nghệ được tạo ra để thay thế ADO.NET, bạn có thể làm việc với LINQ mà không dính gì đến CSDL. Tuy nhiên, LINQ to SQL, là một phần mở rộng của LINQ, cho phép bạn có thể làm việc được với CSDL SQL Server, trong trường hợp này thì khi viết bạn có thể bỏ qua các câu lệnh ADO.NET mà chỉ quan tâm tới cú pháp mà LINQ cung cấp.
Nhớ rằng dù bạn không hề dùng đến ADO.NET khi viết chương trình sử dụng LINQ to SQL, nhưng đằng sau nó, ADO.NET vẫn được dùng để thực hiện kết nối, gửi các câu lệnh, các lời gọi thủ tục…
4. LINQ có hỗ trợ Unicode không ?
Có, LINQ là một thành phần của .NET, và như vậy, LINQ hỗ trợ Unicode một cách hoàn toàn tự nhiên, bạn có thể làm các thao tác chèn, sửa dữ liệu với tiếng Việt mà không cần cấu hình thêm. Tất nhiên, khi thiết kế CSDL, bạn vẫn phải chọn kiểu dữ liệu (NVARCHAR) và collation phù hợp để LINQ có thể làm việc một cách đúng đắn.
5. Tôi không thể tìm thấy một số phương thức (Add, RemoveAll…) như các ví dụ trong loạt bài “LINQ to SQL”
Kể từ bản RTM, các phương thức dùng cho thêm và xóa entity đã được đổi tên, cụ thể như sau:
  • Add đổi thành InsertOnSubmit
  • AddAll đổi thành InsertAllOnSubmit
  • Remove đổi thành DeleteOnSubmit
  • RemoveAll đổi thành DeleteAllOnSubmit
6. SQL và LINQ khác nhau thế nào?
SQL chỉ được dùng để truy vấn dữ liệu trong các CSDL dạng quan hệ, nếu muốn truy cập các dạng dữ liệu khác như HTML, XML v.v… thì đây là điều không thể đối với SQL và có thể đối với LINQ. Do đó có thể nói đây là 1 ưu điểm khác của LINQ mà SQL không có.
Ưa điểm của LINQ
Trước hết: tôi xin nói về quy luật cơ bản trong lập trình là dữ liệu phải nằm trong bộ nhớ chính. Do đó khi cần dữ liệu chúng ta phải dùng cách nào đó để đưa dữ liệu vào bộ nhớ (đọc text file, truy vấn từ database …). Trong môi trường .NET, dữ liệu trong bộ nhớ thường được thể hiện ở dạng các đối tượng và trước LINQ, chúng ta không có cách nào để móc nối các đối tượng hay thực hiện bất kỳ thao tác truy vấn nào. LINQ chính là giải pháp cho vấn đề này.
Thứ 2: Trước đây, cách phổ biến nhất để ứng dụng lấy dữ liệu từ các hệ cơ sở dữ liệu (CSDL) là sử dụng SQL (Structure Query Language – ngôn ngữ truy vấn cấu trúc). SQL có cú pháp rất khác với những ngôn ngữ lập trình phổ dụng như C# và VB.NET, do vậy bạn phải nhọc công “hàn gắn” hai thực thể khác biệt này với nhau trong mỗi dự án phần mềm. LINQ ra đời để giảm gánh nặng thao tác “hàn gắn” trên nhiều ngôn ngữ khác nhau.
Thứ 3: Một vấn đề khác với SQL là nó chỉ dùng để truy vấn dữ liệu trong các CSDL dạng quan hệ. Nếu muốn truy cập dữ liệu XML hay dạng khác (như trang HTML, email…), bạn lại phải sử dụng cú pháp truy vấn khác (XPath/XQuery). Cách giải quyết vấn đề tốt nhất hiện nay là LINQ

Thứ 4: Về vấn đề “Error” chúng ta không lập trình tương tác với CSDL tại cấp độ native language. Vì thế lỗi thường khó phát hiện rõ. Khó khăn trong việc quản lý lỗi xảy ra.
Thứ 5: Về vấn đề cú pháp truy vấn thì trước khi có LINQ chúng ta chưa có 1 cú pháp chung nào cho truy vấn dữ liệu từ những nguồn khác nhau. Với LINQ nó sẽ cung cấp cách duy nhất để truy cập dữ liệu từ bất kể nguồn dữ liệu nào với cú pháp giống nhau. Ngoài ra cách viết dễ dàng cho việc đọc và phân tích. Trường hợp này sẽ được thể hiện rõ ràng khi chúng ta cần lọc những dữ liệu với nhiều điều kiện phân cấp khác nhau thì LINQ sẽ thể hiện rõ tính ưu việt của mình. LINQ cũng cung cấp những bộ lọc, sắp xếp thứ tự, nhóm dữ liệu với khối lượng code tối thiểu nhưng vẫn bảo đảm tính rõ ràng.
7. Truy vấn LINQ
LINQ hỗ trợ loại dữ liệu IEnumerable <T>. Những đối tượng hỗ trợ IEnumerable <T> và IQueryable(T) được gọi là queryable.
3 phần của biểu thức LINQ
1. Có được các dữ liệu nguồn.
2. Tạo các truy vấn.
3. Thực hiện các truy vấn.
Ví dụ trong mã nguồn sau đây cho thấy ba phần của một truy vấn hoạt động như thế nào.
class IntroToLINQ

  {

    static void Main()

    {

      // The Three Parts of a LINQ Query:

      // 1. Data source.

      int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };

      // 2. Query creation.

      // numQuery is an IEnumerable

      var numQuery = from num in numbers

              where (num % 2) == 0

              select num;

      // 3. Query execution.

      foreach (int num in numQuery)

      {

        Console.Write("{0,1} ", num);

      }

    }

  }
Minh họa sau đây cho thấy các hoạt động truy vấn. Trong LINQ việc thực hiện các truy vấn được thực hiện khi bạn truy cập dữ liệu.

Các nguồn dữ liệu.
Trong ví dụ trước vì dữ liệu là một mảng, nó hoàn toàn hỗ trợ đặc điểm chung giao diện IEnumerable <T>. Điều này có nghĩa thực tế nó có thể được truy vấn với LINQ. Một truy vấn được thực hiện trong một câu lệnh foreach và foreach yêu cầu hỗ trợ IEnumerable hay IEnumerable(T). Loại có hỗ trợ IEnumerable(T) hoặc IQueryable(T) được gọi là queryable.
Với LINQ to SQL, trước tiên bạn tạo một đối tượng quan hệ được ánh xạ vào lúc thiết kế bằng cách sử dụng trình thiết kế đối tượng quan hệ (O/R Designer) hoặc tự viết code. Viết các câu truy vấn dựa trên đối tượng và thi hành để LINQ to SQL xử lý việc giao tiếp với cơ sở dữ liệu. Trong ví dụ sau, Customer đại diện cho một bảng trong cơ sở dữ liệu, và Table<Customer> hỗ trợ các đặc tính chung IQueryable<T>.
// Create a data source from a SQL Server database.
// using System.Data.Linq;
DataContext db = new DataContext(@"c:\northwind\northwnd.mdf");
Truy vấn.
Truy vấn trong ví dụ trước trả về tất cả các số từ mảng số nguyên. Các biểu thức truy vấn chứa ba mệnh đề: from, where, select. (Nếu bạn đang quen với SQL sắp đặt của các mệnh đề là sai vị trí trong SQL). Mệnh đề from dùng để xác định nguồn dữ liệu, mệnh đề where dùng để lọc dữ liệu, mệnh đề select dùng để chọn ra những phần tử được trả về. Lúc này một điểm quan trọng là trong LINQ, các biến truy vấn chỉ chứa đựng thông tin truy vấn, là yêu cầu kết quả trả về khi câu truy vấn được thực hiện chứ nó không thực hiện việc truy vấn dữ liệu.
Thực thi truy vấn:
Cũng giống như trạng thái trước đây, biến truy vấn tự nó chỉ chứa các lệnh truy vấn. Việc truy vấn dữ liệu chỉ được thực hiện khi bạn truy cập đến dữ liệu trả về từ câu truy vấn:
foreach (int num in numQuery)
{
    Console.Write("{0,1} ", num);
}
Câu lệnh foreach là nơi các kết quả truy vấn được trả về. Bởi các biến truy vấn tự nó không bao giờ chứa kết quả truy vấn, bạn có thể sử dụng lại nó để bổ sung hoặc thực thi lấy dữ liệu tại một nơi khác.
8. Tách rời DataContext và các lớp thực thể vào các namespaces khác nhau
O / R Designer cung cấp cho các thuộc tính Context Namespace và Entity Namespace trên DataContext. Những thuộc tính này xác định tên của lớp DataContext và lớp các thực thể đã được tạo ra. Theo mặc định, các thuộc tính là rỗng, lớp DataContext và các lớp thực thể được đưa vào cùng một namesapce. Để đưa các lớp vào các namespace khác nhau, chúng ta có thể nhập giá trị vào trong thuộc tính Context Namespace và / hoặc Entity Namespace.

Các điểm mạnh giữa SQL Server và MySQL


MS SQL và MySQL đều có những điểm đặc thù của chúng. Nếu cần so sánh, nên so sánh theo tính năng, hiệu suất, bảo mật và khả năng phục hồi....

Tôi thấy MySql phiên bản 4.x không thể so với MSSQL vì phiên bản này thiếu khá nhiều tính năng quan trọng để được xếp loại là một CSDL hạng nặng (ví dụ như thiếu ứng dụng View, StoreProc, Triggers...). Để công bằng nên thử so sánh MySql 5.x và MSSQL 2005.

1. Tính năng:
Tôi cho rằng MySql hơn MSSQL ở tính năng cung cấp nhiều loại storage engine. Tuy nhiên tính về mặt integration chặt chẽ cho trọn bộ hệ thống và công cụ phát triển software thì MSSQL integrate tốt hơn MySql, đặc biệt ở mảng .NET. MSSQL còn hỗ trợ XML trực tiếp trong DB, trong khi đó thì MySQL chưa làm được chuyện này. Các chức năng cần thiết như View, StoreProcedure, Trigger thì cả hai tương đương nhau.

2. Hiệu suất:
Tính về mặt hiệu suất, có rất nhiều thử nghiệm và tường trình cho rằng MSSQL perform kém hơn MySQL nhiều mặt. MSSQL đòi hỏi tài nguyên rất lớn (CPU mạnh, nhiều RAM...), nếu không nó rất ì ạch. MySQL không đòi hỏi nhiều như MSSQL. MySQL có thể chạy trên các UNIX highend system và perform tốt hơn MSSQL trên Windows highend server trong nhiều trường hợp.

3. Bảo mật:
MSSQL qua mặt MySQL về tính bảo mật ở column level. MySQL chỉ có thể set access đến row level là hết. Hệ thống xác thực người dùng của MSSQL cũng qua mặt MySQL. Tuy vậy, trên bình diện "để hở cổng" thì MSSQL dễ bị exploit hơn MySQL bởi MSSQL tích hợp quá chặt vào hệ điều hành. Lỗi của hệ điều hành hoặc một bộ phận nào đó dẫn đến việc nhân nhượng MSSQL nhanh chóng hơn MySQL.

4. Khả năng nhân bản (replication):
Cả hai đều có khả năng replicate hoặc cung cấp phương tiện để làm việc này. Tuy nhiên, MySQL nhanh hơn và ít sự cố hơn MSSQL vì tất cả các SQL statements dùng để thay đổi, cập nhật dữ liệu được lưu giữ trong binary log. MSSQL cung cấp nhiều phương pháp replicate cao cấp hơn, chi tiết hơn bởi thế nó phức tạp hơn và chậm hơn.

5. Khả năng phục hồi (recovery):
Nếu MySQL chạy thuần túy với MyISAM storage engine thì khả năng phục hồi (sau khi bị crash) không cách gì so sánh với MSSQL. Tuy nhiên nếu MySQL chạy với Innodb engine thì khả năng phục hồi không thua kém gì MSSQL. Ngoài ra, khả năng phục hồi còn được xét ở biên độ liên quan đến khả năng nhân bản (replication) ở trên. Bởi vì MSSQL cung cấp nhiều phương thức nhân bản nên việc phục hồi dữ liệu trên MSSQL dễ dàng hơn.

6. Phí tổn:
MySQL bản community không hề tốn tiền để mua nhưng bạn phải tự xắn tay áo lên. Tuy nhiên cài đặt, sử dụng và tối ưu MySQL không khó vì tài liệu của nó rất đầy đủ, thông tin về MySQL tràn ngập trên web. So với MSSQL, bạn phải trả gần một ngàn rưỡi đô cho 1 license MSSQL standard và khi cần support, bạn phải trả thêm tiền support (tùy case). MS vẫn cung cấp bản MSSQL không thu phí dành cho mục đích development. Tài liệu về MSSQL cũng rất nhiều trên mạng. Bản MySQL enterprise thì phải trả tiền (khoảng 400 đô) nhưng bạn được support đầy đủ.

nguồn từ http://www.hvaonline.net

Màu đường viền , và màu nền cho thẻ


Đặt đoạn css vào the style, ta đặt tên class thẻ< input >: TextBox, <textarea>: select

<style type="text/css">   
  
.TextBox, .select, {
        border: solid 1px #8AAFE1;
        color: #0E4380;
       
        background:-moz-linear-gradient(center top , #FFFFFF, #BBD3F2) repeat scroll 0 0 #FFFFFF;
       width:400px;
}
</style>



Chèn khung chứa code có thẻ "Select all"


<body>
<form name="MyForm">

              <textarea cols="59" name="MyText" rows="18" wrap="on" style="background:#eee; color:#464646; border:1px #A0C4EA dashed;">
              </textarea>

             <input name="button" onclick="javascript:this.form.MyText.focus();this.form.MyText.select();" type="button" value="Select all"/>
</form>
</body>

hình minh họa

Chèn trang HTML vào bài viết

<iframe src="http://ld.me.zing.vn" height="500" width="800" scrolling=yes frameborder="0"></iframe>

Bo tròn 4 góc viền với border-radius


<style type="text/css">

#idbtn{
border-radius:4px;
width:90px;
border:1px #8AAFE1 solid;
}
#idd{

border-radius:4px;
width:300px;
border:1px #8AAFE1 solid;
}
</style>

<table>

    <tr>
        <td>Nhập tên</td>
        <td><input  type="text"  id="idd"/></td>
    </tr>
    <tr>
        <td>Nhập email</td>
        <td><input  type="text"  id="idd"/></td>
    </tr>
    <tr>
        <td>Nhập địa chỉ</td>
        <td><textarea id="idd" rows="5"></textarea></td>
    </tr>
    <tr>
    <td></td>
    <td><input  id="idbtn" type="button" value=" Submit "/>
    </td>
    </tr>
</table>




Không cho nhập kí tự (chữ) vào ô textbox sử dụng javasrcipt


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script>
function keyPhone(e)
{
var keyword=null;
    if(window.event)
    {
    keyword=window.event.keyCode;
    }else
    {
        keyword=e.which; //NON IE;
    }
   
    if(keyword<48 || keyword>57)
    {
        if(keyword==48 || keyword==127)
        {
            return ;
        }
        return false;
    }
}

</script>
</head>

<body>
Nhap so dien thoai :
<input name="phone" type="text" onkeypress="return keyPhone(event);"/>
</body>
</html>

Tích hợp GOOLE DOCUMENT VIEW VÀO WEBSITE




<body>
<div>
<iframe id="" src="http://docs.google.com/gview?url=http://infolab.stanford.edu/pub/papers/google.pdf&embedded=true" style="width:700px;height:600px"></iframe>
</div>
</body>

       
Copy bỏ vào file html và chạy thử

Code lấy thời gian hiện tại date_default_timezone_set()


Code lấy thời gian hiện tại date_default_timezone_set();

<?php
date_default_timezone_set('Asia/Ho_Chi_Minh');
echo gmdate("d/m/Y H:i:s", time());
?>

kết quả : 24/07/2012 07:35:47       

Cách lấy mã số tự động để chèn vào csdl



Cách lấy mã số tự động để chèn vào csdl, với ngày + tháng + năm + mã số,truy vấn Mysql .

ta có bảng masotudong: có 1 cột: idms nvarchar(50)

<?php
 include 'ketnoidata.php';
 date_default_timezone_set('Asia/Ho_Chi_Minh');
 $mahs=0;
$sql = "select max(convert(right(idms,4), decimal)) as max from matudong where left(idms,8) = '".date("dmY")."';";
$result = mysql_query($sql)
    or die("Lỗi chọn: ".mysql_error());
while($row = mysql_fetch_array($result))
    $mahs = $row["max"] + 1;
if($mahs < 10)
    $mahs = date("dmY")."000".$mahs;
else if($mahs < 100)
    $mahs = date("dmY")."00".$mahs;
else if($mahs < 1000)
    $mahs = date("dmY")."0".$mahs;
else
    $mahs = date("dmY").$mahs;
?>

<input type="text" name="txtid" value="<?php echo $mahs; ?>"/>       

Các câu truy vấn cơ bản trong MySQL



1- Kết nối cơ sở dữ liệu:

Cú pháp:

mysql_connect("hostname","user","pass")

2- Lựa chọn cơ sở dữ liệu:

Cú pháp:

mysql_select_db("tên_CSDL")

Ví dụ:

$conn=mysql_connect("localhost","root","root") or die(" khong the ket noi");
mysql_select_db("demo");

Ví dụ 2 :

<?php
$ketnoi=mysql_connect('localhost','root','') or die ('Ket noi ko thanh cong');
$ketnoidb=mysql_select_db('matudong') or die ('ket noi that bai db');
mysql_query("set names 'utf8'",$ketnoi); // câu này cho phép nhập kiws tự unicode utf8 chèn vào csdl

?>


3- Thực thi câu lệnh truy vấn:

Cú pháp:

mysql_query("Câu truy vấn ở đây");

4- Đếm số dòng dữ liệu trong bảng:

Cú pháp:

mysql_num_rows();

5- Lấy dữ liệu từ bảng đưa vào mảng:

Cú pháp:

mysql_fetch_array();

6- Đóng kết nối cơ sở dữ liệu:

Cú pháp:

mysql_close();

Ví dụ áp dụng:

Tạo cơ sở dữ liệu dựa trên từng đoạn code sau:

mysql -hlocalhost -uroot -proot
mysql>create database demo_mysql;
mysql> use demo_mysql;
mysql>create table user(id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, username VARCHAR(50) NOT NULL, password CHAR(50) NOT NULL, PRIMARY KEY(id));

Tạo trang test.php. Đầu tiên chúng ta sẽ kết nối cơ sở dữ liệu.

<?
$conn=mysql_connect("localhost", "root", "root") or die("can't connect database");
mysql_select_db("demo_mysql",$conn);
?>

Tiếp đến viết câu truy vấn lấy ra tất cả user từ database.

<?
$sql="select * from user";
$query=mysql_query($sql);
?>

Kiểm tra xem trong bảng dữ liệu đã tồn tại user nào chưa ?. Nếu chưa thì xuất ra thông báo lỗi, ngược lại thì đưa chúng vào mảng và lặp cho đến hết bảng dữ liệu.

<?
if(mysql_num_rows($query) == 0)
{
echo "Chua co du lieu";
}
else
{
while($row=mysql_fetch_array($query))
{
echo $row[username] ." - ".$row[password]."<br />";
}
}
?>

Và cuối cùng chúng ta đóng kết nối và kết thúc thao tác xử lý.

<?
mysql_close($conn);
?>

Và cuối cùng là file hoàn chỉnh của ứng dụng trên:

<?
$conn=mysql_connect("localhost", "root", "root") or die("can't connect database");
mysql_select_db("demo_mysql",$conn);
$sql="select * from user";
$query=mysql_query($sql);
if(mysql_num_rows($query) == 0)
{
echo "Chua co du lieu";
}
else
{
while($row=mysql_fetch_array($query))
{
echo $row[username] ." - ".$row[password]."<br />";
}
}
mysql_close($conn);
?>

Chủ Nhật, 24 tháng 2, 2013

Tìm kiếm bằng tiếng việt với MSQL


Tìm kiếm bằng tiếng việt với MSQL

Category: PHP, Tag:
07/25/2012 03:43 pm
Bạn nào đã từng lập trình chắc cũng biết là để tìm kiếm tiếng Việt cũng chẳng đơn giản tí nào và là vấn đề đau đầu. Tìm kiếm tiếng Việt trong CSDL MySQL khá đau đầu với nhiểu lập trình viên.

Giải pháp tìm kiếm thông thường – tìm kiếm khớp

Khi lập trình, để thực hiện một câu lệnh tìm kiếm chúng ta thường áp dụng 2 phương pháp sau:
- Giải pháp 1:
SELECT * FROM table_name WHERE column_name = '%keyword%'
- Giải pháp 2:
SELECT * FROM table_name WHERE column_name LIKE '%keyword%'
Hai giải pháp này được áp dụng khá nhiều khi chúng ta cần tìm những kết quả tìm kiếm với nội dung chính xác với từ khóa cần tìm. Tuy nhiên, tiếng Việt không đơn giản như vậy.

Tìm kiếm Fulltex

Giải pháp này thường được áp dụng với CSDL lớn, số lượng record nhiều. Theo mình biết thì với giải pháp này số lượng record càng nhiều thì dữ liệu càng chính xác. Điều bất tiện là tìm kiếm Fulltext chỉ áp dụng cho các field đã được fulltext. Giải pháp này có cái nay là không những tìm kiếm với từ khóa chính xác, nó còn tìm được các từ khóa gần giống và các record có liên quan đến dữ liệu trong keyword chúng ta đưa vào.
SELECT * from table_name WHERE match('column_1', 'column_2', 'column_3', '.....') against('keyword');
Khi câu lệnh MATCH được sử dụng trong mệnh đề SELECT nó sẽ trả lại một thứ tự sắp xếp theo mức độ thích hợp, được xác định bằng một con số thập phân dương. Số này càng gần với 0 thì bản ghi càng kém thích hợp. Giá trị thích hợp này được xác định dựa trên biểu thức tìm kiếm, số từ có trong các trường được đánh chỉ mục cũng như tổng số bản ghi được tìm kiếm.
Câu lệnh AGAINST chỉ chấp nhận một tham số. Đó là chuỗi mà chúng ta cần tìm.
Bạn hãy thực hiện câu lệnh trên với tìm kiếm khớp đã nói ở trên để xem chúng có trả về cùng một tập kết quả không? Câu trả lời có thể là: có và không. Chính sự can thiệp của thứ tự sắp xếp theo mức độ thích hợp đã làm cho tập kết quả này có sự sai khác.
Đặc biệt, mình thích tìm kiếm Fulltext bởi nó hỗ trợ tìm kiếm với các toán tử.
Tìm kiếm toàn văn với toán tử boolean
Bằng cách kết hợp nhiều toán tử bên trong chuỗi tìm kiếm, bạn có thể đưa vào hay loại trừ các từ khác, thay đổi các tổ hợp từ để thay đổi giá trị thích hợp… Sau đây là một số toán tử boolean thường dùng trong MySQL:
  1. + Dấu cộng ở đầu chỉ ra rằng từ này phải xuất hiện ở tất cả các hàng trả lại.
  2. - Dấu trừ ở đầu chỉ ra rằng từ này không được có mặt trong tất cả các hàng trả lại.
  3. Mặc định (khi không có dấu trừ hoặc dấu cộng) từ tìm kiếm là tùy chọn, nhưng hàng nào chứa từ đó sẽ được đánh giá cao hơn.
  4. < > Hai toán tử này được sử dụng để thay đổi phần đóng góp của từ vào giá trị thích hợp của một hàng. Toán tử < làm giảm, còn toán tử > làm tăng phần đóng góp.
  5. ( ) Các dấu ngoặc đơn được sử dụng để nhóm các từ vào một biểu thức con.
  6. ~ Dấu ngã nằm ở đầu có chức năng toán tử phủ định, làm cho phần đóng góp của từ vào giá trị thích hợp của hàng bị phủ định. Kí hiệu này có ích khi dùng để đánh giá các từ gây nhiễu. Một hàng có chứa một từ như vậy sẽ bị đánh giá thấp hơn các hàng khác, nhưng không có nghĩa là nó bị loại trừ, như trường hợp dùng toán tử – .
  7. * Một dấu hoa thị là toán tử cắt bỏ. Không giống như các toán tử khác, nó được nối vào từ chứ không phải đặt nó ở trước từ.
  8. “Mệnh đề được đặt trong dấu nháy kép”, sẽ chỉ so khớp với các hàng có chứa mệnh đề đó.
Hiện nay mình sử dụng thuật toán tìm kiếm này khá nhiều trong các dự án đang làm.

Tìm kiếm với REGEXP BINARY

Giải pháp tìm kiếm này mình học được lúc làm việc với anh Thanh quản lý bên VINEXT.
Hiện mình chưa có thời gian và điều kiện để nghiên cứu về giải pháp này nhưng tạm thời cứ post lên đã cho các bạn test thử:
SELECT * FROM table_name WHERE column_name REGEXP BINARY '^keyword';
Giải pháp này trả về kết quả là tất cả các record có xuất hiện từ khóa keyword.

Các lệnh trong MYSQL


Các lệnh trong MYSQL 


Phát biểu câu SELECT
Giả sử ta có 1 cái table `person` với các field `LastName`,`FirstName`,`Address `,`City` :46[1]:
-----------------------------------------------------\
LastName | FirstName | Address | City
-----------------------------------------------------|
Cuc | Cu | Tổ c*h*i*m** | Bầu trời
Mào | Gà | PHP | Nỏ biết
-----------------------------------------------------/
Bây giờ muốn truy vấn tất cả các giá trị trong table `person` thì chúng ta sử dụng câu lệnh SQL như sau :
SELECT * FROM person
Còn nếu muốn truy vấn vào 1 field nào đó .Chẳng hạn như field `LastName` thì ta sử dụng câu lệnh SQL như sau:
SELECT {tên field} FROM {tên table}
SELECT LastName FROM person
Kết quả : :35[1]:
-------------\
LastName
-------------|
Cuc
Mào
-------------/

Phát biểu SELECT với mệnh đề FROM ,WHERE ,ORDER BY
Phát biểu SQL dạng SELECT là 1 trong những phát biểu yêu cầu MySQL truy vấn dữ liệu trên cơ sở dữ liệu chỉ định.SELECT dùng để đọc thông tin từ cơ sở dữ liệu theo trường trường hợp quy định hay những biểu thức cho trường hợp đó.
Mệnh đề FROM chỉ ra tên 1 bảng hay những bảng có liên quan hệ cần truy vấn thông tin
Mệnh đề WHERE để tạo nên điều kiện cần lọc mẩu tin theo tiêu chuẩn được định nghĩa .Thông thường WHERE dùng cột (trường) để so sánh với giá trị cột khác,hay biểu thức chứa cột (trường) bất kỳ có trong bảng (table)
Phát biểu SQL có dạng
SELECT * FROM {table} WHERE {condictions}
Các phép toán so sánh trong condictions (điều kiện) :
> : lớn WHERE id>10;
< : nhỏ hơn WHERE id<10;
>= :lớn hơn hoặc bằng WHERE id>=10;
<= : nhỏ hơn hoặc bằng WHERE id<=10;
= : bằng WHERE id=1;
!= : khác (ko bằng ) WHERE id!=1;
<> : khác WHERE id<>1;
Các phép toán logic trong condictions:
AND : WHERE `id`=1 AND `username`='admin';
OR : WHERE `id`=1 OR `username`='admin';
NOT : WHERE password is not NULL;
NOT IN: WHERE OrderID NOT IN( '10','20');
BETWEEN : WHERE OrderID BETWEEN 10 And 20;
LIKE: WHERE username LIKE '%hatinh';
NOT LIKE : WHERE usernam NOT LIKE '%hatinh' ;
IN : WHERE OrderID IN ('100','200','300');
Thông thường trong khi truy vấn mẩu tin từ bảng dữ liệu ,kết quả hiển thị sắp xếp theo chiều tăng hay giảm dựa trên ký tự ALPHABET .Nhưng bạn cũng có thể sắp xếp theo 1 tiêu chuẩn bất kỳ .
Cú pháp cho mệnh đề ORDER BY cùng với trạng thái tăng (ASC) ,giảm dần ( DESC )
Cú pháp :
ORDER BY columnname DESC
ORDER BY columnname1 + columnname2 DESC
ORDER BY columnname ASC
ORDER BY columnname1 + columnname2 ASC

Các hàm thông dụng trong MySQL
Các hàm trong Phát biểu GROUP BY
-hàm AVG : hàm trả về giá trị bình quân của cột hay trường (column) trong câu truy vấn
Ví dụ SELECT AVG(amount) FROM tableOrders
-Hàm MIN : hàm trả về giá tri nhỏ nhất của cột hay trường trong câu truy vấn
Ví dụ: SELECT MIN (amount) FROM tableOrders
-hàm MAX: hàm trả về giá tri lớn nhất của cột hay trường trong câu truy vấn
Ví dụ: SELECT MAX (amount) FROM tableOrders
-Hàm Count: hàm trả về số lượng mẩu tin trong câu truy vấn trên bảng
Ví dụ : SELECT Count(*) FROM tableOrders
-Hàm Sum: hàm trả về tổng giá trị của trường (column) , cột ,trong câu truy vấn
Ví dụ : SELECT Sum(amount) FROM tableOrders
-Hàm ASCII : hàm trả về giá trị mã ASCII của ký tự bên trái của chuỗi
Ví dụ : SELECT ASCII ('TOI');
Kết quả : 84
-Hàm Char: hàm này chuyển đổi kiểu mã ASCII từ số nguyên sang dạng chuỗi
Ví dụ : SELECT Char(35)
Kết quả : #
-Hàm UPPER:hàm này chuyển đổi chuỗi sang dạng kiểu chữ hoa
Ví dụ : SELECT UPPER('iamhatinh')
Kết quả : IAMHATINH
-Hàm LOWER :hàm này chuyển đổi chuỗi sang dạng kiểu chữ thường
Ví dụ :SELECT LOWER('IAMHATINH')
Kết quả : iamhatinh
-Hàm Len: hàm này trả về chiều dài của chuỗi:
Ví dụ: SELECT LEN('I Love You')
Kết quả : 10
-Hàm LTRIM : hàm này loại bỏ khoảng trống bên trái của chuỗi:
Ví dụ : SELECT LTRIM(' kekeke');
Kết quả 'kekeke'
-Hàm RTRIM : hàm này loại bỏ khoảng trống bên phải của chuỗi:
Ví dụ : SELECT RTRIM('kekeke ');
Kết quả 'kekeke'
-Hàm LEFT : hàm này trả về chuỗi bên trái tính từ đầu cho đến vị trí thứ n
Ví dụ : SELECT LEFT('iamhatinh',3);
Kết quả :iam
-Hàm RIGHT : hàm này trả về chuỗi bên phải tính từ cuối cho đến vị trí thứ n
Ví dụ : SELECT RIGHT('iamhatinh',3);
Kết quả : inh
-Hàm Instr: hàm trả về vị trí chuỗi bắt đầu của chuỗi con trong chuỗi xét
Ví dụ :SELECT INSTR('hatinh','iamhatinh');
kết quả : 4
4 là tương đương vị trí thứ 4 của chứ hatinh trong chuỗi "iamhatinh"

Các hàm xử lý thời gian trong MySQL
-Hàm CurDate() : hàm trả về ngày,tháng ,năm hiện hành của hệ thống
Ví dụ SELECT curdate() as 'Today is'
Kết quả :
Today is
---------
2007-11-17
-Hàm curtime(): hàm trả về giờ .phút và giây hiện hành của hệ thống
Ví dụ SELECT curtime() as 'Bay gio la'
Kết quả :
Bay gio la
---------
05:12:26
-hàm Period_Diff: hàm trả về số ngày trong khoảng thời gian giữa 2 ngày:
Ví dụ : SELECT Period_Diff(OrderDate,getdate()) as 'So ngay giua ngay thu tien den hom nay'
Kết quả :
So ngay giua ngay thu tien den hom nay
------------------------------------
65
62
-Hàm dayofmonth: hàm dayofmonth trả về ngày thứ mấy trong tháng
Ví dụ : SELECT dayofmonth(curdate()) as ' hom nay ngay'
Kết quả :17
Phát biểu SQL dạng Select với LIMIT N,M ;DISTINCT
Phát biểu SQL dạng SELECT cho phép truy vấn chỉ 1 số mẩu tin tính từ vị trí thứ n đến vị trí thứ m trong Table (theo 1 tiêu chuẩn sắp xếp nào đó) .Để làm điều này,trong phát biểu SQL dạng SELECT bạn chỉ dùng chỉ định từ khóa LIMIT với số lượng mẩu tin cần lấy từ vị trí n đến m
Ví dụ :
SELECT * FROM tablerOrders LIMIT 0,10
Kết quả sẽ trả về 10 mẩu tin đầu tiên trong bảng tableOrders
Bạn có thể sử dụng kết hợp LIMIT với các mệnh đề WHERE ,ODER BY nhằm tạo ra kết quả như ý muốn
Nếu có 1 hay nhiều bảng kết nối với nhau ,sẽ xảy ra tình trạng trùng lặp nhiều mẩu tin.Nhưng trong trường hợp mà bạn chỉ muốn lấy ra 1 mẩu tin trong tập mẩu tin trùng lặp ,bạn sử dụng phát biểu SQL dạng SELECT với chỉ định DISTINCT
Ví dụ:
SELECT DISTINCT id,total ,amount FROM tableOrdersDetails ORDER BY total

NHập dữ liệu bằng phát biểu SQL dạng INSERT
Khi cần thêm mẩu tin vào bảng (table) trong CSDL MySQL ,bạn có nhiều cách để thực hiện công việc này,nhưng để sử dụng các phát biểu SQL mang tính chuyên nghiệp bạn cần sử dụng phát biểu INSERT
Khi thêm dữ liệu ,cần chú ý kiểu dữ liệu giống hoặc tương ứng với kiểu dữ liệu đã khai báo của cột ( column ) ,nếu không phù hợp thì lỗi sẽ phát sinh
.Ngoài ra bạn còn phải quan tâm đến quyền User đang truy cập CSDL.User phải được cấp quyền Insert dữ liệu vào từng table cụ thể (quyền này do Administator xét ).
Muốn INSERT vào CSDL thì ta có cấu trúc như sau:
INSERT INTO <table name>[<column name list>]
Ví dụ
ta muốn dùng phát biểu INSERT vào field username,password , email của bảng (table ) Users với các giá trị admin, admin , [Thành viên mới nhìn thấy link.]
INSERT INTO Users (username,password,email) VALUES ('admin',' admin' , '[Thành viên mới nhìn thấy link.]');
Muốn INSERT vào table từ giá trị của table khác ta dùng cấu trúc
INSERT INTO <table name1>[<columnname list>] SELECT [<columnname list>] FROM <table name2> WHERE <Condictions>
Ví dụ .Ta muốn INSERT vào table UserOrders gồm các field (username,password,email) với các giá trị lấy từ table User và được sắp xếp theo thứ Alphalbet
INSERT INTO UserOrders (username,password,email) SELECT username,password,email FROM User ORDER BY username ASC
Phát biểu SQL dạng UPDATE
Phát biểu SQL dạng UPDATE dùng cập nhật lại dữ liệu đã tồn tại trong bảng.Khi UPDATE dùng cập nhật dữ liệu cho một mẩu tin chỉ định nào đó thừong lệnh này sử dụng chung với mệnh đề WHERE
Nếu cập nhật tất cả các mẩu tin trong bảng bạn có thể bỏ mệnh đề WHERE. Cấu trúc như sau:
UPDATE <table name> SET <column>=<value>,[<column>=<value>] [WHERE <restrictive condictions>]
Nếu cập nhật giá trị là kết quả trả về từ phát biểu SELECT trên 1 hay nhiều bảng khác.Cấu trúc như sau:
UPDATE <table name> SET <column>=<select ... FROM table name WHERE...>[WHERE <restrictive condictions>]
Ví dụ : UPDATE trên toàn bộ các cột dữ liệu từ giá trị cụ thể
-UPDATE cột với giá trị cụ thể
UPDATE Users SET username='newadmin' , password='123456' , email='[Thành viên mới nhìn thấy link.]' WHERE id='1'
-UPDATE 1 cột với giá trị được lấy từ bảng khác
(Giả sử chúng ta muốn update giá trị cho cột Price _nằm trong bảng tableOrders mà giá trị đó được lấy từ giá trị của cột Cost nằm bảng tableItems )
UPDATE tableOrders SET Price (SELECT DISTINCT Cost FROM tableItems WHERE ItemsId=tableOrders.ItemsId ) WHERE Price <1000
Một số hàm tính toán trong MYSQL
Một số hàm tính toán trong MYSQL
giả sử ta có 1 table orders như sau:
id name city add email type money
1 Peter Muller Berlin Am Hechtacker 12 [Thành viên mới nhìn thấy link.] business 30000
2 Erika Kunstig Munchen Geibenstaig 13 [Thành viên mới nhìn thấy link.] business 40000
3 Werner Sauerbier Freiburg Mooswaldalle 34 [Thành viên mới nhìn thấy link.] business 4000
4 Maria Hopfendahl Berlin Kurfüstenstrasse 45 [Thành viên mới nhìn thấy link.] consumer 5000
5 Heiner Muller Bremen Lichtergasse 12 [Thành viên mới nhìn thấy link.] consumer 6000
6 Hans Kohl Dusseldorf Am Markt 45 [Thành viên mới nhìn thấy link.] consumer 70000
7 Werner Glottertal Coburg Am Fels 45 [Thành viên mới nhìn thấy link.] consumer 90000
8 Hans Lutzelschwab Freiburg Am Hertweg 7 lü[Thành viên mới nhìn thấy link.] business 20000
9 Peter Brueg Freiburg Reischstrasse 34 [Thành viên mới nhìn thấy link.] consumer 5000
10 Erika Lachfeld Freiburg Krozinger Strasse 12 [Thành viên mới nhìn thấy link.] business 4000
Cú pháp:
Cú pháp để gọi hàm trong câu lệnh SQL như sau:
SELECT function(tên_cột) FROM tên_bảng
Giờ ta sẽ lần lượt đi hết 1 số hàm thông dụng
Hàm AVG(column)
Hàm AVG trả về giá trị trung bình tính theo cột được chỉ định của các dòng được chọn. Các giá trị NULL sẽ không được xét đến khi tính giá trị trung bình.
Ví dụ:
tính số tiền trung bình của các khách hàng ở Berlin:
Câu lệnh là
SELECT AVG(money) FROM orders WHERE city = 'Berlin'
kết quả trả về sẽ là:
+-------------+
| AVG(money) |
| 17500 |
+-------------+
Kết hợp mệnh đề GROUP BY
Để tính trung bình số tiền các khách hàng mỗi loại consumer và business ta dùng câu lệnh sau:
select type,AVG(money) from orders group by type
Kết quả trả về là:
type AVG(money)
business 19600.0000
consumer 35200.0000
Sử dụng Bí danh (Alias)
select type,AVG(money) as 'so tien trung binh moi loai' from orders group by type
Kết quả trả về là:
type so tien trung binh moi loai
business 19600.0000
consumer 35200.0000
Hàm COUNT([DISTINCT] column(s))
Hàm COUNT đếm các dòng trong CSDL .
Hàm COUNT( * ):
Hàm COUNT( * ) trả về số lượng các dòng được chọn ở trong bảng.
Câu lệnh sau sẽ trả về số lượng các dòng trong bảng:
SELECT COUNT(*) FROM orders
và kết quả trả về sẽ là:
+-------------+
| COUNT(*) |
| 10 |
+-------------+
Câu lệnh sau sẽ trả về số khách hàng ở Freiburg
SELECT COUNT(*) FROM orders where city = 'Freiburg'
và kết quả trả về sẽ là:
+-------------+
| COUNT(*) |
| 4 |
+-------------+
Hàm COUNT(column):
Hàm COUNT(column) sẽ trả về số lượng các dòng có giá trị khác NULL ở cột được chỉ định.
Câu lệnh sau sẽ trả về số lượng những người mà cột add trong bảng không rỗng:

SELECT COUNT(add) FROM orders
Ngoài ra từ khoá DISTINCT và hàm COUNT có thể được dùng chung với nhau để đếm số lượng các kết quả không trùng nhau.
Cú pháp như sau:
SELECT COUNT(DISTINCT column(s)) FROM table
Câu lệnh SQL sau:
SELECT COUNT(DISTINCT city) FROM orders
sẽ trả về kết quả là:
+-----------------------+
| COUNT(DISTINCT city) |
| 6 |
+-----------------------+
nếu ta dùng từ khóa DISTINCT
select DISTINC(city) from orders
Kết quả là:
+-------------------+
| city |
+-------------------+
| Berlin |
| Munchen |
| Freiburg |
| Bremen |
| Dusseldorf |
| Coburg |
+-------------------+

Kết hợp với mệnh đề GROUP BY 1 tí
Để tìm xem mỗi thành phố có bao nhiêu khách hàng
Câu lệnh MYSQL là:
select count(distinct(name)),city from orders group by city
Kết quả sẽ là:
count(distinct(name)) city
2 Berlin
1 Bremen
1 Coburg
1 Dusseldorf
4 Freiburg
1 Munchen
Hàm SUM(column)
Hàm SUM trả về tổng giá trị của cột. Các giá trị NULL sẽ không được xét đến.
Ví dụ:
Tìm tổng số tiền của tất cả những người có trong bảng:
Câu lệnh MYSQL là:
SELECT SUM(money) FROM orders
Kết hợp với mệnh đề GROUP BY
Tìm xem mỗi loại là business và consumer tổng bao nhiêu tiền
Có thể xài câu lệnh MYSQL sau :
select type,sum(money) from orders group by type
Kết quả là:
type sum(money)
business 98000
consumer 176000
Ngoài ra ta có thể tính tổng tiền chi tiết hơn (ngoài theo type còn theo city nữa )
Câu lệnh MYSQL:
select type,city,sum(money) from orders group by type,city;
Kết quả là:
type city sum(money)
business Berlin 30000
business Freiburg 28000
business Munchen 40000
consumer Berlin 5000
consumer Bremen 6000
consumer Coburg 90000
consumer Dusseldorf 70000
consumer Freiburg 5000
Kết hợp thêm hàm COUNT
Câu lệnh MYSQL là:
select type,city, sum(money),count(distinct(name)) from orders group by type,city
Kết quả là:
type city sum(money) count(distinct(name))
business Berlin 30000 1
business Freiburg 28000 3
business Munchen 40000 1
consumer Berlin 5000 1
consumer Bremen 6000 1
consumer Coburg 90000 1
consumer Dusseldorf 70000 1
consumer Freiburg 5000 1
Hàm MAcolumn)
Hàm MAX trả về giá trị lớn nhất trong cột. Các giá trị NULL sẽ không được xét đến.
Tìm xem số $ trả nhiều nhất trong mấy khách hàng kia $-)$-)
Câu lệnh MYSQL:
SELECT MAmoney) FROM orders
Hàm MIN(column)
Hàm MAX trả về giá trị nhỏ nhất trong cột. Các giá trị NULL sẽ không được xét đến.
Để tìm xem mỗi thành phố thì số tiền ít nhất và nhiều nhất mà khách hàng ở thành phố đó phải chi trả , ta dùng câu lệnh sau:
select city, min(money) as 'min tien', max(money) as 'max tien' from orders group by city
Kết quả là:
city min tien max tien
Berlin 5000 30000
Bremen 6000 6000
Coburg 90000 90000
Dusseldorf 70000 70000
Freiburg 4000 20000
Munchen 40000 40000

nguon tu :http://www.qhonline.info