Thursday, November 22, 2007

Kinh nghiệm chuyển đổi hosting - nhanh, gọn

Vào Web admin ==> Backup ==> Full backup ==> tiến hành backup, sau khi backup xong... file backup sẽ được lưu vào thư mục root, bạn cần đổi tên nó lại thành ftp_data.tar.gz và di chuyển nó vào thư mục www.

Sau đó bạn tạo file host_to_host.php với nội dung sau:

<?php

$file_url = "http://yourdomain.com/ftp_data.tar.gz";

$file_name = explode("/", $file_url);

$file_name = $file_name[count($file_name)-1];

$f1 = fopen ( $file_url, "rb");

$f2 = fopen ( $file_name, "w");

while ( $buff = fread( $f1, 1024 ) )
{
fwrite($f2, $buff);
}

fclose($f1);

fclose($f2);

?>

Tiếp tục upload file host_to_host.php này lên hosting mới, sau đó bạn chạy file này trên hosting mới để tiến hành chuyển FTP data từ hosting cũ sang hosting mới.


Command Vi ( vim ) - the powerful & simple editor for linux

Linux là một hệ điều hành được điều khiển đa phần qua môi trường dòng lệnh ( console ), thêm vào đó, các file cấu hình dịch vụ trên Linux thường được chỉnh sửa bởi trình editor là vi ( hay vim, bản cải thiện của vi ). Nếu bạn là người thường xuyên quản trị server linux qua console, thì vi là trình tiện ích hay sử dụng nhất. Do vậy, học cách sử dụng vi là một yêu cầu tối thiểu và cần thiết cho một người sử dụng linux.

1. Cơ bản

- Sử dụng vi kèm theo tên file(s) muốn edit: vi one.txt two.txt etc.txt
- Có 3 mode: command mode, visual mode và insert mode.
- Khi bắt đầu sử dụng lệnh vi, vi mặc định ở command mode. Hoặc ấn Esc để chuyển sang command mode khi người dùng đang ở insert mode.

2. Các lệnh edit cơ bản

- Ấn phím lệnh i hoặc a từ chế độ command mode để chuyển sang insert mode. i để thêm ký tự trước con trỏ, a để thêm ký tự sau con trỏ.
- Sử dụng lệnh h j k l hoặc các phím mũi tên tương ứng để di chuyển con trỏ sang trái, xuống, lên, sang phải.
- Sử dụng x xóa 1 ký tự, dw xóa 1 từ, dd xóa cả 1 dòng.
- Sử dụng số N đi trước phím lệnh để lặp lại N lần tác dụng của lệnh. Ví dụ, 3dw sẽ xóa 3 từ tính từ vị trí con trỏ.
- Sử dụng u ( = undo )để khôi phục lại những thay đổi trước đó.
- Sử dụng ZZ hay hay :wq lưu lại tất cả thay đổi và thoát.
- Sử dụng :q! thoát ra không lưu lại bất kỳ thay đổi nào.
- Sử dụng :wq! lưu lại và thoát .

3. Cắt và dán

- yy sao chép dòng hiện tại vào buffer, Nyy sao chép N dòng.
- p ( P ) dán nội dung từ buffer vào dưới ( trên ) dòng hiện tại

4. Nhảy đến hàng hay cột

- Gõ một số N trước ký tự G để đi đến dòng thứ N, vd 23G sẽ nhảy đến dòng 23.
- Gõ một số N trước ký tự | (pipe) để nhảy đến cột thứ N.
- Ctr-f = page up
- Ctr-b = page down

5. Sử dụng . để lặp lại action gần nhất. Ví dụ người dùng gõ i để insert dòng chữ “hello world”, sau đó chuyển sang chế độ command mode bằng phím Esc, nhảy xuống dòng và gõ . , dòng chữ “hello world” sẽ hiện ra.

6. Tìm kiếm

- Sử dụng / (?) đi theo sau là từ muốn tìm để tìm kiếm từ trong phần văn bản sau ( trước ) con trỏ. ví dụ /foobar hay ?foobar.
- Sau khi kết quả tìm kiếm đầu tiên hiện ra, sử dụng n để tìm kiếm tiếp trong phần văn bản còn lại sau con trỏ, N để tìm kiếm ngược trở lại đầu văn bản trước con trỏ.

7. Các lệnh colon ( đi sau dấu : )

- :%s/foo/bar/g tìm sự xuất hiện của “foo” trong toàn bộ file và thay thế bằng “bar”, /foo/bar/g chỉ thay thế ở dòng hiện tại.
- set nu hiển thị số dòng trước mỗi dòng, set nonu để bỏ hiển thị số dòng.
- :1,8d xóa từ dòng 1 cho đến dòng 8 trong file.
- Sử dụng ma để đánh dấu dòng hiện tại là a ( có thể là bất cứ ký tự nào từ a-z ). Sau đó dùng ‘a để nhảy đến dòng đã được dánh dấu là a từ bất cứ đâu. Có thể sử dụng với colon, :’a,’b d xóa tất cả các dòng bắt đầu từ dòng được đánh dấu là a cho đến dòng được đánh dấu là b, hoặc ngược lại.
- :w newfile.txt để save nội dung của file hiện tại vào một file mới là newfile.txt ( tựa “save as” bên Win Word ).
- :8,16 co 32 để copy dòng 8 đến 16 đến điểm sau dòng 32.
- :3,16 m 32 để chuyển rời dòng 8 đến 16 đến điểm sau dòng 32.
- Nếu dùng vi để mở nhiều file ( vi file1 file2 file3 ), có thể sử dụng :n để nhảy đến file tiếp theo và :rew để nhảy quay ngược lại đến file đầu tiên, :args để hiện thị tất cả các file đang được mở.

8. Vi for Smarties

- Sử dụng G để nhảy đến dòng cuối cùng của file.
- Khi xóa nhiều dòng, di chuyển con chuột đến dòng đầu tiên, gõ ma để đánh dấu, sau di đến dòng cuối cùng và gõ d’a để xóa những dòng đó.
- $ để nhảy xuống cuối dòng, :$ để nhảy đến dòng cuối của file.
- 0 để nhảy đến đầu dòng, :0 để nhảy tới dòng đầu tiên của file.
- d$ xóa từ vị trí con trỏ hiện tại đến cuối dòng.
- :10,$ d xóa từ dòng 10 cho đến dòng cuối cùng của file, hoặc ngược lại.
- :10,20 m 0 chuyển rời dòng 10 đến 20 lên trên dòng đầu tiên của file.

9. Shell
- Sử dụng :!command để thi hành lệnh command trong môi trường vi.

10. Visual mode

- Gõ v để vào Visual mode từ command mode hoặc Esc-v từ Insert mode.
- Move, Copy text (move 1 đoạn text): chuyển con trỏ đến đầu đoạn cần chuyển, gõ v để vào visual mode, và di chuyển trỏ đến cuối đoạn ( lúc này cả đoạn sẽ đc bôi sáng ), gõ y để copy hoặc d để cắt, sau đó di chuyển đến vùng cần paste và gõ p để paste. Nếu muốn paste sang 1 file khác, sau khi copy hoặc cắt gõ Esc để chuyển sang command mode và plit tênfile để mở file tênfile và gõ p để paste vào file này.

Shutdown trong Win 2003

Vào Start -> Run -> nhập "gpedit.msc" , chon mục Local computer Policy\ Computer Configuration\ Administrative Templates\ System. Trong màn hình chọn Disphay Shutdown Event Tracker> Disable

Tắt chế độ Log-in trong XP

Vào Start -> Run -> nhập "control userpasswords2" và Enter. Khi hộp thoại mở ra, bạn bỏ dấu check chọn trước dòng "Users must enter a user name and password to use this computer", OK để lưu lại thay đổi.

Lưu ý: chỉ nên tắt chế độ Log-in nếu máy tính của bạn không đòi hỏi bảo mật cao.

"Can not display this video mode" Dell dimension/Dell flat panel monitor:

1. Click the Start button, click Shutdown, click Restart The Computer, and then click Yes to restart the computer.

NOTE: If the system is not displaying video, pressing and holding the power button until the system shuts down can be used to restart the system.

2. When the message Starting Windows... appears, press the key F8.
The Please select the option: screen appears.
3. Use the arrow keys to highlight Enable VGA Mode and press the key.

Lower the Display Resolution in Display Properties for Microsoft® Windows® XP

1. At the Desktop, right-click on any empty area of the screen, and then click Properties in the menu that appears.
The Display Properties window appears.
2. Click the Settings tab.
3. Move the slider in the Screen Resolution section of the Display Properties windows towards Less until the resolution reads 1024 by 768 pixels.
4. Click the OK button.
The Display Properties windows will disappear.

NOTE: The screen may flicker or pause at a black screen for a few moments as it changes resolution.

5. Click the Start button and then click Turn Off Computer.
The Turn off computer window appears.
6. Click the Restart button and allow the system to restart normally.

Wednesday, November 21, 2007

Tăng tốc độ kết nối Internet với Windows XP

Windows XP có chứa một giải băng thông dự trữ, mà thông qua nó bạn có thể tăng tốc độ kết nối Internet của bạn lên thêm 20%.

Bạn có thể thiết lập giới hạn của giải băng thông dữ trữ này từ 0 đến 100%. Nếu bạn muốn sử dụng toàn bộ 100% vùng băng thông này, bạn phải thiết lập giới hạn còn được dữ trữ là 0%.

Thực hiện theo các bước sau để thiết lập giới hạn của băng thông:

- Đầu tiên, click nút Start, gõ “Gpedit.msc” vào hộp thoại Run và bấm Enter.

- Cửa sổ “Group Policy” hiện ra. Bạn tìm Adminitrative Template -> Network -> QoS Packet Scheduler.




- Tại cửa sổ bên phải, click đôi vào "limit reservable bandwidth", chọn “Enable” vào thay đổi “bandwidth limit %” thành 0.

Cuối cùng, đóng cửa sổ Group Policy, và khởi động lại máy tính.

Tuesday, November 20, 2007

Xóa Virus System.exe

Máy tui dính 1 file là System.exe --> Trojan mạo danh và nó chèn vào Reg HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit

Bình thường : C:\WINDOWS\system32\userinit.exe
Chèn thêm: C:\WINDOWS\system32\userinit.exe ,C:\WINDOWS\system32\system.exe

Thì bạn phải vào Reg , đi đến đúng chỗ userinit -- bấm chuột phải --Modify --> Xóa dòng ",C:\WINDOWS\system32\system.exe " đi . (Đừng có nhầm là xóa luôn cái userinit đi nha, xóa nó là die đó )
Có khi nó chèn vào các reg khác , bạn cũng xóa như trên. Phù Restart lại máy
Sau đó vào thẳng C:\WINDOWS\system32\ xóa thằng system.exe ( hoặc bất cứ file nào nghi ngờ)

Thursday, November 15, 2007

Hướng dẫn cách bấm cáp mạng LAN với đầu nối RJ45

Có 2 chuẩn bấm dây là: T568A và T568B (thường được gọi là chuẩn A, chuẩn B). Lồng các đầu dây vào trong đầu nối RJ45. Hãy xem cách bố trí các đầu dây của từng chuẩn trong hình sau:

 


 Bạn sẽ hỏi: trường hợp nào thì dùng chuẩn A, trường hợp nào dùng chuẩn B?

Nếu nối máy tính (PC) tới Hub/Switch thì bạn bấm cả 2 đầu dây với cùng 1 chuẩn: cùng là T568A hoặc cùng T568B. Lúc này ta có dây cáp thẳng (Straight Through).


Còn khi bấm dây để nối từ PC đến PC (trường hợp chỉ có 2 máy tính) hoặc từ Hub/Switch vào Hub/Swtch (trong trường hợp muốn nối 2 Hub/Switch lại với nhau) ta bấm 1 đầu dây theo chuẩn T568A còn đầu kia theo chuẩn T568B. Đây gọi là dây cáp chéo (Cross Over).


 Bạn chỉ cần ghi nhớ rằng: nối 2 thiết bị khác loại thì đấu thẳng, nối 2 thiết bị cùng loại thì đấu chéo.


Wednesday, November 14, 2007

Cấu hình IP trong Windows bằng command line

- Xem thiết lập TCP/IP:
netsh interface ip show config

- xuất cấu hình ra file text:
netsh -c interface dump > c:\file.txt

- Nhập cấu hình từ file txt:
netsh –f c:\file.txt
Hoặc: netsh exec c:\file.txt

- Cấu hình:
netsh interface ip set address name="Local Area Connection" static 192.168.0.100 255.255.255.0 192.168.0.1 1

- Nạp cấu hình động:
netsh interface ip set address "Local Area Connection" dhcp

- Cấu hình DNS:
netsh interface ip set dns "Local Area Connection" static 192.168.0.200

- Cấu hình DNS tự động:
netsh interface ip set dns "Local Area Connection" dhcp

- Cấu hình WINS:
netsh interface ip set wins "Local Area Connection" static 192.168.0.200

vd1:
netsh interface ip set address name="Local Area Connection" static 10.151.121.99 255.255.255.0 10.151.121.1 1
netsh interface ip set dns "Local Area Connection" static 203.162.4.191
netsh interface ip set wins "Local Area Connection" static 203.162.4.191

vd2:
netsh interface ip set address name="Local Area Connection" source=static addr=10.151.121.99 mask=255.255.255.0
netsh interface ip set address name="Local Area Connection" gateway=10.151.121.1 gwmetric=1
netsh interface ip set dns name="Local Area Connection" source=static addr=203.162.4.191 register=PRIMARY
netsh interface ip add dns name="Local Area Connection" addr=203.162.4.190 index=2
netsh interface ip set wins name="Local Area Connection" source=static addr=203.162.4.191

vd3:
set address name="Local Area Connection" source=dhcp
set dns name="Local Area Connection" source=dhcp register=PRIMARY
set wins name="Local Area Connection" source=dhcp

How to flush DNS cache in Linux / Windows / Mac

Flush dns to get a new name resolution. Also flush dns cache when you can’t access a newly registered domain name. You can simply flush your dns cache anytime to get new entry. So, Flush your dns cache now.

To flush DNS cache in Microsoft Windows (Win XP, Win ME, Win 2000, Win 98):-

- Start -> Run -> type cmd
- in command prompt, type ipconfig /flushdns
- Done! You Window DNS cache has just been flush.

To flush the DNS cache in Linux, restart the nscd daemon:-


- To restart the nscd daemon, type /etc/rc.d/init.d/nscd restart in your terminal
- Once you run the command your linux DNS cache will flush.

To flush the DNS cache in Mac OS X:-

- type lookupd -flushcache in your terminal to flush the DNS resolver cache.
ex: bash-2.05a$ lookupd -flushcache
- Once you run the command your DNS cache (in Mac OS X) will flush.

Hướng dẫn quay rubic (cubi)

Thứ nhất:
Phải tự xoay cho được tầng 1 đúng màu (cả trên mặt và tầng 1)-NHƯ HÌNH DƯỚI (Các ô màu trắng là màu chưa sắp xếp), nếu chưa tự xoay được hãy tìm tòi cho đuợc hãy đọc tiếp.

Các quy ước:
Hình 1: quy ước 3 tầng.

Góc là hình lập phương nhỏ có 3 màu được thể hiện.
Cạnh là hình lập phương nhỏ có 2 màu được thể hiện.
Tâm là hình lập phương nhỏ có 1 màu được thể hiện.

Hình 2:

khi nói “Trái” là xoay khối rubic bên tay trái từ trên xuống dưới.
khi nói “Phải” là xoay khối rubic bên tay phải từ trên xuống dưới.
khi nói “Trên” là xoay khối rubic bên trên từ trái sang phải.
khi nói “dưới” là xoay khối rubic bên dưới từ trái sang phải.

Cuối cùng,
khi nói “Trước-trái” là quay mặt phía trước về bên trái
khi nói “Trước-phải” là quay mặt phía trước về bên phải
khi nói “Sau-trái” là quay mặt phía sau về bên trái
khi nói “Sau-phải” là quay mặt phía sau về bên phải

Suy nghĩ thêm:
Khi nói “dưới”- ”dưới”- ”dưới” là xoay khối rubic bên dưới từ trái sang phải 3 lần nghĩa là xoay khối rubic bên dưới từ phải sang trái 1 lần.
Khi nói “phải”- ”phải”- ”phải” là xoay khối rubic bên phải từ trên xuống dưới 3 lần nghĩa là xoay khối rubic bên phải từ dưới lên trên 1 lần.

Làm tầng 2.

Tìm 1 “cạnh” ở tầng 3 thoả điều kiện như hình vẽ nghĩa là mặt ở tầng 3 trùng màu với tâm, mặt dưới trùng màu với tâm kế bên.
Mục tiêu: đưa cạnh đó lên đúng vị trí (màu xám).

Công thức:
“dưới”- ”dưới”- ”dưới”- ”phải”- ”dưới”- ”phải”- ”phải”- ”phải”- ”dưới”- ”trước phải”- ”dưới”- ”dưới”- ”dưới”- ”trước trái”.
Làm ngước lại nếu màu dưới đáy ở bên trái.
thế là xong tầng 2.
Trường hợp xui xẻo nhất thì làm công thức đó 1 lần để “cạnh” xui xẻo xuống dưới rồi lựa chọn và làm công thức đó 1 lần nữa.

Tiếp đó là làm chữ thập ở mặt đáy.
(kiểu hướng dẫn trong các cục rubic là làm các “góc” trước, tôi thì thích làm các “cạnh” trước).

Cầm rubic sao cho ra trường hợp 1 hoặc 2.

Trường hợp 1 xoay theo công thức:
“Phải”- ”dưới”- ”dưới”- ”dưới”- ”SAU PHẢI”- ”dưới”- ”SAU TRÁI”- ”Phải”- ”Phải”- ”Phải”.

Trường hợp 2 xoay theo công thức:
“Phải”- ”SAU PHẢI”- ”dưới”- ”dưới”- ”dưới”- ”SAU TRÁI”- ”dưới”- ”Phải”- ”Phải”- ”Phải”.

Trường hợp xui xẻo nhất là trường hợp 3, làm công thức “trường hợp 1″ ở trên sẽ ra trường hợp 2 để làm tiếp.

TIẾP NỮA LÀ LÀM ĐÚNG CÁC “CẠNH” Ở TẦNG 3.
XOAY TỚI XOAY LUI SẼ CÓ 2 “CẠNH” ĐÚNG Ở LIÊN TỤC NHAU HOẶC ĐỐI DIỆN NHAU.

Trường hợp 1:
LẬT MẶT SAU THÀNH MẶT TRƯỚC (MẶT XANH LỤC VẪN Ở BÊN TRÊN)

Công thức:
“Phải”- ”dưới”- ”dưới”- ”Phải”- ”Phải”- ”Phải”- ”dưới”- ”Phải”- ”dưới”- ”Phải”- ”Phải”- ”Phải”- ”dưới”.
Sẽ ra bốn cạnh tầng 3 đúng.

Trường hợp 2:
Đưa mặt đỏ ra làm mặt chính diện (Mặt xanh lục vẫn ở trên)

Công thức: Như trên.
Sẽ ra trường hợp 1.
Làm công thức theo trường hợp 1 là xong.

GÓC ĐÚNG VỊ TRÍ LÀ hình lập phương nhỏ ờ 1 góc nào đó có 3 màu giống với 3 màu trung tâm. CÓ THỂ ĐÚNG THỨ TỰ MÀU HAY KHÔNG CŨNG ĐƯỢC, KHÔNG QUAN TRỌNG.

Công thức chữ U:
“Phải”- ”dưới”- ”dưới”- ”dưới”- ”Phải”- ”Phải”- ”Phải”- ”dưới”- ”Trái”- ”dưới”- ”dưới”- ”dưới”- ”phải”- ”dưới”- ”Phải”- ”Phải”- ”Phải”- ”trái”- ”trái”- ”trái”.

CÁCH LÀM:
- Tìm ít nhất 1 góc đúng vị trí
(Lưu ý: LÚC NÀY DO CÁC CẠNH ĐÃ ĐÚNG MÀU NÊN KHÔNG ĐƯỢC XOAY MẶT “DƯỚI” ĐỂ TÌM “GÓC ĐÚNG VỊ TRÍ” mà chỉ cầm cả cục rubic mà tìm, không xoay cái gì hết.
- Nếu không có làm công thức chữ U từ 1 -> 2 lần sẽ có 1 góc đúng vị trí.
- ĐỂ “góc đúng vị trí” ở bên dưới tay phải (Như hình vẽ) làm công thức chữ U từ 1->3 lần sẽ được cả 4 góc đúng vị trí.

GIỜ CHỈ CÒN LÀM ĐÚNG CÁC MÀU Ở CÁC GÓC LÀ XONG:
SỬ DỤNG CÔNG THỨC TÌM CẠNH VÀ CÔNG THỨC NGHỊCH ĐẢO CỦA NÓ LÀ XONG:

CÔNG THỨC 6 MẶT:
“Phải”- ”dưới”- ”dưới”- ”Phải”- ”Phải”- ”Phải”- ”dưới”- ”Phải”- ”dưới”- ”Phải”- ”Phải”- ”Phải”.
“Trái”- ”dưới”- ”dưới”- ”Trái”- ”Trái”- ”Trái”- ”dưới”- ”dưới”- ”dưới”- ”trái”- ”dưới”- ”trái”.

KHI ĐỂ RUBIC ĐÚNG NHƯ HÌNH VẼ, KHI LÀM CÔNG THỨC 6 MẶT XONG, HAI MÀU XANH DƯƠNG SẼ NHẢY XUỐNG DƯỚI, LÀM TƯƠNG TỰ VỚI CÁC MẶT KHÁC SẼ RA 6 MẶT.
TRƯỜNG HỢP XUI XẺO LÀ KHÔNG TÌM THẤY MẶT BÊN NÀO CÓ 2 MÀU XANH DƯƠNG NHƯ HÌNH VẼ THÌ TÌM MẶT BÊN NÀO CÓ 1 MÀU XANH DƯƠNG CŨNG LÀM RỒI TÌM TIẾP LÀ XONG. (TRƯỜNG HỢP HAY XUẤT HIỆN LÀ 2 GÓC ĐỐI DIỆN ĐÚNG MÀU, 2 GÓC CÒN LẠI SAI MÀU)

CHÚC CÁC BẠN THÀNH CÔNG.

Lưu ý: đây là công thức cơ bản, còn 1 số công thức rút gọn khác để làm nhanh hơn. bạn có thể tự tìm hiểu thêm về các công thức CHỮ U, 6MẶT (góc, cạnh di chuyển ra sao) bằng cách xoay được 6 mặt xong, xoay công thức đó bạn sẽ phát hiện các mặt dịch chuyển thế nào rồi từ đó chế các công thức rút gọn cho mình.

Bật/tắt lênh Run trên menu Start

User Key: HKEY_CURRENT_USER\ Software\ Microsoft\ Windows\ CurrentVersion\ Explorer\ Advanced
Name: StartMenuRun
Type: REG_DWORD
Value: 0- tắt menu Run. 1- hiện menu Run trên Start Menu

Khi đã tắt menu Run bạn vẫn có thể dùng phím tắt Windows + R để mở cửa sổ Run.

Máy không chịu Shut Down

Machine\software\Microsoft\WindowsNT\currentVersion\Winlogon New > String Value đặt tên là PowerdownAfterShutdown cho giá trị là 1

Windows file potection

- Machine\Software\Microsoft\Windows NT\curentVersion\Winlongon Bạn sẽ tìm thấy entry FSCDisable nhập giá trị 1
- hoặc: cmd > SFC /Scannow

Phục hồi biểu tượng Show Desktop trên thanh Quick Launch

Khi mở nhiều cửa số mà bạn lại muốn thoát ra nhanh bằng cách nhấn vào biểu tượng Show Desktop ở thanh Quick Launch, nhưng bạn lại vô tình xoá nó đi trước kia. Đây là cách thức khôi phục lại biểu tượng Show Desktop nhanh chóng nhất:
Start > Run: regsvr32 /n /i:U shell32

Khởi động nhanh XP

Không sử dụng giao diện đồ họa lúc khởi động: Run msconfig > Boot.ini > chọn NOGUIBOOT

Xem source code của trang web cấm chức năng

Mở trang http://www.viewhtml.com , paste đường link web cần xem vào mục URL rồi bấm nút View HTML Source.
hoặc vào http://web-sniffer.net

Phục hồi lện Run

Windows Explorer > WinDows > System32 > gpedit.msc
Tại khung bên trái của cửa sổ GroupPolicy > User Configuration > Administrative Templates > Start menu and Taskbar.
Tại khung bên phải > Remove Run. Trong menu From Start menu > Setting > Disable > OK

Công cụ hữu ích cho XP, 2000

Với công cụ có sẵn trong windows này bạn có thể fix khi Win bị lỗi không vào được mà giảm thiểu việc cài lại Os khi gặp sự cố và bạn cũng có thể chạy Dos ngay khi khởi động.

Run -> cmd , trong cửa sổ cmd đánh X:\i386\winnt32.exe /cmdcons
(X là thư mục chứa bộ cài đặt)

Gỡ bỏ phần mềm không cho gỡ!

Start -> Run: regedit > HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ chọn phần mềm mà bạn muốn gỡ bỏ,khung bên phải của nó đến phần noModify,noremove or norepair, sửa lại giá trị thành 0, cũng trong khung đó nếu thấy có UninstallString thì tìm đến đường dẫn đó để chạy file uninstall.

Sửa lỗi cửa sổ Internet Explorer tự động đóng

Mở Registry Editor.
Vào HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer
Click phải lên vùng trống bên phải và chọn New > String value.
Đặt tên cho nó là BrowseNewProcess.
Click đúp vào BrowseNewProcess và nhập yes vào hộp Value data.

Tăng tốc cho Start menu

Registry Editor.
HKEY_CURRENT_USER\Control Panel\Desktop\
Click phải lên mục MenuShowDelay và chọn Modify.
Đặt giá trị này là 00000000 (mili giây) rồi click OK.
Đóng Registry Editor.
Logoff hay khởi động lại Windows để thấy kết quả.

Sửa lỗi Windows hiệu quả bằng “1 Click Fixer”

Down: http://www.download.com/3001-2086_4-10568259.html
Crack: http://www.mediamax.com/nguyenytoan/Hosted/1.Click.Fixer.PLUS.v3.0-TBE.rar
Password: ytoan

Khắc phục lỗi DUMPING PHYSICAL MEMORY của XP

1- Thay đổi kích thuớc file Swap
My computer, properties > Advanced > Setting (Performance)
Thay đổi Initial Size và Maximum Size (bằng nhau, có thể cho bằng với Ram của máy)
Restart.
2- Xoá Minidump files và Sysdata.xml
c:\Windows\Minidump directory: xoá tất cả (chế độ "Show hidden files") .
c:\Documents and Settings, tìm và xóa file Sysdata.xml
Restart.
3- Bỏ chế độ Auto Restart của Win XP
My computer, Properties > Advanced > Setting (Start-up and Recovery)
Bỏ tuỳ chọn Automatically Restart, OK.
4- Vô hiệu Memory Dump
My computer, Properties > Advanced > Setting (Start-up and Recovery)
Write debugging information: chọn (none), Ok.

Khởi động nhanh XP

Bỏ quét Shared:
Hkey-local-machine\Software\Microsoft\windows\current version\explorer\Remote computer\Name space
xóa dòng {D6277990-4C6A-11CF-8D87-00AA0060F5BF}

Biểu tượng nhận biết YM online

<a href="ymsgr:sendIM?TEN_BAN" target="_blank">

<img src="http://opi.yahoo.com/online?u=TEN_BAN&m=g&t=2" alt="YM:TEN_BAN" border=0></a>

Trong đó:

TEN_BAN: nick YM của bạn.
t= 0,1,2,3... tương ứng các hình được hiển thị.

Khắc phục lỗi nhảy cách chữ có dấu MS Word

Vào menu Tools\Options, chọn thẻ Edit và vào mục Settings. Tại hộp thoại Settings, bỏ dấu kiểm ô Adjust sentence and word spacing automatically.

Liệt kê phím tắt của MS Word

Nhấn Alt + F8 :
Trong phần Macro In: chọn “Word Command”
Ở phần Macro Name: đánh “ListCommands”
Sau đó chọn “Run” Sau đó chọn dòng “ All Word Command” và OK

Không cho thay đổi giao diện Desktop

Start > Run > gpedit.msc
Cửa sổ Grouppolicy sẽ hiện lên.
Chọn User Configuration > Administrative Templates > DeskTop. Chọn Don't save setting and Exit.
Nhấp chuột phải > chọn properties > hiện lên cửa sổ Don't save setting and Exit.
Tại Tab Setting chọn Enable > OK .
(Nếu muốn thay đổi thì cũng làm như vậy, chọn Disable)

Dùng phím tắt khi trình diễn PowerPoint

Khi trình diễn bằng công cụ PowerPoint, việc dùng các phím tắt một cách nhuần nhuyễn sẽ giúp buổi làm việc của bạn thành công hơn. Thao tác nhanh, gọn của người trình bày sẽ giúp cử tọa tập trung chú ý và các slide thuyết trình mà không bị “phân tâm”.
1. Dùng phím Space, phím N, phím mũi tên phải, phím mũi tên xuống, phím Enter, phím Page Down hay bấm chuột để sang trang tiếp theo.
2. Dùng phím Back Space, phím P, phím mũi tên đi lên, phím mũi tên trái hoặc phím Page Up để trở về trang trước.
3. Nhập số thứ tự sau đó bấm Enter để trở về trang mang số đó.
4. Phím B hoặc phím dấu chấm (.) để làm đen màn hình hoặc trở lại màn hình trình chiếu sau khi giải lao.
5. Phím W hoặc phím dấu phảy (,) để làm trắng màn hình hoặc trở lại màn hình trình chiếu.
6. Phím A hoặc = để ẩn hoặc hiện con trỏ.
7. Phím S hoặc + để bật/tắt chế độ tự động trình diễn.
8. Phím Esc hoặc Ctrl+Break hoặc phím - để dừng việc trình chiếu.
9. Phím Ctrl+P thay đổi con trỏ thành “cây bút”, bạn có thể dùng nó để sửa lại bài báo cáo nếu có sai, lỗi, hoặc nếu bạn muốn ghi chú gì đó.
10. Phím E để có thể xóa những gì mà bạn vẽ.
11. Phím H để đến trang ẩn.
12. Phím Ctrl+A thay đổi con trỏ thành hình mũi tên như bình thường.
13. Phím Ctrl+H dấu con trỏ chuột vào nút định hướng trong quá trình trình chiếu.
14. Phím Ctrl+U dấu con trỏ chuột và nút định hướng sau 7 giây.
15. Bấm chuột phải để hiện trình tự chọn.
16. Bấm giữa cả hai nút chuột trái và phải trong hai giây để trở về trang đầu.
17. Nếu dùng tính năng Rehearse Timings để diễn tập, khi trình chiếu thật sẽ theo đúng trình tự thời gian mà bạn chọn.
Phím T dùng thời gian mới.
Phím O theo thời gian như bình thường.
Phím M sang trang nếu bấm chuột.

Chạy chương trình dưới quyền SYSTEM

net start “Task Scheduler” [enter]
at 11:16 /interactive cmd.exe
taskmgr [enter]
Tham khảo tại: http://www.vitinhngaynay.com/thu-thuat-meo-vat/151/

Registry Editing has been disabled by your administrator

Khi gặp lỗi 1 mỗi như thế này Registry Editing has been disabled by your administrator khi cần chỉnh sửa Registry trên Windows thì để sửa lỗi trên thì làm 1 trong 2 cách như sau:
Vào Start Menu ~> Run~> gõ vào hay copy đọan lệnh sau vào rồi Enter:
REG add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableRegistryTools /t REG_DWORD /d 0 /f
Vào Start Menu ~> Run~> gõ vào GPEDIT.MSC để mở Group Policy Editor rồi tìm User Configuration ~> Administrative Templates ~> System ~> Prevent access to registry editing tools. Rồi khởi động lại Windows.

Task Manager has been disabled by your administrator

Khi mở Task Manager lên mà gặp phải câu báo lỗi này thì thường do bạn vô ý, do ai phá hoại, do virus hoặc do các nguyên nhân khác. Để sửa được lỗi trên thì làm 1 trong các cách sau đây:
- Cách 1: Vào Start ~> Run ~> copy đoạn lệnh sau rồi paste vào rồi Enter:
REG add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableTaskMgr /t REG_DWORD /d 0 /f
- Cách 2: Vào Registry Editor để chỉnh sửa:
HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies\ System
Tìm khóa DisableTaskMgr bên phải và thay đổi giá trị thành 0.
- Cách 3: Còn nếu sợ làm sai thì copy đoạn code này rồi save thành file có định dạng là .reg rồi chạy file này.
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
“DisableTaskMgr”=dword:00000000
- Cách 4: Cuối cùng là dùng Group Policy Editor (chính sách nhóm)
Start ~> Run ~> nhập vào gpedit.msc rồi OK.
Tìm theo: Administrative Templates ~> System ~> Ctrl+Alt+Delete Options ~> Remove Task Manager.
Double click vào Remove Task Manager rồi thiết lập là Not Configured, xong rồi thì Ok.
Sau khi làm xong 1 trong các bước trên thì khởi động lại máy tính.

Xóa MSN Messenger

Để xóa MSN Messenger trên Windows có nhiều cách khác nhau và dưới đây là 1 cách cũng đơn giản:
Nhấn Start Menu > Run
Nhập vào đoạn code sau (copy cho chắc ăn nhé):
RunDll32 advpack.dll,LaunchINFSection %windir%\INF\msmsgs.inf,BLC.Remove

Giáo trình Excel hay (tiếng Việt)

- Cuốn I: Chương trình giảng dạy kinh tế Fulbright. Ứng dụng Excel trong kinh tế. Tài liệu rất có hệ thống và bài bản, không còn nghi ngờ gì nữa bạn sẽ là chuyên gia khi xem đến dòng cuối cùng. Thích hợp với những người làm quen với Excel. Tải tại đây: http://www.zendurl.com/vitec/kinhnghiem/Ebook_Excel_1_Fri3ng3R.rar

- Cuốn II: Tra cứu nhanh các hàm và cách sử dụng công cụ excel, tài liệu được tổng hợp của viện đại học Mở Hà Nội. Thích hợp với những người đã học qua Excel. Tải tại đây: http://www.zendurl.com/vitec/kinhnghiem/Ebook_Excel_2_Fri3ng3R.rar

Chỉ một vài thao tác nhỏ là XP update được!

Đầu tiên các bác vào Start /Run/ đánh vào regedit rùi tìm đến khóa
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\Cu rrent Version\WPAEvents
Ở ô bên phải nhân chuột phải vào OOBETimer rùi click vào Modify. Tiếp đến hãy thay đổi một khóa bất kì (ví dụ 71 thành 72 chẳng hạn). Sau đó hãy đóng nó lại và tiếp tục vào Start, Run, và đánh
%systemroot%\system32\oobe\msoobe.exe /a
Nó sẽ đưa các bác đến cửa sổ Active windows. Đừng lo hãy chọn
I want to telephone a customer service representative to activate Windows
Tiếp đến nhấn Next ,nhấn Change Product key
Các bác hãy nhập cái key này: DHXQ2-WRGCD-WGYJY-HHYDH-KKX9B
Đánh xong hãy nhấn Update. Nó sẽ lại đưa chúng ta về cửa sổ Active, đừng quan tâm, hãy đóng nó lại bằng cách nhấn vào Remind me later.
Xong đâu đó rùi thì còn chờ gì nữa, khởi động lại Windows đi thôi. Khởi động lại xong hãy vào Run, đánh tiếp
%systemroot%\system32\oobe\msoobe.exe /a
Cửa sổ Active sẽ lại hiện ra nhưng ko phải là bắt chúng ta Active mà là báo cho ta biết Windows is activated.

Đơn giản với Auto Shutdown tự tạo

Hiện nay có rất nhiều chương trình tự động tắt máy (Auto Shutdown), tuy nhiên có một cách cực kỳ đơn giản để bạn có thể tự cài chương trình tắt máy đơn giản cho máy tính của mình trong vòng chỉ khoảng 2-5 phút mà bạn không cần phải cài đặt bất kỳ chương trình nào.
Bạn tạo file shutdown.bat có nội dung:
cd\
shutdown/s
Sau đó kết hợp với chương trình “Scheduled Tasks” (lịch làm việc tự động của Windows) là ok.
Chi tiết: http://www.tuoitre.com.vn/Tianyon/Index.aspx?ArticleID=129632&ChannelID=67

Quét địa chỉ IP

Angry IP Scanner cho phép bạn ping một loạt địa chỉ IP và trả lại tốc độ ping, tên máy chủ và các địa chỉ IP đang hoạt động - tất cả được gói gọn trong một giao diện Windows hấp dẫn, dễ đọc. Đây là một tiện ích hoàn hảo khi bạn cần tìm hiểu xem PC nào đang kết nối với mạng của bạn.
http://www.download.com/Angry-IP-Scanner/3000-2085_4-10549446.html

Tải bản cập nhật cho các chương trình của Norton

http://www.symantec.com/avcenter/download/pages/US-N95.html

Công cụ đọc file PDF nhỏ gọn

http://www.foxitsoftware.com/download.htm

Gỡ bỏ phần mềm trong windows

http://support.microsoft.com/default.aspx?scid=kb;en-us;290301
Đây là một tiện ích của microsoft đó các bạn.

Spybot Search and Destroy 1.4

Spybot Search and Destroy 1.4: 4,8 MB

Spybot là một trong những "sát thủ" phần mềm gián điệp. Nó quét toàn bộ hệ thống để dò tìm spyware, adware và những chương trình nguy hiểm khác. Dù miễn phí, người dùng vẫn được cập nhật thường xuyên qua Internet. Bên cạnh việc khắc phục lỗi, tiện ích còn ngăn spyware thâm nhập vào những thành phần nhất định của Windows, đồng thời kết hợp hiệu quả với những công cụ bảo mật khác. Bạn nên chọn chế độ TeaTime khi cài đặt.
http://www.download.com/3000-8022-10122137.html

Monday, November 5, 2007

Configuring TCP/IP on Solaris - TCP/IP Configuration Files - (Quick Config Guide)

Introduction

In order to configure networking after installing Solaris, several files will need to be created and/or modified. This document provides a quick overview of those files along with example configuration data.

In most cases, the installation process performs all necessary configuration tasks. One of the tasks generally not performed by the installer is updating the Solaris networking files.

I have not found an easy way to force the installation program to configure all local networking files if the "Naming Services" section fails. For example, if you select the DNS naming service and the machine you are configuring is not entered in DNS, the installation process will skip this section. In cases like this, it will be necessary to update several of the files that pertain to networking. The following is a list of those files and the content that should be provided. Keep in mind that the system will need to be rebooted after making changes (and creating) these files.

/etc/resolv.conf

During the Solaris installation program, you are prompted for Naming Configuration information. In most cases, we use DNS. But during the installation process, if the installer is unable to communicate with and/or resolve your newly configured host with DNS, the Naming Configuration will fail, and none of the configuration files (i.e. /etc/resolv.conf) will not be updated. I often find it necessary to manually create the /etc/resolv.conf with any name service information.


nameserver 63.67.120.18
nameserver 63.67.120.23
/etc/resolv.conf

/etc/hostname.interface

The Solaris installation program creates this file for you. The file contains only one entry: the host name or IP address associated with the network interface. For example, suppose eri0 is the primary network interface for a machine called alexprod. Its /etc/hostname.interface file would have the name /etc/hostname.eri0; the file would contain the single entry alexprod.


alexprod
/etc/hostname.eri0

/etc/nodename

This file should contain one entry; the host name of the local machine. For example, on machine alexprod, the file /etc/nodename would contain the entry alexprod.


alexprod
/etc/nodename

/etc/defaultdomain

This file should contain one entry, the full qualified domain name of the administrative domain to which the local host's network belongs. You can supply this name to the Solaris installation program or edit the file at a later date.

Take for example the domain iDevelopment which was classified as a .info domain. In this example, /etc/defaultdomain should contain the entry iDevelopment.info.


idevelopment.info
/etc/defaultdomain

/etc/defaultrouter

This file should contain an entry for each router directly connected to the network. The entry should be the name for the network interface that functions as a router between networks.

If the default router for a machine will be 192.168.1.1, then this is the entry that should be put into the file /etc/defaultrouter.


192.168.1.1
/etc/defaultrouter

/etc/hosts

The hosts database contains the IP addresses and host names of machines on your network.

If you use local files for name service, the hosts database is maintained in the /etc/inet/hosts file. This file contains the host names and IP addresses of the primary network interface, other network interfaces attached to the machine, and any other network addresses that the machine must know about.

NOTE: For compatibility with BSD-based operating systems, the file /etc/hosts is a symbolic link to /etc/inet/hosts.

#
# Internet host table
#
127.0.0.1 localhost
192.168.1.102 alexprod alexprod.idevelopment.info loghost
/etc/hosts

/etc/inet/netmasks

You need to edit the netmasks database as part of network configuration only if you have set up subnetting on your network. The netmasks database consists of a list of networks and their associated subnet masks.


#
# The netmasks file associates Internet Protocol (IP) address
# masks with IP network numbers.
#
# network-number netmask
#
# The term network-number refers to a number obtained from the Internet Network
# Information Center. Currently this number is restricted to being a class
# A, B, or C network number. In the future we should be able to support
# arbitrary network numbers per the Classless Internet Domain Routing
# guidelines.
#
# Both the network-number and the netmasks are specified in
# "decimal dot" notation, e.g:
#
# 128.32.0.0 255.255.255.0
#
192.168.1.0 255.255.255.0
/etc/inet/netmasks

/etc/nsswitch.conf

The /etc/nsswitch.conf file defines the search order of the network databases (hosts, netmasks, ethers, bootparams, protocols, services, networks).

The Solaris installation program creates a default /etc/nsswitch.conf file for the local machine, based on the name service you indicate during the installation process. The installation process also creates 5 template files that can be copied over to /etc/nsswitch.conf:

  • nsswitch.files
  • nsswitch.nis
  • nsswitch.dns
  • nsswitch.ldap
  • nsswitch.nisplus

If you selected the 'None' option, indicating local files for name service, the resulting /etc/nsswitch.conf file resembles the following example:


#
# /etc/nsswitch.files:
#
# An example file that could be copied over to /etc/nsswitch.conf; it
# does not use any naming service.
#
# "hosts:" and "services:" in this file are used only if the
# /etc/netconfig file has a "-" for nametoaddr_libs of "inet" transports.

passwd: files
group: files
hosts: files
ipnodes: files
networks: files
protocols: files
rpc: files
ethers: files
netmasks: files
bootparams: files
publickey: files
# At present there isn't a 'files' backend for netgroup; the system will
# figure it out pretty quickly, and won't use netgroups at all.
netgroup: files
automount: files
aliases: files
services: files
sendmailvars: files
printers: user files

auth_attr: files
prof_attr: files
project: files
/etc/nsswitch.conf - Default if you are using local files

Here is another /etc/nsswitch.conf file that adds a dns entry for hosts::


#
# /etc/nsswitch.dns:
#
# An example file that could be copied over to /etc/nsswitch.conf; it uses
# DNS for hosts lookups, otherwise it does not use any other naming service.
#
# "hosts:" and "services:" in this file are used only if the
# /etc/netconfig file has a "-" for nametoaddr_libs of "inet" transports.

passwd: files
group: files

# You must also set up the /etc/resolv.conf file for DNS name
# server lookup. See resolv.conf(4).
hosts: files dns
ipnodes: files
# Uncomment the following line and comment out the above to resolve
# both IPv4 and IPv6 addresses from the ipnodes databases. Note that
# IPv4 addresses are searched in all of the ipnodes databases before
# searching the hosts databases. Before turning this option on, consult
# the Network Administration Guide for more details on using IPv6.
#ipnodes: files dns

networks: files
protocols: files
rpc: files
ethers: files
netmasks: files
bootparams: files
publickey: files
# At present there isn't a 'files' backend for netgroup; the system will
# figure it out pretty quickly, and won't use netgroups at all.
netgroup: files
automount: files
aliases: files
services: files
sendmailvars: files
printers: user files

auth_attr: files
prof_attr: files
project: files
/etc/nsswitch.conf - Adding a dns database for the hosts: element

Here is another /etc/nsswitch.conf file that uses a combination of files, nis, and dns entries:


# /etc/nsswitch.nis:
#
# An example file that could be copied over to /etc/nsswitch.conf; it
# uses NIS (YP) in conjunction with files.
#
# "hosts:" and "services:" in this file are used only if the
# /etc/netconfig file has a "-" for nametoaddr_libs of "inet" transports.

# the following two lines obviate the "+" entry in /etc/passwd and /etc/group.
passwd: files nis
group: files nis

# consult /etc "files" only if nis is down.
hosts: files dns nis
ipnodes: files
# Uncomment the following line and comment out the above to resolve
# both IPv4 and IPv6 addresses from the ipnodes databases. Note that
# IPv4 addresses are searched in all of the ipnodes databases before
# searching the hosts databases. Before turning this option on, consult
# the Network Administration Guide for more details on using IPv6.
#ipnodes: nis [NOTFOUND=return] files

networks: nis [NOTFOUND=return] files
protocols: nis [NOTFOUND=return] files
rpc: nis [NOTFOUND=return] files
ethers: nis [NOTFOUND=return] files
netmasks: nis [NOTFOUND=return] files
bootparams: nis [NOTFOUND=return] files
publickey: nis [NOTFOUND=return] files

netgroup: nis

automount: files nis
aliases: files nis

# for efficient getservbyname() avoid nis
services: files nis
sendmailvars: files
printers: user files nis

auth_attr: files nis
prof_attr: files nis
project: files nis
/etc/nsswitch.conf - Using a combination of files, nis, and dns databases

How to enable console login service?

I'm not sure the svcadm command makes any sense outside the context of the currently running OS.

You could try copying an older copy of the repository back in (look in /etc/svc of your root disk) from failsafe mode. The working
repository name is /etc/svc/respository.db

You could also try to delete the service out of the repository and re-import it. You can do that by doing the following:

- Boot failsafe mode
- mount your root filesystem under /a
- Set the following envs and export them:

SVCCFG_DTD=/a/usr/share/lib/xml/dtd/service_bundle.dtd.1
SVCCFG_REPOSITORY=/a/etc/svc/repository.db
export SVCCFG_DTD SVCCFG_REPOSITORY

- svccfg delete svc:/system/console-login:default
- svccfg import /a/var/svc/manifest/system/console-login.xml
- umount /a

Then try booting your root disk again. Since the default instance for console-login has enabled=true, it should activate it when you
boot.

SQL DELETE FROM

Sometimes we may wish to get rid of records from a table. To do so, we can use the DELETE FROM command. The syntax for this is

DELETE FROM "table_name"
WHERE {condition}

It is easiest to use an example. Say we currently have a table as below:

Table Store_Information

store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999

and we decide not to keep any information on Los Angeles in this table. To accomplish this, we type the following SQL:

DELETE FROM Store_Information
WHERE store_name = "Los Angeles"

Now the content of table would look like,

Table Store_Information
store_name Sales Date
San Diego $250 Jan-07-1999
Boston $700 Jan-08-1999

SQL UPDATE

Once there's data in the table, we might find that there is a need to modify the data. To do so, we can use the UPDATE command. The syntax for this is

UPDATE "table_name"
SET "column_1" = [new value]
WHERE {condition}

For example, say we currently have a table as below:

Table Store_Information

store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999

and we notice that the sales for Los Angeles on 01/08/1999 is actually $500 instead of $300, and that particular entry needs to be updated. To do so, we use the following SQL:

UPDATE Store_Information
SET Sales = 500
WHERE store_name = "Los Angeles"
AND Date = "Jan-08-1999"

The resulting table would look like

Table Store_Information

store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $500 Jan-08-1999
Boston $700 Jan-08-1999

In this case, there is only one row that satisfies the condition in the WHERE clause. If there are multiple rows that satisfy the condition, all of them will be modified.

It is also possible to UPDATE multiple columns at the same time. The syntax in this case would look like the following:

UPDATE "table_name"
SET column_1 = [value1], column_2 = [value2]
WHERE {condition}

SQL INSERT INTO

In the previous sections, we have seen how to retrieve information from tables. But how do these rows of data get into these tables in the first place? This is what this section, covering the INSERT statement, and next section, covering tbe UPDATE statement, are about.

In SQL, there are essentially basically two ways to INSERT data into a table: One is to insert it one row at a time, the other is to insert multiple rows at a time. Let's first look at how we may INSERT data one row at a time:

The syntax for inserting data into a table one row at a time is as follows:

INSERT INTO "table_name" ("column1", "column2", ...)
VALUES ("value1", "value2", ...)

Assuming that we have a table that has the following structure,

Table Store_Information

Column Name Data Type
store_name char(50)
Sales float
Date datetime

and now we wish to insert one additional row into the table representing the sales data for Los Angeles on January 10, 1999. On that day, this store had $900 in sales. We will hence use the following SQL script:

INSERT INTO Store_Information (store_name, Sales, Date)
VALUES ('Los Angeles', 900, 'Jan-10-1999')

The second type of INSERT INTO allows us to insert multiple rows into a table. Unlike the previous example, where we insert a single row by specifying its values for all columns, we now use a SELECT statement to specify the data that we want to insert into the table. If you are thinking whether this means that you are using information from another table, you are correct. The syntax is as follows:

INSERT INTO "table1" ("column1", "column2", ...)
SELECT "column3", "column4", ...
FROM "table2"

Note that this is the simplest form. The entire statement can easily contain WHERE, GROUP BY, and HAVING clauses, as well as table joins and aliases.

So for example, if we wish to have a table, Store_Information, that collects the sales information for year 1998, and you already know that the source data resides in the Sales_Information table, we'll type in:

INSERT INTO Store_Information (store_name, Sales, Date)
SELECT store_name, Sales, Date
FROM Sales_Information
WHERE Year(Date) = 1998

Here I have used the SQL Server syntax to extract the year information out of a date. Other relational databases will have different syntax. For example, in Oracle, you will use to_char(date,'yyyy')=1998.

SQL TRUNCATE TABLE

Sometimes we wish to get rid of all the data in a table. One way of doing this is with DROP TABLE, which we saw in the last section. But what if we wish to simply get rid of the data but not the table itself? For this, we can use the TRUNCATE TABLE command. The syntax for TRUNCATE TABLE is

TRUNCATE TABLE "table_name"

So, if we wanted to truncate the table called customer that we created in SQL CREATE TABLE, we simply type,

TRUNCATE TABLE customer

SQL DROP TABLE

Sometimes we may decide that we need to get rid of a table in the database for some reason. In fact, it would be problematic if we cannot do so because this could create a maintenance nightmare for the DBA's. Fortunately, SQL allows us to do it, as we can use the DROP TABLE command. The syntax for DROP TABLE is

DROP TABLE "table_name"

So, if we wanted to drop the table called customer that we created in the CREATE TABLE section, we simply type

DROP TABLE customer.

SQL ALTER TABLE

Once a table is created in the database, there are many occasions where one may wish to change the structure of the table. Typical cases include the following:

- Add a column
- Drop a column
- Change a column name
- Change the data type for a column

Please note that the above is not an exhaustive list. There are other instances where ALTER TABLE is used to change the table structure, such as changing the primary key specification or adding a unique constraint to a column.

The SQL syntax for ALTER TABLE is

ALTER TABLE "table_name"
[alter specification]

[alter specification] is dependent on the type of alteration we wish to perform. For the uses cited above, the [alter specification] statements are:

  • Add a column: ADD "column 1" "data type for column 1"
  • Drop a column: DROP "column 1"
  • Change a column name: CHANGE "old column name" "new column name" "data type for new column name"
  • Change the data type for a column: MODIFY "column 1" "new data type"

Let's run through examples for each one of the above, using the "customer" table created in the CREATE TABLE section:

Table customer

Column NameData Type
First_Namechar(50)
Last_Namechar(50)
Addresschar(50)
Citychar(50)
Countrychar(25)
Birth_Datedate

First, we want to add a column called "Gender" to this table. To do this, we key in:

ALTER table customer add Gender char(1)

Resulting table structure:

Table customer

Column NameData Type
First_Namechar(50)
Last_Namechar(50)
Addresschar(50)
Citychar(50)
Countrychar(25)
Birth_Datedate
Genderchar(1)

Next, we want to rename "Address" to "Addr". To do this, we key in,

ALTER table customer change Address Addr char(50)

Resulting table structure:

Table customer

Column NameData Type
First_Namechar(50)
Last_Namechar(50)
Addrchar(50)
Citychar(50)
Countrychar(25)
Birth_Datedate
Genderchar(1)

Then, we want to change the data type for "Addr" to char(30). To do this, we key in,

ALTER table customer modify Addr char(30)

Resulting table structure:

Table customer

Column NameData Type
First_Namechar(50)
Last_Namechar(50)
Addrchar(30)
Citychar(50)
Countrychar(25)
Birth_Datedate
Genderchar(1)

Finally, we want to drop the column "Gender". To do this, we key in,

ALTER table customer drop Gender

Resulting table structure:

Table customer
Column NameData Type
First_Namechar(50)
Last_Namechar(50)
Addrchar(30)
Citychar(50)
Countrychar(25)
Birth_Datedate

SQL CREATE INDEX

Indexes help us retrieve data from tables quicker. Let's use an example to illustrate this point: Say we are interested in reading about how to grow peppers in a gardening book. Instead of reading the book from the beginning until we find a section on peppers, it is much quicker for us to go to the index section at the end of the book, locate which pages contain information on peppers, and then go to these pages directly. Going to the index first saves us time and is by far a more efficient method for locating the information we need.

The same principle applies for retrieving data from a database table. Without an index, the database system reads through the entire table (this process is called a 'table scan') to locate the desired information. With the proper index in place, the database system can then first go through the index to find out where to retrieve the data, and then go to these locations directly to get the needed data. This is much faster.

Therefore, it is often desirable to create indexes on tables. An index can cover one or more columns. The general syntax for creating an index is:

CREATE INDEX "INDEX_NAME" ON "TABLE_NAME" (COLUMN_NAME)

Let's assume that we have the following table,

TABLE Customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date date)


and we want to create an index on the column Last_Name, we would type in,

CREATE INDEX IDX_CUSTOMER_LAST_NAME
on CUSTOMER (Last_Name)

If we want to create an index on both City and Country, we would type in,

CREATE INDEX IDX_CUSTOMER_LOCATION
on CUSTOMER (City, Country)

There is no strict rule on how to name an index. The generally accepted method is to place a prefix, such as "IDX_", before an index name to avoid confusion with other database objects. It is also a good idea to provide information on which table and column(s) the index is used on.

Please note that the exact syntax for CREATE INDEX may be different for different databases. You should consult with your database reference manual for the precise syntax.

SQL CREATE VIEW

Views can be considered as virtual tables. Generally speaking, a table has a set of definition, and it physically stores the data. A view also has a set of definitions, which is build on top of table(s) or other view(s), and it does not physically store the data.

The syntax for creating a view is as follows:

CREATE VIEW "VIEW_NAME" AS "SQL Statement"

"SQL Statement" can be any of the SQL statements we have discussed in this tutorial.

Let's use a simple example to illustrate. Say we have the following table:

TABLE Customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date date)


and we want to create a view called V_Customer that contains only the First_Name, Last_Name, and Country columns from this table, we would type in,

CREATE VIEW V_Customer
AS SELECT First_Name, Last_Name, Country
FROM Customer

Now we have a view called V_Customer with the following structure:

View V_Customer
(First_Name char(50),
Last_Name char(50),
Country char(25))

We can also use a view to apply joins to two tables. In this case, users only see one view rather than two tables, and the SQL statement users need to issue becomes much simpler. Let's say we have the following two tables:

Table Store_Information

store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999

Table Geography

region_name store_name
East Boston
East New York
West Los Angeles
West San Diego

and we want to build a view that has sales by region information. We would issue the following SQL statement:

CREATE VIEW V_REGION_SALES
AS SELECT A1.region_name REGION, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.store_name = A2.store_name
GROUP BY A1.region_name

This gives us a view, V_REGION_SALES, that has been defined to store sales by region records. If we want to find out the content of this view, we type in,

SELECT * FROM V_REGION_SALES

Result:

REGION SALES
East $700
West $2050

SQL FOREIGN KEY

A foreign key is a field (or fields) that points to the primary key of another table. The purpose of the foreign key is to ensure referential integrity of the data. In other words, only values that are supposed to appear in the database are permitted.

For example, say we have two tables, a CUSTOMER table that includes all customer data, and an ORDERS table that includes all customer orders. The constraint here is that all orders must be associated with a customer that is already in the CUSTOMER table. In this case, we will place a foreign key on the ORDERS table and have it relate to the primary key of the CUSTOMER table. This way, we can ensure that all orders in the ORDERS table are related to a customer in the CUSTOMER table. In other words, the ORDERS table cannot contain information on a customer that is not in the CUSTOMER table.

The structure of these two tables will be as follows:

Table CUSTOMER

column name characteristic
SID Primary Key
Last_Name
First_Name

Table ORDERS

column name characteristic
Order_ID Primary Key
Order_Date
Customer_SID Foreign Key
Amount

In the above example, the Customer_SID column in the ORDERS table is a foreign key pointing to the SID column in the CUSTOMER table.

Below we show examples of how to specify the foreign key when creating the ORDERS table:

MySQL:
CREATE TABLE ORDERS
(Order_ID integer,
Order_Date date,
Customer_SID integer,
Amount double,
Primary Key (Order_ID),
Foreign Key (Customer_SID) references CUSTOMER(SID));

Oracle:
CREATE TABLE ORDERS
(Order_ID integer primary key,
Order_Date date,
Customer_SID integer references CUSTOMER(SID),
Amount double);

SQL Server:
CREATE TABLE ORDERS
(Order_ID integer primary key,
Order_Date datetime,
Customer_SID integer references CUSTOMER(SID),
Amount double);

Below are examples for specifying a foreign key by altering a table. This assumes that the ORDERS table has been created, and the foreign key has not yet been put in:

MySQL:
ALTER TABLE ORDERS
ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(SID);

Oracle:
ALTER TABLE ORDERS
ADD (CONSTRAINT fk_orders1) FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(SID);

SQL Server:
ALTER TABLE ORDERS
ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(SID);

SQL PRIMARY KEY

A primary key is used to uniquely identify each row in a table. It can either be part of the actual record itself , or it can be an artificial field (one that has nothing to do with the actual record). A primary key can consist of one or more fields on a table. When multiple fields are used as a primary key, they are called a composite key.

Primary keys can be specified either when the table is created (using CREATE TABLE) or by changing the existing table structure (using ALTER TABLE).

Below are examples for specifying a primary key when creating a table:

MySQL:
CREATE TABLE Customer
(SID integer,
Last_Name varchar(30),
First_Name varchar(30),
PRIMARY KEY (SID));

Oracle:
CREATE TABLE Customer
(SID integer PRIMARY KEY,
Last_Name varchar(30),
First_Name varchar(30));

SQL Server:
CREATE TABLE Customer
(SID integer PRIMARY KEY,
Last_Name varchar(30),
First_Name varchar(30));

Below are examples for specifying a primary key by altering a table:

MySQL:
ALTER TABLE Customer ADD PRIMARY KEY (SID);

Oracle:
ALTER TABLE Customer ADD PRIMARY KEY (SID);

SQL Server:
ALTER TABLE Customer ADD PRIMARY KEY (SID);

Note: Before using the ALTER TABLE command to add a primary key, you'll need to make sure that the field is defined as 'NOT NULL' -- in other words, NULL cannot be an accepted value for that field.

SQL CONSTRAINT

You can place constraints to limit the type of data that can go into a table. Such constraints can be specified when the table when the table is first created via the CREATE TABLE statement, or after the table is already created via the ALTER TABLE statement.

Common types of constraints include the following:

- NOT NULL
- UNIQUE
- CHECK
- Primary Key
- Foreign Key


Each is described in detail below.

NOT NULL

By default, a column can hold NULL. If you not want to allow NULL value in a column, you will want to place a constraint on this column specifying that NULL is now not an allowable value.

For example, in the following statement,

CREATE TABLE Customer
(SID integer NOT NULL,
Last_Name varchar (30) NOT NULL,
First_Name varchar(30));

Columns "SID" and "Last_Name" cannot include NULL, while "First_Name" can include NULL.

UNIQUE

The UNIQUE constraint ensures that all values in a column are distinct.

For example, in the following statement,

CREATE TABLE Customer
(SID integer Unique,
Last_Name varchar (30),
First_Name varchar(30));

Column "SID" cannot include duplicate values, while such constraint does not hold for columns "Last_Name" and "First_Name".

Please note that a column that is specified as a primary key must also be unique. At the same time, a column that's unique may or may not be a primary key.

CHECK

The CHECK constraint ensures that all values in a column satisfy certain conditions.

For example, in the following statement,

CREATE TABLE Customer
(SID integer CHECK (SID > 0),
Last_Name varchar (30),
First_Name varchar(30));

Column "SID" must only include integers greater than 0.

Please note that the CHECK constraint does not get enforced by MySQL at this time.

SQL CREATE TABLE

ables are the basic structure where data is stored in the database. Given that in most cases, there is no way for the database vendor to know ahead of time what your data storage needs are, chances are that you will need to create tables in the database yourself. Many database tools allow you to create tables without writing SQL, but given that tables are the container of all the data, it is important to include the CREATE TABLE syntax in this tutorial.

Before we dive into the SQL syntax for CREATE TABLE, it is a good idea to understand what goes into a table. Tables are divided into rows and columns. Each row represents one piece of data, and each column can be thought of as representing a component of that piece of data. So, for example, if we have a table for recording customer information, then the columns may include information such as First Name, Last Name, Address, City, Country, Birth Date, and so on. As a result, when we specify a table, we include the column headers and the data types for that particular column.

So what are data types? Typically, data comes in a variety of forms. It could be an integer (such as 1), a real number (such as 0.55), a string (such as 'sql'), a date/time expression (such as '2000-JAN-25 03:22:22'), or even in binary format. When we specify a table, we need to specify the data type associated with each column (i.e., we will specify that 'First Name' is of type char(50) - meaning it is a string with 50 characters). One thing to note is that different relational databases allow for different data types, so it is wise to consult with a database-specific reference first.

The SQL syntax for CREATE TABLE is

CREATE TABLE "table_name"
("column 1" "data_type_for_column_1",
"column 2" "data_type_for_column_2",
... )

So, if we are to create the customer table specified as above, we would type in

CREATE TABLE customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date date)

Sometimes, we want to provide a default value for each column. A default value is used when you do not specify a column's value when inserting data into the table. To specify a default value, add "Default [value]" after the data type declaration. In the above example, if we want to default column "Address" to "Unknown" and City to "Mumbai", we would type in

CREATE TABLE customer
(First_Name char(50),
Last_Name char(50),
Address char(50) default 'Unknown',
City char(50) default 'Mumbai',
Country char(25),
Birth_Date date)

You can also limit the type of information a table / a column can hold. This is done through the CONSTRAINT keyword, which is discussed next.

SQL TRIM

The TRIM function in SQL is used to remove specified prefix or suffix from a string. The most common pattern being removed is white spaces. This function is called differently in different databases:

  • MySQL: TRIM(), RTRIM(), LTRIM()
  • Oracle: RTRIM(), LTRIM()
  • SQL Server: RTRIM(), LTRIM()

The syntax for these trim functions are:

TRIM([[LOCATION] [remstr] FROM ] str): [LOCATION] can be either LEADING, TRAILING, or BOTH. This function gets rid of the [remstr] pattern from either the beginning of the string or the end of the string, or both. If no [remstr] is specified, white spaces are removed.

LTRIM(str): Removes all white spaces from the beginning of the string.

RTRIM(str): Removes all white spaces at the end of the string.

Example 1:

SELECT TRIM(' Sample ');

Result:

'Sample'

Example 2:

SELECT LTRIM(' Sample ');

Result:

'Sample '

Example 3:

SELECT RTRIM(' Sample ');

Result:

' Sample'

SQL SUBSTRING

The Substring function in SQL is used to grab a portion of the stored data. This function is called differently for the different databases:

  • MySQL: SUBSTR(), SUBSTRING()
  • Oracle: SUBSTR()
  • SQL Server: SUBSTRING()
The most frequent uses are as follows (we will use SUBSTR() here):

SUBSTR(str,pos): Select all characters from starting with position . Note that this syntax is not supported in SQL Server.

SUBSTR(str,pos,len): Starting with the th character in string and select the next characters.

Assume we have the following table:

Table Geography

region_name store_name
East Boston
East New York
West Los Angeles
West San Diego

Example 1:

SELECT SUBSTR(store_name, 3)
FROM Geography
WHERE store_name = 'Los Angeles';

Result:

's Angeles'

Example 2:

SELECT SUBSTR(store_name,2,4)
FROM Geography
WHERE store_name = 'San Diego';

Result:

'an D'

SQL CONCATENATE

Sometimes it is necessary to combine together (concatenate) the results from several different fields. Each database provides a way to do this:

  • MySQL: CONCAT()
  • Oracle: CONCAT(), ||
  • SQL Server: +

The syntax for CONCAT() is as follows:

CONCAT(str1, str2, str3, ...): Concatenate str1, str2, str3, and any other strings together. Please note the Oracle CONCAT() function only allows two arguments -- only two strings can be put together at a time using this function. However, it is possible to concatenate more than two strings at a time in Oracle using '||'.

Let's look at some examples. Assume we have the following table:

Table Geography

region_name store_name
East Boston
East New York
West Los Angeles
West San Diego

Example 1:

MySQL/Oracle:
SELECT CONCAT(region_name,store_name) FROM Geography
WHERE store_name = 'Boston';

Result:

'EastBoston'

Example 2:

Oracle:
SELECT region_name || ' ' || store_name FROM Geography
WHERE store_name = 'Boston';

Result:

'East Boston'

Example 3:

SQL Server:
SELECT region_name + ' ' + store_name FROM Geography
WHERE store_name = 'Boston';

Result:

'East Boston'

SQL OUTER JOIN

Previously, we had looked at left join, or inner join, where we select rows common to the participating tables to a join. What about the cases where we are interested in selecting elements in a table regardless of whether they are present in the second table? We will now need to use the SQL OUTER JOIN command.

The syntax for performing an outer join in SQL is database-dependent. For example, in Oracle, we will place an "(+)" in the WHERE clause on the other side of the table for which we want to include all the rows.

Let's assume that we have the following two tables,

Table Store_Information

store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999

Table Geography

region_name store_name
East Boston
East New York
West Los Angeles
West San Diego

and we want to find out the sales amount for all of the stores. If we do a regular join, we will not be able to get what we want because we will have missed "New York," since it does not appear in the Store_Information table. Therefore, we need to perform an outer join on the two tables above:

SELECT A1.store_name, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.store_name = A2.store_name (+)
GROUP BY A1.store_name

Note that in this case, we are using the Oracle syntax for outer join.

Result:

store_name SALES
Boston $700
New York
Los Angeles $1800
San Diego $250

Note: NULL is returned when there is no match on the second table. In this case, "New York" does not appear in the table Store_Information, thus its corresponding "SALES" column is NULL.

SQL JOIN

Now we want to look at joins. To do joins correctly in SQL requires many of the elements we have introduced so far. Let's assume that we have the following two tables,

Table Store_Information

store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999

Table Geography

region_name store_name
East Boston
East New York
West Los Angeles
West San Diego

and we want to find out sales by region. We see that table Geography includes information on regions and stores, and table Store_Information contains sales information for each store. To get the sales information by region, we have to combine the information from the two tables. Examining the two tables, we find that they are linked via the common field, "store_name". We will first present the SQL statement and explain the use of each segment later:

SELECT A1.region_name REGION, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.store_name = A2.store_name
GROUP BY A1.region_name

Result:

REGION
SALES
East
$700
West
$2050

SQL ALIAS

We next focus on the use of aliases. There are two types of aliases that are used most frequently: column alias and table alias.

In short, column aliases exist to help organizing output. In the previous example, whenever we see total sales, it is listed as SUM(sales). While this is comprehensible, we can envision cases where the column heading can be complicated (especially if it involves several arithmetic operations). Using a column alias would greatly make the output much more readable.

The second type of alias is the table alias. This is accomplished by putting an alias directly after the table name in the FROM clause. This is convenient when you want to obtain information from two separate tables (the technical term is 'perform joins'). The advantage of using a table alias when doing joins is readily apparent when we talk about joins.

Before we get into joins, though, let's look at the syntax for both the column and table aliases:

SELECT "table_alias"."column_name1" "column_alias"
FROM "table_name" "table_alias"

Briefly, both types of aliases are placed directly after the item they alias for, separate by a white space. We again use our table, Store_Information,

Table Store_Information

store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999

We use the same example as that in the SQL GROUP BY section, except that we have put in both the column alias and the table alias:

SELECT A1.store_name Store, SUM(A1.Sales) "Total Sales"
FROM Store_Information A1
GROUP BY A1.store_name

Result:

Store
Total Sales
Los Angeles
$1800
San Diego
$250
Boston
$700
Notice that difference in the result: the column titles are now different. That is the result of using the column alias. Notice that instead of the somewhat cryptic "Sum(Sales)", we now have "Total Sales", which is much more understandable, as the column header. The advantage of using a table alias is not apparent in this example

SQL HAVING

Another thing people may want to do is to limit the output based on the corresponding sum (or any other aggregate functions). For example, we might want to see only the stores with sales over $1,500. Instead of using the WHERE clause in the SQL statement, though, we need to use the HAVING clause, which is reserved for aggregate functions. The HAVING clause is typically placed near the end of the SQL statement, and a SQL statement with the HAVING clause may or may not include the GROUP BY clause. The syntax for HAVING is,

SELECT "column_name1", SUM("column_name2")
FROM "table_name"
GROUP BY "column_name1"
HAVING (arithmetic function condition)

Note: the GROUP BY clause is optional.

In our example, table Store_Information,

Table Store_Information

store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999

we would type,

SELECT store_name, SUM(sales)
FROM Store_Information
GROUP BY store_name
HAVING SUM(sales) > 1500

Result:

store_name
SUM(Sales)
Los Angeles
$1800