MySQL -DDL 及表类型

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) ```sql #创建一个数据库 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 ```sql #查看当前所有数据库 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 ![](https://file.jishuzhan.net/article/1732059486790619137/5f40329e5d5f7953650cf6620c76ffcd.webp) 2、切换到数据库安装目录,进入数据库后,执行命令 source e:\\\\test.sql ![](https://file.jishuzhan.net/article/1732059486790619137/59727ff23098a0d7379aacc1a5c1998c.webp) ### 创建表 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\` ; //删除表, 这样写如果已经不存在这个表可以不用报错 示例 ```sql 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字符集; 示例: 像是在说话一样,很流畅 ```sql 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; ``` ```sql #修改表的操作练习 #在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列类型 ![](https://file.jishuzhan.net/article/1732059486790619137/7b8a03a84877f9c7a1747b2166a898a7.webp) ![](https://file.jishuzhan.net/article/1732059486790619137/8a66bee57abf0281b49a303d23adcdd9.webp) ### 整形数据 ![](https://file.jishuzhan.net/article/1732059486790619137/24d272250032141ca00516294f498940.webp) 整形数据选择原则: 应该根据具体需求,选择占用空间小 的数据类型 ```sql #1.如果没有指定unsinged,则TINYINT就是有符号 #2.如果指定 unsinged,则TINYINT就是无符号0-255 CREATE TABLE t3 (id TINYINT); CREATE TABLE t4 (id TINYINT UNSIGNED); ``` ### Bit位类型 ![](https://file.jishuzhan.net/article/1732059486790619137/ed33c0ed3281ce29f7c67c84f4b09468.webp) 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数据类型的语法示例:** ```sql CREATE TABLE table_name ( column_name DECIMAL(precision, scale) ); ``` 在上面的语法中,`precision`表示数字的总位数,包括小数点左侧和右侧的位数。`scale`表示小数点右侧的位数。 例如,如果要创建一个名为`products`的表,其中有一个名为`price`的列,可以将其定义为DECIMAL数据类型,精度为10,小数位数为2,如下所示: ```sql CREATE TABLE products ( price DECIMAL(10, 2) ); ``` 这将创建一个能够存储最大值为99999999.99的`price`列。 ### 字符串类型 ![](https://file.jishuzhan.net/article/1732059486790619137/2b8816dda56918a1db827738d3e7ab77.webp) ·字符串使用细节 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个字节) ![](https://file.jishuzhan.net/article/1732059486790619137/a36129fdd4ef9ba6565437b8ae3da855.webp) 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 ![](https://file.jishuzhan.net/article/1732059486790619137/3cb8f449687be9e585d6e4d0500460dd.webp) 3、timestamp ![](https://file.jishuzhan.net/article/1732059486790619137/fb92c4515a64a3a5f5c3fc60e507f15a.webp)

相关推荐
Leo.yuan1 分钟前
热力图是什么?三分钟学会热力图数据分析怎么做!
大数据·数据库·数据挖掘·数据分析·html
张哈大14 分钟前
【 Redis | 实战篇 缓存 】
数据库·redis·笔记·spring·缓存
玩转数据库管理工具FOR DBLENS24 分钟前
项目高压生存指南:科学重构身体与认知系统的抗压算法
大数据·数据库·职场和发展·项目管理
xiaogai_gai28 分钟前
高效管理钉钉收款单数据集成到MySQL的技术方案
android·mysql·钉钉
正在走向自律1 小时前
【金仓数据库征文】学校AI数字人:从Sql Server到KingbaseES的数据库转型之路
数据库·人工智能·kingbasees·金仓数据库 2025 征文·数据库平替用金仓
_extraordinary_1 小时前
MySQL 索引(一)
android·数据库·mysql
gjc5921 小时前
MySQL OCP试题解析(2)
android·数据库·mysql·开闭原则
Code哈哈笑1 小时前
【图书管理系统】深度讲解:图书列表展示的后端实现、高内聚低耦合的应用、前端代码讲解
java·前端·数据库·spring boot·后端
jjkkzzzz2 小时前
Linux下的c/c++开发之操作mysql数据库
linux·数据库·mysql·c/c++
JAVA坚守者2 小时前
深度解析 MySQL 与 Spring Boot 长耗时进程:从故障现象到根治方案(含 Tomcat 重启必要性分析)
spring boot·mysql·事务管理·连接池优化·数据库故障·慢查询治理·tomcat 运维