MySQL -DDL 及表类型

news2024/12/25 9:24:30

DDL

创建数据库


CREATE DATABASE [IF NOT EXISTS] db_name
                              [create_specification [, create_specification] ...]
create_specification:

[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

1.CHARACTER SET:指定数据库采用的字符集,如果不指定字符集,默认utf8
2.COLLATE:指定数据库字符集的校对规则(常用的 utf8_bin、utf8_general ci注意默认是utf8_general_ci)

#创建一个数据库
CREATE DATABASE ww_db01;
#使用指令删除数据库
DROP DATABASE ww_db01;
#创建一个使用utf-8字符集的数据库
CREATE DATABASE ww_db02 CHARACTER SET utf8;
#创建一个使用utf8字符集,并带校对规则的数据库
CREATE DATABASE ww_db03 CHARACTER SET utf8 COLLATE utf8_bin;

#校对规则 utf8_bin 区分大小写 默认是 utf8_general ci 不区分大小写

查询数据库

显示数据库语句:
SHOW DATABASES
显示数据库创建语句:
SHOW CREATE DATABASE db name
数据库删除语句:DROP DATABASE [IF EXISTS] db name

#查看当前所有数据库
SHOW DATABASES;
#查看前面创建数据库的语句
SHOW CREATE DATABASE `ww_db01`;
#特别说明,在创建数据库、表时使用反引号, 可以规避关键字
CREATE DATABASE `SET`;

CREATE DATABASE SET;
#删除前面创建的数据库
DROP DATABASE ww_db01;
DROP DATABASE `SET`;

备份数据库

备份数据库(注意:在DOS执行)命令行mysqldump-u用户名-p-B数据库1数据库2数据库n >文件名.sql
恢复数据库(注意:进入Mysql命令行再执行)source 文件的全路径名.sql

示例

1、管理员打开cmd, 直接输入指令 C:\Users\Administrator>mysqldump -u root -p -B ww_db02 ww_db03 >e:test.sql

2、切换到数据库安装目录,进入数据库后,执行命令 source e:\\test.sql 

 创建表

CREATE TABLE table name
(
            field1 datatype,
            field2 datatype,
            field3 datatype
)character set字符集collate 校对规则 engine 引擎

CREATE TABLE IF NOT EXISTS employees (  
    id INT PRIMARY KEY,  
    name VARCHAR(50),  
    age INT,  
    department VARCHAR(50)  
);


DROP TABLE IF EXISTS `emp` ; //删除表, 这样写如果已经不存在这个表可以不用报错

示例

CREATE TABLE `user` (
				id INT,
				`name` VARCHAR(255),
				`password` VARCHAR(255),
				`birthday` DATE)
				CHARACTER SET utf8 COLLATE utf8_bin ENGINE INNODB;

修改表 

                使用ALTER TABLE语句追加,修改,或删除列的语法.  (ALTER 改变的意思)
添加列     ALTER TABLE tablename
                ADD           (column datatype [DEFAULT expr][, column datatype]...);

修改列     ALTER TABLE tablename
                MODIFY      (column datatype [DEFAULT expr][, column datatype]..);

删除列      ALTER TABLE tablename
                DROP        (column);

               查看表的结构:desc 表名;--可以查看表的列
               修改表名:Rename table表名 to 新表名
               修改表字符集:alter table 表名character set字符集;

示例: 像是在说话一样,很流畅

CREATE TABLE `emp` (
				`Id` INT,
				`name` VARCHAR(32),
				`sex` CHAR(1),
				`birthday` DATE,
				`entry_date` DATETIME,
				`job` VARCHAR(32),
				`Salary` DOUBLE,
				`resume` text)CHAR SET utf8 COLLATE utf8_bin ENGINE innodb;
#修改表的操作练习
#在emp表增加一个image列,VARCHAR类型(要求resume后面)。
ALTER TABLE emp ADD image VARCHAR(32) NOT NULL DEFAULT '' AFTER resume; 
#修改job列,使其长度为60
ALTER TABLE emp MODIFY job VARCHAR (60);
#删除sex列
ALTER TABLE emp DROP sex; 
#表名改为employee
RENAME TABLE emp TO employee;
#修改表的字符集为utf8
ALTER TABLE employee CHARACTER  SET utf8;
#列名name修改为user_name
ALTER TABLE employee CHANGE `name` `user_name` 
VARCHAR(32) NOT NULL DEFAULT '';

mysql列类型

整形数据

整形数据选择原则: 应该根据具体需求,选择占用空间小 的数据类型

#1.如果没有指定unsinged,则TINYINT就是有符号
#2.如果指定 unsinged,则TINYINT就是无符号0-255
CREATE TABLE t3 (id TINYINT);
CREATE TABLE t4 (id TINYINT UNSIGNED);

Bit位类型

bit这个数据类型用的比较少, 如果是需要存储0或1的情况,可以使用该类型

小数类型

数值型(小数)的基本使用
1. FLOAT/DOUBLE [UNSIGNED]Float 单精度精度,Double 双精度.

单精度浮点数(float)的数值范围为-3.4E38~3.4E38,大约可以表示7位十进制下的有效数字

双精度浮点数(double)可以表示的数字的绝对值范围大约是:-2.23E308 ~ 1.79E308,可以表示十进制的15或16位有效数字。


2. DECIMAL[M,D] [UNSIGNED]   //可以存放非常大的数

·可以支持更加精确的小数位

M最大65。D最大是30。如果D被省略,默认是0。

如果M被省略,默认是10。

建议:如果希望小数的精度高,推荐使用decimal

以下是DECIMAL数据类型的语法示例:

CREATE TABLE table_name (  
  column_name DECIMAL(precision, scale)  
);

在上面的语法中,precision表示数字的总位数,包括小数点左侧和右侧的位数。scale表示小数点右侧的位数。

例如,如果要创建一个名为products的表,其中有一个名为price的列,可以将其定义为DECIMAL数据类型,精度为10,小数位数为2,如下所示:

CREATE TABLE products (  
  price DECIMAL(10, 2)  
);

这将创建一个能够存储最大值为99999999.99的price列。

字符串类型

·字符串使用细节
1. 细节1 char(4)//这个4表示字符数(最大255),不是字节数,不管是中文还是字母都是放四个,按字符计算

按gbk编码方式,那么char(4)表示的是4*2=8个字节, 

按utf8编码,那么char(4)表示的是4*3 = 12个字节
.varchar(4)/这个4表示字符数,不管是字母还是中文都以定义好的表的编码来存放数据.

不管是中文还是英文字母,都是最多存放4个,是按照字符来存放的.

2.细节2
char(4)是定长(固定的大小),就是说,即使你插入‘aa',也会占用分配的4个字符d.

varchar(4)是变长,就是说,如果你插入了‘aa',实际占用空间大小并不是4个字符,而是按照实际占用空间来分配(说明:varchar本身还需要占用1-3个字节来记录存放内容长度 , 即varchar 存放的其实是 aa 加上1-3个字节)

4.细节4
在存放文本时,也可以使用Text数据类型.可以将TEXT列视为VARCHAR列,注意Text不能有默认值.大小0-2へ16字节, 2へ16 = 65536即等于varchar的最大字节数

如果希望存放更多字符,可以选择MEDIUMTEXT 0-2へ24 或者LONGTEXT 0~2へ32

日期类型

1、date

2、datetime

3、timestamp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1265776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sqli-labs(6)

27. 过滤了union和select 使用双写绕过 有报错信息使用报错注入 1and(extractvalue(1,concat(0x5c,database())))and11 1and(updatexml(1,concat(0x7e,database(),0x7e),1))and11 1and(extractvalue(1,concat(0x5c,(selseselectlectect(group_concat(table_name))from(inform…

MIT线性代数笔记-第17讲-正交矩阵,Schmidt正交化

目录 17.正交矩阵, S c h m i d t Schmidt Schmidt正交化打赏 17.正交矩阵, S c h m i d t Schmidt Schmidt正交化 “标准”经常表示单位长度 标准正交基:由两两正交的单位向量组成的基 将标准正交基中的元素记作 q ⃗ 1 , q ⃗ 2 , ⋯ , q …

【算法】20231128

这里写目录标题 一、55. 跳跃游戏二、274. H 指数三、125. 验证回文串 一、55. 跳跃游戏 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以&am…

面试题:汉诺塔问题 · 递归

你好,我是安然无虞。 文章目录 汉诺塔问题问题描述解题思路代码详解 汉诺塔问题 问题描述 解题思路 这道题的名字还是很响的,基本上都能看出来使用递归解题,但是具体怎么实现还是需要细细想一想。 我们一步一步来,请看&#xff…

vue3中的setup()函数详解

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue3-setup()函数 目录 setup()函数 1.1 基本使用 1.2 访问 Prop 1.3 Setup的上下文 1.4 与渲…

再探Java集合系列—LinkedList

单向链表 双向链表 LinkedList适用于什么场景? 适用于需要频繁插入和删除元素的场景,例如消息聊天系统,一开始并不明确有多少记录,可以在空间满足的情况下不断增加数据 LinkedList的特点有哪些? LinkedList的底层采…

Blender学习笔记:小车狂奔动画

文章目录 路旁小树汽车尾气移动 教程地址:八个案例教程带你从0到1入门blender【已完结】 小车建模 路旁小树 1 添加摄像机,在小车下面拉一个平面,覆盖到摄像机的观察视窗。复制一层平面,收窄变成小车两侧的路面,编辑…

Windows10系统卸载服务和删除服务

记录一下Windows10系统卸载服务和删除服务 最近在使用自己win电脑的时候 发现服务里存在很久之前就没有使用的应用,对应的文件夹也都已经删除了,但是在win服务里一直存在,不知道会不会影响性能,看着吧还是强迫自己删掉好一些&…

CH58x-BLE 程序阅读笔记

CH58x-BLE 程序阅读笔记 1. 广播1.1 广播类型设置1.2 广播数据长度 2. MTU设置2.1 CH58x 蓝牙协议栈支持有效最大MTU为247 1. 广播 1.1 广播类型设置 1.2 广播数据长度 1) GAP-广播数据(最大大小31字节,但最好保持较短以节省广告时的电量&a…

C++学习之路(十)C++ 用Qt5实现一个工具箱(增加一个时间戳转换功能)- 示例代码拆分讲解

上篇文章,我们用 Qt5 实现了在小工具箱中添加了《JSON数据格式化》功能,还是比较实用的。为了继续丰富我们的工具箱,今天我们就再增加一个平时经常用到的功能吧,就是「 时间戳转换 」功能,而且实现点击按钮后文字进行变…

图解系列--Web服务器,Http首部

1.用单台虚拟主机实现多个域名 HTTP/1.1 规范允许一台 HTTP 服务器搭建多个 Web 站点。。比如,提供 Web 托管服务(Web Hosting Service)的供应商,可以用一台服务器为多位客户服务,也可以以每位客户持有的域名运行各自不…

HbuilderX 项目打包文件过大问题优化

文章目录 HbuilderX 项目打包文件过大问题优化主要操作收效甚微,但又有那么点用的方法使用 gulp 压缩(最后一步)使用与配置 网上找的 gulp 优化压缩配置还未尝试可能有用的方法 尝试过程中看到的一些优质文章 HbuilderX 项目打包文件过大问题…

C语言每日一题(41)循环队列

力扣 622 循环队列 题目描述 设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 循环队列的一个好处是我们可以利用这个队列之前…

Mysql8.1.0 安装问题-缺少visual studio 2019x64组件

缺少visual studio x64组件的问题 使用Mysql8以上的安装包mysql-8.1.0-winx64.msi进行安装, 提示缺少visual studio 2019 x64可再发行组件 在微软官网下载vc可再发行程序包 Microsoft Visual C 可再发行程序包最新支持的下载 在Visual Studio 2015、2017、2019 和…

SAP_ABAP_编程基础_字符转换_内存表、jsonString 相互转换

SAP ABAP 顾问(开发工程师)能力模型_Terry谈企业数字化的博客-CSDN博客文章浏览阅读441次。目标:基于对SAP abap 顾问能力模型的梳理,给一年左右经验的abaper 快速成长为三年经验提供超级燃料!https://blog.csdn.net/j…

Linux常用命令——basename命令

在线Linux命令查询工具 basename 打印目录或者文件的基本名称 补充说明 basename命令用于打印目录或者文件的基本名称。basename和dirname命令通常用于shell脚本中的命令替换来指定和指定的输入文件名称有所差异的输出文件名称。 语法 basename(选项)(参数)选项 --help&…

Java核心知识点整理大全21-笔记

目录 18.1.5.1. upstream_module 和健康检测 18.1.5.1. proxy_pass 请求转发 18.1.6. HAProxy 19. 数据库 19.1.1. 存储引擎 19.1.1.1. 概念 19.1.1.2. InnoDB(B树) 适用场景: 19.1.1.3. TokuDB(Fractal Tree-节点带数据&…

Docker容器常用命令

文章目录 启动类命令帮助类命令镜像命令列出本地主机上的镜像在远程仓库中搜索镜像下载镜像保存镜像加载 tar 包为镜像查看占据的空间删除镜像 虚悬镜像命令自动补全新建启动容器启动交互式容器启动守护式容器 列出正在运行的容器容器其他启停操作启动已经停止的容器重启容器停…

【Web】SWPUCTF 2022 新生赛 个人复现

目录 ①webdog1__start ②ez_rce ③ez_sql ④ez_1zpop ⑤file_maste ⑥Power! 挑了部分题,太简单的就没选进来(但选进来≠有难度) ①webdog1__start 进来没啥东西,右键查看源码 对于0e215962017,md5后也是以…

泗博Modbus转Profinet网关TS-180对水表流量的监控应用

应用场景: 陕西某工程技术有限公司在一民生工程项目中,需要对公园直饮水进行净化保证其水质。直饮水净化装置需根据用水量不定期的维护,通过统计各个净化装置净化的直饮水的流量,来实现提前维护目的。 应用痛点: 项目…