数据(结构)定义语言 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中的“对象”。
数据表
表(table)是数据存储的最常见和最简单的形式,是构成关系数据库的基本元素。表的最简单形式是由行和列组成,分别都包含着数据。每个表都有一个表头和表体组成。表头定义表名和列名。表中的行被看作是文件中的记录,表中的列被看作是这些记录的字段。
记录
记录也被称为一行数据,是表里的一行。在关系型数据库的表里,一行数据时指一条完整的记录。
字段
字段是表里的一列,用于保存每条记录的特定信息。如顾客订单表的字段包括“订单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概述
下篇: ====》 MySQL——DML(数据库操纵语言)sql8.0版
下下篇: ====》MySQL——DQL(数据库查询语言)sql8.0版