DDL(Data Definition Language):数据定义语言,用于库和表的创建、修改、删除。主要包括CREATE、DROP、ALTER语句。

1、对数据库的操作


-- 创建数据库
create database [if not exists] 数据库名 [character set 字符集名]; -- 删除数据库
drop database [if exists] 数据库名;-- 修改数据库的字符集
alter database 数据库名 character set gbk;

示例:

-- 创建一个数据库,取名为mysqlstudy
CREATE DATABASE mysqlstudy;-- 查看创建数据库的语句
SHOW CREATE DATABASE mysqlstudy;
/*
CREATE DATABASE `mysqlstudy` /*!40100 DEFAULT CHARACTER SET latin1 */
*/-- 修改数据库的字符集
ALTER DATABASE mysqlstudy CHARACTER SET utf8;--  查看是字符集否修改成功
SHOW CREATE DATABASE mysqlstudy;
/*
CREATE DATABASE `mysqlstudy` /*!40100 DEFAULT CHARACTER SET utf8 */  ok字符集编码已经修改成功了!
*/

2、常用的数据类型


数值

  • tinyint,非常小的数据,1个字节。(byte)

  • smallint,较小的数据,2个字节。(short)

  • mediumint,中等大小的数据,3个字节。

  • int,标准的整数,4个字节。

  • bigint,较大的整数,8个字节。 (long)

  • float,单精度浮点数,4个字节。

  • double,双精度浮点数,8个字节。

  • decimal,字符串形式的浮点数 (用于金融计算)。

字符串

  • char,固定长字符串,比较耗费空间,长度大小:0~255。
  • varchar,可变字符串,长度大小:0~65535。(String)
  • tinytext,微型文本,2^8-1。
  • text,文本串,2^16-1。(保存大文本)

时间日期

  • date,日期,YYYY-MM-DD。
  • time,时间,HH:mm:ss。
  • datetime,最常用的时间格式,YYYY-MM-DD HH:mm:ss。
  • timestamp,时间戳,1970.1.1到现在的毫秒数。
  • year,年份。

3、对表的操作


表(table)是数据库的基本组成单元,所以数据都以表的形式组织,目的是可读性强。

  • 表分为行和列,行:数据/记录(data),列:字段(column)。
  • 字段属性包括:字段名,数据类型,相关的约束。
-- 创建数据表
create table [if not exists] `表名`(`字段名` 列类型 [属性] [索引] [注释], -- 使用``来区分mysql自带的关键字...`字段名` 列类型 [属性] [索引] [注释]
)[表类型] [字符集设置];-- 删除数据表
drop table [if exists] 表名;-- 添加字段
alter table `表名` add(`字段名1` 字段类型1,...,`字段名n`,字段类型n);-- 修改字段类型
alter table `表名` modify `字段名` 字段的新类型;-- 同时修改字段名和字段类型
alter table `表名` change `字段名` `新字段名` 新字段类型;-- 删除字段
alter table `表名` drop 字段名;-- 修改表名
alter table `表名` rename to `新表名`;

示例:

-- 创建学生信息表(学号,姓名,密码,性别,出生日期,家庭地址,邮箱)
CREATE TABLE IF NOT EXISTS `student` (`id` INT ( 4 ) NOT NULL AUTO_INCREMENT COMMENT '学号',`name` VARCHAR ( 30 ) NOT NULL DEFAULT '匿名' COMMENT '姓名',`pwd` VARCHAR ( 20 ) NOT NULL DEFAULT '123456' COMMENT '密码',`sex` VARCHAR ( 2 ) NOT NULL DEFAULT '男' COMMENT '性别',`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',`address` VARCHAR ( 100 ) DEFAULT NULL COMMENT '家庭地址',`email` VARCHAR ( 50 ) DEFAULT NULL COMMENT '邮箱',PRIMARY KEY ( `id` ) -- 把id设置主键) ENGINE = INNODB DEFAULT CHARSET = utf8;-- 设置引擎和字符编码

执行结果如下:

查看一下表结构:

4、字段的属性


  • Unsigned:无符号的,声明的数据不允许为负数。 如 Unsigned tinyint,范围:0~255(128+127)。
  • zerofill:0填充的,不足的位数使用0来填充。 如 int(3) ,5 — 005。
  • Auto_InCrement:主键自增策略,可以定义起始值和步长。
  • not null:如果不给它赋值,就会报错。
  • null:如果不写值,默认就是null。
  • default:设置默认的值。
  • comment:注释。

5、字段的索引


  • 主键索引(primary key)
  • 唯一索引(unique key)
  • 全文索引(fulltext index)
  • 普通索引(index)

6、数据表的类型(引擎)


名称 MYISAM INNODB
事务支持 不支持 支持
外键约束 不支持 支持
数据行锁定 不支持 支持
全文索引 支持 不支持
表空间的大小 较小 较大,约为MYISAM的2倍

适用场景:

  • MYISAM,节约空间,速度较快。
  • INNODB,安全性高,事务的处理,多用户操作数据表

7、在物理空间存储的位置


MySQL中的所有数据库文件都存储在data目录下:

MySQL引擎在物理文件上的区别:

1、InnoDB类型数据表只有一个 *.frm文件 , 以及上一级目录的ibdata1文件。

2、MyISAM类型数据表对应三个文件 :

  • *.frm 表结构的定义文件。
  • *.MYD 数据文件 ( data )。
  • *.MYI 索引文件 ( index )。

8、设置数据表的字符集编码


因为编码不匹配就会出现乱码,有的编码不能存储汉字。

1、写建表语句时加上字符编码的设置,如: charset=utf8。
2、在my.ini文件上配置一些参数。

9、外键(foreign key)


作用:用于限制两个表的关系,保证该字段的值必须来自于主表的关联列的值。

使用:在子表添加外键约束,然后引用主表中某个字段。

示例1:在创建表的时候,添加约束

-- 创建年级表(年级编号,年级名称)
CREATE TABLE `grade`(`gradeid` INT(4) NOT NULL AUTO_INCREMENT COMMENT '年级id',`gradename` VARCHAR(50) NOT NULL COMMENT '年级名称',PRIMARY KEY(`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;-- 创建学生信息表(学号,姓名,密码,性别,出生日期,学生年级,家庭地址,邮箱)
CREATE TABLE IF NOT EXISTS `student` (`id` INT ( 4 ) NOT NULL AUTO_INCREMENT COMMENT '学号',`name` VARCHAR ( 30 ) NOT NULL DEFAULT '匿名' COMMENT '姓名',`pwd` VARCHAR ( 20 ) NOT NULL DEFAULT '123456' COMMENT '密码',`sex` VARCHAR ( 2 ) NOT NULL DEFAULT '男' COMMENT '性别',`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',`gradeid` INT(10) NOT NULL  COMMENT '学生年级',`address` VARCHAR ( 100 ) DEFAULT NULL COMMENT '家庭地址',`email` VARCHAR ( 50 ) DEFAULT NULL COMMENT '邮箱',PRIMARY KEY ( `id` ), -- 把id设置主键KEY `FK_gradeid` (`gradeid`), -- 把gradeid设置外键,外键名为FK_gradeidCONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`) -- 给这个外键添加约束(CONSTRAINT),然后执行引用(REFERENCES)) ENGINE = INNODB DEFAULT CHARSET = utf8;-- 设置引擎和字符编码

注:如果要删除有外键关系的表,必须先删除引用的别人的表(从表),再删除被引用的表(主表)。

示例2:先创建表,后添加添加外键约束

- 创建年级表(年级编号,年级名称)
CREATE TABLE `grade`(`gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级id',`gradename` VARCHAR(50) NOT NULL COMMENT '年级名称',PRIMARY KEY(`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;-- 创建学生信息表(学号,姓名,密码,性别,出生日期,学生年级,家庭地址,邮箱)
CREATE TABLE IF NOT EXISTS `student` (`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',`sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',`gradeid` INT(10) NOT NULL  COMMENT '学生年级',`address` VARCHAR(100) DEFAULT NULL COMMENT '家庭地址',`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',PRIMARY KEY(`id`) -- 将id设置主键
)ENGINE=INNODB DEFAULT CHARSET=utf8; -- 给学生表添加外键约束
ALTER TABLE `student`
ADD
CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);

查看表的外键信息:

阿里手册相关约束:

02-DDL 数据定义语言相关推荐

  1. mysql DDL数据定义语言

    DDL数据定义语言 本节涉及MySQL关键字:create.alter(rename,add,chang,modify,drop).drop.delete.truncate等. -- 创建表: -- ...

  2. MySQL04:DDL数据定义语言

    DDL数据定义语言 库和表的管理 一.库的管理 1.库的创建 语法: create database [if not exists]库名; 案例:创建库Books CREATE DATABASE IF ...

  3. sql 两大类 DDL数据定义语言 和DCL数据控制语言

    SQL分为五大类: DDL:数据定义语言   DCL:数据控制语言     DML:数据的操纵语言  DTL:数据事务语言  DQL:数据查询语言. DDL (date definition lang ...

  4. 大数据技术之Hive 第4章 DDL数据定义语言

    第4章 DDL数据定义语言 4.1 创建数据库 CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LO ...

  5. 数据库DDL数据定义语言

    文章目录 DDL数据定义语言 1. 数据库相关操作 1.1 查看DBMS中已有的数据库 1.2 新建一个数据库 1.3 查看数据库信息 1.4 删除数据库 1.5 使用一个数据库(切换一个数据库) 2 ...

  6. 【数据库基础知识二】数据库DataBase(简称DB),数据库基本概念、DDL:数据定义语言,用来操作数据库对象、DML:数据操作语言,用来操作表中的数据

    14天阅读挑战赛 目录 数据库基本概念 数据库DataBase(简称DB) 数据库管理系统Database management system(简称DBMS) 如何操作DBMS? 连接数据库的方式: ...

  7. MySQL基础--(2) [SQL(结构化查询语言), DDL(数据定义语言)]

    目录 Sql(结构化查询语言) sql的概念以及特点 DDL(数据定义语言) 创建,删除,修改数据库. 数据库存储数据的特点 数据库表 数据库表中数据的数据类型 数据库表中数据的约束 创建表 设置修改 ...

  8. 七、MySQL DDL数据定义语言 学习笔记(库和表的创建、修改、删除详解 + 强化复习)

    DDL语言 数据定义语言 库和表的管理: 一.库的管理: 创建.修改.删除 二.表的管理: 创建.修改.删除 创建: create 修改: alter 删除: drop 一.库的管理 1.库的创建: ...

  9. MySQL→数据库、启动连接数据库、SQL→DDL数据定义语言及数据类型、DML数据操作语言、DQL数据查询语言、数据库约束→主键、唯一、非空、默认、外键、SQL、三大范式及一多关系、视图、内外连接

    MySQL连接退出命令 mysql –uroot -proot mysql –h127.0.0.1 –uroot -proot mysql --host=localhost --user=root - ...

  10. MySQL的DDL(数据定义语言)

    笔记本 SQL语言一共分为4大类: DQL(数据查询语言). DDL(数据定义语言). DML(数据操纵语言). DCL (数据控制语言)     本文就介绍的是其中的DDL(Data Definit ...

最新文章

  1. mysql raw_Oracle中的Raw类型解释
  2. UI设计培训分享:ui的字体怎么正确设置?
  3. 【Redis学习笔记】2018-06-12 复制与传播
  4. mysql connector api_mysql8 参考手册-Connector/J使用X DevAPI进行连接压缩
  5. LeetCode 堆栈队列 —— 括号匹配(20、232、155)
  6. javascript 学习指南--语法
  7. 怎么用matlab做系统辨识,系统辨识大牛Ljung编写的MATLAB系统辨识使用手册
  8. 花西子背后的那个男人和他的五篇笔记
  9. EndNote安装教程与使用教程 关联加载word
  10. 2022-01-19:青蛙过河。 一只青蛙想要过河。 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。 青蛙可以跳上石子,但是不可以跳入水中。 给你石子的位置列
  11. 【欢迎来怼】 Beta发布事后诸葛亮会议
  12. 知识产权行业获客难?一招解决
  13. 中国经济坐标里,武汉城市圈何以堪当“第四极”?
  14. Windows Phone 8107更新方法
  15. GAMES101 作业0 环境配置 超详细小白教程
  16. CSS学习笔记7—盒子模型
  17. Matlab 去趋势处理
  18. java编程的一个猜数字有趣小游戏
  19. CF756div3 vp
  20. 计算机vfp二级sql,计算机二级vfp-SQL命令集合.doc

热门文章

  1. 微信小程序-云开发3云函数、云存储
  2. 如何使用命令查看计算机sid,Sid 命令
  3. 网站备案各个管局的审核时间多久?
  4. HTTP3 正式发布,很快哦
  5. DEDE源码分析与学习--index.php文件解读
  6. 个人wiki搭建资料整理
  7. Android 权限 翻译
  8. 用Python爬取文章,并转PDF格式电子书
  9. RS码FEC机制的实现方法(基于Luigi Rizzo的代码)
  10. 作网站需要服务器吗,如何制作网站服务器