目录

  • 前言
  • DDL
    • 概述
    • 库的管理
    • 表的管理
    • 数据类型
      • (一)整型
      • (二)小数
      • (三)字符型
      • (四)日期型
    • 常见约束
      • 概念
      • 语法
  • DML
    • 概述
    • 插入
    • 修改
    • 删除

前言

各位看官们,小tu又来给各位奉上新鲜出炉的博客了~

本篇博客呢,主要讲了MySQL里面的 DDLDML 语言,DDL语言又叫做数据定义语言,DML语言又称为数据操纵语句。阅读了本篇博文后,相信读者们都能对DDL和DML有很大程度的了解啦,也可以对它们进行攻略了!

觉得博主写的还不错的看官们,就点上你们的赞和评论吧~


DDL

概述

DDLData Definition Languages )语句:数据定义语言,这些语句定义了不同的数据段,数据库,表,列,索引等数据库对象。常用的语句关键字主要包括 create,drop,alter 等。

库的管理

1、库的创建

create database  [if not exists]库名;

2、库的修改

库的库名是不能用语句进行修改的,只有去存储数据的文件夹进行修改更改库的字符集:
alter database 库名 character set 字符集名称;

3、库的删除

drop database if exists 库名;


表的管理

1.表的创建 ★

create table 表名(列名 列的类型【(长度) 约束】,列名 列的类型【(长度) 约束】,列名 列的类型【(长度) 约束】,...列名 列的类型【(长度) 约束】
)

2.表的修改

修改列的数据:

添加新列 | 删除列 | 修改列的类型或约束 | 修改列名
add     | drop   | modify            | change column
alter table 表名 add | drop | modify | change column 列名 【列类型 约束】;

修改表名:

alter table 表名 rename to  列名 【列类型 约束】;

3.表的删除

drop table 【if exists】表名

4.表的复制

(1)仅仅复制表的结构

代码举例:CREATE TABLE copy LIKE author;

(2)复制表的结构+数据

代码举例:CREATE TABLE copy2 SELECT * FROM author;

(3)只复制部分数据

代码举例:CREATE TABLE copy3SELECT id,au_nameFROM author WHERE nation='中国';

(4)仅仅复制某些字段

代码举例:CREATE TABLE copy4 SELECT id,au_nameFROM authorWHERE 0;


数据类型

  • 数值型

     整形小数:定点数浮点数
    
  • 字符型

  • 日期型

(一)整型


分类:

tinyint、smallint、mediumint、int/integer、bigint
1        2         3          4            8

特点:

① 如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加unsigned关键字
② 如果插入的数值超出了整型的范围,会报out of range异常,并且插入临界值
③ 如果不设置长度,会有默认的长度
④长度代表了显示的最大宽度,如果不够会用0在左边填充,但必须搭配zerofill使用!

(二)小数


分类:

  • 浮点型

    float(M,D)
    double(M,D)

  • 定点型

    dec(M,D)
    decimal(M,D)
    注意:其实 decdecima 是一样的

特点:


M:整数部位+小数部位
D:小数部位
如果超过范围,则插入临界值


M和D都可以省略
如果是decimal,则M默认为10,D默认为0
如果是float和double,则会根据插入的数值的精度来决定精度

③定点型的精确度较高,如果要求插入数值的精度较高如货币运算等则考虑使用


原则: 所选择的类型越简单越好,能保存数值的型越小越好

(三)字符型


分类:

  • 较短的文本:char 、varchar

  • 较长的文本:text 、blob(较大的二进制)

  • 其他:

    binary和varbinary用于保存较短的二进制
    enum用于保存枚举
    set用于保存集合

特点:

 写法        M的意思                         特点              空间的耗费    效率char(M)         最大的字符数,可以省略,默认为1      固定长度的字符      比较耗费      高varchar(M)      最大的字符数,不可以省略         可变长度的字符      比较节省      低

(四)日期型


分类:

  • date 保存日期
  • time 只保存时间
  • year只保存年
  • datetime 保存日期+时间
  • timestamp 保存日期+时间


常见约束

概念

定义: 一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性

分类:(六大约束)

  • NOT NULL:非空,用于保证该字段的值不能为空
    比如姓名、学号等
  • DEFAULT:默认,用于保证该字段有默认值
    比如性别
  • PRIMARY KEY:主键,用于保证该字段的值具有唯一性,并且非空
    比如学号、员工编号等
  • UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空
    比如座位号
  • CHECK:检查约束【mysql中不支持】
    比如年龄、性别
  • FOREIGN KEY:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值
    在从表添加外键约束,用于引用主表中某列的值
    比如学生表的专业编号,员工表的部门编号,员工表的工种编号

添加约束的时机:

  • 创建表时
  • 修改表时


约束的添加分类:

  • 列级约束:六大约束语法上都支持,但外键约束没有效果
  • 表级约束:除了非空、默认,其他的都支持


主键和唯一的大对比:

        保证唯一性   是否允许为空    一个表中可以有多少个   是否允许组合
主键      √           ×             至多有1个           √,但不推荐
唯一      √           √             可以有多个          √,但不推荐


外键的特点:

  • 要求在从表设置外键关系
  • 从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求
  • 主表的关联列必须是一个key(一般是主键或唯一)
  • 插入数据时,先插入主表,再插入从表,删除数据时,先删除从表,再删除主表

语法

常用格式:

CREATE TABLE 表名(字段名 字段类型 列级约束,字段名 字段类型,表级约束
)


补充:

查看stuinfo中的所有索引,包括主键、外键、唯一

SHOW INDEX FROM 表名;


创建表时添加约束:

  • 添加列级约束

    直接在字段名和类型后面追加 约束类型即可。
    只支持:默认、非空、主键、唯一

  • 添加表级约束

    语法:在各个字段的最下面

    【constraint 约束名】 约束类型(字段名)
    
  • 通用的写法:(★)

    代码举例 :

    CREATE TABLE IF NOT EXISTS stuinfo(id INT PRIMARY KEY,stuname VARCHAR(20),sex CHAR(1),age INT DEFAULT 18,seat INT UNIQUE,majorid INT,CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id));
    


修改表时添加约束:

  • 添加列级约束

    alter table 表名 modify column 字段名 字段类型 新约束;
    
  • 添加表级约束

    alter table 表名 add 【constraint 约束名】 约束类型(字段名) 【外键的引用】;
    


修改表时删除约束:与添加约束的约束相反

代码举例:

非空约束

添加非空约束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20)  NOT NULL;
删除非空约束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NULL;


默认约束

添加默认约束
ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;
删除默认约束
ALTER TABLE stuinfo MODIFY COLUMN age INT ;



DML

概述

DMLData Manipulation Language )语句:数据操纵语句,用于 添加删除更新查询 数据库记录,并检查数据完整性。常用的语句关键字主要包括 insert,delete,update,select 等。

插入

方式一:经典的插入

语法:

insert into 表名(列名,...) values(值1,...);

特点:

1. 插入的值的类型要与列的类型一致或兼容2. 不可以为null的列必须插入值。可以为null的列如何插入值?可以在对应的值处插入null在写列名的时候不写可以为null的列3. 列的顺序是否可以调换
4. 列数和值的个数必须一致
5. 可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致


方式二:

语法:

insert into 表名 set 列名=值,列名=值,...


两种方式大pk (★)

1、方式一支持插入多行,方式二不支持

代码举例:

INSERT INTO beauty
VALUES(23,'唐艺昕1','女','1990-4-23','1898888888',NULL,2)
,(24,'唐艺昕2','女','1990-4-23','1898888888',NULL,2)
,(25,'唐艺昕3','女','1990-4-23','1898888888',NULL,2);

2、方式一支持子查询,方式二不支持

代码举例:

INSERT INTO beauty(id,NAME,phone)
SELECT 26,'宋茜','11809866';

注意,上述代码是先执行了select语句,然后将这一串数据添加到指定表beauty中,故这里是支持子查询的


修改

1.修改单表的记录(★)

语法:

update 表名
set 列=新值,列=新值,...
where 筛选条件;


2.修改多表的记录【补充】

sql92语法:

update 表1 别名,表2 别名
set 列=值,...
where 连接条件
and 筛选条件;

sql99语法:

update 表1 别名
inner|left|right join 表2 别名
on 连接条件
set 列=值,...
where 筛选条件;


删除

方式一:delete

1、单表的删除【★】

delete from 表名 where 筛选条件

2、多表的删除【补充】

sql92语法:

delete 表1的别名,表2的别名
from 表1 别名,表2 别名
where 连接条件
and 筛选条件;

sql99语法:

delete 表1的别名,表2的别名
from 表1 别名
inner|left|right join 表2 别名 on 连接条件
where 筛选条件;


方式二:truncate

语法:

truncate table 表名;   (相当于清空)


delete PK truncate【面试题★】

1.delete 可以加where 条件,truncate不能加2.truncate删除,效率高一丢丢3.假如要删除的表中有自增长列:如果用delete删除后,再插入数据,自增长列的值从断点开始,而truncate删除后,再插入数据,自增长列的值从1开始。4.truncate删除没有返回值,delete删除有返回值5.truncate删除不能回滚,delete删除可以回滚

【如何打败“MySQL“的左膀右臂?知己知彼,百战百胜】——熟读DDL和DML两兄弟“内心“相关推荐

  1. MySql基础篇---003 SQL之DDL、DML、DCL使用篇:创建和管理表 ,数据处理之增删改,MySQL数据类型精讲 ,约束:联合主键

    第10章_创建和管理表 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数据的第一步.只有正确地 ...

  2. 【测试面试】自我分析+功能+接口自动化+性能测试面试题(大全),知己知彼百战百胜......

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

  3. sqlmap基础使用手册 ─=≡Σ(((つ•̀ω•́)つ 知己知彼百战百胜 web安全

    文章目录 sqlmap简介 sqlmap特性 sqlmap下载安装与启动 测试环境 sqlmap基础使用 输出详细程度 sqlmap直连数据库 sqlmap对指定网址进行SQL注入 sqlmap常用文 ...

  4. MySQL 5.6中如何定位DDL被阻塞的问题

    在上一篇文章<MySQL 5.7中如何定位DDL被阻塞的问题>中,对于DDL被阻塞问题的定位,我们主要是基于MySQL 5.7新引入的performance_schema.metadata ...

  5. oracle ddl会被什么阻塞,MySQL Online DDL与DML并发阻塞关系总结

    MySQL Online DDL与DML并发阻塞关系总结MySQL DDL操作执行的三种方式 1,INPLACE,在进行DDL操作时,不影响表的读&写,可以正常执行表上的DML操作,避免与CO ...

  6. mysql ddl dcl_MySQL常用DDL、DML、DCL语言整理(附样例)

    在介绍这些SQL语言之前,先罗列一下mysql的常用数据类型和数据类型修饰,供查询参考 后面的带数字表示此类型的字段长度 数值型: TINYINT 1 ,SMALLINT 2,MEDIUMINT 3 ...

  7. MySQL流浪记(四)—— DDL和DML区别与介绍

    DDL与DML的区别 DDL:数据定义语言,对于数据库.表.图.索引等进行操作. 具体操作有:CREATE(创建).ALTER(修改).DROP/TRUNCATE(删除) DML:数据操纵语言,对表中 ...

  8. MySQL精选 | 枚举类型ENUM的DDL变更测试

    导读 本文深入介绍枚举类型EUNM和集合类型SET.测试基于InnoDB存储引擎上,对MySQL数据库枚举类型ENUM的字段进行DDL变更操作,是否需要重新创建表呢?对数据库的事务处理有何影响?对数据 ...

  9. mysql 数据库里查询语句中不等于的两种写法

    mysql 数据库里查询语句中不等于的两种写法 ps:本人亲测,阿里云2核4G5M的服务器性价比很高,新用户一块多一天,老用户三块多一天,最高可以买三年,感兴趣的可以戳一下:阿里云折扣服务器 1.my ...

最新文章

  1. 关押罪犯洛谷P1525
  2. 【Python翻屏软件】英文1秒翻,水准堪比专九,这下考级有救了。
  3. 【练习】使用事务控制语句
  4. api签名_使用签名保护基于HTTP的API
  5. [机器学习-实战篇]Imdb数据集情感分析之贝叶斯
  6. VMware vSphere HA深入解析
  7. 单片机单口不可用或被占用_单片机为什么一直用C语言,不用其他编程语言?只有学过的知道...
  8. su自带模型库怎么打开_SU超强外挂!建筑模型一键生成,还能任意编辑
  9. Docker Swarm架构、特性与基本实践
  10. java 同步块(Java Synchronized Blocks)
  11. ant jsch.jar - 一个错误及解决办法
  12. CListCtrl 类中InsertItem, InsertColumn, SetItemText 的使用
  13. 谁手握账本?趣讲 ZK 的内存模型
  14. 微信朋友圈评论功能测试
  15. SAP HANA TRUNCATE清空数据库表
  16. CCA分析图如何解读_欧易/鹿明生物云平台:点点鼠标,轻松完成RDA/CCA分析
  17. win11无法打开.bat文件、打开.bat文件闪退解决方案,星露谷smapi mod安装时,.bat安装文件一闪而过
  18. http协议规定的数据格式
  19. ftp文件缓存服务器,ftp服务器上的缓存在哪
  20. Torque 4.0 下载、安装、配置、提交作业、列队id归零

热门文章

  1. xubuntu系统偶发自动登出
  2. iptables整理总结
  3. 微信小程序毕业设计论文居家养老+后台管理系统项目源代码
  4. HTML5前端页面设计,HTML5网页前端设计
  5. mysql的exists与inner join 和 not exists与 left join 性能差别惊人
  6. 有一种感动叫ACM(WJMZBMR在成都赛区开幕式上的讲话)
  7. 继在中国开设AI中心两个月后 Google这次又将一个重大研究项目转向法国
  8. 手机怎样和宽带连接无线路由器设置路由器连接服务器,手机APP设置无线路由器拨号上网步骤...
  9. 神经主题模型及应用(Neural Topic Model)
  10. Fine-grained Detection —— DCL