mysql:DDL数据库定义语言

DDL数据库定义语言

DDL数据库定义语言主要包括对库和表的管理

一、库的管理

1、库的创建

关键字:create

create database if not exists 库名

2、库的修改

关键字:alter

修改库的字符集: alter database 库名 character set utf8

3、库的删除

关键字:drop

drop database if exists 库名

二、表的管理

1、表的创建

关键字:create

create table if not exists 表名(
	列名 列的类型【(长度)列的约束】,
    列名 列的类型【(长度)列的约束】,
    ....
    列名 列的类型【(长度)列的约束】
)

2、表的修改

关键字:alter

①修改列名

关键字:alter change

alter table 表名 change column 原列名 现列名 列的类型;

注意:修改列名时现列名必须加上列的类型

②修改列的类型或约束

关键字 alter modify

alter table 表名 modify column 列名 新列类型;

③添加列

关键字:alter add

alter table 表名 add column 新列名 列类型;

④删除列

关键字:alter drop

alter table 表名 drop column 列名;

⑤修改表名

关键字:alter rename to

alter table 表名 rename to 新表名;

3、表的删除

关键字:drop

drop table if exists 表名;

4、表的复制

1、仅仅复制表的结构
create table 新表名 like 准备复制的表名
2、复制表的结构+数据
create table 新表名 select * from 准备复制的表名
3、复制表的部分结构+部分数据
create table 新表名 select 查询列表 from 准备复制的表名 where 筛选条件

查询列表控制着表的结构,where的筛选条件控制表的数据。

三、mysql的数据类型

1、简介

数值型

  • 整型
  • 小数
    • 定点数
    • 浮点数

字符型

  • 较短文本:char、varchar
  • 较长文本:text,blob(较长的二进制数据)

日期型

2、整型

在这里插入图片描述

1、如何设置无符号和有符号

默认整型类型数据为有符号的,支持负数。

可以使用unsigned关键字将类型声明为无符号类型。

create table test(
	t1 int,#有符号类型,支持负数
    t2 int unsigned#无符号类型,不支持整数
)

注意:

  • 如果插入的值超出范围,会报一个警告,而且插入的值为临界值。
  • 如果不设置长度,会有默认长度。
  • 长度仅代表数据显示的最大宽度,如果不够,则会用0在左边填充。
  • 指定长度默认不会起作用,必须搭配zerofill使用。
CREATE TABLE 表名(
	column1 INT(7) ZEROFILL
);

3、小数

在这里插入图片描述

1、浮点型

float(M,D)

double(M,D)

2、定点数

dec(M,D)

decimal(M,D)

3、特点:
  • M代表整数部位和小数部位的数据长度
  • 小数部位的长度
  • 如果超过范围,则插入临界值
  • M和D都可以使用省略,如果是decimal,M默认为10,D为0.如果是float,double则随时根据插入的数据调整M和D的值。
  • 定点的精度较高

4、字符型

在这里插入图片描述

1、特点
写法M的意思特点空间的耗费效率
charchar(M)最大的字符数,可以省略,默认为1固定长度的字符比较耗费
varcharvarchar(M)最大的字符数,不能省略可变长度的字符比较节省

5、Enum(枚举)类型

案例:

CREATE TABLE tab1(
	c1 ENUM('a','b','c')
);
INSERT INTO tab1 VALUES('a');

注意:枚举类型不区分大小写

6、Set类型(集合)

案例:

CREATE TABLE tab1(
	c1 SET('a','b','c','d','e')
);
INSERT INTO tab1 VALUES('a');
INSERT INTO tab1 VALUES('a','b','c');

注意:Set集合类型不区分大小写

7、日期型

在这里插入图片描述
1、Timestamp支持的时间范围较小,取值范围: 19700101080001——2038年的某个时间。Datetime的取值范围:1000-1-1 ——9999—12-31

2、timestamp和实际时区有关,更能反映实际的日期,而datetime则只能反映出插入时的当地时区

3、timestamp的属性受Mysql版本和SQLMode的影响很大

1、特点
字节范围时区等影响
datetime81000-9999不受

3、timestamp的属性受Mysql版本和SQLMode的影响很大

1、特点
字节范围时区等影响
datetime81000-9999不受
timestamp41970-2038
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值