02-DDL 数据定义语言
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 数据定义语言相关推荐
- mysql DDL数据定义语言
DDL数据定义语言 本节涉及MySQL关键字:create.alter(rename,add,chang,modify,drop).drop.delete.truncate等. -- 创建表: -- ...
- MySQL04:DDL数据定义语言
DDL数据定义语言 库和表的管理 一.库的管理 1.库的创建 语法: create database [if not exists]库名; 案例:创建库Books CREATE DATABASE IF ...
- sql 两大类 DDL数据定义语言 和DCL数据控制语言
SQL分为五大类: DDL:数据定义语言 DCL:数据控制语言 DML:数据的操纵语言 DTL:数据事务语言 DQL:数据查询语言. DDL (date definition lang ...
- 大数据技术之Hive 第4章 DDL数据定义语言
第4章 DDL数据定义语言 4.1 创建数据库 CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LO ...
- 数据库DDL数据定义语言
文章目录 DDL数据定义语言 1. 数据库相关操作 1.1 查看DBMS中已有的数据库 1.2 新建一个数据库 1.3 查看数据库信息 1.4 删除数据库 1.5 使用一个数据库(切换一个数据库) 2 ...
- 【数据库基础知识二】数据库DataBase(简称DB),数据库基本概念、DDL:数据定义语言,用来操作数据库对象、DML:数据操作语言,用来操作表中的数据
14天阅读挑战赛 目录 数据库基本概念 数据库DataBase(简称DB) 数据库管理系统Database management system(简称DBMS) 如何操作DBMS? 连接数据库的方式: ...
- MySQL基础--(2) [SQL(结构化查询语言), DDL(数据定义语言)]
目录 Sql(结构化查询语言) sql的概念以及特点 DDL(数据定义语言) 创建,删除,修改数据库. 数据库存储数据的特点 数据库表 数据库表中数据的数据类型 数据库表中数据的约束 创建表 设置修改 ...
- 七、MySQL DDL数据定义语言 学习笔记(库和表的创建、修改、删除详解 + 强化复习)
DDL语言 数据定义语言 库和表的管理: 一.库的管理: 创建.修改.删除 二.表的管理: 创建.修改.删除 创建: create 修改: alter 删除: drop 一.库的管理 1.库的创建: ...
- MySQL→数据库、启动连接数据库、SQL→DDL数据定义语言及数据类型、DML数据操作语言、DQL数据查询语言、数据库约束→主键、唯一、非空、默认、外键、SQL、三大范式及一多关系、视图、内外连接
MySQL连接退出命令 mysql –uroot -proot mysql –h127.0.0.1 –uroot -proot mysql --host=localhost --user=root - ...
- MySQL的DDL(数据定义语言)
笔记本 SQL语言一共分为4大类: DQL(数据查询语言). DDL(数据定义语言). DML(数据操纵语言). DCL (数据控制语言) 本文就介绍的是其中的DDL(Data Definit ...
最新文章
- mysql raw_Oracle中的Raw类型解释
- UI设计培训分享:ui的字体怎么正确设置?
- 【Redis学习笔记】2018-06-12 复制与传播
- mysql connector api_mysql8 参考手册-Connector/J使用X DevAPI进行连接压缩
- LeetCode 堆栈队列 —— 括号匹配(20、232、155)
- javascript 学习指南--语法
- 怎么用matlab做系统辨识,系统辨识大牛Ljung编写的MATLAB系统辨识使用手册
- 花西子背后的那个男人和他的五篇笔记
- EndNote安装教程与使用教程 关联加载word
- 2022-01-19:青蛙过河。 一只青蛙想要过河。 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。 青蛙可以跳上石子,但是不可以跳入水中。 给你石子的位置列
- 【欢迎来怼】 Beta发布事后诸葛亮会议
- 知识产权行业获客难?一招解决
- 中国经济坐标里,武汉城市圈何以堪当“第四极”?
- Windows Phone 8107更新方法
- GAMES101 作业0 环境配置 超详细小白教程
- CSS学习笔记7—盒子模型
- Matlab 去趋势处理
- java编程的一个猜数字有趣小游戏
- CF756div3 vp
- 计算机vfp二级sql,计算机二级vfp-SQL命令集合.doc