创建与删除数据库
创建数据库

使用DDL语句创建数据库
mysql
# CREATE DATABASE 数据库名 DEFAULT CHARACTER SET 字符编码;
create database 数据库名 default character set 字符编码;
示例:
创建一个test 的数据库,并查看该数据库,以及该数据库的编码。
创建数据库:
mysql
create database test default character set utf8;
查看数据库:
mysql
show databases;
查看数据库编码:
mysql
select
schema_name,default_character_set_name from information_schema.schemata
where schema_name = 'test';
使用Navicat创建数据库
示例:
创建一个test2 的数据库


删除数据库
- 使用DDL语言删除数据库
mysql
#DROP DATABASE 数据库名称;
drop database 数据库名称;
示例:删除 test 数据库
mysql
drop database test;
- 使用Navicat删除数据库
示例:删除test2数据库

选择数据库
在创建表时,需要先选择数据库。
mysql
#USE 数据库名;
use 数据库名;
示例:
创建一个名称为 gzkhj 的数据库,编码为 utf8。
mysql
create database gzkhj default character set utf8;
选择该数据库
mysql
use gzkhj;
MySQL中的数据类型

整数类型

数值类型中的长度 m 是指显示长度,并不表示存储长度,只有字段指定 zerofill 时有用
例如: int(3) ,如果实际值是 2 ,如果列指定了 zerofill ,查询结果就是 002 ,左边用 0 来 填充
浮点类型

字符类型



日期类型

二进制数据(BLOB)
- BLOB和TEXT存储方式不同,TEXT以文本方式存储,英文存储区分大小写,而Blob是以二进制方式
存储,不分大小写。 - BLOB存储的数据只能整体读出。
- TEXT可以指定字符集,BLOB不用指定字符集。
MySQL中的约束

约束概述
数据库约束是对表中的数据进行进一步的限制,保证数据的正确性、有效性和完整性。
- 主键约束(Primary Key) PK

- 外键约束(Foreign Key) FK

- 唯一性约束(Unique)

- 非空约束(Not Null)

- 检查约束(Check)

添加主键约束(Primary Key)
- 单一主键
使用一个列作为主键列,当该列的值有重复时,则违反唯一约束。
- 联合主键
使用多个列作为主键列,当多个列的值都相同时,则违反唯一约束。
修改表添加主键约束
- 使用DDL语句添加主键约束
mysql
# ALTER TABLE 表名 ADD PRIMARY KEY(列名)
alter table 表名 add primary key(列名);
示例:将 emp 表中的 employee_id 修改为主键。
mysql
alter table emp add primary key(employee_id);
主键自增长
MySQL 中的自动增长类型要求:
- 一个表中只能有一个列为自动增长。
- 自动增长的列的类型必须是整数类型。
- 自动增长只能添加到具备主键约束与唯一性约束的列上。
- 删除主键约束或唯一性约束,如果该列拥有自动增长能力,则需要先去掉自动增长然 后在删除约束。
mysql
alter table 表名 modify 主键 类型 auto_increment;
示例:将 emp 表中的 employee_id 主键修改为自增。
mysql
alter table emp modify employee_id int auto_increment;
- 使用Navicat添加主键约束


删除主键
- 使用DDL语句删除主键
mysql
ALTER TABLE 表名 DROP PRIMARY KEY;

)
示例:删除emp表中的 employee_id 主键约束。
去掉自动增长:
mysql
alter table emp modify employee_id int;
删除主键:
mysql
alter table emp drop primary key;
- 使用Navicat删除主键


添加外键约束(Foreign Key)

修改表添加外键约束
- 使用DDL语句添加外键约束
mysql
#ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY( 列 名 ) REFERENCES 参照的表名(参照的列名);
lter table 表名 add constraint 约束名 foreign key(列 名) references 参照的表名(参照的列名);
示例一:创建 departments 表包含 department_id 、department_name ,location_id。
mysql
create table departments(department_id int,
department_name varchar(30),
location_id int);
示例二:修改departments表,向department_id列添加主键约束与自动递增。
mysql
alter table departments add primary key(department_id);
alter table departments modify department_id int auto_increment;
示例三:修改 emp 表,添加 dept_id 列。
mysql
alter table emp add column dept_id int;
示例四:向 emp 表中的 dept_id 列添加外键约束。
mysql
alter table emp add constraint emp_fk
foreign key(dept_id) references
departments(department_id);
- 使用Navicat添加外键约束


删除外键约束
- 使用DDL语句删除外键约束。
mysql
#ALTER TABLE 表名 DROP FOREIGN KEY 约束名;
alter table 表名 drop foreign key 约束名;
示例:删除 dept_id 的外键约束。
mysql
alter table emp drop foreign key emp_fk;
- 使用Navicat删除外键约束


添加唯一性约束(Unique)
修改表添加唯一性约束
- 使用DDL语句添加唯一性约束
mysql
# ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名);
alter table 表名 add constraint 约束名 unique(列名);
示例:向 emp 表中的 name 添加唯一约束
mysql
alter table emp add constraint emp_uk unique(name);
- 使用Navicat添加唯一性约束


删除唯一性约束
- 使用DDL语句删除唯一性约束
mysql
ALTER TABLE 表名 DROP KEY 约束名;
示例:删除 name 的唯一约束
mysql
alter table emp drop key emp_uk;
- 使用Navicat删除唯一性约束


非空约束(Not Null)
修改表添加非空约束
- 使用DDL语句添加非空约束。
mysql
# ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL;
alter table 表名 modify 列名 类型 not NULL;
示例:向 emp 表中的 salary 添加非空约束
mysql
alter table emp modify salary float(8,2) not NULL;
- 使用Navicat添加非空约束。


删除非空约束
- 使用DDL语句删除非空约束
mysql
# ALTER TABLE 表名 MODIFY 列名 类型 NULL;
alter table 表名 modify 列名 类型 NULL;
示例:删除emp表中salary 的非空约束
mysql
alter table emp modify salary float(8,2) NULL;
- 使用Navicat删除非空约束


创建表时添加约束
查询表中的约束信息:
mysql
# SHOW KEYS FROM 表名;
show keys from 表名;
示例:创建 depts 表包含 department_id 该列为主键且自动增长,department_name 列不 允许重复,location_id 列不允含有空值
my
create table depts(department_id int primary key auto_increment,department_name varchar(30) unique,location_id int not null);