SQL之结构定义语言DDL(数据库的操作+数据库表的概述及操作)

SQL-DDL

DDL概述

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

常用的语句:create(创建);alter(更改);drop(删除);rename(重命名),由于sql语言不区分大小写,一些数据库的软件会自动把关键字便为大写,因此我们这里的语句都使用小写。

操作数据库

[ ]内的可以写也可以不写

1.创建数据库并设置编码格式

create database [if not exists] 数据库名 [charset utf8];

2.删除数据库

drop database [if exists]数据库名

3.修改字符集

alter database 数据库名 charset 编码格式;

在这里插入图片描述

数据库表

数据库表的基本概念

1、数据表

表(table)是数据存储的最常见和最简单的形式,是构成关系型数据库的基本元素。表的最简单形式是由行和列构成,每个表都有一个表头和表体,表头定义表名和列名。表中的行被看作文件中的记录,表中的列被看作是这些记录的字段。

2、记录

记录也被称为一行数据,是表里的一行。在关系型数据库的表里,一行数据是指一条完整的记录。

3、字段

字段是表里的一列,用于保存每条记录的特定信息。数据表的一列包含了特定字段的全部信息。

综上所述,当我们在设计一个具体的表之前,我们需要确定表的下列特征:

(1)表中的字段。

(2)字段的数据类型和长度。、

(3)哪些约束。

设计表

数据类型

1、char(n):长度为n的定长字符串;

2、varchar(n):最大长度为n的可变长字符串。

3、date:日期,包含年月日;

4、datetime:日期,包含年月日时分秒。

5、整数

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

6、浮点

类型 字节
float 4
double 8
浮点数据类型的使用
数据类型(M,D)
M:精度,数据的总长度
D:标度,小数点后的长度

7、其它

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

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

TEXT和BLOB的长度

TINY:最大长度255个字符(2^8-1)

BLOB或TEXT:最大长度65535(2^16-1)

Medium:最大长度16777215(2^24-1)

LongTEXT:最大长度4294967295(2^32-1)

约束

1、主键:在一张表中唯一的一条记录,不可为空,不能重复。

设置主键约束

primary key

2、不为空约束

not null

3、唯一性约束

unique

4、条件约束

check(条件)

5、外键约束

6、其它

(1)主键自动增长

auto_increment

(2)默认值

default'默认值'

(3)字段注释

comment'注释'

操作数据库表

创建、删除、修改

1、创建表语法

create table 表名(列名 数据类型 [约束] [默认值] [注释],.....)
/*
创建表
create table 表名(列名 数据类型 [约束] [默认值] [注释],.....)
*/
CREATE TABLE t_student(
	stu_id SMALLINT PRIMARY KEY AUTO_INCREMENT COMMENT'学号',
	stu_name VARCHAR(10) NOT NULL COMMENT'姓名',
	stu_sex CHAR(1) DEFAULT'男' COMMENT'性别',
	stu_age INT(3) CHECK(stu_age>18),
	stu_grade FLOAT(4,1) CHECK(stu_grade<=100 AND stu_grade>0) COMMENT'成绩'
	)

在这里插入图片描述

2、删除表语法

drop table [if exists] 表名;

3、修改表名

rename table 旧表名 to 新表名

4、复制表结构

create table 新表名 like 被复制的表名
/*
复制表结构
create table 新表名 like 被复制的表名
*/
CREATE TABLE t_stu LIKE t_student;

/*
修改表名
rename table 旧表名 to 新表名;
*/
RENAME TABLE t_stu TO t_sd;

/*
删除表
drop table [if exists] 表名;
*/
DROP TABLE IF EXISTS t_sd;
修改表结构

1、主键约束

添加主键约束
alter table 表名 add primary key(列名);
删除主键
alter table 表名 drop primary key;

2、设置自动增长

设置自动增长(比如序号的每一行自动+1)
alter table 表名 modify 列名 类型 auto_increment;

3、设置不能为空

设置字段不能为空
alter table 表名 modify 列名 类型 not null;
设置字段为空
alter table 表名 change column 列名 列名 类型 mull;

4、添加唯一约束

添加唯一性约束
alter table 表名 add unique(列名);
取消唯一性约束
alter table 表名 drop index 索引;

5、添加检查约束

添加检查约束,需要为这个约束起一个名,即约束名
alter table 表名 add constraint 约束名 check(条件);
删除检查约束,按照约束名删除
alter table 表名 drop check 约束名;

6、添加列

添加列到末尾
alter table 表名 add 列名 数据类型;
添加列到最前面
alter table 表名 add 列名 数据类型 first;
添加列到某一列的后面
alter table 表名 add 列名 数据类型 after 列名;

7、删除列

alter table 表名 drop 列名;

8、修改列名

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

9、修改列的数据类型

alter table 表名 modify 列名 新数据类型;
CREATE TABLE t_stu(
	stu_id SMALLINT COMMENT'学号',
	stu_name VARCHAR(10) COMMENT'姓名',
	stu_sex CHAR(1) COMMENT'性别',
	stu_age INT(3),
	stu_grade FLOAT(4,1) COMMENT'成绩'
	)
	
#添加主键约束
ALTER TABLE t_stu ADD PRIMARY KEY(stu_id);

#设置自动增长
ALTER TABLE t_stu MODIFY stu_id SMALLINT AUTO_INCREMENT;

#设置不能为空
ALTER TABLE t_stu MODIFY stu_age INT(3) NOT NULL;

#添加唯一性约束
ALTER TABLE t_stu ADD UNIQUE(stu_name);

#添加检查约束
ALTER TABLE t_stu ADD CONSTRAINT grade_check CHECK(stu_grade>0 AND stu_grade<=100);

#添加列
ALTER TABLE t_stu ADD stu_phone INT(11) AFTER stu_age;

#删除列
ALTER TABLE t_stu DROP stu_phone;

#修改列名
ALTER TABLE t_stu CHANGE stu_phone stu_ph INT(11);

#修改列的数据类型
ALTER TABLE t_stu MODIFY stu_ph INT(10);

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Lotus_dong/article/details/112631632