Mysql数据库基本操作(增删改查)

news2024/11/23 11:50:06

目录

  • 一、数据库的基本操作
    • 1.1 登录数据库
    • 1.2 创建数据库并进入数据库
  • 二、查看数据库结构
    • 2.1 查看数据库信息
    • 2.2 查看数据库中包含的表及表结构
    • 2.3、常用的数据库类型
  • 三、Mysql数据文件
    • 3.1 MYD文件
    • 3.2 MYI文件
    • 3.3 MyISAM存储引擎
  • 四、SQL 语句
    • 1、 DDL数据定义语言
      • 1.1 删除指定的表
      • 1.2 删除指定数据库
    • 2、DML数据操控语言
      • 2.1 向数据表中插入新的内容
      • 2.2 修改、更新数据表中的数据记录
      • 2.3 查询数据表中的内容
      • 2.4 在数据表中删除指定的数据记录
    • 3、DQL数据查询语言
    • 4、DCL数据控制语言
      • 4.1 修改表名
      • 4.2 扩展表结构(增加字段)
      • 4.3 修改字段(列)名,添加唯一键
      • 4.4 删除字段
      • 4.5 拓展案例


一、数据库的基本操作

1.1 登录数据库

mysql -uroot -p

在这里插入图片描述

1.2 创建数据库并进入数据库

create database school;
show databases;

在这里插入图片描述

二、查看数据库结构

2.1 查看数据库信息

show databases;
show databases\G

在这里插入图片描述

2.2 查看数据库中包含的表及表结构

use school;
create table student (id int NOT NULL,Stuname char(10) NOT NULL,score decimal(5,2),passwd char(48) DEFAULT'', PRIMARY KEY (id));
desc student;
show tables;

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

在这里插入图片描述
在这里插入图片描述

2.3、常用的数据库类型

在这里插入图片描述

三、Mysql数据文件

主键是唯一的,但主键可以由多个字段构成

MySQL数据库的数据文件存放在**/usr/local/mysql/data目录下**,每个数据库对应一个子目录,用于存储数据表文件。每个数据表对应为三个文件,扩展名分别为“.frm”、“.MYD”和“.MYI”。

3.1 MYD文件

MYD”文件是MyISAM存储引擎专用,存放MyISAM表的数据。每一个MyISAM表都会有一个“.MYD”文件与之对应,同样存放于所属数据库的文件夹下,和“.frm”文件在一起。

3.2 MYI文件

“.MYI”文件也是专属于 MyISAM 存储引擎的,主要存放 MyISAM 表的索引相关信息。对于 MyISAM 存储来说,可以被 cache 的内容主要就是来源于“.MYI”文件中。每一个MyISAM 表对应一个“.MYI”文件,存放于位置和“.frm”以及“.MYD”一样。

3.3 MyISAM存储引擎

MyISAM 存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件
(frm,myd,myi)。 每个表都有且仅有这样三个文件做为 MyISAM 存储类型的表的存储,也就是说不管这个表有多少个索引,都是存放在同一个.MYI 文件中。

另外还有“.ibd”和 ibdata 文件,这两种文件都是用来存放 Innodb 数据的,之所以有两种文件来存放 Innodb 的数据(包括索引),是因为Innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。独享表空间存储 方式使用“.ibd”文件来存放数据,且每个表一个“.ibd”文件,文件存放在和 MyISAM 数据相同的位置。如果选用共享存储表空间来存放数据,则会使用 ibdata 文件来存放,所有表共同使用一个(或者多个,可自行配置)ibdata 文件。

四、SQL 语句

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

SQL语言分类:

DDL:数据定义语言,用于创建数据库对象,如库、表、索引等
DML:数据操纵语言,用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据
DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
DCL:数据控制语言,用于设置或者更改数据库用户或角色权限(数据控制语句,用于控制不通数据段直接的许可和访问级别的语句,这些语句定义了数据库、表、字段、用户的访问权限和安全级别,如COMMIT、ROLLBACK、GRANT、REVOKE)

1、 DDL数据定义语言

用于创建数据库对象,如库、表、索引等

creat
drop
alter

1.1 删除指定的表

use school;
drop tables student;

在这里插入图片描述

1.2 删除指定数据库

drop database school;

在这里插入图片描述

2、DML数据操控语言

数据操纵语言,用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据。

insert
update
delete

2.1 向数据表中插入新的内容

格式:

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

示例:

INSERT INTO student  (id,name,score,passwd) values(1,'zhangsan',70.5,PASSWORD('123456'));
#PASSWORD('123456'):查询数据记录时,密码字串以加密形式显示:若不使用PASSWORD(),查询时以明文显示。

在这里插入图片描述

2.2 修改、更新数据表中的数据记录

格式:

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

示例:

UPDATE student SET passwd=PASSWORD('') WHERE name='zhangsan';
UPDATE student SET name='wangxiaoer',passwd='' WHERE id=3;

在这里插入图片描述
在这里插入图片描述

2.3 查询数据表中的内容

SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];
 
例:select * from student;
select name,score from student  where id=1;

在这里插入图片描述

2.4 在数据表中删除指定的数据记录

DELETE FROM 表名 [WHERE 条件表达式];
 
例:delete from student where id=1;
select * from student;

在这里插入图片描述

3、DQL数据查询语言

select name from student\G         #以列表方式竖向显示
select * from student limit 2;      #只显示头2行
select * from student limit 2,3;    #显示第2行后的前3行

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、DCL数据控制语言

4.1 修改表名

ALTER TABLE 旧表名 RENAME 新表名;
 
例:alter table student rename test;
show tables;
select * from test;

在这里插入图片描述

4.2 扩展表结构(增加字段)

ALTER TABLE 表名 ADD address varchar(50) default '地址不详';
 
​#default ‘地址不详’:表示此字段设置默认值 地址不详;可与 NOT NULL 配合使用
 
例:alter table test add address varchar(50) default '地址不详';

在这里插入图片描述

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

ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [unique key];
 
例:alter table test change name student varchar(20) unique key;
select * from school;
 
例:
insert into test (id,student,score,passwd) values(1,'lcdb',250,123456);
select * from test;
insert into test (id,user_name,score,passwd) values(6,'zhangbin',250,123456);

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
每个表中只能由一个主键 ,但是许多内容都需要唯一性,这就是唯一键的作用

4.4 删除字段

ALTER TABLE 表名 DROP 字段名;
 
例:alter table test drop score;

在这里插入图片描述

4.5 拓展案例

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

在这里插入图片描述

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

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

相关文章

〖Python网络爬虫实战㉒〗- 数据存储之数据库详解

订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付…

Eureka、Zookeeper、Consul服务注册与发现

一、Eureka服务注册与发现 1.1 概念 Eureka 是 Netflix 公司开源的一个服务注册与发现的组件 。 Eureka 和其他 Netflix 公司的服务组件(例如负载均衡、熔断器、网关等) 一起,被 Spring Cloud 社区整合为Spring-Cloud-Netflix 模块。 Eure…

校招失败后,在小公司熬了 2 年终于进了百度,竭尽全力....

其实两年前校招的时候就往百度投了一次简历,结果很明显凉了,随后这个理想就被暂时放下了,但是这个种子一直埋在心里这两年除了工作以外,也会坚持写博客,也因此结识了很多优秀的小伙伴,从他们身上学到了特别…

【JavaEE】TCP协议的十大原理保姆讲解(Transmission Control Protocol)

博主简介:想进大厂的打工人博主主页:xyk:所属专栏: JavaEE初阶 上一篇文章讲了UDP协议,那么这篇文章我来讲讲TCP协议,TCP协议相对UDP协议难一些,内容相对更多。 TCP,即Transmission Control Protocol&…

AArch32 AArch64 Registers map详细解析与索引

1、AArch32 Registers AArch32 系统寄存器索引。 例如第一个寄存器ACTLR点击后解析如下: 2、AArch64 Registers AArch64 系统寄存器索引。 3、AArch32 Operations AArch32 系统指令索引。 例如第一个寄存器ACTLR_EL1点击后解析如下: 4、AArch…

springboot+vue考研资讯平台(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的考研资讯平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风歌&a…

干翻Mybatis源码系列之第六篇:Mybatis缓存内容概述

前言 一:后续Mybatis我们会研究那些内容? Mybatis核心运行源码分析(前面系列文章已经探讨过) Mybatis中缓存的使用 Mybatis与Spring集成 Mybatis 插件。 Mybatis的插件可以对Mybatis内核功能或者是业务功能进行拓展&#xff0c…

David Silver Lecture 3: planning by dynamic programming

1 Introduction 1.1 定义 定义: Dynamic: sequential or temporal component to the problem Programming: optimising a program: a policy 核心思想: 将复杂问题拆解成简单子问题 1.2 Requirements for dynamic programming Optimal substructure …

【SWAT水文模型】SWAT水文模型建立及应用第三期:基于世界土壤数据库HWSD建立土壤库(待更新)

SWAT水文模型建立及应用:土壤库建立 1 简介2 土壤数据下载2.1 数据下载方式2.1.1 世界土壤数据库HWSD数据2.1.2 中国土壤数据库 2.2 数据下载 3 土壤数据的准备3.1 SWAT土壤数据库参数3.2 土壤质地转化3.3 土壤参数的提取3.4 其他变量的提取3.5 土壤类型分布图的处理…

高级IO涉及的编程模型

目录 五种IO模型引入IO模型阻塞IO非阻塞IO信号驱动IOO多路转接异步IO IO重要概念同步通信 vs 异步通信阻塞 vs 非阻塞 其他高级IO 非阻塞IOfcntl基于fcntl将文件描述符设置为非阻塞轮询方式读取标准输入 I/O多路转接之select初识selectselect函数原型参数timeout取值fd_set结构…

React Native中防止滑动过程中误触

React Native中防止滑动过程中误触 在使用React Native开发的时,当我们快速滑动应用的时候,可能会出现误触,导致我们会点击到页面中的某一些点击事件,误触导致页面元素响应从而进行其他操作,表现出非常不好的用户体验。 一、问题…

Kafka安装以及入门基本命令操作

文章目录 1.单节点搭建1.1 下载安装包1.2 配置环境变量1.3 配置配置文件1.4 启动启动zookeeper启动kafka 1.5 创建启动脚本startKafka.sh 2.简单的使用2.1 创建topic2.2 查看topic2.3 producer生产数据2.4 consumer消费者拉取数据 1.单节点搭建 1.1 下载安装包 #解压 tar -xz…

Android framework的底层原理,再不看就真有可能被淘汰

前言 从事Android开发的人都知道,目前市面上有各种类型跨平台技术诞生,严重冲击了Android市场,越来越多的Android开发者不再做移动应用开发,而另一方面,系统开发由于其复杂的逻辑,形成了独有的核心竞争力&…

Java 基础进阶篇(一)—— String 与 StringBuilder

文章目录 一、String 类概述二、String 创建对象的方式2.1 创建对象的两种方式2.2 面试:两种方式的区别 ★2.3 常见面试题 ★ 三、String 类常用方法3.1 字符串内容比较3.2 常用 API:遍历、截取、替换、分割 四、StringBuilder 字符串操作类4.1 构造器4.…

JavaScript 数据类型判断

(生活的道路一旦选定,就要勇敢地走到底,决不回头。——左拉) typeof typeof是在javascript编码过程中最常用的判断数据类型的方法,常用来判断数字,字符串,布尔值和undefind console.log(typeo…

ROS Noetic版本 rosdep找不到命令 不能使用的解决方法

使用rosdep指令来安装开源包所需的依赖是很方便的,本文主要介绍ROS Noetic版本中使用rosdep,报错找不到命令 ,rosdep不能使用的解决方法。 rosdep:找不到命令 Command rosdep not found, but can be installed with:sudo apt ins…

怎么取消parallels更新,关闭Parallels Desktop 更新提示

自动更新问题 使用Parallels Desktop一段时间后,会主动提示更新,MacOS上最好的虚拟机:Parallels Desktop,但在使用过程中每次启动都要检查更新,比较烦人 如图: 解决方法 取消parallels更新 点击Parall…

v4l2框架

v4l2框架 文章目录 v4l2框架框架1.硬件相关层uvc_probeuvc_register_chainsuvc_register_termsuvc_register_video 2.核心层__video_register_device 3.虚拟视频驱动vivid分析入口vivid_init注册vivid平台驱动vivid_probevivid_create_instance 框架 1.硬件相关层 driver/medi…

2023 hnust 大三下 嵌入式 期中考试复习笔记

前言 ★:重点※:补充内容❓:还没搞懂的内容主要来源:教材、PPT、百度百科、AI重点来源:4-6班感谢:lyf总结得很草率,因为没听过课,也玩不懂 重点汇总 考试题型 选择(40…

C#_Struct与Class的差异

简述 struct属于值类型,class属于引用类型 存储地址 struct储存于栈,class储存于堆(class于栈中储存引用) 传参性质 struct属于值传递,在函数内对参数进行修改,不会修改struct class处于引用传递&…