「MySQL」- 数据类型 & 基础操作

数据表操作

创建数据表

查看数据表结构

修改数据表

1. 删除字段

2. 添加字段

3. 修改字段类型及名称

查看数据表

删除数据表


前言

==

MySQL是一个客户端 - 服务器结构的程序 ,(本体是服务器(负责存储和管理数据)), 客户端通过 SQL 语句配合网络与服务器进行交互

  • 客户端:主动发起请求的一方

  • 服务器:被动接受请求的一方

MySQL 是一个关系数据库管理系统 , 它可以是一个 图形化软件 , 也可以是一个终端黑窗口 , 而在上面执行的命令 , 就使用的是SQL语言.

SQL


SQL即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统 , 同时也是数据库脚本文件的扩展名 , SQL中不区分大小写,各种不同的数据库,都支持SQL语言

在MySQL 学习 中 SQL 语言 是很重要的基础 , 用于存取数据以及查询、更新和管理关系数据库系统 , 这里先来简单学习一下 使用 SQL 语句对 MySQL 中的系列操作

数据库操作

=========

SQL 语句是不区分大小写的 , 以下语句中的字母是不是大小写都没关系

显示数据库


语法

show databases; – 在 SQL 中每段语句以 ; 结束

这条语句很简单 , 就是能让你看到当前 MySQL 中有几个数据库.

示例

mysql> show databases;

±-------------------+

| Database |

±-------------------+

| information_schema |

| mysql |

| performance_schema |

| sys |

±-------------------+

4 rows in set (0.00 sec) – 显示当前有几行数据库

创建数据库


语法

create database [if not exists] <数据库名>;

说明

  • [ ] 中的是可选项

  • < > 中的是指定数据库库名

示例

  1. 第一种创建方式 , 直接创建一个数据库 , 数据库名为 test

mysql> create database test;

Query OK, 1 row affected (0.01 sec)

如果已经创建了数据库 , 再次创建相同名称的数据库会报错

  1. 第二种创建方式 , 先判断要创建的数据库是否存在 , 存在则不进行创建

mysql> create database test;

ERROR 1007 (HY000): Can’t create database ‘test’; database exists

– 报错信息:无法创建数据库test;数据库存在

这种方式创建的数据库即使数据库存在也不会出现报错 , 但是会出现一个警告 , 通过 show warnings 语句可以查看当前警告语句 , 一般来说 , warning级别的警告可以忽略

mysql> show warnings;

±------±-----±----------------------------------------------+

| Level | Code | Message |

±------±-----±----------------------------------------------+

| Note | 1007 | Can’t create database ‘test’; database exists |

±------±-----±----------------------------------------------+

1 row in set (0.00 sec)

– 警告信息:无法创建数据库test;数据库存在

通过刚才的查看数据库指令可以查看我们创建的数据库

mysql> show databases;

±-------------------+

| Database |

±-------------------+

| information_schema |

| mysql |

| performance_schema |

| sys |

| test | – 刚才创建的数据库

±-------------------+

5 rows in set (0.00 sec)

选中数据库


语法

use <数据库名>;

说明

  • < > 中的是指定数据库库名

示例

选中刚创建的数据库

mysql> use test;

Database changed – 选中了数据库的提示

在对数据库进行操作时,比如在数据库中创建一张表(文章下面会讲到) , 都需要先选中数据库 , 才能进行下一步操作。

删除数据库


语法

drop database [if exists] <数据库名>;

说明

  • [ ] 中的是可选项

  • < > 中的是指定数据库库名

示例

  1. 第一种删除数据库的方式 , 直接删除数据库

mysql> drop database test;

Query OK, 0 rows affected (0.01 sec)

这种删除方式在删除不存在的数据库时会报错

mysql> drop database test;

ERROR 1008 (HY000): Can’t drop database ‘test’; database doesn’t exist

– 报错信息:不能删除数据库test;数据库不存在

  1. 第二种删除数据库的方式 , 在删除时先进行判断数据库是否存在 , 存在则进行删除

mysql> drop database if exists test;

Query OK, 0 rows affected, 1 warning (0.00 sec)

– 和创建数据库一样 , 会将报错信息转成警告信息

ps:删除数据库是一个非常危险的操作 , 一旦删除数据库,这里的数据没备份的画就很难找回来了,所以在工作中删除数据库的时候望君三思

常用数据类型

==========

MySQL 和其它语言一样 , 也有基本的数据类型 , 而这些类型基本可以分成三大类 <数值类型> <字符串类型> <日期类型>

数值类型

数值类型主要分为两种 , 整型和浮点型

| 数据类型 | 大小 | 取值范围 |

| — | — | — |

| bit(M) | M指定位数,默认为1位 | 0 ~ 2^M-1 |

| tinyint | 1字节 |  -128 ~ 127 |

| smallint | 2字节 |  -32768 ~ 3276 |

| int | 4字节 | -2147483648 ~ 2147483647 |

| bigint | 8字节 | -9223372036854775808 ~ 9223372036854775807 |

| float(M,D) | 4字节 | -3.402 823 466 E+38 ~ -1.175 494 351 E-38

0

1.175 494 351 E-38 ~ 3.402 823 466 351 E+38 |

| double(M,D) | 8字节 | -1.797693134 862 3157 E+308  ~  -2.2250738585072014E-308)

0

2.2250738585072014E-308 ~ 1.7976931348623157E+308 |

| decimal(M,D) | M/D最大值+2 | 依赖于M和D的值 , M最大65 D最大30 |

字符串类型

| 数据类型 | 大小 | 说明 |

| — | — | — |

| char(size) | 0-255字节 | 定长字符串 size为字符的个数 |

| varchar(size) | 0 ~ 65535字节 | 变长度字符串 size为字符的个数 |

| text | 0 ~ 65535字节 | 长文本数据 |

| mediumtext | 0 ~ 16777215字节 | 中等长度文本数据 |

| longtext | 0 - 4294967295字节 | 极大文本数据 |

| blob | 0 ~ 65535 | 二进制形式的长文本数据 |

日期类型

| 类型 | 大小  | 范围 | 格式 | 说明 |

| — | — | — | — | — |

| DATE | 3字节 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |

| TIME | 3字节 | ‘-838:59:59’/‘838:59:59’ | HH:MM:SS | 时间值或持续时间 |

| YEAR | 1字节 | 1901/2155 | YYYY | 年份值 |

| DATETIME | 8字节 | 1000-01-01 00:00:00

~

999912-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |

| TIMESTAMP | 4字节 | 1970-01-01 00:00:00

~(北京时间)

2038-1-19 11:14:07 | YYYYMMDD HHMMSS | 混合日期和时间值时间戳 |

以上数据类型为 MySQL 常用数据类型 , 在创建数据表的时候会用到

数据表操作

=========

数据表是用来记录数据的, 数据表需要在数据库中建立 , 刚才介绍的创建数据库相当于在你的电脑中创建一个文件夹 , 而数据表就相当于文件夹里面的文件 , 每个文件夹都能存放很多文件 , MySQL 也一样 , 在同一个数据库中能创建多张数据表 , 接下来作者就来讲解一下关于数据表的基本操作 , 在进行表操作前我们需要先选择一个数据库

use test;

创建数据表


在数据库中创建出一张数据表

语法

create table <数据表名>(列名 类型,列名 类型,…);

说明

  • < > 中的是指定数据库库名

示例

  1. 创建一个可以描述姓名 和 年龄 的学生表

mysql> create table Student(name varchar(20),age int);-- 列名与类型之间要使用空格隔开

Query OK, 0 rows affected (0.03 sec)

如果需要创建的数据表语句比较长的话 , 在MySQL中支持分行写 SQL 语句 , 碰到分号结尾才会执行语句 , 上面 SQL 语句也可以写成下面的形式

mysql> create table Student(

-> name varchar(20),

-> age int – 最后一列不需要逗号分割

-> );

Query OK, 0 rows affected (0.01 sec)

注意 : 数据表名/列名,需要遵守一定的命名规则:数字字母下划线(数字不能开头),不能和SQL中的关键字冲突 (如果非要和关键字冲突,可以使用反引号 ` 引起来)

查看数据表结构


想要查看一张数据表中有几列 , 列名是什么 , 类型是什么,默认值是什么都可以使用查看数据表结构 SQL 语句

语法

desc <数据表名>;

说明

  • < > 中的是指定数据表表名

示例

  1. 查看刚才学生表的结构

desc Student;

mysql> desc Student;

±------±------------±-----±----±--------±------+

| Field | Type | Null | Key | Default | Extra |

±------±------------±-----±----±--------±------+

| name | varchar(20) | YES | | NULL | |

| age | int(11) | YES | | NULL | |

±------±------------±-----±----±--------±------+

2 rows in set (0.01 sec)

解释

  • Field : 该列的字段

  • Type : 该列的类型

  • Null : 表示这该列是否允许为空

  • key : 表示该列是否已编制索引

  • Default : 该列的默认值

  • Extra : 表示该行格外的组件

以上为空项的列在后面介绍 MySQL 约束中都会出现 , 所以现在暂不深究

修改数据表


有时候 , 如果创建数据表的时候不小心将字段名称或者字段类型设置错了的话 , 又或者多(少)添加了字段 , 即使数据表创建好了 , 我们还是可以去修改的.

关键字

alter

1. 删除字段

语法

alter table <数据表名> drop 列名;

说明

  • < > 中的是指定数据表表名

示例

  1. 删除学生表中的年龄字段

mysql> alter table Student drop age;

Query OK, 0 rows affected (0.03 sec)

Records: 0 Duplicates: 0 Warnings: 0

重新查看一下学生表的表结构 , 可以发现在学生表中只剩下 姓名 字段了

mysql> desc Student;

±------±------------±-----±----±--------±------+

| Field | Type | Null | Key | Default | Extra |

±------±------------±-----±----±--------±------+

| name | varchar(20) | YES | | NULL | |

±------±------------±-----±----±--------±------+

1 row in set (0.00 sec)

  1. 如果当前数据表中只剩下一个字段 , 那么此时使用删除字段的SQL语句则会报错

mysql> alter table Student drop name;

ERROR 1090 (42000): You can’t delete all columns with ALTER TABLE; use DROP TABLE instead

– 报错信息 : 你不能用ALTER TABLE删除所有的列;使用DROP TABLE代替

删除了所有字段跟删除数据表没什么区别 , 所以这个时候报错信息就会提醒你用删除数据表代替

2. 添加字段

语法

alter table <数据表名> add 列名 类型 [first/after];

说明

  • < > 中的是指定数据表表名

  • [ ] 中的是可选项

示例

  1. 为刚才的学生表添加 年龄 字段

mysql> alter table Student add age int;

Query OK, 0 rows affected (0.02 sec)

Records: 0 Duplicates: 0 Warnings: 0

查看表结构 , 可以看出 年龄 字段已经被添加上去了

mysql> desc Student;

±------±------------±-----±----±--------±------+

| Field | Type | Null | Key | Default | Extra |

±------±------------±-----±----±--------±------+

| name | varchar(20) | YES | | NULL | |

| age | int(11) | YES | | NULL | |

±------±------------±-----±----±--------±------+

2 rows in set (0.00 sec)

  1. 如果添加字段时 , 想把该字段设置为第一列 , 就可以使用可选项中的关键字 first , 比如添加一个 编号 字段 在第一列

mysql> alter table Student add id int first;

Query OK, 0 rows affected (0.01 sec)

Records: 0 Duplicates: 0 Warnings: 0

查看表结构 , 可以发现 id 字段已经在数据表中的第一列

mysql> desc Student;

±------±------------±-----±----±--------±------+

| Field | Type | Null | Key | Default | Extra |

±------±------------±-----±----±--------±------+

| id | int(11) | YES | | NULL | |

| name | varchar(20) | YES | | NULL | |

| age | int(11) | YES | | NULL | |

±------±------------±-----±----±--------±------+

3 rows in set (0.00 sec)

ps: 在使用任意位置添加字段时 , 需要在 after 关键字后面指定为哪个字段后面

3. 修改字段类型及名称

关于修改字段类型和名称有两种语法

语法1

alter table <数据表名> modify 字段名 类型 [first/after];

说明

  • < > 中的是指定数据表表名

  • [ ] 中的是可选项

  • modify 只能修改字段的类型 , 并不能修改字段的名称

示例

  1. 将学生表中的字段 name 的类型从 varchar(20) 改成 varchar(10)

mysql> alter table Student modify name varchar(10);

Query OK, 0 rows affected (0.02 sec)
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

如果觉得本文对你有帮助的话,不妨给我点个赞,关注一下吧!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

mysql> alter table Student modify name varchar(10);

Query OK, 0 rows affected (0.02 sec)
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-nvAJJnxh-1713518351911)]

[外链图片转存中…(img-AE30GB5y-1713518351913)]

[外链图片转存中…(img-9zCFjQft-1713518351915)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

如果觉得本文对你有帮助的话,不妨给我点个赞,关注一下吧!

[外链图片转存中…(img-wxjNggxA-1713518351916)]

[外链图片转存中…(img-fqQiq1VU-1713518351918)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 27
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值