MySQL之浅谈DDL和DML

目录
  • 前言
  • 一、DDL
    • 1.1 数据库操作
    • 1.2 数据表操作
    • 1.3 常用数据类型
    • 1.4 约束
    • 1.5 标识列
  •  二、DML
    • 2.1 添加数据
    • 2.2 修改数据
    • 2.3 删除数据

前言

        在前面的文章中我们认识了MySQL,以及熟悉了如何使用MySQL的查询语句

        数据操作增删查改中的查我们已经介绍了,那么本篇文章将会介绍剩下的增删改以及数据库和表的常用操作,比如创建、删除、修改。

一、DDL

        可能有看官老爷会问,什么是DDL啊?这里博主简单介绍一下,DDL全名Data Define Languge,从英文上我们可以很轻松的翻译过来叫数据定义语言,即用于库和表的创建、修改、删除。

1.1 数据库操作

1.1.1 创建与使用数据库

#创建数据库
CREATE DATABASE 数据库库名;

#创建数据库,先判断数据库是否存在,再创建
CREATE DATABASE IF NOT EXISTS 数据库库名;

#创建数据库,并指定字符集
CREATE DATABASE 数据库库名 CHARACTER SET 字符集;

#使用数据库
USE 数据库库名;

1.1.2 查询数据库

#查询所有数据库的名称
SHOW DATABASES;

#查询某个数据库的字符集:查询某个数据库的创建语句
SHOW CREATE DATABASE 数据库库名;

#查询正在使用的数据库名
SELECT DATABASE();

1.1.3  修改数据库的字符集

#修改数据库的字符集
ALTER DATABASE 数据库库名 CHARACTER SET 字符集名称;

1.1.4 删除数据库

#删除数据库
DROP DATABASE 数据库库名;

#判断数据库是否存在,再删除
DROP DATABASE IF EXISTS 数据库库名;

1.2 数据表操作

1.2.1 创建数据表

#创建数据表
CREATE TABLE 表名(
	列1 数据类型 【约束】,
	列2 数据类型 【约束】,
	...
	列n 数据类型 【约束】
);

       :最后一句的时候不用加逗号。

1.2.2 查询数据表

#查询当前数据库中的所有表
SHOW TABLES;

#查询某个数据库中的所有表
SHOW TABLES FROM 数据库库名;

#查询表结构
DESC 表名;

1.2.3 修改数据表

#修改表名
ALTER TABLE 表名 RENAME TO 新表名;

#修改表的字符集
ALTER TABLE 表名 CHARACTER SET 字符集;

#添加一列
ALTER TABLE 表名 ADD 列名 数据类型;

#修改列名称、数据类型
ALTER TABLE 表名 CHANGE 列名 新列别 新数据类型;
ALTER TABLE 表名 MODIFY 列名 新数据类型;

#删除列
ALTER TABLE 表名 DROP 列名;

1.2.4 删除数据表

#删除数据表
DROP TABLE 数据表;

#先判断是否存在数据表,再删除
DROP TABLE IF EXISTS 数据表;

        其实对数据库和数据表操作的关键字都是一样的,只不过是在之后表明是对数据库还是对数据表进行操作。如果是对数据库进行操作就加上database,如果是对数据表进行操作就加上table

1.3 常用数据类型

1.4 约束

         概念:对表中的数据进行限定,保证数据的正确性、有效性和完整性。

                ​​​​​​​        ​​​​​​​        

1.5 标识列

        自增

        在字段后面添加auto_increment

 二、DML

        介绍完DDL之后,我们再来看DML,DML全名Data Manipulate Language,同样直译过来就是数据处理语言,DML用于添加、删除、修改数据库记录,并检查数据完整性。

2.1 添加数据

#添加数据
INSERT INTO 表名(列名1,...) VALUES(值1,...);

INSERT INTO 表名 SET 列名1 = 值1,...,列名n = 值n;

        添加数据时需注意

                                1.列名与值需要一一对应。

                                2.列数与值数必须一致。

                                3.省略列名,则默认给所有列添加值。

2.2 修改数据

#修改单表数据
UPDATE 表名 SET 列名1 = 值1,...,列名n = 值n 【WHERE 筛选条件】;

#修改多表数据
UPDATE 表1 别名,表2 别名 SET 字段 = 新值,..., WHERE 连接条件 AND 筛选条件;

        :如果不加条件,则修改表中的所有数据。

2.3 删除数据

#删除数据
DELETE FROM 表名 【WHERE 条件】; #如果不加条件,则删除表中所有记录。

#删除表中所有记录
DELETE FROM 表名;    ----不推荐使用。
TRUNCATE TABLE 表名;    -----推荐使用,效率高。

        delete与truncate对比

                                                ​​​​​​​

到此这篇关于MySQL之浅谈DDL和DML的文章就介绍到这了,更多相关MySQL中DDL和DML内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Mysql DDL常见操作汇总

    库的管理 创建库 create database [if not exists] 库名; 删除库 drop databases [if exists] 库名; 建库通用的写法 drop database if exists 旧库名; create database 新库名; 示例 mysql> show databases like 'javacode2018'; +-------------------------+ | Database (javacode2018) | +---------

  • MySQL ddl语句的使用

    前言 SQL的语言分类主要包含如下几种: DDL 数据定义语言 create.drop.alter 数据定义语言 create.drop.alter 语句 . DML 数据操纵语言 insert.delete.update 定义对数据库记录的增.删.改操作. DQL 数据库查询语言 select 定义对数据库记录的查询操作. DCL 数据库控制语言 grant.remove 定义对数据库.表.字段.用户的访问权限和安全级别. (授权grant,收回权限revoke等). TCL 事务控制语言 s

  • Mysql Online DDL的使用详解

    正文 Online DDL在MySQL 5.6才开始支持的,在5.5及之前版本,使用alter table/create index等命令进行表结构修改操作均会锁表,这在生产环境上明显是不可接受的. 在MySQL 5.7,Online DDL在性能和稳定性上不断得到优化,性能有显著优势,且对业务负载影响小,停写时间可控,相对pt-osc/gh-ost来说,无需安装第三方依赖包,同时支持Inplace算法的Online DDL,由于无需拷表,所需磁盘空间也更小. 先来看一个常见的DDL语句: AL

  • MySQL DDL 引发的同步延迟该如何解决

    前言 写作案例分析,主要是工具介绍&推荐.MySQL 的同步机制比较单纯,主库上执行过的 DML 和 DDL 会在从库上再执行一次,那么主库上需要 10min 才能执行完的 DDL 理论上在从库至少也要花费 10min 才能执行完,这意味着从库的同步会延迟 10min 以上,等 DDL 执行完之后才会继续追同步. 解决方案 从 MySQL 的同步原理来看,主要是 DDL 这个单独的操作会花费太久的时间,导致从库也会被卡主.那么解决这个问题的办法就很容易想到:"拆解" DDL 的

  • MySQL之浅谈DDL和DML

    目录 前言 一.DDL 1.1 数据库操作 1.2 数据表操作 1.3 常用数据类型 1.4 约束 1.5 标识列  二.DML 2.1 添加数据 2.2 修改数据 2.3 删除数据 前言         在前面的文章中我们认识了MySQL,以及熟悉了如何使用MySQL的查询语句         数据操作增删查改中的查我们已经介绍了,那么本篇文章将会介绍剩下的增删改以及数据库和表的常用操作,比如创建.删除.修改. 一.DDL         可能有看官老爷会问,什么是DDL啊?这里博主简单介绍一

  • 浅谈为什么MySQL不建议delete删除数据

    前言 我负责的有几个系统随着业务量的增长,存储在MySQL中的数据日益剧增,我当时就想现在的业务方不讲武德,搞偷袭,趁我没反应过来把很多表,很快,很快啊都打到了亿级别,我大意了,没有闪,这就导致跟其Join的表的SQL变得很慢,对的应用接口的response time也变长了,影响了用户体验. 事后我找到业务方,我批评了他们跟他们说要讲武德,连忙跟我道歉,这个事情才就此作罢,走的时候我对他们说下次不要这样了,耗子尾汁,好好反思. 骂归骂,事情还是得解决,时候我分析原因发现,发现有些表的数据量增长

  • 浅谈Mysql哪些字段适合建立索引

    1 数据库建立索引常用的规则如下: 1.表的主键.外键必须有索引: 2.数据量超过300的表应该有索引: 3.经常与其他表进行连接的表,在连接字段上应该建立索引: 4.经常出现在Where子句中的字段,特别是大表的字段,应该建立索引: 5.索引应该建在选择性高的字段上: 6.索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引: 7.复合索引的建立需要进行仔细分析:尽量考虑用单字段索引代替: A.正确选择复合索引中的主列字段,一般是选择性较好的字段: B .复合索引的几个字段是否经常同

  • 浅谈MySQL如何优雅的做大表删除

    随着时间的推移或者业务量的增长,数据库空间使用率也不断的呈稳定上升状态,当数据库空间将要达到瓶颈的时候,可能我们才会发现数据库有那么一两张的超级大表!他们堆积了从业务开始到现在的全部数据,但是90%的数据都是没有业务价值的,这时候该如何处理这些大表? 既然是没有价值的数据,我们通常一般会选择直接删除或者归档后删除两种,对于数据删除的操作方式来说又可分为两大类: 通过truncate直接删除表中全部数据 通过delete删除表中满足条件记录 一.Truncate操作 从逻辑意义上来讲,trunca

  • 浅谈MySQL大表优化方案

    背景 阿里云RDS FOR MySQL(MySQL5.7版本)数据库业务表每月新增数据量超过千万,随着数据量持续增加,我们业务出现大表慢查询,在业务高峰期主业务表的慢查询需要几十秒严重影响业务 方案概述 一.数据库设计及索引优化 MySQL数据库本身高度灵活,造成性能不足,严重依赖开发人员的表设计能力以及索引优化能力,在这里给几点优化建议 时间类型转化为时间戳格式,用int类型储存,建索引增加查询效率 建议字段定义not null,null值很难查询优化且占用额外的索引空间 使用TINYINT类

  • 浅谈MySQL中的自增主键用完了怎么办

    在面试中,大家应该经历过如下场景 面试官:"用过mysql吧,你们是用自增主键还是UUID?" 你:"用的是自增主键" 面试官:"为什么是自增主键?" 你:"因为采用自增主键,数据在物理结构上是顺序存储,性能最好,blabla-" 面试官:"那自增主键达到最大值了,用完了怎么办?" 你:"what,没复习啊!!"    (然后,你就可以回去等通知了!) 这个问题是一个粉丝给我提的,我觉得

  • 浅谈MySQL表空间回收的正确姿势

    目录 前置说明 问题重现 删除数据原理 数据的复用 哪些操作会造成数据空洞 如何收缩表空间 小结 不知道大家有没有遇到这样的一种情况,线上业务在MySQL表上做增删改查操作,随着时间的推移,表里面的数据越来越多,表数据文件越来越大,数据库占用的空间自然也逐渐增长 为了缩小磁盘上表数据文件占用的空间,我们在最大的一张业务表中用delete命令删除了一半儿的旧数据,删除之后,磁盘上表数据文件并没有缩小,即使删除整张表的数据,文件依然没有变小,这是为什么呢? 本文将详细的分析上述问题,并给出正确回收表

  • 浅谈MySQL中的group by

    目录 1.前言 2.准备user表 2.1 group by规则 2.2 group by使用 2.3 having使用 2.4 order by与limit 2.5 with rollup 1.前言 MySQL的group by用于对查询的数据进行分组:此外MySQL提供having子句对分组内的数据进行过滤. MySQL提供了许多select子句关键字, 它们在语句中的顺序如下所示: 子句 作用 是否必须/何时使用 select 查询要返回的数据或者表达式 是 from 指定查询的表 否 w

  • 浅谈mysql可有类似oracle的nvl的函数

    要用ifnull,而不是isnull isnull是判断是否为null,返回值是1表示null或者0表示不为空 ifnull等同于oracle的nvl,用法如下 mysql> select ifnull(1,10); +--------------+ | ifnull(1,10) | +--------------+ |            1 | +--------------+ 1 row in set (0.00 sec) mysql> select ifnull(null,10);

  • 浅谈mysql 针对单张表的备份与还原

    A.MySQL 备份工具xtrabackup 的安装 1. percona 官方xtrabackup 的二进制版本:二进制版本解压就能用了. 2. 解压xtrabackup & 创建连接 tar -xzvf percona-xtrabackup-2.3.4-Linux-x86_64.tar.gz -C /usr/local/ ln -s /usr/local/percona-xtrabackup-2.3.4 /usr/local/xtrabackup 3. 设置PATH环境变量 export P

随机推荐