You are on page 1of 5

CSDL Bi thc hnh s 2 Ni dung: Kiu d liu.

To bng v sa i cu trc bng


1. Cc kiu d liu
Cc bng CSDL cha cc ct vi cc kiu d liu khc nhau. Ngoi cc kiu d liu nh s, xu, MySQL cn h tr cc kiu d liu khc.

Cc kiu d liu s
Bng sau m t mt cc kiu d liu s trong MySQL: Kiu TINYINT SMALLINT Min gi tr c du -128 to 127 -32768 to 32767 Min gi tr khng du Lu tr 0 to 255 0 to 65535 0 to 16777215 1 byte 2 bytes 3 bytes

MEDIUMINT -8388608 to 8388607 INT/INTEGER BIGINT

-2147483648 to 0 to 4294967295 4 bytes 2147483647 -9223372036854775808 0 to 8 bytes to 18446744073709551615 9223372036854775807

Kiu BOOLEAN tng ng vi TINYINT(1)


Kiu d liu Min gi tr -3.402823466E+38 to 1.175494351E-38 0 1.175494351E-38 to 3.402823466E+38 1.7976931348623157E+308 to -2.2250738585072014E308 0 2.2250738585072014E308 to 1.7976931348623157E+308 Ph thuc vo khi nh ngha ct Lu tr 4 bytes

FLOAT

DOUBLE [PRECISION]/REAL

8 bytes

DEC/DECIMAL/NUMERIC/FIXED

Cc kiu d liu xu
Trong MySQL, xu c th lu mi th t d liu vn bn ti d liu nh phn nh nh, file. Xu c th c so snh v tm kim da trn mu s dng mnh LIKE hoc biu thc chnh quy. Bng pha di l cc kiu d liu xu trong MySQL: Kiu d liu xu M t CHAR Mt chui k t c di c nh VARCHAR Mt chui k t c di c th thay i BINARY Mt chui nh phn di c nh VARBINARY Mt chui nh phn di c th thay i TINYBLOB Mt i tng nh phn rt nh BLOB Mt i tng nh phn nh MEDIUMBLOB Mt i tng nh phn c trung bnh LONGBLOB Mt i tng nh phn c ln TINYTEXT Mi chui vn bn rt nh TEXT Mi chui vn bn nh MEDIUMTEXT Mi chui vn bn c trung bnh LONGTEXT Mi chui vn bn rt di

Cc kiu d liu ngy v thi gian


MySQL cung cp kiu d liu ngy, thi gian v t hp ngy v thi gian. Ngoi ra MySQL cng cung cp kiu d liu timestamp lu thi gian thay i ca bn ghi. Cc kiu d liu DATE TIME DATETIME TIMESTAMP M t Gi tr ngy trong nh dng 'YYYY-MM-DD' Gi tr thi gian trong nh dng 'hh:mm:ss' Gi tr ngy thng v thi gian trong nh dng 'YYYY-MM-DD hh:mm:ss' Gi tr nhn thi gian trong nh dng 'YYYY-MM-DD hh:mm:ss'

2. To bng
to bng, s dng cu lnh CREATE TABLE. Cu lnh c cu trc nh sau
1 CREATE TABLE [IF NOT EXISTS] table_name( 2 column_list 3 ) type=table_type

MySQL h tr ty chn IF NOT EXISTS trnh li to bng tn ti trong CSDL table_name l tn bng mun to. Sau l nh ngha tp cc ct. Cc ct c lit k vi cc thuc tnh nh kiu d liu, kch c, d liu khng c php trng (NOT NULL) C th xc nh kiu bng mun to, nu khng xc nh th MySQL s s dng kiu bng ngm nh. MySQL h tr cc kiu bng lu tr khc nhau, cho php ti u CSDL theo mc ch s dng. Mt s kiu bng trong MySQL nh MyISAM, InnoDB, BerkeleyDB (BDB), MERGE, HEAP

MyISAM: Cc bng MyISAM lm vic rt nhanh, nhng khng h tr giao dch. Thng c s dng trong cc ng dng Web, l kiu bng ngm nh trong cc phin bn MySQL trc 5.5 InnoDB: Cc bng InnoDB h tr giao dch an ton, h tr kha ngoi. InnoDB l kiu lu tr ngm nh t phin bn MySQL 5.5 V d to bng employees
CREATE TABLE employees ( employeeNumber into(11) NOT NULL, lastName varchar(50) NOT NULL, firstName varchar(50) NOT NULL, extension varchar(10) NOT NULL, email varchar(100) NOT NULL, officeCode varchar(10) NOT NULL, reportsTo int(11) default NULL, jobTitle varchar(50) NOT NULL, PRIMARY KEY (employeeNumber) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Xc nh kha chnh ca bng s dng t kha PRIMARY KEY. Nu bng c nhiu hn mt kha chnh, c th khai bo nh sau:
CREATE TABLE payments ( customerNumber int(11) NOT NULL, checkNumber varchar(50) NOT NULL, paymentDate datetime NOT NULL, amount double NOT NULL, PRIMARY KEY (customerNumber,checkNumber) ); CREATE TABLE city ( city_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, city VARCHAR(50) NOT NULL, country_id SMALLINT UNSIGNED NOT NULL, last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (city_id), CONSTRAINT `fk_city_country` FOREIGN KEY (country_id) REFERENCES country (country_id) ON DELETE RESTRICT ON UPDATE CASCADE )

T kha FOREIGN KEY c dng xc nh kha ngoi. Trong v d trn xc nh ct country_id lm kha ngoi, tham chiu n kha chnh ca bng country.

Hin th m t bng
hin th thng tin v cu trc bng, c th s dng cu lnh DESCRIBE nh sau:
DESCRIBE table_name;

V d:
DESCRIBE employees;

Kt qu tr v t MySQL server
+----------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------------+--------------+------+-----+---------+-------+ | employeeNumber | int(11) | NO | PRI | NULL | | | lastName | varchar(50) | NO | | NULL | | | firstName | varchar(50) | NO | | NULL | | | extension | varchar(10) | NO | | NULL | | | email | varchar(100) | NO | | NULL | | | officeCode | varchar(10) | NO | | NULL | | | reportsTo | int(11) | YES | | NULL | | | jobTitle | varchar(50) | NO | | NULL | | +----------------+--------------+------+-----+---------+-------+

Cu lnh SHOW CREATE TABLE Table_Name s hin th v cu lnh s dng khi to bng

3. Thay i cu trc bng


Bn cnh to bng, sa i cu trc bng tn ti trong CSDL s dng cu lnh ALTER TABLE. Cu lnh c th c dng thm, xa ct, i kiu d liu ca ct, thm kha chnh, kha ngoi v nhiu thao tc khc. C php ca lnh ALTER TABLE nh sau:
ALTER TABLE table_name ty chn[, ty chn...] ty chn: ADD [COLUMN] create_definition [FIRST | AFTER col_name ] ADD [COLUMN] (create_definition, create_definition,...) ADD INDEX [index_name] (index_col_name,...) ADD PRIMARY KEY (index_col_name,...) ADD UNIQUE [index_name] (index_col_name,...) ADD FULLTEXT [index_name] (index_col_name,...) ADD [CONSTRAINT symbol] FOREIGN KEY [index_name] (index_col_name,...) [reference_definition] ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} CHANGE [COLUMN] old_col_name create_definition [FIRST | AFTER column_name] MODIFY [COLUMN] create_definition [FIRST | AFTER col_name] DROP [COLUMN] col_name DROP PRIMARY KEY

DROP INDEX index_name ENABLE KEYS RENAME [TO] new_table_name

MySQL cho php nhiu hnh ng sa i bng ti mt thi im phn cch nhau bi du phy.

4. Xa bng
xa bng khi CSDL, s dng cu lnh DROP TABLE
DROP TABLE [IF EXISTS] table_name [, table_name,...]

MySQL cho php xa nhiu bng cng lc bng cch lit k tn cc bng cch nhau bi du phy. Ty chn IF EXISTS c s dng trnh xa bng khng tn ti trong CSDL

5. Bi tp thc hnh
To CSDL Classicmodels gm cc bng sau:

Trong : Cc rng buc kha ngoi vi ty chn ON UPDATE CASCADE

You might also like