【MySQL】 MySQL基础DDL详解(数据库、表、约束等操作)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【MySQL】 MySQL基础DDL详解(数据库、表、约束等操作)

【MySQL】 MySQL基础DDL详解(数据库、表、约束等操作)

数据定义语言(Data Definition Language,DDL)是SQL语言集中负责数据结构定义与数据库对象定义的语言。由CREATE、ALTER与DROP三个语法所组成,现在是SQL指令中一个子集。

一、DDL操作数据库

  • 创建数据库
    语法:

Create database 数据库名称;

  • 示例:
#创建一个db_test数据库
create database db_test;
  • 查看当前数据库实体有多少个数据库
    语法:

show 数据库名;

  • 示例:
#查看数据db_test信息
show db_test
  • 修改数据库字符集
    语法:

alter database 数据库名称 default character set 字符集

  • 示例:
#更改数据库db_test为utf-8
alter database db_test default character set utf8
  • 查看数据属性
    语法:

show create database 数据库名

  • 示例:
show create database db_test
  • 删除数据库
    语法:

drop database 数据库名

  • 示例:
drop database db_test
  • 切换数据库:
    语法:

use 数据库名

  • 示例:
#切换到db_test数据库
use db_test

二、DDL操作表

  • 创建表
    语法:
    命名 ,列名是自定义,多列之间使用“,” 隔开,最后一列不能使用"," 【约束】 可有可无
    示例:
create table gy_user(
   u_name varchar(12) not null,
   u_age  int default 0,
   u_desc varchar(2000),
   u_datetime time 
) 
  • 修改表修改表是指修改数据库中已经存在的表的定义。修改表比重新定义一个表更简单,不需要重新加载数据。不会影响正在进行的环境。修改表不但可以修改表中的列,同时也可以修改表名
  • 修改表名
    语法:

alter table 旧表名 rename [to] 新表名

  • 示例:
#把表db_test重新命名为db_test_new
alter table db_test rename db_test_new
  • 修改表字符集
    语法:

alter table 表名 character set 字符集名称;

  • 示例:
#修改字符集
alter table db_test character set gbk
  • 修改表的列类型
    语法:

alter table 表名 modify 属性名 数据类型

  • 示例
alter table db_test modify name varchar(32) not null;
  • 修改字段名称
    语法:

alter table 表名 change 列名 新列名 新数据类型

  • 示例:
alter table db_name change name truename varchar(22)
  • 添加表列
    语法:

alter table 表名 add新字段名 数据类型;

  • 示例:
alter table db_name add deptId int default 0;
  • 设置列为自动增量属性
    语法:

alter table 表名 change column 列名 数据类型 NOT NULL AUTO_INCREMENT;

  • 示例:
alter table db_name change column u_id not null auto_incremen
  • 从表中删除列
    语法

alter table 表名 drop column 列名

  • 示例:
alter table db_name drop column name
  • 删除表
    语法:

drop table 表名

  • 示例:
drop table db_name
• 1
  • 如果表有主外键约束时,删除表数据库会报错:
Cannot delete or update a parent row: a foreign key constraint fails。
  • 此时应该先删除子表的外键约束,然后再删除表。此方法不有影响正常业务。
  • 查看表属性
  • 创建时查看表字段信息
    语法:
  1. show create table 表名
  2. show create view 视图名
  3. show create database 数据库
  • 示例:
#创建是查看表信息
show create table db_name;
#创建时查看视图信息
show create view vw_name_info
#创建数据库是查看信息
  • 查看表字段信息
    语法:

describe 表名称

  • 示例:
describe db_name
  • 查询表详细的字段信息
    语法:

查看表信息

SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA =数据库名 and table_name=表名;

查看字段信息

SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA =数据库名 and table_name=表名;

  • 示例:
#查看表信息
SELECT * FROM `information_schema`.`TABLES`  WHERE TABLE_SCHEMA ='goyeer_db' and table_name='db_name';
#查看字段信息
SELECT * FROM `information_schema`.`COLUMNS`  WHERE TABLE_SCHEMA ='goyeer_db' and table_name='db_name';

三、DDL添加约束

  • 约束分类(六大约束)
  1. NOT NUL(非空约束): 用于保证该字段的值不能为NULL;
  2. DEFAULT (默认值约束): 用于保证该字段的值有默认值;
  3. PRIMARY KEY(主键约束): 用于保证该字段的值具有唯一性且非空;
  4. UNIQUE(唯一约束): 用于保证该字段的值具有唯一性,但可以为空
  5. FOREIGN KEY REFERENCES:外键:用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值(在从表添加外键约束,用于引用主表某列的值)
  • 添加约束的时机:
  • 创建表
  • 修改表
  • 约束的权限分类:
  1. 列级约束:六大约束都支持,但外键约束没有效果,不支持起约束名,可以在一个字段上追加多个,中间用空格隔开,没有顺序要求。
  2. 表级约束:除非空和默认约束,其他的都支持,可以起约束名(对主键无效)。
  • 创建表时添加约束
  • 添加列级约束
    语法:

直接在字段名或类型后,追加约束类型。此类型只支持:默认约束、非空约束、主键约束、唯一约束;

  • 示例:
CREATE TABLE goyeer_username(
    u_id INT PRIMARY KEY,  #主键
    u_name VARCHAR(20) NOT NULL,  #非空
    u_job_name INT UNIQUE,  #唯一
    u_age INT DEFAULT 18,  #默认约束
    u_depart_id INT REFERENCES u_depart(id) #外键
);
  • 添加表级约束
    语法:

在创建表所有列的下方,CONSTRAINT 约束名 约束类型(字段名)

  • 示例:
CREATE TABLE goyeer_username(
    u_id INT, 
    u_name VARCHAR(20), 
    u_job_name int  , 
    u_age INT ,  
    u_depart_id INT,
    CONSTRAINT ab PRIMARY KEY(id),  #主键
    CONSTRAINT uq UNIQUE(u_job_name),  #唯一键
    CONSTRAINT fk_depart_id FOREIGN KEY(u_depart_id) REFERENCES u_depart(id) #外键    
);
  • 修改表约束
  • 特点:

(1)添加列级约束:

ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型 新约束;

(2)添加表级约束:

ALTER TABLE 表名 ADD 【CONSTRAINT 约束名】 约束类型(字段名) 【外键的引用】;

  • 添加非空约束

ALTER TABLE 表名 MODIFY COLUMN 列名 数据类型 NOT NULL;

  • 添加默认约束

ALTER TABLE 表名 MODIFY COLUMN 列名 INT DEFAULT 0;

  • 添加主键约束

ALTER TABLE 表名 MODIFY COLUMN 列名 INT PRIMARY KEY;

或:

ALTER TABLE 表名 ADD PRIMARY KEY(id);

  • 添加唯一键

ALTER TABLE 表名 MODIFY COLUMN 列名 INT UNIQUE;

或:

ALTER TABLE 表名 ADD UNIQUE(列名);

  • 添加外键

ALTER TABLE 表名 ADD FOREIGN KEY(列名) REFERENCES 表名(列名);

或添加外键名:

ALTER TABLE 表名 ADD CONSTRAINT 约束名称 FOREIGN KEY(列名) REFERENCES 表名(列名);

  • 删除表约束
  • 删除非空约束

ALTER TABLE 表名 MODIFY COLUMN 列名 数据类型 NULL;

  • 删除默认约束

ALTER TABLE 表名 MODIFY COLUMN 列名 数据类型;

  • 删除主键

ALTER TABLE 表名 DROP PRIMARY KEY;

  • 删除唯一

ALTER TABLE 表名 DROP INDEX 列名;

  • 删除外键

ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2天前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
19 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
2天前
|
存储 关系型数据库 MySQL
"Linux环境下MySQL数据库名及表名大小写敏感性设置详解:从配置到影响,确保数据库操作的准确与高效"
【8月更文挑战第9天】在Linux环境中,MySQL数据库名及表名的大小写敏感性是一项重要配置。默认情况下,MySQL在Linux上区分大小写,但这可通过配置文件 `/etc/my.cnf` 中的 `lower_case_table_names` 参数调整。该参数设为0时,名称存储时保持原样,查询时不区分大小写;设为1则全部转换为小写。通过编辑配置文件并重启MySQL服务,可根据需求灵活控制名称的大小写敏感性,确保数据一致性和应用兼容性。
12 3
|
2天前
|
关系型数据库 MySQL Linux
【一键解锁神秘力量!】CentOS 7 通过编译源码方式安装 MySQL 数据库 —— 从零到英雄的数据库安装实战秘籍!
【8月更文挑战第9天】随着业务增长,对数据库的需求日益提高。在 CentOS 7 中,通过编译源码安装 MySQL 可提供更高定制性和灵活性。本文详细介绍从准备环境、下载源码、配置编译参数到安装 MySQL 的全过程,并对比 RPM 包安装方法,帮助读者根据需求选择合适方案。实践时需注意备份数据、选择合适版本、确保安全性和调优性能等要点。
13 1
|
2天前
|
运维 关系型数据库 MySQL
"MySQL运维精髓:深入解析数据库及表的高效创建、管理、优化与备份恢复策略"
【8月更文挑战第9天】MySQL是最流行的开源数据库之一,其运维对数据安全与性能至关重要。本文通过最佳实践介绍数据库及表的创建、管理与优化,包括示例代码。涵盖创建/删除数据库、表结构定义/调整、索引优化和查询分析,以及数据备份与恢复等关键操作,助您高效管理MySQL,确保数据完整性和系统稳定运行。
|
2天前
|
安全 关系型数据库 MySQL
"深度解析:MySQL密码修改与远程登录配置全攻略,保障数据库安全与灵活访问"
【8月更文挑战第9天】MySQL是广受青睐的开源关系型数据库系统,其安全性和易用性对DBA和开发者至关重要。本文通过实例解析MySQL中用户密码更新及远程登录配置,确保数据库安全访问与高效管理。首先介绍如何分步修改密码,包括登录MySQL、选择数据库、使用`ALTER USER`命令更新密码,并刷新权限。接着,指导如何配置远程访问,涉及调整MySQL监听地址、授权用户远程登录、检查网络设置及测试远程连接。遵循这些步骤,可强化数据库安全性并实现灵活管理。
|
SQL Java 数据库连接
MySQL---数据库从入门走向大神系列(十五)-Apache的DBUtils框架使用
MySQL---数据库从入门走向大神系列(十五)-Apache的DBUtils框架使用
165 0
MySQL---数据库从入门走向大神系列(十五)-Apache的DBUtils框架使用
|
SQL 关系型数据库 MySQL
MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔离(锁机制)
MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔离(锁机制)
119 0
MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔离(锁机制)
|
存储 SQL 关系型数据库
MySQL---数据库从入门走向大神系列(五)-存储过程
MySQL---数据库从入门走向大神系列(五)-存储过程
124 0
MySQL---数据库从入门走向大神系列(五)-存储过程
|
数据库
MySQL---数据库从入门走向大神系列(四)-子查询、表与表之间的关系(3)
MySQL---数据库从入门走向大神系列(四)-子查询、表与表之间的关系
184 0
MySQL---数据库从入门走向大神系列(四)-子查询、表与表之间的关系(3)
|
SQL 关系型数据库 MySQL
MySQL---数据库从入门走向大神系列(二)-用Java对MySQL进行增删改查
MySQL---数据库从入门走向大神系列(二)-用Java对MySQL进行增删改查
193 0
MySQL---数据库从入门走向大神系列(二)-用Java对MySQL进行增删改查

推荐镜像

更多
下一篇
云函数