programmera.net -> mysql -> normal för utskrift | info@programmera.net |
Tabeller i MySQL
1. Skapa en tabell 2. Visa tabeller 3. Ändra en tabell 4. Ta bort tabell 5. Syntax för CREATE TABLE 6. Syntax för ALTER TABLE 7. Syntax för DROP TABLE |
1. Skapa en tabell
För att skapa en tabell loggar jag in som olle, går in i databasen olles_db och använder CREATE TABLE.
Nedan skapar jag tabellen animal:
Det finns några detaljer värda att beskriva noggrannare här:
[olle@dev1]$ /usr/local/mysql/bin/mysql -u olle -p
Enter password: star
mysql> use olles_db;
mysql> CREATE TABLE animal(
-> id INT NOT NULL AUTO_INCREMENT,
-> name VARCHAR(50),
-> weight INT,
-> birth DATE,
-> timestamp TIMESTAMP,
-> PRIMARY KEY (id)
-> );
Detaljer Beskrivning AUTO_INCREMENT Detta innebär att kolumnen id automatist får ett unikt värde. Den första raden som skapas i tabellen kommer att få id=1, och nästa 2 o.s.v. Detta är en bekväm finess som man inte hittar i t. ex. Oracle. NOT NULL Om en kolumn har NOT NULL så måste ett värde sättas varje gång du gör INSERT. TIMESTAMP Denna kolumn håller reda på när raden skapades. När du gör INSERT ska du låtsas som kolumnen inte finns, den får sin tidsstämpel ändå. Jag brukar lägga en timestamp i varje tabell, ibland kan det vara guld värt att veta NÄR något hände. PRIMARY KEY(id) Gör kolumnen id till primär nyckel.
2. Visa tabeller
Man ser vilka tabeller som finns i en databas genom att skriva:
Vill man se vilka kolumner tabellen består av skriver man:
mysql> SHOW TABLES;
+--------------------+
| Tables_in_olles_db |
+--------------------+
| animal |
+--------------------+
mysql> DESCRIBE animal;
+-----------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+----------------+
| id | int(11) | | PRI | NULL | auto_increment |
| name | varchar(50) | YES | | NULL | |
| weight | int(11) | YES | | NULL | |
| birth | date | YES | | NULL | |
| timestamp | timestamp(14) | YES | | NULL | |
+-----------+---------------+------+-----+---------+----------------+
3. Ändra en tabell
Det är vanligt att man vill lägga till en ny kolumn i en tabell. Då använder man ALTER TABLE:
Om man sedan ångrar sig och vill ta bort kolumnen går det bra med ALTER TABLE igen:
mysql> ALTER TABLE animal ADD species VARCHAR(50);
mysql> DESCRIBE animal;
+-----------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+----------------+
| id | int(11) | | PRI | NULL | auto_increment |
| name | varchar(50) | YES | | NULL | |
| weight | int(11) | YES | | NULL | |
| birth | date | YES | | NULL | |
| timestamp | timestamp(14) | YES | | NULL | |
| species | varchar(50) | YES | | NULL | |
+-----------+---------------+------+-----+---------+----------------+
mysql> ALTER TABLE animal DROP species;
mysql> DESCRIBE animal;
+-----------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+----------------+
| id | int(11) | | PRI | NULL | auto_increment |
| name | varchar(50) | YES | | NULL | |
| weight | int(11) | YES | | NULL | |
| birth | date | YES | | NULL | |
| timestamp | timestamp(14) | YES | | NULL | |
+-----------+---------------+------+-----+---------+----------------+
4. Ta bort tabell
Du tar bort en tabell på följande sätt:
mysql> DROP TABLE animal;
mysql> SHOW TABLES;
Empty set (0.00 sec)
5. Syntax för CREATE TABLE
Med CREATE TABLE skapar man tabeller. Texten visar syntaxen för en korrekt CREATE TABLE-sats.
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)]
[table_options] [select_statement]
create_definition:
col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
[PRIMARY KEY] [reference_definition]
or PRIMARY KEY (index_col_name,...)
or KEY [index_name] (index_col_name,...)
or INDEX [index_name] (index_col_name,...)
or UNIQUE [INDEX] [index_name] (index_col_name,...)
or FULLTEXT [INDEX] [index_name] (index_col_name,...)
or [CONSTRAINT symbol] FOREIGN KEY [index_name] (index_col_name,...)
[reference_definition]
or CHECK (expr)
type:
TINYINT[(length)] [UNSIGNED] [ZEROFILL]
or SMALLINT[(length)] [UNSIGNED] [ZEROFILL]
or MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]
or INT[(length)] [UNSIGNED] [ZEROFILL]
or INTEGER[(length)] [UNSIGNED] [ZEROFILL]
or BIGINT[(length)] [UNSIGNED] [ZEROFILL]
or REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]
or DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
or FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
or DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL]
or NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL]
or CHAR(length) [BINARY]
or VARCHAR(length) [BINARY]
or DATE
or TIME
or TIMESTAMP
or DATETIME
or TINYBLOB
or BLOB
or MEDIUMBLOB
or LONGBLOB
or TINYTEXT
or TEXT
or MEDIUMTEXT
or LONGTEXT
or ENUM(value1,value2,value3,...)
or SET(value1,value2,value3,...)
index_col_name:
col_name [(length)]
reference_definition:
REFERENCES tbl_name [(index_col_name,...)]
[MATCH FULL | MATCH PARTIAL]
[ON DELETE reference_option]
[ON UPDATE reference_option]
reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT
table_options:
TYPE = {BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM }
or AUTO_INCREMENT = #
or AVG_ROW_LENGTH = #
or CHECKSUM = {0 | 1}
or COMMENT = "string"
or MAX_ROWS = #
or MIN_ROWS = #
or PACK_KEYS = {0 | 1 | DEFAULT}
or PASSWORD = "string"
or DELAY_KEY_WRITE = {0 | 1}
or ROW_FORMAT= { default | dynamic | fixed | compressed }
or RAID_TYPE= {1 | STRIPED | RAID0 } RAID_CHUNKS=# RAID_CHUNKSIZE=#
or UNION = (table_name,[table_name...])
or INSERT_METHOD= {NO | FIRST | LAST }
or DATA DIRECTORY="absolute path to directory"
or INDEX DIRECTORY="absolute path to directory"
select_statement:
[IGNORE | REPLACE] SELECT ... (Some legal select statement)
6. Syntax för ALTER TABLE
Med alter table förändrar du en tabell. Texten visar syntaxen för en korrekt ALTER TABLE-sats.
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...]
alter_specification:
ADD [COLUMN] create_definition [FIRST | AFTER column_name ]
or ADD [COLUMN] (create_definition, create_definition,...)
or ADD INDEX [index_name] (index_col_name,...)
or ADD PRIMARY KEY (index_col_name,...)
or ADD UNIQUE [index_name] (index_col_name,...)
or ADD FULLTEXT [index_name] (index_col_name,...)
or ADD [CONSTRAINT symbol] FOREIGN KEY index_name (index_col_name,...)
[reference_definition]
or ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
or CHANGE [COLUMN] old_col_name create_definition
[FIRST | AFTER column_name]
or MODIFY [COLUMN] create_definition [FIRST | AFTER column_name]
or DROP [COLUMN] col_name
or DROP PRIMARY KEY
or DROP INDEX index_name
or DISABLE KEYS
or ENABLE KEYS
or RENAME [TO] new_tbl_name
or ORDER BY col
or table_options
7. Syntax för DROP TABLE
Med DROP TABLE tar man bort en tabell. Texten visar syntaxen för en korrekt DROP TABLE-sats.
DROP TABLE [IF EXISTS] tbl_name [, tbl_name,...] [RESTRICT | CASCADE]