MYSQL 教程 §4, 创建数据库,表,素引
时间:2008-08-08 来源:wstczyl
§4, 创建数据库,表,素引
本章使用的数据库如下:
employee(employeeID, name, job, departmentID )
department(departmentID, name)
employeeSkills(employeeID, skill)
client(clientID, name, address, contactPerson, contactNumber)
assignment(clientID, employeeID , workdate, hours)
§4.1 创建表
Mysql不区分大小写,所有数据库系统中对SQL的关键字不区分大小写。但是你使用的标识符可能是区分大小写。因为mysql的每个数据库在系统中有个目录,每个表有一个文件。Column names, indexes, and aliases是不区分大小写的。
标识符一般用于标识an alias, a database, a table, a column, or an index。不能使用quote characters, ACSII(0) and ASCII(255).
实例:
drop database if exists employee;
create database employee;
use employee;
create table department
(
departmentID int not null auto_increment primary key,
name varchar(30)
) type=InnoDB;
create table employee
(
employeeID int not null auto_increment primary key,
name varchar(80),
job varchar(30),
departmentID int not null references department(departmentID)
) type=InnoDB;
create table employeeSkills
(
employeeID int not null references employee(employeeID),
skill varchar(15) not null,
primary key (employeeID, skill)
) type=InnoDB;
create table client
(
clientID int not null auto_increment primary key,
name varchar(40),
address varchar(100),
contactPerson varchar(80),
contactNumber char(12)
) type=InnoDB;
create table assignment
(
clientID int not null references client(clientID),
employeeID int not null references employee(employeeID),
workdate date not null,
hours float,
primary key (clientID, employeeID, workdate)
) type=InnoDB;
Varchar使用的是动态存储,
默认使用的是MyISAM表类型,单个列作为主键可以如下表示:
employeeID int not null auto_increment primary key,
MyISAM 或许要5.1版本才支持外键.
Create 的语法参见教材
§4.2 数据类型
具体请参考教材
有3种基本类型:数字类型,字符串类型,时间日期类型.
数字类型
TINYINT 8位
SMALLINT 16
MEDIUMINT 32
BIGINT 64
FLOAT
DOUBLE
字符串类型
CHAR VARCHAR
BLOB用二进制形式存储,区分大小写.
TINYTEXT or TINYBLOB 8位
TEXT or BLOB 16
MEDIUMTEXT or MEDUIMBLOB 24
LONGTEXT or LONGBLOB 32
ENUM
SET
时间日期类型
DATE
TIME
DATETIME
TIMESTAMP
YEAR
§4.3 创建索引,删除,修改等
*创建索引
PRIMARY KEY, KEY, UNIQUE, or INDEX 自动带有索引
创建索引:create index name on employee(name);选项有UNIQUE FULLTEXT 等.针对VARCHAR可以只提取前面的几个字母.比如:create index part_name on employee(name(5)); 文本索引往往没有数字的速度快.这样可以提高性能。
*删除操作.
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name,...]
drop index part_name on employee;
drop database employee;
drop database if exists employee;
drop table assignment;
TEMPORARY 用于删除临时表
*修改表结构
alter table employee
add index name (name);
详细说明参考教材