写点什么

MySQL 数据库 DDL、DML 详解

用户头像
若尘
关注
发布于: 2021 年 03 月 05 日
MySQL数据库DDL、DML详解

一、MySQL 数据库数据类型

<1> MySQL 数据库中支持多种数据类型

  • 数值型

  • 字符型

  • 日期型


<2> 常用的数据类型

  • 整型

- int:整型,存储整数

- int(M): M 表示预期值,与存储大小和数值的范围无关

- id int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1

- id int(3) zerofill 001

- zerofill 零填充 会在左侧补 0

- tinyint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-128~127

- smallint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;32767/65535

- int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;21 亿

- bigint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;兆

- mediumint&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;八百多万/一千六百多万

  • 浮点型

- float[(M,D)]: 浮点型,存储小数

- salary float(6,2): 表示最多 6 位,小数占 2 位,最大存储数值为:9999.99

- double: 浮点型,小数

  • 字符型

- char(M): 固定长度的字符串类型 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name char(5) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'1 &nbsp;&nbsp;&nbsp;&nbsp;'

- varchar(M): 可变长度的字符串类型 (推荐)&nbsp;&nbsp;&nbsp;name varchar(5) '1'

- text: 大的字符串类型,4G 字符串

- blob:字节类型

  • 日期

- date: 日期类型,年月日 YYYY-MM-DD 日期格式

- time: 时间类型,时分秒 HH:mm:ss 时间格式

- year: 年份,年 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;YYYY 格式的年份值

- timestamp: 年月日 时分秒,时间戳 1970 年 1 月 1 日 0 时 0 分 0 秒 - 2037 年的某一个时刻 &nbsp;&nbsp; YYYYMMDDhhmmss

- datetime: 年月日 时分秒 &nbsp;&nbsp;YY-MM-DD hh:mm:ss

  • 注意:选择合适的数据类型,是数据库优化的一部分,short it better 原则


二、MySQL 数据库中的数据的使用

如何操作:编程语言

<1> SQL 概述

  • 结构化查询语言,可以用于查询和修改关系数据库的语言

  • SQL 语言,是数据库的核心语言,被 ISO 采纳为数据库语言国际标准,几乎所有的数据库都支持 SQL


<2> 组成

  • 数据定义语言(Data Definition Language, DDL): 用于管理和定义数据对象,包括数据库,数据表等

- create: 创建数据库和表

- drop: 删除表对象

- alter: 修改表结构

  • 数据操作语言(Data Manipulation Language, DML): 用于操作数据库对象中所包含的数据

- insert: 添加数据

- delete: 删除数据

- update: 修改数据

  • 数据查询语言(Data Query Language, DQL): 用于查询数据库对象中所包含的数据

- select: 查询数据

  • 事务控制语言(Transaction Control Language, TCL): 包括提交事务、事务回滚

- commit: 提交事务

- rollback: 事务回滚

- savepoint: 事务节点

  • 数据控制语言(Data Control Language, DCL): 用来管理数据库,包括管理权限以及数据更改

- grant: 授权

- revoke: 收回权限


1. 数据定义语言(DDL)

数据库的操作

###### <1> 创建数据库

  • 语法格式: creat database [if not exists] 数据库名称 [character set [=] 编码名称]; &nbsp;&nbsp;&nbsp;&nbsp;// '[]'表示可有可无

- 例如:

- create database ruochen;

- create database if not exists ruochen; // 忽视错误,显示警告


###### <2> 查看数据库

  • 语法格式

- show databases; // 查看所有的数据库

- show create database 数据库名称; // 查看某一个已经创建的数据库

- show warnings; // 查看警告

- create database db character set gbk; // 指定创建的数据库的字符集


###### <3> 修改数据库

  • 语法格式: alter database [if not exists] 数据库名称 [character set 新的编码名称]

- 例如:

- alter database db character set = utf8;


###### <4> 删除数据库

  • 语法格式:drop database 数据库名称;

- 例如:

- drop database ruochen; // 删除数据库


数据表的操作

###### <1> 创建数据表

  • 使用一个数据库: use 数据库名称

  • select database(); // 查看当前正在使用的数据库

  • 创建数据表语法:

- create table 表名(

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;字段名 &nbsp;&nbsp;字段类型 &nbsp;&nbsp;约束,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;字段名 &nbsp;&nbsp;字段类型 &nbsp;&nbsp;约束,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;......

)

- 例如:创建用户表

- ceeate table user(

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uid int,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username varchar(32),

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;password varchar(32),

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;birthday date,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sex enum('男', '女')

)


###### <2> 查询数据表

  • show tables; // 显示当前数据库中所有的数据表

  • show columns from 表名; // 查询某张表表结构

  • desc 表名; // 查询某张表的表结构


###### <3> 修改数据表

  • 修改表名

- 方式一: alter table 表名 rename [as|to] 新表名

- 例如:alter table user rename us;

- 方式二:rename table 旧表名 to 新表名 [,旧表名 to 新表名, ....];

- 例如:rename table user to us;

  • 添加列

- 语法格式:

- alter table 表名 add [column] 列名 列定义 [first|after 列名];

- 例如:

- alter table user add sal double after password; // 在指定的列后面添加新的列

- alter table user add phone varcher(32); // 默认在列的最后添加新的列

- alter table user add hobby varchar(32) first; // 在列的最前面添加新的列

  • 修改列定义

- 语法格式:

- alter table 表名 modify 列名 列定义 [first|after 列名];

- 例如:

- alter table user modify sex varchar(32) first;

  • 修改列名

- 语法格式:

- alter table 表名 change 列的列名 新的列名 新的列定义 [first|after 列名];

- 例如:

- alter table user change hobby address varchar(20) after sal;

  • 删除列

- 语法格式:

- alter table 表名 drop [column] 列名;

- 例如:

- alter table user drop phone;


###### <4> 删除数据表

  • 语法格式:

- drop table 表名;

  • 例如:

- drop table user;


2. 数据操作语言(DML)


<1> 插入操作

  • 语法格式:

- insert [into] 表名 [(列名 1,列名 2,....)] values|value (数值 1|表达式,数值 2|表达式,....);

  • 例如:

- insert into teacher (id, name) values ('1', 'xian zheng ta yi ge yi');

- insert into teacher value(2, '

- wangjianlin', 'xian zheng ta yi ge yi'); // 如果前面不指定字段,默认采用所有字段,按照列的顺序添加


<2> 删除操作

  • 语法格式:

- delete from 表名 where 条件;

  • 例如:

- delete from teacher where id=1; // 指定条件删除记录

- delete from teacher; // 不带条件删除,删除所有记录

  • 扩充:truncate table 表名; // 清空表,会清空表中所有数据

- 例如

- truncate table teacher;

  • 面试题:

- delete 删除与 truncate 有什么区别?

- 删除方式

- delete:一条一条的删除,不清空 auto_increment 记录数

- truncate:直接将表中的数据进行清空, auto_increment 自增将被重置,从新开始


<3> 修改操作

  • 语法格式:

- update 表名 set 列名 1=数值,列名 2=数值,.... where 条件;

- 例如:

- update teacher set name='xiaosan',note='ming nian zai zhao yi ge' where id=1; // 带条件修改,修改指定记录

- update teacher set name='xiaosi'; // 不带条件,修改表中所有数据


发布于: 2021 年 03 月 05 日阅读数: 22
用户头像

若尘

关注

还未添加个人签名 2021.01.11 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
老兄 文章格式乱了!
2021 年 03 月 05 日 14:51
回复
没有更多了
MySQL数据库DDL、DML详解