C05S10-MySQL数据库基本操作

一、数据库

1. 数据库概述

数据库是按照一定数据结构来组织、存储和管理数据的仓库。数据库可以分为关系型数据库和非关系型数据库,常见的关系型数据库包括MySQL、Oracle等,常见的非关系型数据库包括Redis等。

  • 数据:文本、图片、音频、视频等。

  • 数据库管理系统(DBMS):用于管理数据库的软件系统。

  • 关系型数据库:是一种基于关系模型的数据库,核心是数据表,数据存储在数据表中。

  • 表:数据表是数据库的基本单位,由行和列组成,用于存储数据。

  • 列:又称为字段,描述属性。

  • 行:描述信息。

关系型数据库的数据表是有关联的,数据之间也是有关联的。一个关系型数据库可以有多个库,库里面保存的是表,表中存储数据,但是各个库是相对独立的。表与表之间是通过字段进行关联。

非关系型数据库同样有库,但是库里是存储着键值对(Key-Value)形式的数据进行保存。

关系型数据库的并发量低,一旦大量访问数据,数据库就容易崩溃。而非关系型数据库支持高并发,对海量数据可以保持高效的存储和访问,而且也实现高可用架构。

2. 数据类型

数据类型说明
INT(n)整数类型,n表示数据长度
FLOAT(m,n)浮点类型,m位数字,n位小数
DOUBLE(m,n)双精度浮点类型
CHAR(n)固定长度字符串
VARCHAR(n)可变长度字符串
TEXT文本数据
DATE日期,YYYY-MM-DD
DATETIME日期和时间,YYYY-MM-DD HH:MM:SS
TIMESTAMP时间戳
IMAGE图片文件
  • CHAR类型和VARCHAR类型的固定与可变,是根据在磁盘中的存储方式来区分。

二、存储引擎和事务

1. 存储引擎

MySQL数据库的默认引擎是InnoDB,支持事务、行级锁定、外键的存储。

2. 事务

事务有四个特性,原子性、一致性、隔离性和持久性。

  • 原子性:事务是数据库的最小工作单位,是不可分割的。事务里的操作要么都执行成功,要么都执行失败。
  • 一致性:事务执行前后,数据的完整性约束不会被破坏。满足所有约束,事务才会被提交。
  • 隔离性:事务之间的执行是隔离的,一个事务的执行不能受到其他事务的干扰。
  • 持久性:事务一旦提交,就会永久保存到数据库中。

三、SQL语句

1. SQL语句概述

管理MySQL数据库的语句叫做SQL语句。下面是SQL语句的规范:

  • SQL语句不区分大小写,建议使用大写。
  • SQL语句可以是单行,也可以是多行,以分号结尾。
  • 库名、表名、列名和具体数据严格区分大小写。
  • 命名必须以字母开头,不要使用SQL语句的保留字段。尽量不要使用特殊字符。

2. SQL语句分类

  • DDL:数据定义语言,包括CREATE(创建)、DROP(删除)、ALTER(修改)等操作。
  • DML:数据操纵语言,包括SELECT(查询)、UPDATE(更新)、INSERT(插入)、DELETE(删除)等操作。
  • DQL:数据查询语言,包括SELECT(查询)等操作。
  • TCL:事务控制语言,包括COMMIT(提交)、SAVEPOINT(保存点)、ROLLBACK(回滚)等操作。
  • DCL:数据控制语言,包括GRANT(授权)、 REVOKE(撤销)等操作。

3. 约束

约束是为了保证数据的完整性和一致性。MySQL数据库的常见约束包括:

  1. 主键约束:PRIMARY KEY,用于表示数据表的每行,主键是唯一的,且不能为空。
  2. 外键约束:FOREIGN KEY,用于建立表与表之间的关系,一张表的外键要和另一张的主键相匹配。
  3. 非空约束:NOT NULL,插入数据或更改数据时。该字段必须有值,不能为Null。
  4. 唯一约束:UNIQUE KEY,该字段的值不能重复,表中可以有多个唯一的字段。
  5. 默认约束:DEFAULT,设置字段的默认值。
  6. 自增约束:AUTO_INCREMENT,用于数值型的列,通常结合主键使用。

四、MySQL常见操作

1. DDL语句

1.1 CREATE操作

  1. 创建数据库。

    CREATE DATABASE 数据库名;
    
  2. 创建数据表。

    CREATE TABLE [IF NOT EXISTS] 数据表名(字段1 数据类型 [约束条件],字段2 数据类型 [约束条件]……
    );
    
    • 创建主键约束

      # 定义字段时创建
      字段 数据类型 PRIMARY KEY# 定义完字段再创建
      PRIMARY KEY(字段)
      
    • 创建外键约束

      # 只能定义完字段再创建
      FOREIGN KEY 字段 REFERENCES 主表名(主键字段)
      
    • 创建非空约束

      # 定义字段时创建
      字段 数据类型 NOT NULL
      
    • 创建唯一约束

      # 定义字段时创建
      字段 数据类型 UNIQUE KEY
      
    • 创建默认约束

      # 定义字段时创建
      字段 数据类型 DEFAULT '默认值'
      
    • 创建自增约束

      # 定义字段时创建
      字段 数据类型 AUTO_INCREMENT
      

1.2 DROP操作

  1. 删除数据库。

    DROP DATABASE 数据库名;
    
  2. 删除数据表。

    DROP TABLE 数据表名;
    

1.3 ALTER操作

  1. 修改数据表名。

    ALTER TABLE 旧表名 RENAME 新表名;
    
  2. 修改字段数据类型。

    ALTER TABLE 表名 MODIFY COLUMN 字段名 新数据类型;
    
  3. 修改字段字段名。

    ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;
    
  4. 添加字段。

    ALTER TABLE 表名 ADD 新字段名 新数据类型;
    
  5. 删除字段。

    ALTER TABLE 表名 DROP 字段名;
    
  6. 删除主键约束。

    ALTER TABLE 表名 DROP PRIMARY KEY;
    
    • 删除主键约束就必须先删除外键约束。
  7. 删除外键约束。

    ALTER TABLE 表名 DROP FOREIGN KEY;
    
  8. 删除其他约束。

    # 删除非空约束、唯一约束、默认约束、自增约束,可以使用修改字段类型的语句
    # 删除唯一约束的第二种写法
    ALTER TABLE 表名 DROP INDEX 字段名;
    

1.4 TRUNCATE操作

  1. 清空数据表中的全部数据。

    TRUNCATE 表名;
    

2. DML语句

2.1 DESC操作

  1. 查看数据表结构。

    DESC 表名;
    

2.2 SELECT操作

  1. 查看完整数据表。

    SELECT * FROM 表名;
    
    • *:表示全部字段。
  2. 查看数据表的指定字段。

    SELECT 字段名 FROM 表名;
    
    • 多个字段用英文逗号隔开。
  3. 查看指定条件的数据。

    SELECT 字段名 FROM 表名 WHERE 查询条件;
    
  4. 查看指定行数的数据。

    SELECT 字段名 FROM 表名 LIMIT [行数偏移量,]行数
    
    • LIMIT子句后只有一个数字n时,表示查看数据表的前n行。
    • 行数偏移量是针对首行数据而言的,LIMIT m,n表示读取从第一行后面第m行开始的n行数据。像LIMIT 2,5,表示从第一行后面的第2行,也就是第3行开始的5行数据。
  5. 查询去重后的数据。

    SELECT DISTINCT 字段名 FROM 表名;
    
    • 如果指定了多个字段,那么只有指定字段的值都相同才会被去重,默认保留的是第一个。
  6. 根据字符进行数据的模糊查询。

    # 通配符%表示匹配任意长度的字符
    # 比如a%表示a开头的字符,%a表示以a结尾的字符,%a%表示包含a的任意字符
    SELECT 字段名 FROM 表名 WHERE 字段名 LIKE "字符表达式";
    

2.3 UPDATE操作

  1. 更新数据表的数据。

    UPDATE 表名 SET 字段名=新值 WHERE 匹配条件;
    
    • 可以同时更改多个字段,用英文逗号分隔。

2.4 INSERT操作

  1. 给所有字段插入数据。

    INSERT INTO 表名 VALUES(值1,值2……);
    
  2. 给指定字段插入数据。

    INSERT INTO 表名 (字段1,字段2……) VALUES(值1,值2……);
    
    • 字段和值是一一对应的,也可以使用这种方式给所有字段插入数据,但是需要将所有的字段列出。

2.5 DELETE操作

  1. 删除数据表中的数据。

    DELETE FROM 表名 [WHERE 匹配条件];
    
    • 如果没有WHERE子句,那么就会删除数据表中全部的数据。如果拥有自增长字段,那么自增长的仍会

3. 用户管理

3.1 创建用户

CREATE USER '用户名'@'登录地址' IDENTIFIED BY '密码';
  • 用户名:MySQL的最高权限用户名是localhost。
  • 登录地址:用户可以远程登录MySQL的IP地址,%表示任意地址。

3.2 删除用户

DROP USER '用户名'@'登录地址';

3.3 修改普通用户密码

# SET语句
SET PASSWORD FOR '用户名'@'登录地址' = '新密码';# ALTER语句
ALTER USER '用户名'@'登录地址' IDENTIFIED [WITH 验证插件] BY '新密码';
  • 不设置验证插件,会使用默认的验证插件。MySQL 8.0版本开始的默认插件是caching_sha2_password,在此之前的默认插件是mysql_native_password。

3.4 修改root用户密码

这种情况通常是root用户忘记密码

  1. 编辑/etc/mysql.cnf文件,在[mysqld]部分开启免密登录。

    skip-grant-tables
    
  2. 重启MySQL服务。

    systemctl restart mysqld
    
  3. 登录MySQL,修改用户密码,具体的修改语句和修改普通用户的相同。

  4. 设置完成后,去掉配置文件中的免密登录,重新启动MySQL服务。

3.5 设置用户权限

GRANT 权限 ON 库名.表名 TO '用户名'@'登录地址' [IDENTIFIED BY '密码'];
  • 权限:允许用户使用的操作,比如SELECT、UPDATE、INSERT等,多个操作使用英文逗号分隔。ALL表示所有权限。
  • 库名.表名:允许用户操作的数据库和数据表,可以使用*表示任意数据库或任意数据表。

3.6 删除用户权限

REVOKE 权限 ON 库名.表名 FROM '用户名'@'登录地址';

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【开源免费】基于SpringBoot+Vue.JS网上订餐系统(JAVA毕业设计)

本文项目编号 T 018 ,文末自助获取源码 \color{red}{T018,文末自助获取源码} T018,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 新…

【AIGC安全】CCF-CV企业交流会直播回顾:探寻AI安全治理,共筑可信AI未来

文章目录 一、活动背景:AI技术快速发展与安全治理需求迫切二、论坛内容金耀辉:智能共生时代:平衡生成式AI的创新与风险何延哲:人工智能安全检测评估的逻辑和要点谢洪涛:面向特定人物深度伪造视频的主动防御与被动检测技…

2024年12月英语六级CET6写作与翻译笔记

目录 1 写作 1.1 大学为学生提供了探索各种可能性 1.2 自律在个人成长中的重要性 1.3 切实可行的目标 2 翻译 2.1 洋山港(Yangshan Port) 2.2 中国航天事业 2.3 北斗卫星导航系统 1 写作 1.1 大学为学生提供了探索各种可能性 1.2 自律在个人成长中的重要性 1.3 切实可…

解决“SVN无法上传或下载*.so、*.a等二进制文件“问题

今天,在使用Subversion提交代码到服务器时,发现无法提交*.a、*.so等二进制文件,右击这些文件,发现其属性为ignores。     问题原因:SVN的配置文件里,屏蔽了*.a、*.so文件的上传与下载,并把这些…

linux-18 关于shell(十七)file命令

在linux里面是不以后缀名来区分文件类型的,它跟windows不一样,windows里面都会以后缀名来区分文件类型,比如说,.mp3,windows就会把它视为音乐文件,.txt就会视为纯文本文档,.png就会视为图片文档…

品牌控价:守护价值,引领渠道健康发展

在当今竞争激烈且多元化的商业环境中,品牌的发展之路犹如一场充满挑战与机遇的漫长征程。随着品牌影响力的逐步扩大,其销售渠道也日益丰富多样,尤其是电商平台的蓬勃兴起,使得品牌产品的销售链接如繁星般繁多。然而,这…

OpenEuler Linux上怎么测试Nvidia显卡安装情况

当安装好显卡驱动后怎么样知道驱动程序安装好了,这里以T400 OpenEuler 正常情况下,我们只要看一下nvidia-smi 状态就可以确定他已经正常了 如图: 这里就已经确定是可以正常使用了,这里只是没有运行对应的程序,那接来下我们就写一个测试程序来测试一下:以下代码通过AI给出然后…

shell5

字符串运算符 首先我们在终端利用vim打开u.sh str1"hello" str2"hello" if [ "$str1" "$str2" ]; thenecho True elseecho false fi我们把hello改为Hello,看一下大小写是否敏感 str1"Hello" str2"hello…

Linux-ubuntu之主频和时钟配置

Linux-ubuntu之主频和时钟配置 一,主频二,其它时钟配置1.PLL2和PLL3的PFD0-3设置2.AHB_CLK_ROOT3.IPG 和 PERCLK时钟 三,总结 一,主频 24MHz 晶振为内核和其它外设提供时钟源,经电路后到PLL1变为996MHZ,再…

深入浅出Flink CEP丨如何通过Flink SQL作业动态更新Flink CEP作业

复杂事件处理(CEP)是一种对事件流进行分析的技术,它能够识别出数据流中的事件序列是否符合特定的模式,并允许用户对这些模式进行处理。Flink CEP 是 CEP 在 Apache Flink 中的具体实现,是 Apache Flink 的一个库&#…

华为数通最新题库 H12-821 HCIP稳定过人中

以下是成绩单和考试人员 HCIP H12-831 HCIP H12-725 安全中级

Facebook 与数字社交的未来走向

随着数字技术的飞速发展,社交平台的角色和形式也在不断演变。作为全球最大社交平台之一,Facebook(现Meta)在推动数字社交的进程中扮演了至关重要的角色。然而,随着互联网的去中心化趋势和新技术的崛起,Face…

STM32中ADC模数转换器

一、ADC简介 ADC模拟-数字转换器 ADC可以将引脚连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁 12位逐次逼近型ADC,1us转换时间 输入电压范围: 0~3.3V,转换结果范围:0~4095 18个输入…

fpga系列 HDL:Quartus II PLL (Phase-Locked Loop) IP核 (Quartus II 18.0)

在 Quartus II 中使用 PLL (Phase-Locked Loop) 模块来将输入时钟分频或倍频,并生成多个相位偏移或频率不同的时钟信号: 1. 生成 PLL 模块 在 Quartus II 中: 打开 IP Components。 file:///C:/intelFPGA_lite/18.0/quartus/common/help/w…

Springboot3.x配置类(Configuration)和单元测试

配置类在Spring Boot框架中扮演着关键角色,它使开发者能够利用Java代码定义Bean、设定属性及调整其他Spring相关设置,取代了早期版本中依赖的XML配置文件。 集中化管理:借助Configuration注解,Spring Boot让用户能在一个或几个配…

【游戏中orika完成一个Entity的复制及其Entity异步落地的实现】 1.ctrl+shift+a是飞书下的截图 2.落地实现

一、orika工具使用 1)工具类 package com.xinyue.game.utils;import ma.glasnost.orika.MapperFactory; import ma.glasnost.orika.impl.DefaultMapperFactory;/*** author 王广帅* since 2022/2/8 22:37*/ public class XyBeanCopyUtil {private static MapperFactory mappe…

Unity 组件学习记录:Aspect Ratio Fitter

概述 Aspect Ratio Fitter是 Unity 中的一个组件,用于控制 UI 元素(如Image、RawImage等)的宽高比。它在处理不同屏幕分辨率和尺寸时非常有用,可以确保 UI 元素按照预期的比例进行显示。当添加到一个 UI 对象上时,Aspe…

uni-app开发AI康复锻炼小程序,帮助肢体受伤患者康复!

**提要:**近段时间我们收到多个康复机构用户,咨询AI运动识别插件是否可以应用于肢力运动受限患者的康复锻炼中来,插件是可以应用到AI康复锻炼中的,今天小编就为您介绍一下AI运动识别插件在康腹锻炼中的应用场景。 一、康复机构的应…

Elasticsearch:什么是信息检索?

信息检索定义 信息检索 (IR) 是一种有助于从大量非结构化或半结构化数据中有效、高效地检索相关信息的过程。信息(IR)检索系统有助于搜索、定位和呈现与用户的搜索查询或信息需求相匹配的信息。 作为信息访问的主要形式,信息检索是每天使用…

Pytest-Bdd vs Behave:选择最适合的 Python BDD 框架

Pytest-Bdd vs Behave:选择最适合的 Python BDD 框架 Pytest BDD vs Behave:选择最适合的 Python BDD 框架BDD 介绍Python BDD 框架列表Python BehavePytest BDDPytest BDD vs Behave:关键区别Pytest BDD vs Behave:最佳应用场景结…