MySQL_数据类型&建表

复习:

我们昨天学习的知识都忘了嘛?如果忘了也不要担心,我来带大家来复习一遍吧!!!

1.查看所有数据库 show databases;
2.创建属于自己的数据库 create database 数据库名;

检查自己创建的数据库是否已经存在,如果已经存在就报错,不存在时就成功创建:
create database if not exists数据库名;

相当于在自己创建库时添加了一个校验
强烈建议大家在创建数据库的时候指定编码集和排序规则

create database if not exists 数据库名 character set utf8mb4|collate utf8mb4_0900_ai_ci;MYSQL8.0版本固定写法
3.查看警告信息 show warnings;
4.查看当前数据库服务默认的编码集 show variables like '%character%';

咱们昨天讲的都已经复习完了,让我们开始对新知识的学习吧!!!


1. 建库小知识

create database 库名;
如果我想创建一个名字为create 或database的数据库,可不可以?

我们可以看到MYSQL报了错误,这是因为这两个都上是MYSQL中的关键字

但是MYSQL中允许开发者使用关键字命名,但是在使用的时候要用反引号把关键字引起来反引号在键盘上的位置,ESC下边,TAB上边,1的左边,要用英文字符


我们可以看到创建成功了

所以我们在使用其他的关键字的时候也是一样的,比如:show create .......

2. 选择库

我们可以看到上述有11个数据库,那么我们要怎么去选择我们要的数据库呢?

此时 USE 就是我们要选择操作数据库的关键字:

用法:
use 数据库名[;]

select database(); 查看当前选择(操作)的是哪个数据库

切换(选择)数据库成功
database() 为MSYQL提供的一个内置方法

3.删除数据库



mysql> drop database 'create` 只要出现Query Ok,就表示执行成功

注意:

在我们今后的工作中删库跑路,这个词在我们业务非常常见 ,但是我们真的可以随便删库跑路吗?

1.如果说明恶意删库,那么直接110打起来

2.如果是因为工作失误删了库,最起码年终奖没有了,有可能还会影响在公司的晋升机会

所以数据库中所储存的数据对公司来说非常重要,也是公司的核心资产,大家操作数据库的时候

一定要有敬畏之心 , 不能随便删库跑路。在自己的项目或是公司中千万不要这么做使用之前一定要慎之又慎**,如果公司中有这样的需求,一定要把你的领导同事叫过来**,一起来干这个事 drop 开头的SQL语句,可以把他忘了

例子:

之前就是有一个顺丰的程序员,删库之后,从公司离职了,其他的大厂抛来了橄榄枝,因为在行

删除数据库是一个非常非常危险的操作,最后进局子了

4.数据类型

1. 类型列表

2 数据类型取值范围

3 类型列表

4 CHAR与VARCHAR的区别

• CHAR 固定⻓度的字符串, M 表⽰以字符为单位的列⻓度,取值范围 0 ~ 255 ,省略则⻓度为 1 ,在存储时总是⽤空格向右填充到指定的⻓度,获取列的值时会从尾部删除空格。允许定义 CHAR(0),此时列的值只能为NULL或空字符串,主要的⽬的是为了旧系兼容,⽐如类中必须有这个 属性,但不使⽤这个属性的值,也就是说值并没有意义,但列⼜不能没有。

• VARCHAR 可变⻓度字符串。 M 表⽰以字符为单位的最⼤列⻓度,取值范围0 ~ 65,535 (在所 有列中共享),有效⻓度取决于实际字符数和使⽤的字符集,并且⽤额外的⼀或两个字节记录实际使 ⽤的字节数,当实际字节数不超过255个字节⽤⼀个字节记录⻓度,超过255个字节时,使⽤两个 字节记录⻓度,获取列的值时不会从尾部删除空格,插⼊数据时会删除超出⻓度的空格。

5 如何选择CHAR与VARCHAR

• 如果数据确定⻓度都⼀样,就使⽤定⻓ CHAR 类型,⽐如:⾝份证,md5,学号,邮编。

• 如果数据⻓度有变化,就使⽤变⻓ VARCHAR ,⽐如:名字,地址,但要规划好⻓度,保证最⻓的字 符串能存的进去。

• 定⻓ CHAR 类型⽐较浪费磁盘空间,但是效率⾼。

• 变⻓ VARCHAR 类型⽐较节省磁盘空间,但是效率低。 • 定⻓ CHAR 类型会直接开辟好对应的存储空间。

• 变⻓ VARCHAR 类型在不超过定义⻓度范围的情况下⽤多少开辟多少存储空间。

6 VARCHAR与TEXT的区别

• 容量⼤⼩: VARCHAR 最⼤⽀持 65535 个字节; TEXT 最⼤⽀持 65535 个字节,在指定TEXT ⻓度时,当超过 65535 时⾃动转换为 MEDIUMTEXT 类型,当超过 16,777,215 时⾃动转换为 LONGTEXT 类型

• 存储位置: VARCHAR 类型的列实际内容⼩于768个字节时存在当前⾏,⼤于768时存在溢出⻚, 当前⾏保存溢出⻚的地址; TEXT 类型的列整体保存在溢出⻚,当前⾏只保存溢出⻚地址

• 查询性能:对于频繁查询的 VARCHAR 列可以创建索引,提升查询性能; TEXT 类型的列⽆法直 接创建普通索引,但可以使⽤ FULLTEXT 索引,由于索引的⽀持和存储位置的不同, VARCHAR 列的性能⾼于 TEXT 类型的列

• 适⽤场景:如果存储的数据⻓度较⼩且需要创建索引进⾏检索,可以选择 VARCHAR 类型,⽐如姓 名,⽤⼾,邮箱等;如果存储的数据⻓度较⼤且不需要频繁以该列为条件进⾏检索可以选择 TEXT 类型,⽐如⽂章内容等。

5. ⽇期类型

6.表的操作

创建完数据库之后,就要在数据库中创建表表中存储的数据记录,一条记录由不同的列组成

需要创建表时,先要选择要操作的数据库 use 数据库名

1.创建表

示例: 创建一个名字为student的学生表,表中只包含两个字段,id 表示编号,name表示姓名,长度为50
( 强烈建议每张表中都要设计一个编号字段,数据型为bigint )

varchar的长度记得要指定,当前这个长度是我们拍脑门拍出来的

在实际工作中要根据详细设计文档中的描述转换为代码就可以了
show tables; 查看当前数据库中有哪些表

出现这个结果就表示表已经创建成功了

2. 查看表结构:

命令行客户端工具,只执行一些简单的查询或是指令,如果一两句SQL可以搞定就在这里面去执行如果说要编复杂的SQL,比如表设计,复杂查询,建议大家还是去可视化工具中编写

如果在可视化编辑工具中把创建表的SQL编写好了,如何在命令行工具中执行?

1.下载一个MYSQL的图形化界面工具 Navicat Premium 15,并打开

2。点右上角的连接,输入连接名(自己随便写,但是不要是中文),输入MYSQL中自己设置的密码

3.点击自己要用的数据库,并点击新建查询,就使用了可视化编辑工具Navicat Premium 15

3.校验表操作

4.删除表

关于drop一定要谨慎操作
删除表之后,很难第一时间被发现,删表的危害并不亚于删库
删除库之后,我们的程序在运行的过程中就连不上数据库了,只要发现问题就会及时报警,以便修复问题

今日份总结

**关于表的操作

  1. show tables;查看当前数据库中所有的表**

2. use 数据库 :选择你要使用的数据库

3. select database(); :查看你使用的数据库
2. create table (
字段名1数据类型 comment ' 备注名',

字段名2 数据类型 );
3.desc 表名; 查看表结构
4. drop table [if exists] 表名;

相关推荐
云和数据.ChenGuang6 分钟前
Django 应用安装脚本 – 如何将应用添加到 INSTALLED_APPS 设置中 原创
数据库·django·sqlite
woshilys34 分钟前
sql server 查询对象的修改时间
运维·数据库·sqlserver
Hacker_LaoYi35 分钟前
SQL注入的那些面试题总结
数据库·sql
建投数据2 小时前
建投数据与腾讯云数据库TDSQL完成产品兼容性互认证
数据库·腾讯云
Hacker_LaoYi3 小时前
【渗透技术总结】SQL手工注入总结
数据库·sql
岁月变迁呀3 小时前
Redis梳理
数据库·redis·缓存
独行soc3 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
你的微笑,乱了夏天3 小时前
linux centos 7 安装 mongodb7
数据库·mongodb
工业甲酰苯胺3 小时前
分布式系统架构:服务容错
数据库·架构
独行soc4 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘