【从零学MySQL(二)】数据库基础操作、数据类型与约束(附Navicat演示)

创建与删除数据库

创建数据库

使用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)
  1. BLOB和TEXT存储方式不同,TEXT以文本方式存储,英文存储区分大小写,而Blob是以二进制方式
    存储,不分大小写。
  2. BLOB存储的数据只能整体读出。
  3. TEXT可以指定字符集,BLOB不用指定字符集。

MySQL中的约束

约束概述

  数据库约束是对表中的数据进行进一步的限制,保证数据的正确性、有效性和完整性。

  • 主键约束(Primary Key) PK
  • 外键约束(Foreign Key) FK
  • 唯一性约束(Unique)
  • 非空约束(Not Null)
  • 检查约束(Check)
添加主键约束(Primary Key)
  1. 单一主键

  使用一个列作为主键列,当该列的值有重复时,则违反唯一约束。

  1. 联合主键

  使用多个列作为主键列,当多个列的值都相同时,则违反唯一约束。

修改表添加主键约束

  • 使用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);
相关推荐
NiceCloud喜云7 分钟前
腾讯云国际版云数据库选型:MySQL、Redis 怎么按业务架构来判断
数据库·mysql·腾讯云
ew4521816 分钟前
MySQL JOIN 关联语法、差异、标准用法、经典坑点汇总
数据库·mysql
Highcharts.js32 分钟前
Highcharts大数据渲染模块Boost实战与参数最佳实践表
javascript·数据可视化·boost·highcharts·大数据渲染·加速配置·参数表
Rain的Java大神之路1 小时前
线上接口负载满了如何解决
java·数据库·redis·后端·缓存·面试·架构
Nturmoils1 小时前
给运营导个 CSV,在 ksql 里用 \copy 就够了
数据库
ciqingloveless1 小时前
Oracle打开数据库加密
数据库·oracle
Highcharts.js1 小时前
数据可视化避坑指南 ——开发中常见图表错误与修复方案
javascript·信息可视化·数据可视化·highcharts·数据可视化避坑·修复方案
m0_462605222 小时前
大模型week02
数据库
DBA_G2 小时前
GBase 8a数据库集群多维度资源管控策略矩阵解析
数据库·oracle
观远数据2 小时前
AI+BI时代的数据合规三重门:传输、存储、消费如何一体化管控
大数据·数据分析