MySQL 数据库 增删查改、克隆、外键 等操作

news2024/11/18 9:42:11

数据库中有数据表,数据表中有一条一条的记录。

可以用Navicat 等远程连接工具链接数据库,不过数据库需要开启授权。

SQL 字段数据类型

int:整型,默认长度是11
float:单精度浮点,4字节32位
double:双精度浮点,8字节64位
char:不可变长的字符类型,读取速度快,耗空间,长度不足会补空格。
varchar:可变长的字符类型,但读取数据比 char 低,容易产生内存碎片
text :文本
image:图片
decimal(6,2) :定义6个有效长度数字,小数点后面有两位
char 最多支持 255 个字符,char 如果存入数据的实际长度比指定长度要小,会补空格至指定长度;如果存入的数据的实际长度大于指定长度,低版本的 Mysql 会被截取前 255个 字符,高版本会报错。

注 varchar 类型:在4.0版本以下,varchar(20),指的是20字节;5.0版本以上,varchar(20),指的是20字符。

查看数据库信息语句

首先登陆MySQL,也可以用SQL工具如 Navicat 远程连接,前提是要在Linux Mysql 中用 grant 进行授权,允许远程登录。

#授予root用户可以在所有终端远程登录,使用的密码是123456
grant all privileges on *.* to 'root'@'%' identified by '123456';

#对所有数据库和所有表有操作权限 with grant option
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

Navicat 连接参数


为了练习在Linux 中操作,下面的都是在 Linux 命令框中直接敲的。

Linux 中登录Mysql
mysql -u root -p密码

1.查看当前服务器中的数据库  
SHOW DATABASES;

2.查看数据库中包含的表
USE 数据库名    #注意:数据库名区分大小写
SHOW TABLES;

3.查看表的结构(设计、字段)
DESCRIBE [数据库名.]表名
或
DESC 表名

4. 查看创建表的命令
SHOW CREATE TABLE 表名

5.查询结果行转列查看 \G
SELECT * FROM USER_INFO\G;

6. 查看当前所在数据库
select database()

SQL 语句

SQL语句用于 维护管理数据库,包括 数据查询、访问控制、数据更新、对象管理、备份等功能。

SQL语言功能
DDL数据定义语言,用于 创建、删除数据库对象,如库、表、索引等
DML数据操纵语言,用于 对表中的数据进行管理
DQL数据查询语言,用于 从数据表中查找符合条件的数据记录
DCL数据控制语言,用于 设置或者更改数据库用户或角色权限

创建、删除 数据库 数据表

创建新的数据库

CREATE DATABASE 数据库名;

例如:CREATE DATABASE SCHOOL;

在数据库中新建表

CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);

#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。

例:USE SCHOOL;
CREATE TABLE STUDENT (ID int(10) NOT NULL,NAME varchar(20),AGE int(3),SEX char(2),PRIMARY KEY (ID));


在这里插入图片描述

删除表

DROP TABLE [数据库名.]表名;                #如不用USE进入库中,则需加上数据库名

删除数据库

DROP DATABASE 数据库名;   #会连库中的表一起删除

删除操作要小心,删除前记得被备份


向表中添加、删除 记录、查询记录

#先创建 STARBUCKS 数据库,再创建 USER_INFO 表,添加一些字段

CREATE DATABASE STARBUCKS;
USE STARBUCKS;

DROP TABLE IF EXISTS `USER_INFO`;
CREATE TABLE `USER_INFO`  (
  `ID` int(32) NOT NULL,
  `NAME` varchar(20) DEFAULT NULL,
  `TYPE` varchar(32) DEFAULT NULL,
  `ADD_TIME` varchar(20) DEFAULT NULL,
  `IS_USED` char(5) DEFAULT NULL,
  PRIMARY KEY (`ID`) 
)

向表中添加记录

INSERT INTO 表名(字段1,字段2[,...]) VALUES(字段1的值,字段2的值,...);

例:
#一条一条全字段添加
INSERT INTO USER_INFO(ID,NAME,TYPE,ADD_TIME,IS_USED) VALUES (1001, '咖啡机', '机器齐全', '2021-06-22', 'D0001');
INSERT INTO USER_INFO VALUES (1002, '奶茶机', '设备', '2021-06-23', 'D0001');

#或一条命令添加多条
INSERT INTO USER_INFO (ID,NAME,TYPE,ADD_TIME,IS_USED) VALUES (1003, '牛奶', '食品', '2021-06-24', 'D0002'),
(1004, '包装机', '设备', '2021-06-20', 'D0001'),
(1005, '糖块', '食品', '2021-06-25', 'D0001'),
(1006, '吸管', '设备', '2021-06-20', 'D0001'),
(1007, '奶油', '食品', '2021-06-25', 'D0002');

SELECT 查询语句 

SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];

#从0行开始共几行
SELECT * FROM 表名 limit 行数 

#根据行数范围取记录数
SELECT * FROM 表名 limit 开始行数(不包括),从开始行数开始的共几行

 UPDATE 更新

注意WHERE 加更新的条件,不然会更新所有

UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];

如 UPDATE USER_INFO SET TYPE='仪器' WHERE ID=1001;

 DELETE 删除记录

注意WHERE 加删除记录的条件,不然会删除所有

DELETE FROM 表名 [WHERE 条件表达式];

例:delete from class2 where id=4;


修改表名,添加、修改、删除 字段,添加唯一约束

修改表名

ALTER TABLE 旧表名 RENAME 新表名;

例:ALTER TABLE USER_INFO RENAME USER_MESG;
SHOW TABLES;

 表中添加字段

ALTER TABLE 表名 ADD 字段名 varchar(50) default '默认值';
#default 表示此字段设置默认值;可与 NOT NULL 配合使用,默认值立即生效

例:
ALTER TABLE USER_MESG ADD STATUS VARCHAR(20) DEFAULT '在用';

 删除表中字段

ALTER TABLE 表名 DROP 字段名;

修改字段(列)名,添加唯一键约束

ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [unique key];

例:
ALTER TABLE USER_MESG CHANGE NAME DEV_NAME VARCHAR(30) UNIQUE KEY;

#验证唯一键约束,添加重名的约束字段
INSERT INTO USER_MESG VALUES (1008,'牛奶','饮料','2021-06-28','D0001','已过期');
#触发唯一键约束,新增失败

UNIQUE KEY 唯一键:可以用有空值,不能出现重复值,也不能为 NULL,

 查看、删除、添加 表中的索引

#查看表有哪些索引
 SHOW INDEXES FROM 表名;

 单独新增 去除唯一键约束

#给字段 DEV_NAM 增加唯一键约束
ALTER TABLE USER_MESG ADD UNIQUE INDEX (DEV_NAME);

#给字段 DEV_NAM 去除唯一键约束
#查看索引表中,字段 DEV_NAME 对应的 索引名 Key_name,根据索引名删除索引

ALTER TABLE USER_MESG DROP INDEX 索引名;

在这里插入图片描述

 扩展功能,字段值自增等

use school;
CREATE TABLE IF NOT EXISTS AREA_INFO (                                                                                                         -> AREA_ID int(4) ZEROFILL PRIMARY KEY AUTO_INCREMENT,    #指定主键的另一种方式
-> AREA_NAME VARCHAR(20) NOT NULL UNIQUE KEY,
->  IS_USED CHAR(5) NOT NULL);


#---------------命令解释--------------------------------
#if not exists:表示检测要创建的表是否已存在,如果不存在就继续创建
#int(4) zerofill:表示若数值不满4位数,则前面用“0”填充,例0001
#auto_increment:表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;
#自增长字段必须是主键;字段类型必须是 int 类型,如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次
#unique key:表示此字段唯一键约束,此字段数据不可以重复;一张表中只能有一个主键, 但是一张表中可以有多个唯一键
#not null:表示此字段不允许为NULL

 数据表高级操作

克隆表,将数据表的数据记录生成到新的表中
方法一:使用 like

#先克隆表结构
#在插入所有数据
CREATE TABLE AREA_CLONE1 LIKE AREA_INFO;     #通过 LIKE 方法,复制 AREA_INFO 表结构生成 AREA_CLONE1 表
INSERT INTO AREA_CLONE1 SELECT * FROM AREA_INFO;

 

如果两张表结构一样,可将一张表的查询结果集返回给 另一张表
INSERT INTO 表1 SELECT * FROM 表2

方法二:直接克隆

#直接将源表的查询结果给创建的新表

CREATE TABLE 克隆表名(SELECT * FROM 源表名);

SHOW CREATE TABLE 克隆表名\G;                    #获取数据表的表结构、索引等信息

注意:直接克隆无法复制原表的 主键、自动增长、约束、索引等配置。 用 LIKE 可以。


删除记录后主键记录重头开始自增 

DELETE FROM 表名;
#DELETE清空表后,返回的结果内有删除的记录条目;DELETE工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM 删除所有记录后,再次新添加的记录会从原来最大的记录 ID 后面继续自增写入记录。
truncate table 表名;
#TRUNCATE 清空表后,没有返回被删除的条目;TRUNCATE 工作时是将表结构按原样重新建立,因此在速度上 TRUNCATE 会比 DELETE 清空表快;使用 TRUNCATE TABLE 清空表内数据后,ID 会从 1 开始重新记录。
#相当于直接格式化表

创建临时表

临时表是在当前连接中生效的表。

临时表创建成功之后,使用 SHOW TABLES 命令是看不到创建的临时表的;
临时表会在连接退出后被销毁。 如果在退出连接之前,也可以可执行增删改查等操作,比如使用 DROP TABLE 语句手动直接删除临时表。

CREATE TEMPORARY TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);

例:
CREATE TEMPORARY TABLE TEM_TABLE (ID int(4) PRIMARY KEY, REMARK VARCHAR(20));

INSERT INTO TEM_TABLE VALUES(1001,'临时表');
SELECT * from TEM_TABLE;

执行 quit 退出连接后,再次登录,就操作不了临时表了

在这里插入图片描述
创建外键约束,保证数据的完整性和一致性

外键的定义:如果同一个属性字段X 在表一中是主键,而在表二中不是主键,则字段X称为表二的外键。

主键表和外键表的理解:
(1)以公共关键字作主键的表为主键表(父表、主表)
(2)以公共关键字作外键的表为外键表(从表、外表)

注意:
1. 与外键关联的主表的字段必须设置为主键。
2. 要求从表不能是临时表,主从表的字段具备相同的数据类型、字符长度和约束。
#创建主表HOBBY 
CREATE TABLE HOBBY (HOBID int(4),HOBNAME VARCHAR(50));

#创建从表HOBBY_DETAIL 
CREATE TABLE HOBBY_DETAIL (ID int(4) PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(10),AGE int(3),HOBID int(4));

#为主表HOBBY 添加一个主键约束。主键名建议以“PK_”开头。
ALTER TABLE HOBBY ADD CONSTRAINT PK_HOBID PRIMARY KEY (HOBID);

#为从表HOBBY_DETAIL 表添加外键,并将 HOBBY_DETAIL 表的 hobid 字段和 HOBBY 表的 hobid 字段建立外键关联。
#外键名建议以“FK_”开头。
ALTER TABLE HOBBY_DETAIL ADD CONSTRAINT FK_HOB FOREIGN KEY (HOBID) REFERENCES HOBBY (HOBID);

DESC HOBBY_DETAIL ;

#插入新的数据记录时,要先主表再从表
INSERT INTO HOBBY VALUES(1,'Football');
INSERT INTO HOBBY_DETAIL VALUES(1,'Messi',32,1);

#删数数据记录时,要先从表再主表,也就是说删除主键表时必须先删除其他与之关联的表。
DROP TABLES HOBBY_DETAIL ;
DROP TABLES HOBBY ;

#查看和删除外键约束
SHOW CREATE TABLE HOBBY_DETAIL ;
ALTER TABLES HOBBY_DETAIL DROP foreign key FK_HOB ;  #FK_HOB 是之前添加的外键名
ALTER TABLES HOBBY_DETAIL DROP key FK_HOB ;

DESC HOBBY_DETAIL ;

去除外键后就可以删除表了
DROP TABLES HOBBY_DETAIL ;
DROP TABLES HOBBY ;

MySQL 六种约束

  1. 主键约束(primary key)

  2. 外键约束(foreign key)

  3. 非空约束(not null)

  4. 唯一性约束(unique [key|index])

  5. 默认值约束(default)

  6. 自增约束(auto_increment)

key 列值的含义:

如果键是 PRI,则列是主键或多列主键中的列之一。
如果键是 UNI,则该列是唯一索引的第一列。(唯一索引允许多个空值,但可以通过检查NULL字段来判断该列是否允许空。)
如果键为 MUL,则该列是非唯一索引的第一列,其中允许在列中多次出现给定值。

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

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

相关文章

Kyligence Zen产品体验-让大数据分析更轻松

很高兴有机会为大家分享我对 Kyligence Zen 产品的真实体验。在过去的几周中,我花费了大量时间使用这个企业级指标平台,并发现它在帮助企业处理和分析海量数据方面拥有强大的能力。 作为数据分析师,我们经常需要处理和分析大量的数据。这可能…

K8S管理系统项目实战[前端开发]-1

前端 Vue 入门与进阶 Vue ElementPlus 组件库 K8s管理系统项目实战[前端开发]-1 项目概述、框架搭建 Vue前端开发:整体布局 Vue前端开发:工作流 Vue前端开发:登录登出、部署、总结 一、项目慨述 本节是k8s管理系统项目实战的前端开发…

Endnote引用中文、英文参考文献方法(不用手敲中文文献信息)

目录 引用英文参考文献 插入中文参考文献格式 导入出错的解决方案 引用英文参考文献 打开知网的官网,选择想要导出成endnote格式的文献(在文献前面打√,即为选中状态),在导出与分析-导出文献-endnote,即…

配置Visual Studio Code连接远程服务器

目录 一、Windows用户需要先配置好本地的Remote SSH相关服务 二、打开VS Code,在扩展中搜索"Remote - SSH"并安装​编辑 三、详细操作 四、在出现的config配置文件中写入以下信息 五、点击VSCode界面最左侧的远程资源管理器 六、输入密码&#xff0…

记录一个特殊场景下,修改代码,idea 需要 mvn clean install的问题

修改java代码,mvn clean install 才能生效的场景,在网上看到一些方法,但是都没有生效。eg: 删除.idea, 删除后重新导入。每次修改代码测试的时候都要手动 clean install才可以,比较麻烦。 跑代码的时候,自…

HALCON多线程框架

1.整体架构 HALCON多线程处理框架基本思想是单独一个线程获取待处理图像,若干个图像处理线程并行执行 2.架构图 3.HALCON多线程并行相关算子 broadcast_condition clear_barrier clear_condition clear_event clear_message clear_message_queue clear_mutex cre…

Mac 安装 Python3.10 和 配置环境

Mac 安装 Python3.10 并且配置环境 一、Python的安装 访问官网:https://www.python.org/选择系统(Mac): [https://www.python.org/downloads/macos/] 3.选择一个版本下载。我这里选择了3.10.X 下载页面:https://www.python.or…

Qt Creator 快捷键

一、快捷键 下面是Qt常用快捷键用法,如下: 1、构建 快捷键功能ctrl/注释ctrlr运行ctrlb编译 2、查找 快捷键功能ctrlf单文件查找ctrlshiftf多文件查找ctrlshiftu查找所有使用该符号的地方(先选中某个符号,执行快捷键&#xff0…

句子扩写软件-文案扩写软件

什么是扩写软件 扩写软件是一种工具,可以帮助用户对一段文本进行扩展,增加文本的长度和信息量,同时保持原始内容的基本意思和结构不变。简单来说,扩写软件就是通过自然语言处理技术,对原始文本进行修改或补充&#xf…

搭建一个SpringSecurity项目

首先需要有一点的SpringBoot基础再来搭建会更好一点 springsecurity项目主要用于权限,验证等操作,非常方便 选择新建项目——选择spring Initializr项目 相对应的设置大家可以自行设置然后点击下一步 这里我选择两个依赖,也不用过多&#xff…

java实现mysql两个数据库对比表结构是否一致

【使用场景】 本地开发完后,增加或者删除了字段,或者修改了字段属性。 如何判定现场环境和本地环境的数据表结构一致性? 肉眼看的话,实在是一个大的工作量,所以开发了此工具。 【类存放路径】 CompareDbMain是主函数…

Spring更简单的存取Bean

在上一篇blog里边我介绍了spring项目的创建以及Bean对象的存储和读取。 存储:1.首先创建Bean对象 2.将Bean对象注册到Spring容器中【Bean标签】 读取:1.获取Spring上下文对象 2.获取指定的Bean对象 3.使用Bean对象 但是随着Bean对象的增多以及使用频率的…

【面试】Java 反射机制(常见面试题)

文章目录 前言一、反射是什么?二、为什么要有反射三、反射 API3.1 获取 Class 对象的三种方式3.2 获取成员变量3.3 获取构造方法3.4.获取非构造方法 四、实践五、常见面试题5.1. 什么是反射?5.2. 哪里用到反射机制?5.3. 什么叫对象序列化&…

IDEA沉浸式编程体验

前言 IntelliJ IDEA:前不久推出了一个新的概念Fleet编辑器。用过的人都知道,不过是模仿VScode整一套,但相比之下,fleet虽然在传统IDEA的基础上简约了不少,一旦打开智能模式,那内存占用刷一下就上去了,没个3…

Apache Atlas(1):Atlas 入门

1 Atlas 概述 Apache Atlas 为组织提供开放式元数据管理和治理功能,用以构建其数据资产目录,对这些资产进行分类和管理,形成数据字典。并为数据分析师和数据治理团队,提供围绕这些数据资产的协作功能。 注:数据字典&…

SpringBoot3 integrate SpringDoc

SpringDoc 官方文档 Springdoc3取代swagger2 pom xml加载Springdoc JarOpenAPIDefinition&#xff0c;声明一个OpenAPI对API进行分组&#xff0c;方便查询访问地址springdoc ConfigurationRequestMapping pom xml加载Springdoc Jar <dependency><groupId>org.sprin…

记录idea插件wl spring assistant plugin的坑-不提示配置项,显示黑树叶

某一天在编写springboot项目的配置文件是&#xff0c;提示我按照插件wl spring assistant。 然后手贱&#xff0c;就安装了。 等第二天在编写配置文件的时候&#xff0c;就遇到了大坑&#xff0c;配置文件无法提示了。 正常情况下&#xff1a; 比如我们输入mybatis-plus的log&a…

mmpose----AnimalKingdom数据集使用mmpose训练

本文主要讲述了使用mmpose训练AnimalKingdom数据集来预测鸟类骨架 1、下载mmpose&#xff0c;AnimalKingdom数据集补充代码 安装 — MMPose 1.0.0 文档根据官方文档安装mmpose可以跑通demo GitHub - sutdcv/Animal-Kingdom: [CVPR2022] Animal Kingdom: A Large and Diverse…

自动化渗透测试自动化挖掘src

文章目录 前言思路资产收集资产收集http服务自动攻击利用 前言 好久没有写blog了&#xff0c;最近在上班干活&#xff0c;最近抽空研究了一下自动化渗透测试&#xff0c;下面分享一下 思路 资产收集 传统的资产收集都是跟域名挂钩&#xff0c;域名收集的好坏也至关重要&…

键盘敲入 A 字母时,操作系统期间发生了什么?

键盘可以说是我们最常使用的输入硬件设备了&#xff0c;但身为程序员的你&#xff0c;你知道「键盘敲入A 字母时&#xff0c;操作系统期间发生了什么吗」&#xff1f; 设备控制器 我们的电脑设备可以接非常多的输入输出设备&#xff0c;比如键盘、鼠标、显示器、网卡、硬盘、打…