一、创建数据库
语法:create database 数据库名
注:此语法为创建一个具有特定名称的数据库,如果该名称已存在,则语句失败
例:创建student数据库
create database student;
二、创建数据表
语法:create table 表名(
列名1 列类型 [<列的完整性约束>],
列名2 列类型 [<列的完整性约束>],
... ...);
注:①此语法为在当前数据库下创建一个表
②列类型为该列的数据类型
例:建立一个表school,其由两列组成,第一列属性为非空,并做为主键,并自增
create table school(
school_id int(10) not null auto_increment primary key,
school_name varchar(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 指定字符集(仅适用字符串)
数据表类型:在创建一个新的MySQL数据表时,可以为它设置一个类型
MyISAM:成熟、稳定和易于管理
InnoDB:加入事物、数据行级锁定机制、外键约束条件、崩溃恢复等新功能
HEAP:只存在于内存中,可做临时表
例:
create table tmp(…)ENGINE=MyISAM
三、主键和外键
1.主键(primary key):帮助MySQL以最快的速度找到一条特定的数据
注:①主键必须是唯一的
②主键不能为空
③主键的数据应尽可能紧凑,最好为整数类型
④尽量选择数据更新少的列作为主键
2.外键(foreign key):用于引用另一张表的某条数据
注:①外键列类型应尽可能与主键列类型保持一致
②外键列最好加上not null
例:
主键
create table student1(
sid int not null auto_increment,
name varchar(20) not null,
gender char(1),
primary key(sid,gender)
);
外键(自动检查外键是否匹配,仅适用InnoDB)
create table score(
cid int not null auto_increment primary key,
score int,
sid int,
foreign key(sid) references student(sid)
);
四、主表和从表
两个数据表用外键相关联,被约束的表是从表,约束其他表的是主表,外键设置在从表上。
注:①主表中被参考的列通常设置为主键
②当有外键约束的时候,添加数据的顺序:先加主表,再添加副表的数据
③当有外键约束的时候,修改数据的顺序:先修改副表,再修改主表的数据
④当有外键约束的时候,删除数据的顺序:先删除副表,再删除主表的数据
五、显示表结构
语法:desc 表名;
注:显示表的创建结构
六、删除数据库、数据表
1.删除数据库
语法:语法:drop database [if exists] db_name
注:①需格外小心,数据库一旦删除无法恢复
②加入if exists字句后,如果删除的数据库不存在,不会报错
2.删除数据表
语法:drop table [if exists] tab_name [,tab_name]...
注:①可同时删除多个数据表
②加入if exists字句后,如果删除的数据表不存在,不会报错
七、更改数据表
语法:alter table 表名 + 相关语句;
①add 列名 建表语句 [first | after 列名]
注:如果加入 [first | after 列名]语句,则在指定位置插入列,否则在数据表末尾插入列
②add primary key (列名)
注:将指定列设定为主键,如果主键已存在则报错
③add foreign key(列名) references 表名(列名)
注:为表添加一个外键
④alter 列名 set default 默认值
注:可以更改指定列的默认值
⑤change 旧列名 新列名 [first | after 列名]
注:更改列名和列类型
⑥drop 列名 可以删除一列
⑦drop primary key 可以删除主键
⑧rename as 新表名 可以将表名更改
例:
-- 向people表中添加字段address2,类型为varchar,最大长度为100
alter table people add address2 varchar(100);
-- 将people表中的name列默认值改为100:
alter table people alter name set default 100;
-- 向student表增加“入学时间”列,其数据类型为日期型。
-- 注:无论基本表中原来是否已有数据,新增加的列一律为空值。
alter table student add scome date;
-- 将年龄的数据类型改为半字长整数。
--注:修改原有的列定义有可能会破坏已有数据
alter table student modify sage smallint;