【如何打败“MySQL“的左膀右臂?知己知彼,百战百胜】——熟读DDL和DML两兄弟“内心“
目录
- 前言
- DDL
- 概述
- 库的管理
- 表的管理
- 数据类型
- (一)整型
- (二)小数
- (三)字符型
- (四)日期型
- 常见约束
- 概念
- 语法
- DML
- 概述
- 插入
- 修改
- 删除
前言
各位看官们,小tu又来给各位奉上新鲜出炉的博客了~
本篇博客呢,主要讲了MySQL里面的 DDL 和 DML 语言,DDL语言又叫做数据定义语言,DML语言又称为数据操纵语句。阅读了本篇博文后,相信读者们都能对DDL和DML有很大程度的了解啦,也可以对它们进行攻略了!
觉得博主写的还不错的看官们,就点上你们的赞和评论吧~
DDL
概述
DDL( Data 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)
注意:其实 dec 和 decima 是一样的
特点:
①
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
概述
DML( Data 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两兄弟“内心“相关推荐
- MySql基础篇---003 SQL之DDL、DML、DCL使用篇:创建和管理表 ,数据处理之增删改,MySQL数据类型精讲 ,约束:联合主键
第10章_创建和管理表 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数据的第一步.只有正确地 ...
- 【测试面试】自我分析+功能+接口自动化+性能测试面试题(大全),知己知彼百战百胜......
目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...
- sqlmap基础使用手册 ─=≡Σ(((つ•̀ω•́)つ 知己知彼百战百胜 web安全
文章目录 sqlmap简介 sqlmap特性 sqlmap下载安装与启动 测试环境 sqlmap基础使用 输出详细程度 sqlmap直连数据库 sqlmap对指定网址进行SQL注入 sqlmap常用文 ...
- MySQL 5.6中如何定位DDL被阻塞的问题
在上一篇文章<MySQL 5.7中如何定位DDL被阻塞的问题>中,对于DDL被阻塞问题的定位,我们主要是基于MySQL 5.7新引入的performance_schema.metadata ...
- oracle ddl会被什么阻塞,MySQL Online DDL与DML并发阻塞关系总结
MySQL Online DDL与DML并发阻塞关系总结MySQL DDL操作执行的三种方式 1,INPLACE,在进行DDL操作时,不影响表的读&写,可以正常执行表上的DML操作,避免与CO ...
- mysql ddl dcl_MySQL常用DDL、DML、DCL语言整理(附样例)
在介绍这些SQL语言之前,先罗列一下mysql的常用数据类型和数据类型修饰,供查询参考 后面的带数字表示此类型的字段长度 数值型: TINYINT 1 ,SMALLINT 2,MEDIUMINT 3 ...
- MySQL流浪记(四)—— DDL和DML区别与介绍
DDL与DML的区别 DDL:数据定义语言,对于数据库.表.图.索引等进行操作. 具体操作有:CREATE(创建).ALTER(修改).DROP/TRUNCATE(删除) DML:数据操纵语言,对表中 ...
- MySQL精选 | 枚举类型ENUM的DDL变更测试
导读 本文深入介绍枚举类型EUNM和集合类型SET.测试基于InnoDB存储引擎上,对MySQL数据库枚举类型ENUM的字段进行DDL变更操作,是否需要重新创建表呢?对数据库的事务处理有何影响?对数据 ...
- mysql 数据库里查询语句中不等于的两种写法
mysql 数据库里查询语句中不等于的两种写法 ps:本人亲测,阿里云2核4G5M的服务器性价比很高,新用户一块多一天,老用户三块多一天,最高可以买三年,感兴趣的可以戳一下:阿里云折扣服务器 1.my ...
最新文章
- 关押罪犯洛谷P1525
- 【Python翻屏软件】英文1秒翻,水准堪比专九,这下考级有救了。
- 【练习】使用事务控制语句
- api签名_使用签名保护基于HTTP的API
- [机器学习-实战篇]Imdb数据集情感分析之贝叶斯
- VMware vSphere HA深入解析
- 单片机单口不可用或被占用_单片机为什么一直用C语言,不用其他编程语言?只有学过的知道...
- su自带模型库怎么打开_SU超强外挂!建筑模型一键生成,还能任意编辑
- Docker Swarm架构、特性与基本实践
- java 同步块(Java Synchronized Blocks)
- ant jsch.jar - 一个错误及解决办法
- CListCtrl 类中InsertItem, InsertColumn, SetItemText 的使用
- 谁手握账本?趣讲 ZK 的内存模型
- 微信朋友圈评论功能测试
- SAP HANA TRUNCATE清空数据库表
- CCA分析图如何解读_欧易/鹿明生物云平台:点点鼠标,轻松完成RDA/CCA分析
- win11无法打开.bat文件、打开.bat文件闪退解决方案,星露谷smapi mod安装时,.bat安装文件一闪而过
- http协议规定的数据格式
- ftp文件缓存服务器,ftp服务器上的缓存在哪
- Torque 4.0 下载、安装、配置、提交作业、列队id归零
热门文章
- xubuntu系统偶发自动登出
- iptables整理总结
- 微信小程序毕业设计论文居家养老+后台管理系统项目源代码
- HTML5前端页面设计,HTML5网页前端设计
- mysql的exists与inner join 和 not exists与 left join 性能差别惊人
- 有一种感动叫ACM(WJMZBMR在成都赛区开幕式上的讲话)
- 继在中国开设AI中心两个月后 Google这次又将一个重大研究项目转向法国
- 手机怎样和宽带连接无线路由器设置路由器连接服务器,手机APP设置无线路由器拨号上网步骤...
- 神经主题模型及应用(Neural Topic Model)
- Fine-grained Detection —— DCL