数据(结构)定义语言 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中的“对象”。
在我们需要设计一个表的时候。在创建之初,就应该先确定要设计表的以下特征: 表面(表星系)、表中的字段、字段中的数据类型和长度、都有哪些约束(添加数据的一些限制)
主键: 在一张表中代表唯一的一条记录,不能为空,不呢重复
约束:
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 列名 新数据类型;