一、 创建数据库: 创建一个具有指定名称的数据库。如果要创建的数据库已经存在,或者没有创建它的适当权限,则语句失败。
create database 数据库名 ;
例如:创建数据库xcy : create database xcy;
二、创建表:在当前数据库下新创建一个数据表。
create table
表名(
列名1 列类型 [<列的完整性约束>],
列名2 列类型 [<列的完整性约束>],
... ... );
例如:创建表school ,其由两列组成,第一列属性为非空,并做为主键,并自增
create table school(
school_id int(10) not null auto_increment primary key,
school_namevarchar(20)
);
常见的完整性约束如下:
–
PRIMARY KEY
主码约束
(
主键
)
–
UNIQUE
唯一性约束
–
NOT NULL
非空值约束
–
AUTO_INCREMENT
用于整数列默认自增
1
–
UNSIGNED
无符号整数
–
DEFAULT
default_value
默认值约束
–
DEFAULT
cur_timestamp
创建新记录时默认保存当前时间(仅适用
timestamp
数据列)
–
ON UPDATE
cur_timestamp
修改记录时默认保存当前时间
(仅适用
timestamp
数据列)
–
CHARACTER SET name
指定字符集(仅适用字符串)
主键和外键:
•
数据表之间的关联
/
引用关系是依靠具体的主键(
primarykey
)和外键(
foreign key
)建立起来的。
•
主键:帮助
MySQL
以最快的速度把一条特点的数据记录的位置确定下来。
–
主键必须是唯一的
–
主键应该是紧凑的,因此整数类型比较适合
–
尽量选择单个键作为主键(最少性)
–
尽量选择数值更新少的列作为主键(稳定性)
•外键:引用另外一个数据表的某条记录。
–外键列类型尽可能与主键列类型保持一致
–
外键列应该加上
NOT NULL
举例:
•
主键
create table student(
sid int not null auto_increment,
name varchar(20) not null,
primary key(sid)
);
•
外键(
自动检查外键是否匹配,仅适用
InnoDB
)
create table score(
cid int not null auto_increment primary key,
score int,
sid int,
foreignkey(sid)references student(sid)
);
三、显示表结构:
describe
表名;
desc 表名;
![](https://img-blog.csdn.net/20161223201023738)
四、删除表以及删除数据库:
drop table [if exists] tab_name[,tab_name]... 从数据库中删除给定的表。如果给出if exists 子句,则删除不存在的表不会出错。
drop database [if exists] db_name 删除给定的数据库。如果给出if exists 子句,则删除不存在的数据库不会出错。
五、更改表结构:
alter table 表名action;
action
可以是如下语句:
–
add
列名建表语句
[first | after
列名
] 可以为表添加一列,如果没指定first或者after,则在列尾添加一列,否则在指定列添加新列
–
add primary key (
列名
) 为表添加一个主键,如果主键已经存在,则出现错误
–
add foreign key(
列名
)references
表名
(
列名
)
为表添加一个
外
键
–
alter
列名
set default
默认值 可以更改指定列默认值
–
change
旧列名 新列名
<
建表语句
> [first | after
列名
] 可以更改列类型和列名称,如果原列的名字和新列的名字相同
–
modify
列名
<
建表语句
> [first | after
列名
] 和change的作用相同
–
drop
列名 //可以删除一列
–
drop primary key
//
可以删除主键
–
engine
类型名
//
可以改变表类型
–
rename as
新表名
//
可以将表名更改