MySQL基础篇——MySQL数据库 表的操作,

news2024/11/24 9:01:54

  • 作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 

  •  座右铭:低头赶路,敬事如仪

  • 个人主页:网络豆的主页​​​​​​

目录

 前言

一.表操作

1.表操作-查询创建

1)查询当前数据库所有表

 2). 查看指定表结构

4). 创建表结构 

2.表操作-数据类型

1). 数值类型

2). 字符串类型

3). 日期时间类型

3.表操作-案例

4.表操作-修改

1). 添加字段

2). 修改数据类型

3). 修改字段名和字段类型

4). 删除字段

5). 修改表名

5.表操作-删除

1). 删除表

2). 删除指定表, 并重新创建表


 前言

本章将会讲解MySQL数据库的表的一些操作。

一.表操作

1.表操作-查询创建

1)查询当前数据库所有表

show tables
比如 , 我们可以切换到 sys 这个系统数据库 , 并查看系统数据库中的所有表结构。
use sys;
show tables;

 2). 查看指定表结构

desc 表名 ;
通过这条指令,我们可以查看到指定表的字段,字段的类型、是否可以为 NULL ,是否存在默认值等信息。

3). 查询指定表的建表语句
show create table 表名 ;

 通过这条指令,主要是用来查看建表语句的,而有部分参数我们在创建表的时候,并未指定也会查询 到,因为这部分是数据库的默认值,如:存储引擎、字符集等。

4). 创建表结构 

CREATE TABLE 表名(
字段1 字段1类型 [ COMMENT 字段1注释 ],
字段2 字段2类型 [COMMENT 字段2注释 ],
字段3 字段3类型 [COMMENT 字段3注释 ],
......
字段n 字段n类型 [COMMENT 字段n注释 ]
) [ COMMENT 表注释 ] ;
注意: [...] 内为可选参数,最后一个字段后面没有逗号
比如,我们创建一张表 tb_user ,对应的结构如下,那么建表语句为:

create table tb_user(
  id int comment '编号',
  name varchar(50) comment '姓名',
  age int comment '年龄',
  gender varchar(1) comment '性别'
) comment '用户表';

2.表操作-数据类型

在上述的建表语句中,我们在指定字段的数据类型时,用到了 int varchar ,那么在 MySQL 中除了
以上的数据类型,还有哪些常见的数据类型呢? 接下来 , 我们就来详细介绍一下 MySQL 的数据类型。
MySQL 中的数据类型有很多,主要分为三类: 数值类型、字符串类型、日期时间类型

1). 数值类型

类型
大小
有符号 (SIGNED) 范围
无符号 (UNSIGNED) 范围
描述
TINYINT
1byte
(-128 127)
(0 255)
小整
数值
SMALLINT
2bytes
(-32768 32767)
(0 65535)
大整
数值
MEDIUMINT
3bytes
(-8388608 8388607)
(0 16777215)
大整
数值
INT/INTEGER
4bytes
(-2147483648 ,2147483647)
(0 4294967295)
大整
数值
BIGINT
8bytes
(-2^63 2^63-1)
(0 2^64-1)
极大
整数
FLOAT
4bytes
(-3.402823466 E+38
3.402823466351 E+38)
0 (1.175494351 E-
38 3.402823466 E+38)
单精
度浮
点数
DOUBLE
8bytes
(-1.7976931348623157
E+308
1.7976931348623157
E+308)
0
(2.2250738585072014
E-308
1.7976931348623157
E+308)
双精
度浮
点数
DECIMAL
依赖于 M( 精度 ) D( 标度 )
的值
依赖于 M( 精度 ) D( 标度 ) 的值
小数
(
确定
点数 )
如:
1). 年龄字段 -- 不会出现负数, 而且人的年龄不会太大
age tinyint unsigned
2). 分数 -- 总分100分, 最多出现一位小数
score double(4,1)

2). 字符串类型

类型
大小
描述
CHAR
0-255 bytes
定长字符串 ( 需要指定长度 )
VARCHAR
0-65535 bytes
变长字符串 ( 需要指定长度 )
TINYBLOB
0-255 bytes
不超过 255 个字符的二进制数据
TINYTEXT
0-255 bytes
短文本字符串
BLOB
0-65 535 bytes
二进制形式的长文本数据
TEXT
0-65 535 bytes
长文本数据
MEDIUMBLOB
0-16 777 215 bytes
二进制形式的中等长度文本数据
MEDIUMTEXT
0-16 777 215 bytes
中等长度文本数据
LONGBLOB
0-4 294 967 295 bytes
二进制形式的极大文本数据
LONGTEXT
0-4 294 967 295 bytes
极大文本数据

char varchar 都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和 字段值的长度无关 。而varchar是变长字符串,指定的长度为最大占用长度 。相对来说,char的性 能会更高些。

如:
   1). 用户名 username ------> 长度不定, 最长不会超过50
       username varchar(50)
   2). 性别 gender ---------> 存储值, 不是男,就是女
       gender char(1)
   3). 手机号 phone --------> 固定长度为11
       phone char(11)

3). 日期时间类型

类型
大小
范围
格式
描述
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
9999-12-31 23:59:59
YYYY-MM
DD
HH:MM:SS
混合日期和时
间值
TIMESTAMP
4
1970-01-01 00:00:01
2038-01-19 03:14:07
YYYY-MM-DD
HH:MM:SS
混合日期和时
间值,时间戳
如:
 1). 生日字段 birthday
     birthday date
 2). 创建时间 createtime
     createtime datetime

3.表操作-案例

设计一张员工信息表,要求如下:
1. 编号(纯数字)
2. 员工工号 ( 字符串类型,长度不超过 10 )
3. 员工姓名(字符串类型,长度不超过 10 位)
4. 性别(男 / 女,存储一个汉字)
5. 年龄(正常人年龄,不可能存储负数)
6. 身份证号(二代身份证号均为 18 位,身份证中有 X 这样的字符)
7. 入职时间(取值年月日即可)

对应的建表语句如下:

create table emp(
  id int comment '编号',
  workno varchar(10) comment '工号',
  name varchar(10) comment '姓名',
  gender char(1) comment '性别',
  age tinyint unsigned comment '年龄',
  idcard char(18) comment '身份证号',
  entrydate date comment '入职时间'
) comment '员工表';

 SQL语句编写完毕之后,就可以在MySQL的命令行中执行SQL,然后也可以通过 desc 指令查询表结构信息:

表结构创建好了,里面的 name 字段是 varchar 类型,最大长度为 10 ,也就意味着如果超过 10 将会报
错,如果我们想修改这个字段的类型 或 修改字段的长度该如何操作呢?接下来再来讲解 DDL 语句中,如何操作表字段。

4.表操作-修改

1). 添加字段

ALTER TABLE 表名 ADD 字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];
案例 :
emp 表增加一个新的字段 昵称 nickname ,类型为 varchar(20)
ALTER TABLE emp ADD nickname varchar(20) COMMENT '昵称';

2). 修改数据类型

ALTER TABLE 表名 MODIFY 字段名 新数据类型 (长度);

3). 修改字段名和字段类型

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];
案例 :
emp 表的 nickname 字段修改为 username ,类型为 varchar(30)
ALTER TABLE emp CHANGE nickname username varchar(30) COMMENT '昵称';

4). 删除字段

ALTER TABLE 表名 DROP 字段名;
案例 :
emp 表的字段 username 删除
ALTER TABLE emp DROP username; 1

5). 修改表名

ALTER TABLE 表名 RENAME TO 新表名;
案例 :
emp 表的表名修改为 employee
ALTER TABLE emp RENAME TO employee;

5.表操作-删除

1). 删除表

DROP TABLE [ IF EXISTS ] 表名;
可选项 IF EXISTS 代表,只有表名存在时才会删除该表,表名不存在,则不执行删除操作 ( 如果不
加该参数项,删除一张不存在的表,执行将会报错 )
案例 :
如果 tb_user 表存在,则删除 tb_user
DROP TABLE IF EXISTS tb_user;

2). 删除指定表, 并重新创建表

TRUNCATE TABLE 表名;
注意 : 在删除表的时候,表中的全部数据也都会被删除。

 创作不易,求关注,点赞,收藏,谢谢~    

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

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

相关文章

在ubuntu20.x上修改mysql密码

1,在安装mysql后测试mysql是否安装成功可链接数据测试输入一下命令命令都在终端中输入 mysql -u root -p 提示输入密码错误 输入命令后需要输入数据库密码,如忘记密码可进行数据库密码的修改 2,sudo cat /etc/mysql/debian.cnf 输入命令后…

MySQL2-多表查询、子查询、union、limit机制

一、多表查询 在实际开发中,大部分情况下都不是从单表中查询数据,一般都是多张表联合查询取出最终的结果。一般一个业务都会对应多张表。 1.表的连接方式的分类 内连接:等值连接、非等值连接、自连接 外连接:左外连接(…

HTML+CSS实训——Day02——写一个登陆界面

前言 今天要继续完成我们的音乐软件了&#xff0c;昨天写完了封面&#xff0c;今天该完成开屏广告和登陆界面了。 登陆界面代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-C…

00后太卷了,老油条感叹真干不过...

在程序员职场上&#xff0c;什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事&#xff0c;我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事&#xff0c;可遇不可求&#xff0c;向他学习还来不及呢。 真正让人反感的&#xff0c;是技术平平&…

Whatsns内容付费seo优化带采集和熊掌号运营问答系统

正文&#xff1a; 付费课程增加付费课程试听功能基础版和高级企业版&#xff0c;Plus版增加微信消息模板回答通知&#xff0c;采纳答案通知改进兼容因导入Discuz用户密码规则不兼容导致登录失败问题基础版和高级企业版&#xff0c;Plus版增加改进微信文本回复&#xff0c;支持…

【搭建服务器】Win10 IIS搭建webdav服务以及公网访问教程 - 挂载webdav

文章目录 1. 安装IIS必要WebDav组件2. 客户端测试3. 使用cpolar内网穿透&#xff0c;将WebDav服务暴露在公网3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表 4. 公网远程访问4.1 浏览器访问测试4.2 映射本地盘符访问4.3 安装Raidrive客户端 总结&#xff1a; 自己用W…

你真的会写测试用例吗?如何写?测试用例之中的细节拉满了...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 测试用例中的细节…

进程间通信之system V共享内存

目录 &#x1f39e;一、共享内存---shm 1.1shmget ①ftok得到一个key ②shmget得到shm ③shm的性质 1.2 shmctl ①ipcrm ②shmctl 1.3shmat&&shmdt ①shmat ②shmdt 1.4通过shm完成进程间通信 1.5shm的特点 ①shm共享内存的优点 ②shm的缺点 1.6shm的内核…

78.建立一个Web应用程序的布局第二部分

上节课中&#xff0c;我们实现的页面如下图所示&#xff1a; 而最终的页面如下图所示&#xff1a; ● 首先我们 先添加menu的按钮 <menu><button>New</button><button>Reply</button><button>Forward</button><button>Mar…

中兴新支点操作系统电力主站和变电站安全操作系统解决方案

近日&#xff0c;由中国软件行业协会主办的“第二届中国国际软件发展大会”在北京国家会议中心成功召开&#xff0c;国家部委领导、两院院士、行业领袖、龙头企业代表等齐聚一堂&#xff0c;剖析行业热点、分享趋势前瞻。中兴新支点操作系统凭借在国网和南网广泛应用的出色表现…

彻底明白IP地址如何计算相关地址【收藏】

通过IP地址和子网掩码与运算计算相关地址&#xff0c;知道ip地址和子网掩码后可以算出&#xff1a; 1、 网络地址 2、 广播地址 3、 地址范围 4、 本网有几台主机 例1&#xff1a;下面例子IP地址为1921681005 子网掩码是2552552550。算出网络地址、广播地址、地址范围、主…

17种常见VR推广渠道,你知道几个?

随着各方面技术的成熟&#xff0c;VR内容越来越多地出现在了生活的各个角落&#xff0c;凭借其身临其境的3D沉浸式体验&#xff0c;惊艳了不少消费者&#xff0c;为线上平台、实体店铺导流变现实现了极大的价值&#xff0c;成为了当下商企最受欢迎的营销模式。 此前我们经常收…

TFM—用于实时监控和数据管理的远程试验管理平台

随着信息技术的高速发展&#xff0c;企业对远程试验实时监控与数据管理的需求日益增强。而利用远程试验信息协同技术&#xff0c;可突破部门与地域的限制&#xff0c;并把试验现场的车辆状态信息、试验数据和分析结果实时传输给数据分析部门和设计部门等&#xff0c;从而缩短时…

死锁知识记录

一、类型 一般性死锁&#xff1a;这是最经典的死锁方式。指的是多个线程的执行下必须拥有多个资源&#xff0c;但是这些资源又分别被不同的线程占有着&#xff0c;即造成了一种僵持的状态。 嵌套性死锁&#xff1a;指的就是锁的互相嵌套使用。上面这种情况的死锁类型&#xf…

自动化测试的简单认识

1.什么是自动化测试 自动化测试指软件测试的自动化&#xff0c;在预设状态下运行应用程序或者系统&#xff0c;预设条件包括正常和异常&#xff0c;最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。 2.常见的WebDriver的API 定位元素常用的是 findelement方法 比…

MySQL 锁篇

1. MySQL 有哪些锁&#xff1f; 1&#xff09;全局锁 执行后整个数据库就处于只读状态&#xff0c;一般用于全库逻辑备份 2&#xff09;表级锁&#xff1a; 表锁&#xff1a; 表级别的共享锁&#xff1a;读锁 表级别的独占锁&#xff1a;写锁 元数据锁&#xff08;MDL&am…

一文吃透 Vue 框架教程(下)

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

【Spring】— MyBatis配置文件元素

目录 MyBatis配置文件元素properties元素settings元素typeAliases元素typeHandler元素objectFactory元素plugins元素environments元素mappers元素 MyBatis配置文件元素 使用MyBatis框架进行开发&#xff0c;需要创建MyBatis的核心配置文件&#xff0c;该配置文件包含重要的元素…

sqlite数据如何转成mysql数据类型

一、使用工具Navicat Premium 16 1.把db文件拖到Navicat Premium中&#xff0c;选择数据库&#xff0c;点击工具&#xff0c;数据传输 选择下一步 下一步 开始 这样就成功了&#xff0c;生成的sql文件就在你保存的位置了。 二、使用SQLiteStudio转换成mysql文件 1.打开SQLite…

关键字volatile 和信号

volatile是c语言中的一个关键字&#xff0c;在语言层面我们很难理解它&#xff0c;今天从信号角度我们来理解一下。 我们来看下面一段代码&#xff1a; 从代码表面看上去运行逻辑应该是&#xff0c;flag为0时候一直while循环&#xff0c;当有信号2产生进入到信号2的处理函数中…