MySQL - DDL操作(库/表操作)

MySQL自带的数据库

先来看MySQL中自带的库有哪些:

 

 

 各库解释如下:

  • information_schema,虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等。

  • performance_schema, MySQL 5.5开始新增一个数据库,主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象 。

  • mysql,授权库,主要存储系统用户的权限信息。

  • sys库所有的数据源来自performance_schema,目标是把performance_schema的把复杂度降低,让DBA能更好的阅读这个库里的内容。让DBA更快的了解数据库的运行情况。

  • test,MySQL数据库系统自动创建的测试数据库。test库在MySQL中特殊存在,一般部署完mysql后应当删除该库,并规定不能创建以testtest_字符开头的数据库。因为在MySQL中,test库对任意用户都有管理员权限,因此,线上数据库不要用test。如果已有test,添加用户时想要禁止对test库的权限,可以在mysql.db表中添加这个新用户,禁止所有权限,或者删除该表中user为空的记录,并刷新权限

    select * from mysql.db where db='test' \G ;

创建数据库

创建数据库语法

 

 

一般的,在MySQL中,关键字等信息推荐大写.......

数据库的命名规范

  • 可以由字母、数字、下划线、@、#、$组成。
  • 区分大小写,库名不能大写,也不建议以大写字母开头。
  • 首字母不能是数字。
  • 数据库名具有唯一性,也就是不能重名。
  • 应该避开关键字,如select等。
  • 不能单独使用数字。
  • 最长不超过128位。
  • 一般库名应该和业务相关。
  • 也不要创建以testtest_开头的数据库,原因在前面说过了。

关于字符集

在MySQL中,数据库默认的字符集是拉丁语:

 

 

 但我们用的更多的是utf8或者是utf8mb4,所以我们一般在创建数据库库的时候还需要指定字符集:

 

 

 关于utf8和utf8mb4的区别

CREATE DATABASE creates a database with the given name. To use this statement,you need the CREATE privilege for the database. CREATE SCHEMA is a synonym for CREATE DATABASE.

 

MySQL在 5.5.3 之后增加了 utf8mb4 字符编码,mb4即 most bytes 4。简单说 utf8mb4 是 utf8 的超集并完全兼容utf8,能够用四个字节存储更多的字符。

但抛开数据库,标准的 UTF-8 字符集编码是可以用 1~4 个字节去编码21位字符,这几乎包含了是世界上所有能看见的语言了。然而在MySQL里实现的utf8最长使用3个字节,也就是只支持到了 Unicode 中的 基本多文本平面(U 0000至U FFFF),包含了控制符、拉丁文,中、日、韩等绝大多数国际字符,但并不是所有,最常见的就算现在手机端常用的表情字符 emoji和一些不常用的汉字,如 “墅” ,这些需要四个字节才能编码出来

注:QQ里面的内置的表情不算,它是通过特殊映射到的一个gif图片。一般输入法自带的就是。

也就是当你的数据库里要求能够存入这些表情或宽字符时,可以把字段定义为 utf8mb4,同时要注意连接字符集也要设置为utf8mb4,否则在 严格模式 下会出现 Incorrect string value: /xF0/xA1/x8B/xBE/xE5/xA2… for column 'name'这样的错误,非严格模式下此后的数据会被截断。

create database & create schema

你在一些地方,可能会看到如下建库语句:

 

 

 不要迷惑,关于create databasecreate schema语句,在MySQL中是等价的;下面摘自MySQL8.0官网的解释:

CREATE DATABASE creates a database with the given name. To use this statement,1)">for CREATE DATABASE.

删除

生产中禁止删库~

修改

 

 

 注意,修改字符集时,修改后的字符集一定是原字符集的严格超集。

查看数据库

表操作

MySQL中的表你可以理解为是一个有严格规范的excel表格:

 

 

 表中的idnameagegender是字段,其余每一行称为记录。

创建表

基本语法:

注意:

  1. 在同一张表中,字段名是不能相同。
  2. 宽度和约束条件可选。
  3. 字段名和类型是必须的。

示例:

USE语句相当于进入一个目录,然后CREATE TABLE语句相当于创建一个excel表格,然后再这个表格中,针对每个字段有不同的规定和注释,最后再指定这个表格的文件系统(存储引擎)和字符编码。

注意,最后一个字段后无需跟逗号。

USE语句相当于进入一个目录,然后CREATE TABLE语句相当于创建一个excel表格,然后再这个表格中,针对每个字段有不同的规定和注释,最后再指定这个表格的文件系统(存储引擎)和字符编码。

注意,最后一个字段后无需跟逗号。

建表规范

  1. 表名小写
  2. 不能是数字开头
  3. 注意字符集和存储引擎
  4. 表名和业务有关
  5. 选择合适的数据类型
  6. 每个列都要有注释
  7. 每个列设置为非空,无法保证非空,用0来填充

查看表结构

首先,我们应该进入某个数据库中use database_name;

删除

 

 

 注意,生产中禁止使用

修改

不知道好过知道

复制表

最后,再来看看复制表相关的操作:

  1. 复制一份一摸一样的表:

  1. 创建一个表,复制另一张表的指定字段和记录。

 

 

  1. 创建一个表,复制另一张表的指定字段和记录,但是创建的表字段又想不跟被复制表字段不一致:

记录操作(DML)

现在,就要对表中的记录进行增删改这些操作了。

还是那张表:

insert

update

首先来说一个不要轻易使用的命令,即对指定字段进行全表更新:

经过set之后,全表的sname都会变成李四,如果数据量较大,非常影响性能。

根据条件更新:

 

 条件选择一般选择具有唯一性的,如果条件不唯一,则所有符合条件的记录都将受影响,如:

 

 注意,update必须要加where条件,而且操作要慎重。

delete

危险命令!

注意,delete命令删除是逻辑删除,不会释放磁盘空间!

现在我们再说另一条命令:

 

 truncate命令清空表后会释放磁盘空间。

小结:

  • delete命令(DML操作)只是在逻辑层面删除了记录,但是占用的磁盘空间并没有释放;另外该表的建表结构还在。
  • truncate命令(DDL操作)清空表的数据页,保留表的建表结构。
  • drop删表操作就是逻辑和磁盘上都会删除。

为了解决delete的缺点,我们采用伪删除来解决,即使用update来代替delete,思路是为表添加一个状态字段,如果有需要删除的,就改下状态,后续的查询也根据状态来查看:

 

原文地址:https://www.cnblogs.com/tracydzf

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


在正式开始之前,我们先来看下 MySQL 服务器的配置和版本号信息,如下图所示: “兵马未动粮草先行”,看完了相关的配置之后,我们先来创建一张测试表和一些测试数据。 -- 如果存在 person 表先删除 DROP TABLE IF EXISTS person; -- 创建 person 表,其中
> [合辑地址:MySQL全面瓦解](https://www.cnblogs.com/wzh2010/category/1859594.html "合辑地址:MySQL全面瓦解") # 1 为什么需要数据库备份 - 灾难恢复:当发生数据灾难的时候,需要对损坏的数据进行恢复和
物理服务机的CPU、内存、存储设备、连接数等资源有限,某个时段大量连接同时执行操作,会导致数据库在处理上遇到性能瓶颈。为了解决这个问题,行业先驱门充分发扬了分而治之的思想,对大库表进行分割,
然后实施更好的控制和管理,同时使用多台机器的CPU、内存、存储,提供更好的性能。而分治有两种实现方式:垂直拆
1 回顾 上一节我们详细讲解了如何对数据库进行分区操作,包括了 垂直拆分(Scale Up 纵向扩展)和 水平拆分(Scale Out 横向扩展) ,同时简要整理了水平分区的几种策略,现在来回顾一下。 2 水平分区的5种策略 2.1 Hash(哈希) 这种策略是通过对表的一个或多个列的Ha
navicat查看某个表的所有字段的详细信息 navicat设计表只能一次查看一个字段的备注信息,那怎么才能做到一次性查询表的信息呢?SELECT COLUMN_NAME,COLUMN_COMMENT,COLUMN_TYPE,COLUMN_KEY FROM information_schema.CO
文章浏览阅读4.3k次。转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52768613前言:数据库每天的数据不断增多,自动删除机制总体风险太大,想保留更多历史性的数据供查询,于是从小的hbase换到大的hbase上,势在必行。今天记录下这次数据仓库迁移。看下Agenda:彻底卸载MySQL安装MySQL_linux服务器进行数据迁移
文章浏览阅读488次。恢复步骤概要备份frm、ibd文件如果mysql版本发生变化,安装回原本的mysql版本创建和原本库名一致新库,字符集都要保持一样通过frm获取到原先的表结构,通过的得到的表结构创建一个和原先结构一样的空表。使用“ALTER TABLE DISCARD TABLESPACE;”命令卸载掉表空间将原先的ibd拷贝到mysql的仓库下添加用户权限 “chown . .ibd”,如果是操作和mysql的使用权限一致可以跳过通过“ALTER TABLE IMPORT TABLESPACE;”命令恢_alter table discard tablespace
文章浏览阅读225次。当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:字段尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNEDVARCHAR的长度只分配_开发项目 浏览记录表 过大怎么办
文章浏览阅读1.5k次。Mysql创建、删除用户MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束):1.新建用户登录MYSQL:@>mysql -u root -p@>密码创建用户:mysql> insert into mysql.user(Host,User,Password) values("localhost_删除mysql用户组
MySQL是一种开源的关系型数据库管理系统,被广泛应用于各类应用程序的开发中。对于MySQL中的字段,我们需要进行数据类型以及默认值的设置,这对于数据的存储和使用至关重要。其中,有一个非常重要的概念就是MySQL字段默认字符串。 CREATE TABLE `my_...
MySQL是一个流行的开源关系型数据库管理系统,广泛应用于Web应用程序开发、数据存储和管理。在使用MySQL时,正确设置字符集非常重要,以确保数据的正确性和可靠性。 在MySQL中,字符集表示为一系列字符和字母的集合。MySQL支持多种字符集,包括ASCII、UTF...
MySQL存储函数 n以内偶数 MySQL存储函数能够帮助用户简化操作,提高效率,常常被用于计算和处理数据。下面我们就来了解一下如何使用MySQL存储函数计算n以内的偶数。 定义存储函数 首先,我们需要定义一个MySQL存储函数,以计算n以内的偶数。下...
MySQL是一个流行的关系型数据库管理系统,基于客户机-服务器模式,可在各种操作系统上运行。 MySQL支持多种字符集,不同的字符集包括不同的字符,如字母、数字、符号等,并提供不同的排序规则,以满足不同语言环境的需求。 //查看MySQL支持的字符集与校对规...
在MySQL数据库中,我们有时需要对特定的字符串进行截取并进行分组统计。这种操作对于数据分析和报表制作有着重要的应用。下面我们将讲解一些基本的字符串截取和分组统计的方法。 首先,我们可以使用substring函数对字段中的字符串进行截取。假设我们有一张表stude...
MySQL提供了多种字符串的查找函数。下面我们就一一介绍。 1. LIKE函数 SELECT * FROM mytable WHERE mycolumn LIKE 'apple%'; 其中"apple%"表示以apple开头的字符串,%表示任意多个字符...
MySQL 是一种关系型数据库管理系统,广泛应用于各种不同规模和类型的应用程序中。在 MySQL 中,处理字符串数据是很常见的任务。有时候,我们需要在字符串的开头添加一定数量的 0 ,以达到一定的位数。比如,我们可能需要将一个数字转换为 4 位或 5 位的字符串,不足的...
MySQL是一种流行的关系型数据库管理系统,支持多种数据类型。以下是MySQL所支持的数据类型: 1. 数值型数据类型: - TINYINT 保存-128到127范围内的整数 - SMALLINT 保存-32768到32767范围内的整数 - MEDIU...
MySQL中存储Emoji表情字段类型 在现代互联网生态中,表情符号已经成为人们展示情感和思想的重要方式之一,因此将表情符号存储到数据库中是一个经常出现的问题。MySQL作为最流行的开源关系型数据库管理系统之一,也需要能够存储和管理这些表情符号的字段类型。 UT...
MySQL是一种关系型数据库管理系统。在MySQL数据库中,有多种不同的数据类型。而其中,最常见的数据类型之一就是字符串类型。在MySQL中,字符串类型的数据通常会被存储为TEXT或VARCHAR类型。 首先,让我们来看一下VARCHAR类型。VARCHAR是My...
MySQL字符串取整知识详解 MySQL是一种开源的关系型数据库管理系统,广泛应用于各个领域。在使用MySQL过程当中,我们经常需要对数据进行取整操作。本文将介绍如何使用MySQL字符串取整来处理数据取整问题。 什么是MySQL字符串取整? MySQL...