编程语言
首页 > 编程语言> > MySQL——DDL(数据库定义语言)sql8.0版

MySQL——DDL(数据库定义语言)sql8.0版

作者:互联网

DDL

数据(结构)定义语言 DDL(Data Definition Language),用于创建和修改数据库表结构的语言。

常用的语句:create(创建)、alter(修改)、drop(删除)、rename(重命名)

创建数据库:

CREATE DATABASE 数据库名;
CREATE DATABASE IF NOT EXISTS 数据库名;
# IF NOT EXISTS 意为如果不存在就创建这个数据库,若存在就不创建
CREATE DATABASE IF NOT EXISTS 数据库名 CHARSET utf8;
# CHARSET utf8 给数据库设置一个编码

删除数据库:

DROP DATABASE 数据库名;

修改字符集

ALTER DATABASE 数据库名 CHARSET utf8;

mysql中是不能修改数据库名的

数据库中的表

数据库存储数据的特点

是将数据放到表中,再将表放到数据库当中。

一个数据库中是由多张表的,每个表都拥有一个名字,用来标识自己。且表名是具有唯一性的。

表具有一定的特性,这些特性定义了数据在表中如何的存储,类似Java中的“类”的设计。

数据库表由列组成,我们也称为字段。所有表都是由一个或多个列组成的,每一列都类似java中的“属性”。

表中的数据时按行存储的,每一行就类似于java中的“对象”。

数据表中的基本概念

  1. 数据表 表(table)是数据存储的最常见和最简单的形式,是构成关系数据库的基本元素。表的最简单形式是由行和列组成,分别都包含着数据。每个表都有一个表头和表体组成。表头定义表名和列名。表中的行被看作是文件中的记录,表中的列被看作是这些记录的字段。
  2. 记录 记录也被称为一行数据,是表里的一行。在关系型数据库的表里,一行数据时指一条完整的记录。
  3. 字段 字段是表里的一列,用于保存每条记录的特定信息。如顾客订单表的字段包括“订单ID”、“姓名”、“客户ID”、“职务”、“上级”、“地区”、“运货商”、“国家”等等。数据表的一列包含了特定字段的全部信息。

在我们需要设计一个表的时候。在创建之初,就应该先确定要设计表的以下特征: 表面(表星系)、表中的字段、字段中的数据类型和长度、都有哪些约束(添加数据的一些限制)

主键: 在一张表中代表唯一的一条记录,不能为空,不呢重复

约束:

PRIWARY KEY : 设置主键约束(主键约束包含了不能为空和唯一性的约束) NOT BULL : 设置不能为空的约束(一个表中可以有多个这种的约束) UNIQUE :设置唯一性约束(一个表中可以有多个这种的约束) 检查约束 : 这个需要条件判断的约束(不是所有的数据库都可以设置这个约束) 外键约束 : 出现在多表关联时使用。

主键自动增长: AUTO_INCREMENT

默认值: DEFAULT default——value

字段注释: COMMENT ‘注释’

数据表的基本数据类型:

char(n)长度为n的定长字符串,即使只存入一个字符,它也要站n长的内存 varchar(n) 最大长度为n的可变长字符串,实际存储几个就占几个字符的内存(在n长之下) date 日期,包含年月日 datetime 年月日 时分秒(时间)

整数

类型 字节 最小值 最大值 TINYINT 1 -128 127 SMALLINT 2 -32768 32767 MEDIUMINT 3 -8388608 8388607 INT 4 -2147483648 2147483647 BIGINT 8 -9223372036854775808 923372036854775807

浮点型

类型 字节 FLOAT 4 DOUBLE 8

在我们应用这些数据类型的时候,就需要注意这些浮点型的小数点位数的控制。 数据类型(M,D) M:精度,数据的总长度 D:标度,小数点后的长度 Float(6,2) Double(6,2) ===》例如:3245.12 四位整数,两位小数总长为6位

BLOB和TEXT类型

BLOB是一个二进制的大对象,可以容纳可变数量的数据,用于存储图片视频信息。 有4中BLOB的具体类型:TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB。 它们只是可容纳值的最大长度不同。

TEXT列字符字符串 有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT。

它们两个的长度都是可变的长度。

类型 最大长度 TINYBLOB / TINYTEXT 2^8 - 1 BLOB / TEXT 2^16 - 1 MEDIUMBLOB / MEDIUMTEXT 2^24 - 1 LONGBLOB / LONGTEXT 2^32 - 1

建表语句

建立一个基本表,不涉及任何约束

CREATE TABLE t_student{
	`num` INT,
	`number` VARCHAR(4),
	`sex` CHAR(1),
	`birthday` DATE,
	`height` FLOAT(4,1),
	`phone` CHAR(11),
	`register_time` DATETIME
}

加上约束来对数据库表进行创建[ ]表示可以没有,也能创建出表。

CREATE TABLE t_user (
	id INT [ PRIMARY KEY NOT NULL AUTO_INCREMENT ],
	number INT (5) [ NOT NULL ],
	`name` VARCHAR (10) [ NOT NULL ],
	sex CHAR (1) [ DEFAULT 男 ] COMMENT 性别,默认为男。comment意为注释说明,
	age INT (3) [ CHECK (age > 18) ],
	phone CHAR (11) [ NOT NULL UNIQUE ],
	birthday DATE,
	weight DOUBLE,
	oper_time DATETIME,
)

删除表语句

DROP TABLE [IF EXISTS] 表名;

修改表名语句

RENAME TABLE 旧表名 TO 新表名;

复制表(对某张表操作时,备份数据)语句

CREATE TABLE 新表名 LIKE 被复制表名;

修改表结构语句

添加/删除表的主键约束

#给表中的某一列添加主键且一张表中只能有一个主键,
#但是可以多个表字段联合作为表的主键
ALTER TABLE 表名 ADD PRIMARY KEY(列名) 

#删除表中的主键
ALTER TABLE 表名 DROP PRIMARY KEY

设置表中的自动增长

#添加列为自增(设置自增的列必须为整数型的数据类型)
ALTER TABLE 表名 MODIFY 列名 数据类型 AUTO_INCREMENT;

#删除列的自增
ALTER TABLE 表名 MODIFY 列名 数据类型;

设置不能为空

#添加一个列不能为空的约束
ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL;

#取消一个列不能为空的约束
ALTER TABLE 表名 MODIFY 列名 类型 NULL;

设置唯一约束

#添加表中某一列不能为空的约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名);

#删除表中某一列不能为空的约束
ALTER TABLE 表名 DROP INDEX 约束名;

设置检查约束

#添加约束名
ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK (条件);

#删除约束名
ALTER TABLE 表名 DROP CHECK 约束名;

添加列

#添加一个数据表中的列,默认是在最后一列进行添加
ALTER TABLE 表名 ADD 列名 数据类型; 

#指定给第一列前进行一个添加列的操作
ALTER TABLE 表名 ADD 列名 数据类型 FIRST;

#指定给列名1之后添加一列
ALTER TABLE 表名 ADD 列名 数据类型 AFTER 列名1;

删除列

ALTER TABLE 表名 DROP 列名;

修改列名

ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型;

修改列的数据类型

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

标签:mysql,DDL,数据,数据库,定义语言
来源: