惬意上手MySQL

大家好,我又来写博客了,今天给大家介绍一下MySQL,如果你只想让MySQL作为自己的辅助开发工具,那这一篇文章就够了,如果想作为一门语言来学习,那你可以看此文章了解一些基础。

MySQL介绍

 数据库可分为关系型数据库和非关系型数据库,而MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前隶属于 Oracle 公司。它是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,从而增加了速度并提高了灵活性。
MySQL具有开源、高性能、可扩展、多平台支持等特点。

MySQL安装

MySQL的安装是比较简单的,安装时可以择自定义(custom)的方式来装,自带的数据库可视化工具(Workbench)不推荐使用,可以去搜一下Navicat,到处都是破解版。
    下面提供一个教你安装MySQL的链接,我就不详述了:点此跳转

终端操作数据库 

登录 

你在安装MySQL时有一个步骤是让你创建自己的账户的,拿着这个账户就可以去操作数据库啦!

1.win+r键入cm,enter。

2.输入以下代码:

mysql -u root -p

 u就代表user,就是账户,而p就是password。

当你输入以上指令后,回车,然后会让你输入密码:

 

输入密码后回车们就是以上界面,会显示数据库的版本,我的是5.7。

还有一种方式是直接输入密码,但密码不会隐藏:

想要推出的话输入exit或quit都可。

其他操作

show tables;        ->查看数据库中的所有表

 

describe user;         ->查看表结构 ,describe可缩写为desc

show databases;        ->查看所有数据库

 

还有其他操作,可以自己去搜集。 

系统表介绍 

有些表不是自己创建的,而是系统的数据库,千万不要随意操作!

就三个数据库需要注意: information_schema、performance_schema、sys。

其实还有一个数据库叫mysql,那是mysql的。里面的表有很多。

 里面有一个表叫做user,点进去:

里面是你mysql注册的用户,你创建的用户也可以在这里被删除。

 

MySQL的操作

MySQL的操作语言可分为四类,DDL、DML、DQL、DCL。

DDL (Data Definition Language,数据定义语言)

  • 主要用于维护存储数据的结构,包括数据库、表、视图、索引、同义词、聚簇等。
  • 代表指令:
    • CREATE:创建数据库和数据库对象。
    • DROP:删除数据库、表、索引、条件约束以及数据表的权限等。
    • ALTER:修改数据库表的定义及数据属性。

MySQL的每句代码后都要加分号:“ ; ”。

MySQL不区分大小写。

create 

create 可以用来创建数据库,也可以用来创建表:

# 创建名为csdn的数据库
create database csdn;

 如果你插入的数据有中文,那就要设置charset(字符集),否则会报错。

创建表之前需要选择数据库:

# 选择数据库名为csdn的数据库
use csdn;

 创建名字为user的表:

create table user(id int not null auto_increment primary key, name varchar(20), age int);

创建表的时候同时需要输入字段名,也就是列名,代码中创建了三个字段id、name、age。

注意:

  • 一个表必须又一个主键,primary key。 
  • 字段名后面必须跟的是类型。(int、varchar等)。
  • 类型后面跟的是约束。(not null、auto_increment等)。

drop

 drop主要删除用户、数据库、表、列。

# 下面使用 DROP USER 语句删除用户 'test1'@'localhost'
DROP USER 'test1'@'localhost';

# 删除csdn数据库,如果存在
drop datebase if exists csdn;

# 删除表user
drop table user;

alter

 alter主要用于修改表:

alter table 表名 drop 列名;        # 删除某表某列

alter table 表名 drop foreign key 外键名;         # 删除某表外键

alter table 表名 add 字段名 类型 约束;        # 添加一个字段

alter table 表名 add primary key(列名);        # 添加主键

alter table 表名 add constriant 外键名 foreign key(外键列名) references 关联表名(关联列名) on update cascade on delete restrict;        # 添加外键

alter table 表名 change 原列名 新列名 数据类型 约束;        # 修改某表某列

alter database 数据库名 charset = utf8;        # 修改数据的字符集类型

 MySQL中的常用数据类型

  1. int 代表整数
  2. float 代表浮点数
  3. varchar 代表可变字符串
  4. datetime 代表日期
  5. enum 枚举类型 

 介绍一下datetime和enum类型的使用

# create_time列,sex列
create table demo(id int primary key, create_time datetime default current_timestamp on update current_timestamp, sex enum('男',' 女') default '男');

default 就代表默认值,current_timestamp代表当前的时间戳,on update代表更新时会修改时间。 enum后面括号里是可选项,默认值只能是括号里的其中一个。

MySQL中的约束

 约束只需要写在类型的后面就可。

简单的约束
not null代表不能为空,也就是插入数据的时侯你不能不插入值。
auto_increment代表自增长,默认非空,一般用于约束id。
unique唯一约束,代表这一列的值不能重复。附带唯一索引。

主键:

 primary key,这是每一个表必须有的的约束,且不能重复。

在 MySQL 中,主键是用于标识表中每一行数据的唯一标识符。因此,主键必须具有唯一性,不能有重复的值。让我们来详细了解一下主键的作用和规则:

  1. 唯一性:主键必须包含唯一的值。这意味着在表中,每一行的主键值都不会重复。

  2. 非空性:主键列不能包含 NULL 值。因此,在定义主键时,您必须使用 NOT NULL 属性来声明主键列。

  3. 单一性:一张表只能有一个主键。主键可以由单个列(字段)或多个列组成。

  4. 性能优化:设置主键有助于提高查询性能。当您使用主键进行查询时,数据库引擎会自动创建一个索引,从而加速数据检索。如果没有主键,查询可能会进行全表扫描,影响性能。

外键:

外键主要是用于表与表之间的关联。

外键的作用和特点:

  1. 定义:外键是一种关系,用于连接两个表之间的数据。它建立了一个从一个表到另一个表的引用。

  2. 关联性:外键用于建立表之间的关联。通常,外键引用另一个表的主键。例如,如果我们有一个订单表和一个客户表,订单表中的客户ID可以作为外键引用客户表的主键。

  3. 数据完整性:外键有助于维护数据的完整性。通过外键,我们可以确保在关联表之间的数据一致性。例如,如果我们删除了客户表中的某个客户,那么具有相同客户ID的订单也应该被删除,以保持数据的一致性。

  4. 约束规则:外键可以定义一些约束规则,例如:

    • CASCADE:如果主表中的记录被删除或更新,相关的外键记录也会被删除或更新。
    • SET NULL:如果主表中的记录被删除或更新,相关的外键记录的值将被设置为 NULL。
    • RESTRICT:阻止对主表的删除或更新操作,如果存在相关的外键记录。
  • 性能优化:外键还有助于性能优化。通过外键,数据库引擎可以更快地定位到关联表中的数据。
    外键的创建比较复杂,下面是代码示例。

    create table test(id int primary key, demo_id int, constraint test_fk foreign key(demo_id) references demo(id) on update cascade on delete cascade);
  • constraint后面跟的是你创建的外键的名字,如果没有则系统自动创建外键名。

  • references 后面跟的是关联表的名和列,demo(id),代表demo表的id列。

  • on update cascade 代表关联更新。有兴趣自己查。

DML (Data Manipulation Language,数据操纵语言)

  • 主要用于对数据库对象中包含的数据进行操作。
  • 代表指令:
    • INSERT:向数据库中插入一条数据。
    • DELETE:删除表中的一条或多条记录。
    • UPDATE:修改表中的数据。

insert

 insert用于插入数据,插入数据有三种方式。

1.一次插入多行

insert into user values(1,'张无忌', 34),(2,'金毛狮王',67);

 这句是插入了两行数据,如果要插入多行,往后加括号就行。但要注意,插入数据个数要和字段名对应,不能少。

2.缺省插入

有两种方式:

# 一次只能插入一行
insert into user (name,age) values('范德华', 22);

 上面这种插入方式只需要写不能为空的相关的数据,像id这种设置了自增长的字段,会自动填充。不为主键的字段若不插入数据会为null,有默认值的填充默认值。

# 一次只能插入一行
insert into user set name = '罗华', age = '21';

 上面这种跟第一种效果相同,注意事项相同,只是写法不同。

delete

 delete主要用于操作表,但也可以用来删除数据库用户(自己搜索喽)。一般可以来删除表中的行。

# 删除age字段值小于18的行
delete from user where age < 18;

注意:如果后面不跟where限制条件的话,会把表中的数据都删除,我没试过,你试试😜。 

 update

update主要用于改数据,例如:

update user set name = '嘉文四世' where id = 101;

这句是把id是101的行的name改为“嘉文四世”。 

DQL (Data Query Language,数据查询语言) 

  • 主要用于查询数据库中的数据。
  • 代表指令:
    • SELECT:查询表中的数据。
    • FROM:指定查询哪张表或视图。
    • WHERE:设置约束条件。

 select和from

直接上代码:

# * 代表所有字段
select * from gy where name = 'gy';

 

上面的操作就是查询name为gy的行的所有数据。 


# 仅查询id和name
select id as '学号',name as '名字' from gy where age > 24;

 

上面的SQL代码是仅查询了gy表中的id和name,并通过 as 起了别名(as不在单独介绍),条件是age大于24的。 

where 

前面已经用过很多次where,其主要作用就是设置查询时的约束条件。不再多写。

and、or 、in、not in、between and、is null、is not null 

上面这些都可以添加到where中,很简单,如果不懂可以查下。

模糊查询: 

模糊查询的方式有很多,通配符查询、内置函数检索、则这匹配查询。下面介绍一下通配符查询:

  • % 百分号通配符:表示任何字符出现任意次数(可以是 0 次)。
    • 例如,SELECT * FROM app_info WHERE appName LIKE '%网%' 可以模糊匹配包含“网”字的数据。
  • _ 下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符。
    • 例如,SELECT * FROM app_info WHERE appName LIKE '__网' 可以查询以“网”为结尾的长度为三个字的数据。

想多了解可以点击链接icon-default.png?t=N7T8https://blog.csdn.net/qq_39390545/article/details/106414765

DCL (Data Control Language,数据控制语言)

  • 主要用于控制数据库对象的权限管理、事务和实时监视。
  • 代表指令:
    • GRANT:分配权限给用户。
    • REVOKE:废除数据库中某用户的权限。
    • ROLLBACK:退回到某一点(回滚)。
    • COMMIT:提交。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch 通过索引阻塞实现数据保护深入解析

Elasticsearch 是一种强大的搜索和分析引擎&#xff0c;被广泛用于各种应用中&#xff0c;以其强大的全文搜索能力而著称。 不过&#xff0c;在日常管理 Elasticsearch 时&#xff0c;我们经常需要对索引进行保护&#xff0c;以防止数据被意外修改或删除&#xff0c;特别是在进…

java IO 02 IO接口,字节流和字符流,节点流和处理流

01.定义 02.IO中的输入和输出的划分 03.流的分类 IO流的所有类中&#xff0c;最先分野的是字节流和字符流。 字节流包括&#xff1a;输入流和输出流 InputStream public abstract class InputStream implements Closeable { }OutputStream public abstract class OutputSt…

专业140+总分430+西南交通大学924信号与系统考研经验电子信息与通信工程,真题,大纲,参考书

今年报考西南交通大学&#xff0c;考研分数专业课924信号与系统140&#xff0c;总分430&#xff0c;各门分数都还是比较均衡&#xff0c;经过一年的复习&#xff0c;有得有失&#xff0c;总结一下自己的复习经历&#xff0c;希望给大家有点帮助&#xff0c;在复习中做的更好&am…

初始安装RabbitMQ

文章目录 1. RabbitMQ 概念2. RabbitMQ 四大核心概念3. RabbitMQ 核心部分4. RabbitMQ 名词解释5. RabbitMQ 安装 1. RabbitMQ 概念 RabbitMQ 是一个消息中间件&#xff1a;它接受并转发消息。 可以把它当做一个快递站点&#xff0c;当你要发送一个包裹时&#xff0c;你把你的…

IntelliJ IDEA自定义关闭当前文件的快捷方式

前言 idea中关闭当前标签页的默认快捷键是CtrlF4,这个组合键在键盘上操作起来很是不方便&#xff0c;我们可以在设置中自定义自己习惯的快捷方式。 自定义步骤 要在 IntelliJ IDEA 中将关闭当前文件的快捷方式设置为 Alt Q&#xff0c;请按照以下步骤操作&#xff1a;打开 …

计算机软件文档编制规范GB_T 8567-2006

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 计算机软件文档编制规范概述 计算机软件文档编制规范&#xff08;Specification for computer software documentation&#xff09; 由TC28&#xff08;全国信息技术标准化技…

【Node.js从基础到高级运用】二、搭建开发环境

Node.js入门&#xff1a;搭建开发环境 在上一篇文章中&#xff0c;我们介绍了Node.js的基础概念。现在&#xff0c;我们将进入一个更实际的阶段——搭建Node.js的开发环境。这是每个Node.js开发者旅程中的第一步。接下来&#xff0c;我们将详细讨论如何安装Node.js和npm&#…

ChatGPT Plus 支付出现「您的银行卡被拒绝/your card has been declined」怎么办?

ChatGPT Plus 支付出现「您的银行卡被拒绝/your card has been declined」怎么办&#xff1f; 在订阅 ChatGPT Plus 或者 OpenAI API 时&#xff0c;有时候会出现已下报错 &#xff1a; Your card has been declined. 您的银行卡被拒绝 出现这种错误&#xff0c;有以下几个解…

蓝桥杯练习系统(算法训练)ALGO-982 最小距离

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 最小距离 问题描述 数轴上有n个数字&#xff0c;求最近的两个数&#xff0c;即min(abs(x-y)) 输入格式 第一行包含一个整数n。   …

Mysql:如何自定义导出表结构

为了方便将mysql表结构信息快速录入到word或Excel表格中&#xff0c;最终实现如下效果&#xff1a; 对于word,则可将Excel表格复制粘贴即可。 废话不多少&#xff0c;开干。 准备准建&#xff1a;navicat 或sqlyog 第一步&#xff1a;编辑sql&#xff0c;如&#xff1a; SE…

rabbitmq 基本总结

rabbitmq 的基本概念 vhost、broker、producer、 consumer、 exchange、 queue、 routing key rabbitmq 常用的队列类型&#xff0c;工作队列&#xff08;简单队列&#xff09;,pub/sub, routing key&#xff0c; topic 模式 <dependency><groupId>com.rabbitmq&l…

Excel 快速填充/输入内容

目录 一. Ctrl D/R 向下/右填充二. 批量输入内容 一. Ctrl D/R 向下/右填充 ⏹如下图所示&#xff0c;通过快捷键向下和向右填充数据 &#x1f914;当选中第一个单元格之后&#xff0c;可以按住Shift后&#xff0c;再选中最后一个单元格&#xff0c;可以选中第一个单元格和最…

云计算项目九:K8S安装

K8S安装 Kube-master安装 按照如下配置准备云主机 防火墙相关配置&#xff1a;禁用selinux&#xff0c;禁用swap&#xff0c;且在firewalld-*。上传kubernetes.zip 到跳板机 配置yum仓库&#xff08;跳板机&#xff09; 跳板机主机配置k8s软件源服务端 [rootjs ~]# yum -y…

uniapp踩坑之项目:uni.previewImage简易版预览单图片

主要使用uni.previewImage //html <view class"box-card" v-for"(item,index) in DataList" :key"index"><view>图片&#xff1a;</view><image :src"item.Path" tap.stop"clickImg(item.Path)">&l…

JavaScript数组方法常用方法大全

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1. push()2. pop()3. unshift()4. shift()5. isArray()6. map()7. filter()8. every()9. some()10. splice()11. slice()12. indexOf()13. includes()14. concat()1…

Python和Google Colab进行卫星图像二维小波变化和机器学习

2D 小波分解是图像处理中的一种流行技术,使用不同的滤波器将图像分解为不同的频率分量(“近似”和“细节”系数)。该技术对于各种图像处理任务特别有用,例如压缩、去噪、特征提取和边缘检测。 在本文中,我们将演示如何在 Google Colab 中使用 Python 下载高分辨率样本卫星…

弄清Resource、ResourceLoader、容器之间的微妙关系

Resource&#xff1a; 在Java中&#xff0c;资源会被抽象成url&#xff0c;通过url前面的协议&#xff08;如file&#xff1a;&#xff0c;classpath&#xff1a;&#xff09;来处理不同的操作逻辑&#xff0c;resource是一个接口 Resource家族 具体的资源访问由其实现类完成&a…

Python学习日记之学习turtle库(下 篇)

前言&#xff1a; 书接上篇&#xff0c;我们继续来了解Python内置库 turtle功能库。在前面的文章中&#xff0c;我们初步的了解了一下 turtle库&#xff0c;画布和画笔相关的函数&#xff0c;那么我们继续来深入了解一下吧。 详情见&#xff1a; Python学习日记之学习turtle库…

Spring web MVC(入门)

1、什么是MVC&#xff08;一种思想&#xff09; Model View Controller &#xff1a; Model—模型 View—视图 Controller—控制器 2、Spring MVC是一种实现&#xff08;我们现在学的是Spring web,Spring mvc过时了&#xff09; View属于前端问题我们后端人员不必太过于关注…

Prometheus添加nginx节点显示不支持stub_status 解决办法

1、我们在使用Prometheus监控添加nginx节点监控的时候&#xff0c;在被监控节点的nginx配置文件中添加下面的模块 server { listen 80; server_name localhost; location /stub_status { stub_status on; access_log off; …