Hiển thị các bài đăng có nhãn Lập Trình SQL. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Lập Trình SQL. Hiển thị tất cả bài đăng

Chủ Nhật, 25 tháng 3, 2012

MySQL Commands


To login (from unix shell) use -h only if needed.

# [mysql dir]/bin/mysql -h hostname -u root -p

Create a database on the sql server.

mysql> create database [databasename];

List all databases on the sql server.

mysql> show databases;

Switch to a database.

mysql> use [db name];

To see all the tables in the db.

mysql> show tables;

To see database's field formats.

mysql> describe [table name];

To delete a db.

mysql> drop database [database name];

To delete a table.

mysql> drop table [table name];

Show all data in a table.

mysql> SELECT * FROM [table name];

Returns the columns and column information pertaining to the designated table.

mysql> show columns from [table name];

Show certain selected rows with the value "whatever".

mysql> SELECT * FROM [table name] WHERE [field name] = "whatever";

Show all records containing the name "Bob" AND the phone number '3444444'.

mysql> SELECT * FROM [table name] WHERE name = "Bob" AND phone_number = '3444444';

Show all records not containing the name "Bob" AND the phone number '3444444' order by the phone_number field.

mysql> SELECT * FROM [table name] WHERE name != "Bob" AND phone_number = '3444444' order by phone_number;

Show all records starting with the letters 'bob' AND the phone number '3444444'.

mysql> SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = '3444444';

Show all records starting with the letters 'bob' AND the phone number '3444444' limit to records 1 through 5.

mysql> SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = '3444444' limit 1,5;

Use a regular expression to find records. Use "REGEXP BINARY" to force case-sensitivity. This finds any record beginning with a.

mysql> SELECT * FROM [table name] WHERE rec RLIKE "^a";

Show unique records.

mysql> SELECT DISTINCT [column name] FROM [table name];

Show selected records sorted in an ascending (asc) or descending (desc).

mysql> SELECT [col1],[col2] FROM [table name] ORDER BY [col2] DESC;

Return number of rows.

mysql> SELECT COUNT(*) FROM [table name];

Sum column.

mysql> SELECT SUM(*) FROM [table name];

Join tables on common columns.

mysql> select lookup.illustrationid, lookup.personid,person.birthday from lookup left join person on lookup.personid=person.personid=statement to join birthday in person table with primary illustration id;

Creating a new user. Login as root. Switch to the MySQL db. Make the user. Update privs.

# mysql -u root -p mysql> use mysql; mysql> INSERT INTO user (Host,User,Password) VALUES('%','username',PASSWORD('password')); mysql> flush privileges;

Change a users password from unix shell.

# [mysql dir]/bin/mysqladmin -u username -h hostname.blah.org -p password 'new-password'

Change a users password from MySQL prompt. Login as root. Set the password. Update privs.

# mysql -u root -p mysql> SET PASSWORD FOR 'user'@'hostname' = PASSWORD('passwordhere'); mysql> flush privileges;

Recover a MySQL root password. Stop the MySQL server process. Start again with no grant tables. Login to MySQL as root. Set new password. Exit MySQL and restart MySQL server.

# /etc/init.d/mysql stop # mysqld_safe --skip-grant-tables & # mysql -u root mysql> use mysql; mysql> update user set password=PASSWORD("newrootpassword") where User='root'; mysql> flush privileges; mysql> quit # /etc/init.d/mysql stop # /etc/init.d/mysql start

Set a root password if there is on root password.

# mysqladmin -u root password newpassword

Update a root password.

# mysqladmin -u root -p oldpassword newpassword

Allow the user "bob" to connect to the server from localhost using the password "passwd". Login as root. Switch to the MySQL db. Give privs. Update privs.

# mysql -u root -p mysql> use mysql; mysql> grant usage on *.* to bob@localhost identified by 'passwd'; mysql> flush privileges;

Give user privilages for a db. Login as root. Switch to the MySQL db. Grant privs. Update privs.

# mysql -u root -p mysql> use mysql; mysql> INSERT INTO db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES ('%','databasename','username','Y','Y','Y','Y','Y','N'); mysql> flush privileges;  or  mysql> grant all privileges on databasename.* to username@localhost; mysql> flush privileges;

To update info already in a table.

mysql> UPDATE [table name] SET Select_priv = 'Y',Insert_priv = 'Y',Update_priv = 'Y' where [field name] = 'user';

Delete a row(s) from a table.

mysql> DELETE from [table name] where [field name] = 'whatever';

Update database permissions/privilages.

mysql> flush privileges;

Delete a column.

mysql> alter table [table name] drop column [column name];

Add a new column to db.

mysql> alter table [table name] add column [new column name] varchar (20);

Change column name.

mysql> alter table [table name] change [old column name] [new column name] varchar (50);

Make a unique column so you get no dupes.

mysql> alter table [table name] add unique ([column name]);

Make a column bigger.

mysql> alter table [table name] modify [column name] VARCHAR(3);

Delete unique from table.

mysql> alter table [table name] drop index [colmn name];

Load a CSV file into a table.

mysql> LOAD DATA INFILE '/tmp/filename.csv' replace INTO TABLE [table name] FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (field1,field2,field3);

Dump all databases for backup. Backup file is sql commands to recreate all db's.

# [mysql dir]/bin/mysqldump -u root -ppassword --opt >/tmp/alldatabases.sql

Dump one database for backup.

# [mysql dir]/bin/mysqldump -u username -ppassword --databases databasename >/tmp/databasename.sql

Dump a table from a database.

# [mysql dir]/bin/mysqldump -c -u username -ppassword databasename tablename > /tmp/databasename.tablename.sql

Restore database (or database table) from backup.

# [mysql dir]/bin/mysql -u username -ppassword databasename < /tmp/databasename.sql

Create Table Example 1.

mysql> CREATE TABLE [table name] (firstname VARCHAR(20), middleinitial VARCHAR(3), lastname VARCHAR(35),suffix VARCHAR(3),officeid VARCHAR(10),userid VARCHAR(15),username VARCHAR(8),email VARCHAR(35),phone VARCHAR(25), groups VARCHAR(15),datestamp DATE,timestamp time,pgpemail VARCHAR(255));

Create Table Example 2.

mysql> create table [table name] (personid int(50) not null auto_increment primary key,firstname varchar(35),middlename varchar(50),lastnamevarchar(50) default 'bato');
MYSQL Statements and clauses
ALTER DATABASE

ALTER TABLE

ALTER VIEW

ANALYZE TABLE

BACKUP TABLE

CACHE INDEX

CHANGE MASTER TO

CHECK TABLE

CHECKSUM TABLE

COMMIT

CREATE DATABASE

CREATE INDEX

CREATE TABLE

CREATE VIEW

DELETE

DESCRIBE

DO

DROP DATABASE

DROP INDEX

DROP TABLE

DROP USER

DROP VIEW

EXPLAIN

FLUSH

GRANT

HANDLER

INSERT

JOIN

KILL

LOAD DATA FROM MASTER

LOAD DATA INFILE

LOAD INDEX INTO CACHE

LOAD TABLE...FROM MASTER

LOCK TABLES

OPTIMIZE TABLE

PURGE MASTER LOGS

RENAME TABLE

REPAIR TABLE

REPLACE

RESET

RESET MASTER

RESET SLAVE

RESTORE TABLE

REVOKE

ROLLBACK

ROLLBACK TO SAVEPOINT

SAVEPOINT

SELECT

SET

SET PASSWORD

SET SQL_LOG_BIN

SET TRANSACTION

SHOW BINLOG EVENTS

SHOW CHARACTER SET

SHOW COLLATION

SHOW COLUMNS

SHOW CREATE DATABASE

SHOW CREATE TABLE

SHOW CREATE VIEW

SHOW DATABASES

SHOW ENGINES

SHOW ERRORS

SHOW GRANTS

SHOW INDEX

SHOW INNODB STATUS

SHOW LOGS

SHOW MASTER LOGS

SHOW MASTER STATUS

SHOW PRIVILEGES

SHOW PROCESSLIST

SHOW SLAVE HOSTS

SHOW SLAVE STATUS

SHOW STATUS

SHOW TABLE STATUS

SHOW TABLES

SHOW VARIABLES

SHOW WARNINGS

START SLAVE

START TRANSACTION

STOP SLAVE

TRUNCATE TABLE

UNION

UNLOCK TABLES

USE

String Functions
AES_DECRYPT

AES_ENCRYPT

ASCII

BIN

BINARY

BIT_LENGTH

CHAR

CHAR_LENGTH

CHARACTER_LENGTH

COMPRESS

CONCAT

CONCAT_WS

CONV

DECODE

DES_DECRYPT

DES_ENCRYPT

ELT

ENCODE

ENCRYPT

EXPORT_SET

FIELD

FIND_IN_SET

HEX

INET_ATON

INET_NTOA

INSERT

INSTR

LCASE

LEFT

LENGTH

LOAD_FILE

LOCATE

LOWER

LPAD

LTRIM

MAKE_SET

MATCH    AGAINST

MD5

MID

OCT

OCTET_LENGTH

OLD_PASSWORD

ORD

PASSWORD

POSITION

QUOTE

REPEAT

REPLACE

REVERSE

RIGHT

RPAD

RTRIM

SHA

SHA1

SOUNDEX

SPACE

STRCMP

SUBSTRING

SUBSTRING_INDEX

TRIM

UCASE

UNCOMPRESS

UNCOMPRESSED_LENGTH

UNHEX

UPPER

Date and Time Functions
ADDDATE

ADDTIME

CONVERT_TZ

CURDATE

CURRENT_DATE

CURRENT_TIME

CURRENT_TIMESTAMP

CURTIME

DATE

DATE_ADD

DATE_FORMAT

DATE_SUB

DATEDIFF

DAY

DAYNAME

DAYOFMONTH

DAYOFWEEK

DAYOFYEAR

EXTRACT

FROM_DAYS

FROM_UNIXTIME

GET_FORMAT

HOUR

LAST_DAY

LOCALTIME

LOCALTIMESTAMP

MAKEDATE

MAKETIME

MICROSECOND

MINUTE

MONTH

MONTHNAME

NOW

PERIOD_ADD

PERIOD_DIFF

QUARTER

SEC_TO_TIME

SECOND

STR_TO_DATE

SUBDATE

SUBTIME

SYSDATE

TIME

TIMEDIFF

TIMESTAMP

TIMESTAMPDIFF

TIMESTAMPADD

TIME_FORMAT

TIME_TO_SEC

TO_DAYS

UNIX_TIMESTAMP

UTC_DATE

UTC_TIME

UTC_TIMESTAMP

WEEK

WEEKDAY

WEEKOFYEAR

YEAR

YEARWEEK

Mathematical and Aggregate Functions
ABS

ACOS

ASIN

ATAN

ATAN2

AVG

BIT_AND

BIT_OR

BIT_XOR

CEIL

CEILING

COS

COT

COUNT

CRC32

DEGREES

EXP

FLOOR

FORMAT

GREATEST

GROUP_CONCAT

LEAST

LN

LOG

LOG2

LOG10

MAX

MIN

MOD

PI

POW

POWER

RADIANS

RAND

ROUND

SIGN

SIN

SQRT

STD

STDDEV

SUM

TAN

TRUNCATE

VARIANCE

Flow Control Functions
CASE

IF

IFNULL

NULLIF

Command-Line Utilities
comp_err

isamchk

make_binary_distribution

msql2mysql

my_print_defaults

myisamchk

myisamlog

myisampack

mysqlaccess

mysqladmin

mysqlbinlog

mysqlbug

mysqlcheck

mysqldump

mysqldumpslow

mysqlhotcopy

mysqlimport

mysqlshow

perror

Perl API - using functions and methods built into the Perl DBI with MySQL
available_drivers

begin_work

bind_col

bind_columns

bind_param

bind_param_array

bind_param_inout

can

clone

column_info

commit

connect

connect_cached

data_sources

disconnect

do

dump_results

err

errstr

execute

execute_array

execute_for_fetch

fetch

fetchall_arrayref

fetchall_hashref

fetchrow_array

fetchrow_arrayref

fetchrow_hashref

finish

foreign_key_info

func

get_info

installed_versions


last_insert_id

looks_like_number

neat

neat_list

parse_dsn

parse_trace_flag

parse_trace_flags

ping

prepare

prepare_cached

primary_key

primary_key_info

quote

quote_identifier

rollback

rows

selectall_arrayref

selectall_hashref

selectcol_arrayref

selectrow_array

selectrow_arrayref

selectrow_hashref

set_err

state

table_info

table_info_all

tables

trace

trace_msg

type_info

type_info_all

Attributes for Handles

PHP API - using functions built into PHP with MySQL
mysql_affected_rows

mysql_change_user

mysql_client_encoding

mysql_close

mysql_connect

mysql_create_db

mysql_data_seek

mysql_db_name

mysql_db_query

mysql_drop_db

mysql_errno

mysql_error

mysql_escape_string

mysql_fetch_array

mysql_fetch_assoc

mysql_fetch_field

mysql_fetch_lengths

mysql_fetch_object

mysql_fetch_row

mysql_field_flags

mysql_field_len

mysql_field_name

mysql_field_seek

mysql_field_table

mysql_field_type

mysql_free_result

mysql_get_client_info

mysql_get_host_info

mysql_get_proto_info

mysql_get_server_info

mysql_info

mysql_insert_id

mysql_list_dbs

mysql_list_fields

mysql_list_processes

mysql_list_tables

mysql_num_fields

mysql_num_rows

mysql_pconnect

mysql_ping

mysql_query

mysql_real_escape_string

mysql_result

mysql_select_db

mysql_stat

mysql_tablename

mysql_thread_id

mysql_unbuffered_query
source :http://www.pantz.org/software/mysql/mysqlcommands.html

Thứ Tư, 7 tháng 9, 2011

Ebooks SQL sever tiếng việt

SQL là viết tắt của Structured Query Language Ngôn ngữ truy vấn có cấu trúc, là một chuẩn của ANSI (American National Standards Institute – Viện tiêu chuẩn quốc gia Hoa kỳ) về truy xuất các hệ thống CSDL. Các câu lệnh SQL được sử dụng để truy xuất và cập nhật dữ liệu trong một CSDL.
Các đặc tính của SQL sever:
* SQL cho phép bạn truy cập vào CSDL.
* SQL là một chuẩn ngôn ngữ của ANSI.
* SQL có thể thực thi các câu truy vấn trên CSDL.
* SQL có thể lấy dữ liệu từ CSDL.
* SQL có thể chèn dữ liệu mới vào CSDL.
* SQL có thể xoá dữ liệu trong CSDL.
* SQL có thể sửa đổi dữ liệu hiện có trong CSDL.
* SQL về cơ bản là dễ học. Nếu có ai có thời gian để nghiên cứu chuyên sâu về nó. Thì rất tốt và hữu dụng cho việc lập trình.

Các phiên bản SQL: Trải qua nhiều lần thử nghiệm thì SQL đã từng bước nâng cấp và cập nhật . Các tính năng ngày càng hoàn thiện hơn. Để đáp ứng cho nhu cầu lập trình cho Lập trình viên tốt hơn.
SQL 2000
SQL 2005
SQL 2008
SQL 2010 (là phiên bản chưa chính thức, tích hợp đi cùng bộ VS studio 2010 hiện đang có phiên bản beta).
Các tài liệu về SQL bằng tiếng anh thì có rất nhiều trên mạng, các bạn có thể vào trực tiếp trang web của nhà cung cấp MS để có những trợ giúp tốt hơn. Những ebook bằng tiếng việt thì chỉ có tài liệu về SQL sever 2000, là nhiều.
Sau đây là 1 Số tài liệu về SQL sever bằng tiếng Việt mà mình đã sưu tầm được:

1. Hệ Quản Trị Cơ Sở Dữ Liệu SQL Sever HP5_ĐHTN: Đây là CD giáo trình của trường đai học Tự Nhiên thành phố Hồ Chí Minh.

2. Hướng dẫn cơ bản để tạo 1 cơ sở dữ liệu với SQL sever

3. Giáo Trình SQL sever của trường Đại học Khoa học Huế

4. Giáo Trình SQL sever của trường Đại học Thủy Lợi

5. Quản trị và phát triển ứng dụng với MS SQL sever: Tài liệu của học viện kỹ thuật Quân sự.

6. Giáo trình thực hành SQL Của Thầy Trần Nguyên Phong.

7.Tự học SQL sever 2000

8.Huong dan su dung SQL Server

9.Giáo trình SQL sever 2005 Giáo trình của trường đại Học Huế.

Phần mềm: SQL server  2005


Thứ Hai, 5 tháng 9, 2011

Tạo database với phpmyadmin


http://thegioivitinh.wordpress.com/

Đầu tiên vào cpanel.
Sau đó bấm vào MySQL database hoặc tương tự như thế.
Vào giao diện của MySQL có 3 phần chính:
1)Create MySQL database
Tạo database: tuy bạn có ý tạo db tên là betobe nhưng khi thành nó sẽ là freecode_betobe
Điều này giải thích là nó lấy username_của_mình_trên_host_lam_tiền_tố
2)Create MySQL user
Tạo username cũng tương tự, ví dụ khi tạo là vnit thì user ra là freecode_vnit
Password: nhớ kỹ pass cũa user, password thì ko kèm tiền tố :D
3)Grant permissions on a MySQL database to a MySQL user
Tức là gán quyền cho user vào db. Sau khi bạn tạo user và db xong thì nó sẽ đựoc hiện trong 2 combo box: username và database (có bao nhiêu user và db thì hiện ra hết)
Bạn chọn một_user_nào_đó và gán quyền cho database_nào_đó và quyền_nào_đó :D
Nếu bạn chưa hiểu thì xem cái hình kèm theo, ở đây là user ninhthua_online được gán toàn quyền(ALL) cho db tên ninhthua_nuke. Sau đó bấm nút Grant Permission thôi. Nếu sau này bạn tạo nhiều user và db quá mà ko biết user nào được gán cho db nào với quyền nào thì có thể xem đoạn code này thi vào MySQL:
ninhthua_online (Privileges: ALL PRIVILEGES)
Connection Strings
Perl $dbh = DBI->connect(“DBI:mysql:ninhthua_nuke:localhost”,”ninhthua_online”,”<PASSWORD HERE>”);
PHP $dbh=mysql_connect (“localhost”, “ninhthua_online”, “<PASSWORD HERE>”) or die (‘I cannot connect to the database because: ‘ . mysql_error());
mysql_select_db (“ninhthua_nuke”);
Trên localhost:
phpMyAdmin là một ứng dụng quản trị cơ sở dữ liệu rất phổ biến hiện nay. Để có thể quản trị các cơ sở dữ liệu của mình bạn cần đăng nhập bằng Username và Password đã tạo ra ở bước setup hệ thống. Mặc định Username đăng nhập ở localhost sẽ là root Image
Sau khi đăng nhập bạn có thể sử dụng phần mềm quản trị cơ sở dữ liệu phpMyAdmin. Phía bên trái hình mô tả bên dưới là danh sách các database hiện bạn đang có (đã tạo). Để thao tác với database nào bạn chọn nó từ danh sách này. Phía bên phải là khung tạo database mới – đây là cái chúng ta sẽ sử dụng để tạo database cho các ứng dụng sắp cài đặt.
Công việc rất đơn giản: chỉ cần gõ tên database muốn tạo và nhấn Create là xong :lick:
Image
Sau khi tạo dựng Database xong bạn sẽ thấy database này của mình trong danh sách các database ở mục trái. Tuy nhiên hiện nay chưa có table nào cả vì chúng ta chưa tạo cài dặt source code đi kèm với nó.
Image
Tới đây công việc tạo database đã xong để bạn có thể chép source code của bạn vào thư mục www\ và tiến hành cài đặt với database này được rồi.
Note: nhắc lại một lần nữa là đây là cách tạo database trên localhost. Về căn bản tạo database trên hosting thật sự không giống như vậy mặc dù nó cũng sử dụng phpMyAdmin. Tạo database trên hosting phụ thuộc vào hosting bạn sử dụng và cơ chế phân quyền riêng.

Thay đổi cấu trúc bảng trong SQL (SQL Phần 17)

http://thegioivitinh.wordpress.com




 Thay đổi cấu trúc bảng.
Câu lệnh ALTER TABLE được sử dụng để thêm hoặc xoá cột trong một bảng.
ALTER TABLE tên_bảng
ADD tên_cột kiểu_dữ_liệu

ALTER TABLE tên_bảng
DROP COLUMN tên_cột
Lưu ý: Một số hệ CSDL không cho phép việc xoá bỏ cột trong bảng.
Ví dụ: ta có bảng Person như sau:


LastName FirstName Address
Pettersen Kari Storgt 20
Thêm một cột tên là City vào bảng Person:
ALTER TABLE Person ADD City varchar(30)
kết quả:


LastName FirstName Address City
Pettersen Kari Storgt 20
Xoá cột Address:
ALTER TABLE Person DROP COLUMN Address
kết quả:


LastName FirstName City
Pettersen Kari

Tạo một CSDL trong SQL (SQL Phần 16)

http://thegioivitinh.wordpress.com


Tạo một CSDL
CREATE DATABASE tên_CSDL
Tạo một bảng trong một CSDL
CREATE TABLE tên_bảng
(
tên_cột_1 kiểu_dữ_liệu,
tên_cột_2 kiểu_dữ_liệu,
.......
)
Ví dụ
Tạo một bảng tên Person có bốn cột: LastName, FirstName, AddressAge:
CREATE TABLE Person
(
LastName varchar,
FirstName varchar,
Address varchar,
Age int
)
Tạo bảng và đặt kích thước tối đa của các cột:
CREATE TABLE Person
(
LastName varchar(30),
FirstName varchar,
Address varchar,
Age int(3)
)
Kiểu dữ liệu sẽ qui định loại dữ liệu nào được phép lưu trữ trong cột. Sau đây là các kiểu dữ liệu thường dùng nhất trong SQL:

integer(n)
int(n)
smallint(n)
tinyint(n)
Chỉ lưu trữ dữ liệu là số nguyên. Số lượng tối đa các chữ số được qui định bởi n.
decimal(n,d)
numeric(n,d)
Lưu trữ số thập nhân. Số lượng tối đa các chữ số được qui định bởi n. Số lượng tối đa các chữ số sau dấu phảy thập phân được qui định bởi d.
char(n) Lưu trữ n ký tự.
varchar(n) Lưu trữ tối đa n ký tự.
date(yyyymmdd) Lưu trữ ngày tháng (dạng năm-tháng-ngày)

Tạo chỉ mục
Chỉ mục được tạo ra nhằm để các dòng trong bảng được truy xuất nhanh và hiệu quả hơn. Chỉ mục có thể được tạo trên một hoặc nhiều cột của bảng, và mỗi chỉ mục được đặt một tên. Người dùng không thấy được các chỉ mục này, chúng chỉ được dùng để tăng tốc cho CSDL.
Lưu ý: Sau khi bảng đã được tạo chỉ mục thì việc cập nhật thay thêm dòng mới vào bảng sẽ mất nhiều thời gian hơn là đối với bảng không có chỉ mục. Lý do là vì khi cập nhật bảng, các chỉ mục đồng thời cũng phải được cập nhật theo. Vì thế, ta chỉ nên tạo chỉ mục cho các cột thường xuyên dùng trong các tác vụ tìm kiếm.
Chỉ mục đơn nhất (Unique Index)
Chỉ mục đơn nhất sẽ bắt buộc hai dòng bất kỳ của bảng sẽ không được phép mang cùng giá trị ở cột được tạo chỉ mục.
Cú pháp:
CREATE UNIQUE INDEX tên_chỉ_mục
ON tên_bảng (tên_cột)
Chỉ mục đơn (Simple Index)
Khi không dùng từ khoá UNIQUE trong câu lệnh tạo chỉ mục, các giá trị trùng nhau trong cột sẽ được phép.
Cú pháp:
CREATE INDEX tên_chỉ_mục
ON tên_bảng (tên_cột)
Ví dụ
Tạo một chỉ mục đơn có tên là PersonIndex trên cột LastName của bảng Person:
CREATE INDEX PersonIndex
ON Person (LastName
)
Nếu bạn muốn tạo chỉ mục sắp xếp giảm dần, bạn sử dụng thêm từ dành riêng DESC:
CREATE INDEX PersonIndex
ON Person (LastName
DESC)
Nếu bạn muốn tạo chỉ mục trên nhiều cột:
CREATE INDEX PersonIndex
ON Person (LastName, Firstname)
Xoá chỉ mục
Bạn có thể xoá chỉ mục đã tạo bằng lệnh DROP.
DROP INDEX tên_bảng.tên_chỉ_mục
Xoá CSDL hoặc bảng
Để xoá một CSDL (các bảng trong CSDL cũng đồng thời được xoá):
DROP DATABASE tên_CSDL
Để xoá một bảng (toàn bộ cấu trúc, dữ liệu và chỉ mục của bảng sẽ được xoá):
DROP TABLE tên_bảng

Nối kết và khoá trong SQL (SQL Phần 15)

http://thegioivitinh.wordpress.com


Nối kết và khoá
Đôi khi chúng ta phải lấy dữ liệu từ hai bảng cùng một lúc, chúng ta thực hiện một kết nối.
Các bảng trong CSDL có thể quan hệ ràng buộc với nhau thông qua các khoá. Một khoá chính (primary key)  là một cột mà trong đó mỗi giá trị của hàng phải là duy nhất. Mục đích của khoá là kết nối dữ liệu lại với nhau, từ nhiều bảng khác nhau mà không gây trùng lắp dữ liệu giữa các bảng.
Trong bảng Employees (nhân viên) ở ví dụ dưới đây có cột Employees_ID là khoá chính, bảo đảm rằng không thể có hai dòng nào có trùng Employees_ID. Employees_ID dùng để phân biệt hai nhân viên khi họ trùng tên.
Trong ví dụ dưới đây:
  • Employee_ID là khoá chính của bảng Employees.
  • Prod_ID là khoá chính của bảng Orders.
  • Cột Employeed_ID trong bảng Orders được sử dụng để kết nối với bảng Employees, chỉ đến nhân viên trong bảng Employees.
Bảng Employees:

Employees_ID Name
01 Hansen, Ola
02 Svendson, Tove
03 Svendson, Stephen
04 Pettersen, Kari
Bảng Orders:

Prod_ID Product Employee_ID
234 Printer 01
657 Table 03
865 Chair 03
Kết nối hai bảng với nhau
Chúng ta có thể lấy dữ liệu từ hai bảng bằng cách kết nối chúng, tương tự như sau:
Ví dụ: Tìm xem ai đã đặt hàng sản phẩm và họ đã đặt món hàng gì:
SELECT Employees.Name, Orders.Product
FROM Employees, Orders
WHERE Employees.Employee_ID = Orders.Employee_ID
kết quả trả về:

Name Product
Hansen, Ola Printer
Svendson, Stephen Table
Svendson, Stephen Chair
Ví dụ: Tìm xem ai đã đặt hàng máy in:
SELECT Employees.Name
FROM Employees, Orders
WHERE Employees.Employee_ID = Orders.Employee_ID
AND Orders.Product = 'Printer'
kết quả trả về:

Name
Hansen, Ola
Sử dụng JOIN
Ta có thể sử dụng từ khoá JOIN để kết nối dữ liệu từ hai bảng.
Ví dụ: INNER JOIN
Cú pháp:
SELECT cột_1, cột_2, cột_3
FROM bảng_1
INNER JOIN bảng_2
ON bảng_1.khoá_chính = bảng_2.khoá_ngoại
Ai đã đặt hàng và họ đã đặt món hàng nào:
SELECT Employees.Name, Orders.Product
FROM Employees
INNER JOIN Orders
ON Employees.Employee_ID = Orders.Employee_ID
INNER JOIN trả về tất cả các dòng ở cả hai bảng khi chúng tương ứng với nhau. Nếu có một dòng ở bảng Employees không ứng với dòng nào ở bảng Orders, dòng đó sẽ không được tính.
kết quả trả về:

Name Product
Hansen, Ola Printer
Svendson, Stephen Table
Svendson, Stephen Chair
Ví dụ: LEFT JOIN
Cú pháp:
SELECT cột_1, cột_2, cột_3
FROM bảng_1
LEFT JOIN bảng_2
ON bảng_1.khoá_chính = bảng_2.khoá_ngoại
Liệt kê tất cả các nhân viên và món hàng mà họ đặt (nếu có):
SELECT Employees.Name, Orders.Product
FROM Employees
LEFT JOIN Orders
ON Employees.Employee_ID = Orders.Employee_ID
LEFT JOIN trả về tất cả các dòng của bảng thứ nhất (Employees), ngay cả khi các dòng đó không ứng với dòng nào ở bảng thứ hai (Orders). Nếu có một dòng nào ở bảng Employees không ứng với bất cứ dòng nào ở bảng Orders thì dòng đó cũng vẫn được tính.
kết quả trả về:

Name Product
Hansen, Ola Printer
Svendson, Tove
Svendson, Stephen Table
Svendson, Stephen Chair
Pettersen, Kari
Ví dụ: RIGHT JOIN
Cú pháp:
SELECT cột_1, cột_2, cột_3
FROM bảng_1
RIGHT JOIN bảng_2
ON bảng_1.khoá_chính = bảng_2.khoá_ngoại
Liệt kê tất cả các mặt hàng được đặt và tên người đặt hàng (nếu có):
SELECT Employees.Name, Orders.Product
FROM Employees
RIGHT JOIN Orders
ON Employees.Employee_ID = Orders.Employee_ID
RIGHT JOIN trả về tất cả các dòng ở bảng thứ hai (Orders), ngay cả khi các dòng đó không ứng với dòng nào ở bảng thứ nhất (Employees). Nếu có một dòng nào ở bảng Orders không ứng với bất cứ dòng nào ở bảng Employees thì dòng đó cũng vẫn được tính.
kết quả trả về:

Name Product
Hansen, Ola Printer
Svendson, Stephen Table
Svendson, Stephen Chair
Ví dụ: Ai đã đặt hàng máy in:
SELECT Employees.Name
FROM Employees
INNER JOIN Orders
ON Employees.Employee_ID = Orders.Employee_ID
WHERE Orders.Product = 'Printer'
kết quả trả về:

Name
Hansen, Ola

Sử dụng bí danh trong SQL (SQL Phần 14)

http://thegioivitinh.wordpress.com


Với SQL, bí danh có thể được sử dụng cho tên của cột và tên của bảng.Bí danh cột:
Cú pháp bí danh cột như sau:
SELECT tên_cột AS bí_danh_cột FROM tên_bảng
Bí danh bảng:
Bí danh bảng có cú pháp như sau:
SELECT tên_cột FROM tên_bảng AS bí_danh_bảng
Ví dụ sử dụng bí danh cột:
Ta có bảng Persons như sau:

LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Pettersen Kari Storgt 20 Stavanger
Câu lệnh SQL sau:
SELECT LastName AS Họ, FirstName AS Tên
FROM Persons
Sẽ trả về kết quả:

Họ Tên
Hansen Ola
Svendson Tove
Pettersen Kari

Mệnh đề GROUP BY, mệnh đề HAVING trong SQL (SQL Phần 13)


http://thegioivitinh.wordpress.com


 Các hàm tập hợp (ví dụ như SUM) thông thường cần thêm chức năng của mệnh đề GROUP BY.


GROUP BY
Mệnh đề GROUP BY…được thêm vào SQL bởi vì các hàm tập hợp (như SUM) trả về một tập hợp của các giá trị trong cột mỗi khi chúng được gọi, và nếu không có GROUP BY ta không thể nào tính được tổng của các giá trị theo từng nhóm riêng lẻ trong cột.
Cú pháp của GROUP BY như sau:
SELECT tên_cột, SUM(tên_cột) FROM tên_bảng GROUP BY tên_cột
Ví dụ sử dụng GROUP BY:
Giả sử ta có bảng Sales như sau:

Company Amount
W3Schools 5500
IBM 4500
W3Schools 7100
Câu lệnh SQL sau:
SELECT Company, SUM(Amount) FROM Sales
sẽ trả về kết quả:

Company SUM(Amount)
W3Schools 17100
IBM 17100
W3Schools 17100
Kết quả trả về ở trên đôi khi không phải là cái mà ta mong đợi. Ta thêm mệnh đề GROUP BY vào trong câu lệnh SQL:
SELECT Company, SUM(Amount) FROM Sales
GROUP BY Company
và kết quả trả về lần này sẽ là:

Company SUM(Amount)
W3Schools 12600
IBM 4500
Kết quả này đúng là cái mà ta mong muốn.
HAVING
Mệnh đề HAVING…được thêm vào SQL vì mệnh đề WHERE không áp dụng được đối với các hàm tập hợp (như SUM). Nếu không có HAVING, ta không thể nào kiểm tra được điều kiện với các hàm tập hợp.
Cú pháp của HAVING như sau:
SELECT tên_cột, SUM(tên_cột) FROM tên_bảng
GROUP BY tên_cột
HAVING SUM(tên_cột) điều_kiện giá_trị
Ta sử dụng lại bảng Sales ở trên. Câu lệnh SQL sau:
SELECT Company, SUM(Amount) FROM Sales
GROUP BY Company
HAVING SUM(Amount) > 10000

Hàm tính toán AVG, MAX, MIN, SUM trong SQL (SQL Phần 12)

http://thegioivitinh.wordpress.com


SQL có sẵn khá nhiều hàm để thực hiện đếm và tính toán.
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
Bảng dữ liệu chúng ta sẽ dùng trong các ví sụ tiếp theo:
Name Age
Hansen, Ola 34
Svendson, Tove 45
Pettersen, Kari 19
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ụ:
Câu lệnh sau sẽ tính số tuổi trung bình của những người có tuổi trên 20:
SELECT AVG(Age) FROM Persons WHERE Age > 20
kết quả trả về sẽ là:
39.5
Hàm MAX(column)
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.
Ví dụ:
SELECT MAX(Age) FROM Persons
kết quả trả về:
45
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.
Ví dụ:
SELECT MIN(Age) FROM Persons
kết quả trả về:
19
Lưu ý: Hàm MINMAX cũng có thể áp dụng cho các cột có dữ liệu là chuỗi văn bản. Dữ liệu trong cột sẽ được so sánh theo thứ tự tăng dần của từ điển
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ố tuổi của tất cả những người có trong bảng:
SELECT SUM(Age) FROM Persons
kết quả trả về:
98
Ví dụ:
Tìm tổng số tuổi của tất cả những người có tuổi lớn hơn 20:
SELECT SUM(Age) FROM Persons WHERE Age > 20
kết quả trả về:
79

Hàm COUNT lệnh đếm trong SQL (SQL Phần 11)


http://thegioivitinh.wordpress.com


SQL có sẵn lệnh để đếm các dòng trong CSDL.
Cú pháp của hàm COUNT:
SELECT COUNT(tên_cột) FROM tên_bảng
Hàm COUNT(*):
Hàm COUNT(*) trả về số lượng các dòng được chọn ở trong bảng.
Ví dụ ta có bảng Persons như sau:

Name Age
Hansen, Ola 34
Svendson, Tove 45
Pettersen, Kari 19
Câu lệnh sau sẽ trả về số lượng các dòng trong bảng:
SELECT COUNT(*) FROM Persons
và kết quả trả về sẽ là:
3
Câu lệnh sau sẽ trả về số lượng những người lớn hơn 20 tuổi:
SELECT COUNT(*) FROM Persons WHERE Age > 20
kết quả trả về sẽ là:
2
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.
Ví dụ ta có bảng Persons như sau:

Name Age
Hansen, Ola 34
Svendson, Tove 45
Pettersen, Kari
Câu lệnh sau sẽ trả về số lượng những người mà cột Age trong bảng không rỗng:
SELECT COUNT(Age) FROM Persons
và kết quả trả về sẽ là:
2
Mệnh đề COUNT DISTINCT
Lưu ý: Các ví dụ dưới đây chỉ hoạt động với CSDL OracleMS SQL Server, không hoạt động trên MS Access (chưa thử nhiệm với các hệ CSDL khác!)
Từ khoá DISTINCT và 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
Ví dụ ta có bảng Orders như sau:

Company OrderNumber
Sega 3412
W3Schools 2312
Trio 4678
W3Schools 6798
Câu lệnh SQL sau:
SELECT COUNT(DISTINCT Company) FROM Orders
sẽ trả về kết quả là:
3