MySQL-基本使用,数据类型,简单操作

news2024/12/29 9:47:17

1. 数据库概述

        1.1 数据库(DatBase)

        数据库,就是遵循一定数据格式的数据集合,可以认为他是对文件系统的改进。它解决了不同操作系统之间,数据格式的兼容性问题。也就是说,只要是同一个数据库的数据文件,即使从windows迁移到了Linux上,也可以正常运行的。

        1.2 关系型和非关系型的区别

      关系型数据库:  关系型数据库是一种采用关系模型(或称为表格模型)来组织和存储数据的数据库管理系统(DBMS)。在关系型数据库中,数据以行和列的形式存储在表格中,并通过表格之间的关系进行组织和管理。关系型数据库通常使用结构化查询语言(SQL)作为数据操作语言。

对于Java而言,一个类就可以对应一个表,一个类对象就可以对应表中的一条数据,一个成员变量可以对应表中的一个列,能够做到一 一映射,数据库中是以表作为基本单位的。

      非关系型数据库:非关系型数据库(NoSQL,Not Only SQL)是一种不使用传统的关系型表格模型来组织和存储数据的数据库系统。与关系型数据库相比,非关系型数据库通常具有更灵活的数据模型和更高的可伸缩性,适用于不同类型的数据处理需求。非关系型数据库是存储键值对的,如Redis,mongoDB等。

        1.3 MySQL介绍  

        MySQL是一个关系型数据库管理系统由瑞典MySQL AB 公司开发,目前属于 Oracle旗下产品。MySQL 是最流行的关系型数据库关系系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS(Relational Database Management System,关系数据库管理系统) 应用软件之一。

        MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

        MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

        1.4 数据库对象

        表:就是存储数据的表格,里面有一条条记录,记录有字段组成,每个字段都有自己的字段名,字段值,字符段类型。字段是存储数据的基本单元。类似java中的对象,由于存储数据。

        视图: 可以理解为一张虚表(它在物理磁盘上并不真实存在)。视图是基于select语句查询生成的结果集。当一条select语句比较复杂且调用频率较高时,我们不想再写一遍语句,这时候可以把这条select语句创建为一个视图。每次使用视图的时候,就可以把它当成一张表来用。

        函数:常是一个功能的实现,我们大部分使用的是系统函数(MYSQL提供的),我们也可以自定义函数。它的调用套路通过使用select 函数名(参数1,参数2..);来调用。它只有一个返回值。

        存储过程:也是一个功能的实现。我们所说的数据库编程,SQL语句编程,就主要是指自定义一个存储过程。调用存储过程是使用exec 存储过程名 参数1等来调用。它是可以返回多个值,也可以没有返回值。

        索引:就像书的目录一样,为了加快我们的查询速度而建立的。

2 MySQl基本使用

        2.1 用户创建和授权

            1. 创建用户:需要切换到mysql数据库下,操作user表

                username: 用户名; host: 指定在哪个主机上可以登录,本机可用localhost,%通配所有远程主机; password:用户登录密码

-- 创建用户 CREATE USER '用户名'@'HOST' IDENTIFIED BY '密码'
CREATE USER 'nono'@'localhost' IDENTIFIED BY '123123';

              2. 为用户授权

                 @ 后面是访问MySQL的客户端IP地址(或是 主机名) % 代表任意的客户端,如果填写 localhost 为本地访问(那此用户就不能远程访问该mysql数据库了)。

-- 赋予用户权限 grant ... ON 数据库名.表名 TO '用户名'@'HOST'
-- 权限 : 添加数据 INSERT 删除数据 DELETE 修改数据 UPDATE 查询数据 SELECT 删除库表 DROP 全部权限 ALL 或 ALL PRIVILEGES
GRANT All PRIVILEGES ON *.* TO 'nono'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;

                 3.  撤销用户权限

                        revoke 和 grant 的语法差不多,值需要将to换成from即可。

-- 撤销用户权限 REVOKE ... ON 数据库名.表名 FROM '用户名'@'HOST'
REVOKE ALL PRIVILEGES ON *.* FROM 'nono'@'localhost';
FLUSH PRIVILEGES;

                  4. 删除用户

-- 删除用户
DROP USER 'nono'@'localhost';
        2.2 数据库的创建和删除

               CREATE DATABASE 数据库名;

               DROP DATABASE 数据库名;   

-- 创建数据库
CREATE DATABASE _29_02;

-- 删除数据库
DROP DATABASE _29_02;

                命令行基本使用

-- 单行注释

/*
	多行注释
*/

-- 输出指定内容,字符串需要用单引号括起来,不区分字符和字符串,一律使用单引号
SELECT 'XXXXX';

-- 设置字段名,AS可以省略
SELECT 'XXXXX' AS '字段名';

-- 查看版本
SELECT VERSION();

-- 查看当前链接下所有的数据库
SHOW DATABASES;

-- 查看当前数据库下所有的表
SHOW TABLES;

-- 切换数据库
USE 数据库名;
        2.3 表创建和删除

        存储引擎:InnoDB        默认编码方式:utf8mb4        排序规则:utf8mb4_0900_ai_ci

-- 在数据库 _29_02下创建表
USE _29_02;
-- 创建表
/*
CREATE TABLE 表名(
	列名 类型,
	列名 类型,
	...
)
*/
-- 写的建表语句
CREATE TABLE student_info(
	`id` INT,
	`name` VARCHAR(20),
	score DECIMAL(5,2)
);

-- 查看建表语句
SHOW CREATE TABLE student_info;
-- 实际建表语句
CREATE TABLE `student_info` (
  `id` int DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL,
  `score` decimal(5,2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

-- 删除表
DROP TABLE student_info;

3. 数据类型

        数值型

        时间类型

        字符串型

        掌握常用的几个数据类型即可,比如整型int,浮点型decimal,字符型就是字符串类型varchar,日期时间型datetime。

        补充:char与varchar的区别:

        char(100) 类型的字段一旦定义,不管里面是否有值,他就会固定占用100个字符对应的存储空间,这种类型对空间的利用率并不高。varchar(100) 类型的字段定义后,它所占用的空间就是里面存储内容占用的空间,但是最大不会超过100个字符,这种类型对空间的利用率是很高的。

        如手机号码,是定长的11位,可以使用char存储。姓名或者家庭住址由于长度不确定,就适合用变长的varchar存储了。当然还需要视具体需求而定。

4. DML操作

        DML: Data Manipulate Language(数据操作语言) ,主要用于向数据库插入,修改,删除数据使用。涉及的关键字有insert,update,delete

       4.1  INSERT(用于向表中添加数据)  
-- 创建表
CREATE TABLE users(
	`id` INT PRIMARY KEY,
	`name` VARCHAR(20),
	`age` INT,
	`sex` CHAR(2)
);

-- 格式:INSERT INTO 表名(列名1,列名2...) VALUES (值1,值2...)
-- 示例:
-- 添加单条数据
INSERT INTO users(`id`,`name`,`age`,`sex`)
VALUES(1,'张三',18,'男');

-- 一次性添加多条数据
INSERT INTO users(`id`,`name`,`age`,`sex`)
VALUES(2,'李二',18,'男'),(3,'赵四',19,'男'),(4,'苏七',17,'女');

-- 向指定列添加数据
INSERT INTO INSERT INTO users(`name`,`age`)
VALUES('依依',13);
          4.2 DELESTE (用于删除表中的数据)
-- 格式:DELETE FROM 表名 WHERE 列名=值
-- 示例:删除users表中,姓名位张三的数据。WHERE 后为删除的条件,如果不加会删除全表的数据
DELETE FROM users
WHERE `name` = '张三';
        4.3 UPDATE(用于更新表中数据)
-- 格式:UPDATE 表名 SET 列名=值,列名=值 WHERE 列名=值
-- 示例:将users表中姓名为李二的年龄改为20,会修改所有满足WHERE条件的值
UPDATE users SET age=20 WHERE name='李二'; 
         4.4 SELECT(用于查询表中的数据,属于DQL)
-- 格式:SELECT 列限定 FROM 表限定 WHERE 行限定
-- 示例:
-- 查询表中所有数据
SELECT * FROM users;
-- 查询表中指定条件的数据,例如查询users表中id为3的name值
SELECT `name` FROM users WHERE `id`=3;

5 .练习

-- 使用root用户,创建一个test_01数据库,并创建test01用户,赋予test01用户对test_01数据库拥有所有权
CREATE DATABASE test_01;
USE test_01;

CREATE USER 'test_01'@'localhost' IDENTIFIED BY '1234';

GRANT ALL PRIVILEGES ON test_01.* TO 'test_01'@'localhost';

FLUSH PRIVILEGES;

-- 
-- 登录test01用户,在test_01数据库下创建t_student表,表中有 id,name,sex,course,score
-- 其中 id是 int 
--     name 是 varchar
--   sex 是 char
--   course 是 varchar
--   score 是 decimal
--     向t_student表中插入3条数据
--     1 张三 男 javaSE 99
--   2 李四 女 javaWEB 98
--     3 王五 男 javEE 99.5


CREATE TABLE t_student(
	`id` int,
  `name` varchar(20),
	`sex` char(2),
	course varchar(20),
	score decimal(5,2)
);

INSERT INTO t_student(`id`,`name`,`sex`,course,score)
VALUES(1,'张三','男','javaSE',99),(2,'李四','女','javaWEB',98),(3,'王五','男','javEE',99.5);

-- 把 course为javaEE的分数 更改为100
-- 把 张三的性别更改为 女
-- 把 王五删除

UPDATE t_student SET score = 100 
WHERE course = 'javaSE';

UPDATE t_student SET `sex` = '女'
WHERE `name` = '张三';

DELETE FROM t_student
WHERE `name` = '王五';
 
-- 把t_student表删除
-- 把test_01数据库删除
-- 把 test01用户删除(登录root用户)

DROP TABLE t_student;
DROP DATABASE test_01;
DROP USER 'test_01'@'localhost';

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

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

相关文章

linux服务器tomcat日志中文出现问号乱码

目录 一、场景二、排查三、原因四、解决 一、场景 tomcat日志的中文出现问号乱码 乱码示例 ??[377995738417729536]????????? ac??????????????message:二、排查 1、使用locale命令查看服务器当前使用的语言包 发现只用的语言包为utf-8&#xff0…

Openstack云计算框架及前期服务搭建

openstack介绍 Openstack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作,支持几乎所有的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台 ----百度百科 Openstack是一个云操作系统&a…

Rust通用代码生成器莲花发布红莲尝鲜版二十一发布介绍视频,前端代码生成物大翻新

Rust通用代码生成器莲花发布红莲尝鲜版二十一发布介绍视频,前端代码生成物大翻新 Rust通用代码生成器发布了红莲尝鲜版二十一的最新介绍视频,前端代码生成物大翻新。视频请见: Rust通用代码生成器:莲花,红莲尝鲜版二…

【QT QML】软件打包,生成安装包

一、版本 Desktop 5.15.2 MinGW 64-bit二、打包 1. 编译Release版本 2. 在工程目录下找到Realse文件夹 3. 拷贝文件 ***-Desktop_Qt_5_15_2_MinGW_64_bit-Release - release - xxx.exe到一个新文件夹中 4. 开启相应打包工具(根据自己的编译器和版本选择&#xff0…

爬取数位观察城市数据代码展示

import requests import json from Crypto.Cipher import AES # 开始解密 from Crypto.Util.Padding import unpad #去填充的逻辑 import base64 url https://app.swguancha.com/client/v1/cPublic/consumer/baseInfo data {current: 1,"dimensionTime": "20…

java课设之简易版客房管理系统(mvc三层架构)

(一)、系统概述: 客房管理系统是一个用于管理酒店客房信息的程序,主要功能包括客房信息录入、客房状态查询、客房订单管理,客房的预定功能。 (二)、功能说明: 1.登录:管理…

【openGL教程08】关于着色器(02)

LearnOpenGL - Shaders 一、说明 着色器是openGL渲染的重要内容,客户如果想自我实现渲染灵活性,可以用着色器进行编程,这种程序小脚本被传送到GPU的显卡内部,起到动态灵活的着色作用。 二、着色器简述 正如“Hello Triangle”一章…

UnityWebGL UGUI中文不显示问题

这是Unity编辑中效果 打包成webgl后的效果(中文没有显示出来) 解决方法 将Unity默认使用的Arial替换成中文字体。 1.找到电脑字体库(win电脑字体库路径:C:\Windows\Fonts ;Mac电脑搜索“字体册”)。 2.将…

Web3之光:揭秘数字创新的未来

随着数字化时代的深入发展,Web3正以其独特的技术和理念,为我们打开数字创新的崭新视角。作为数字化时代的新兴力量,Web3将深刻影响着我们的生活、工作和社会。本文将揭秘Web3的奥秘,探讨其在数字创新领域的前景和潜力。 1. 重新定…

Go 如何按行读取(大)文件?尝试 bufio 包提供的几种方式

嗨,大家好!我是波罗学。本文是系列文章 Go 技巧第十七篇,系列文章查看:Go 语言技巧。 本文将介绍 Go 如何按行读取文件,基于此会逐步延伸到如何按块读取文件。 引言 我们将要介绍的按行读取文件的方式其实是非常适合…

代码随想录刷题笔记-Day22

1. 修剪二叉搜索树 669. 修剪二叉搜索树https://leetcode.cn/problems/trim-a-binary-search-tree/ 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留…

MIT-BEVFusion系列九--CUDA-BEVFusion部署4 c++解析pytorch导出的tensor数据

目录 创建流打印 engine 信息打印结果内部流程 启动计时功能加载变换矩阵并更新数据(重要)内部实现 该系列文章与qwe一同创作,喜欢的话不妨点个赞。 在create_core方法结束后,我们的视角回到了main.cpp中。继续来看接下来的流程。…

opengl pyqt 显示文字

目录 效果图 效果图 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QOpenGLWidgetfrom OpenGL.GL import * from OpenGL.GLUT import * from OpenGL.GLU import *class OpenGLWidget(QOpenGLWidget):def __init__(self, parentNone):super(OpenGLWidget…

Matlab论文插图绘制模板第137期—极坐标分组气泡图

在之前的文章中,分享了Matlab极坐标气泡图的绘制模板: 进一步,再来分享一下极坐标分组气泡图。 先来看一下成品效果: ​ 特别提示:本期内容『数据代码』已上传资源群中,加群的朋友请自行下载。有需要的朋…

运维的利器–监控–zabbix–第二步:建设–部署zabbix agent--windows server系统

文章目录 在windows server 2016安装zabbix agent第一步:下载windows安装agent软件第二步:解压到指定目录第三步:配置zabbix-agent.win.conf第四步:zabbix-agent安装第五步:启动zabbix-agent客户端第六步:确…

【打包 Qt软件给客户使用操作】

文章目录 前言一、使用步骤1.调整为release 版本2.运行,在release 中找到执行文件3. 拷贝.exe文件到某个新建文件夹的目录4.找到自带编译器版本5.点击进入目录6. 执行 执行 windeployqt xxx.exe7.打包完成8.绿色版9.保存打包记录 总结 前言 提示:这里可…

jQuery瀑布流画廊,瀑布流动态加载

jQuery瀑布流画廊&#xff0c;瀑布流动态加载 效果展示 手机布局 jQuery瀑布流动态加载 HTML代码片段 <!-- mediabanner --><div class"mediabanner"><img src"img/mediabanner.jpg" class"bg"/><div class"text&qu…

反序列化 [NPUCTF2020]ReadlezPHP1

打开题目 直接查看源代码 打开源代码发现了个./time.php?source 访问一下 审计代码&#xff1a; 现存在反序列化语句&#xff1a;$ppp unserialize($_GET["data"]);和执行漏洞&#xff1a;echo $b($a); 发现在__destruct()方法里面有 echo $b($a); 这个是php的…

电商+支付双系统项目------项目部署到服务器

我已经把这个项目的所有模块都做好了。那么&#xff0c;现在我们要做的就是将这个项目部署发布了。其实关于部署发布网上有很多的文章都会教&#xff0c;我就不写哪些很具体的步骤了&#xff0c;我就简单的总结一下怎么部署这个项目&#xff0c;让大家对项目部署有一个整体的认…

(十八)devops持续集成开发——使用docker安装部署jenkins流水线服务

前言 本节内容介绍如何使用docker容器来部署安装jenkins流水线服务。关于docker容器的安装本节内容不做介绍。请读者提前安装。 正文 ①使用docker查找jenkins官方镜像 ② 拉取jenkins官方镜像jenkins/jenkins&#xff0c;选择一个最新稳定版本&#xff0c;避免一些插件不兼…