【MYSQL】MYSQL学习笔记【基础篇】【未完待续】

news2024/11/20 23:15:13

文章目录

  • MYSQL入门
    • 一、MYSQL概述
      • 1. 数据库相关概念
        • 1.1 数据库,数据库管理系统与SQL
        • 1.2 数据库种类以及主流数据库管理系统排名
        • 1.3 MySQL数据库安装
        • 1.4 数据模型
    • 二、SQL
      • 2.1 通用语法与注释
      • 2.2 SQL分类
      • 2.3 DDL
        • 2.3.1 数据库操作
        • 2.3.2 表操作
          • 2.3.2.1 表操作-查询创建
          • 2.3.2.2 表操作-数据类型
          • 2.3.2.3 表操作-修改
          • 2.3.2.4 表操作-删除
      • 2.4 图形化界面

MYSQL入门

在这里插入图片描述

一、MYSQL概述

1. 数据库相关概念

1.1 数据库,数据库管理系统与SQL

名称简称作用
数据库DataBase(DB)存储数据的仓库,数据有组织的存储
数据库管理系统DataBase Managerment System(DBMS)操纵和管理数据库的大型软件
SQLStructured Query Language(SQL)操作关系型数据库的编程语言,定义了一套操作数据型数据库统一标准。

在这里插入图片描述

1.2 数据库种类以及主流数据库管理系统排名

数据库的种类

数据库是用于存储、管理和组织数据的系统。根据数据的组织方式和存储结构,数据库可以分为多种类型。不同的数据库类型适用于不同的应用场景和需求,选择适合自己的数据库类型取决于具体的项目和数据管理需求。常见的数据库种类及介绍如下:

  • 关系型数据库(Relational Database):关系型数据库建立在关系模型的基础上,由多张相互连接的二维的表格(表)来组织数据,数据以行和列的形式存储,并通过关系(关联)来连接不同表中的数据。常见的关系型数据库包括Oracle、MySQL、SQL Server、PostgreSQL等。
  • 非关系型数据库(NoSQL Database):非关系型数据库是一种非结构化的数据存储系统,不使用表格来组织数据,而是使用不同的数据模型,如文档型、键值对、列族和图形等。常见的非关系型数据库有MongoDB、Redis、Cassandra、Neo4j等。
  • 面向对象数据库(Object-oriented Database):面向对象数据库是为面向对象程序设计而设计的数据库,可以存储对象、类、继承和多态等概念。它们将数据视为对象,并支持面向对象编程的特性。常见的面向对象数据库有db4o、Versant等。
  • 层次型数据库(Hierarchical Database):层次型数据库使用层次结构来组织和管理数据,其中每个数据记录都有一个父节点和零个或多个子节点。这种数据库类型适用于树状结构数据,例如文件系统。IBM的IMS(Information Management System)就是一个层次型数据库系统。
  • 网状型数据库(Network Database):网状型数据库使用网状结构来组织数据,其中数据记录可以有多个父节点和多个子节点。这种数据库类型适用于复杂的数据关系,例如计算机网络拓扑结构。CODASYL是一个著名的网状型数据库系统。
  • 内存数据库(In-Memory Database):内存数据库将数据存储在主内存中,而不是传统的磁盘存储。这使得读写操作更快,适用于需要高性能和低延迟的应用场景。常见的内存数据库有Redis、Memcached、SAP HANA等。

MySQL数据库属于关系型数据库,在前期学习时,我会把这种数据库参照其定义可以将一个数据库想象成Excel里的一个sheet页,可以有多张表,也即可以有多个sheet页。这种关系型数据库的特点如下:

  • 使用表存储数据,格式统一,便于维护
  • 使用SQL语言操作,标准统一,使用方便

目前主流的关系型数据库管理系统的市场占有率排名如下:
在这里插入图片描述

  • Oracle:大型的收费数据库,Oracle公司产品,价格昂贵。
  • MySQL:开源免费的中小型数据库,后来Sun公司收购了MySQL,而Oracle又收购了Sun公司。目前Oracle推出了收费版本的MySQL,也提供了免费的社区版本。

这些数据库管理系统可能不一样,但是最后操作时,都是使用SQL语言来进行统一操作的,SQL语言是操作关系型数据库的统一标准。

1.3 MySQL数据库安装

个人使用Ubuntu作为开发环境,此处以Ubuntu版安装举例:
下载:

sudo apt-get install mysql-server mysql-client

在这里插入图片描述
查看是否安装成功:
在这里插入图片描述
修改密码:
打开配置文件:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

相同位置输入:

skip-grant-tables

在这里插入图片描述重启mysql:

service mysql stop
service mysql restart

进入系统后:

use mysql;
update user set authentication_string='123' where user='root';
flush privileges; 

重启mysql后正常登陆即可;

1.4 数据模型

MySQL是关系型数据库,是基于二维表进行数据存储的,具体的结构图下:

在这里插入图片描述

  • 我们可以通过MySQL客户端连接数据库管理系统DBMS,然后通过DBMS操作数据库。
  • 可以使用SQL语句,通过数据库管理系统操作数据库,以及操作数据库中的表结构及数据。
  • 一个数据库服务器中可以创建多个数据库,一个数据库中也可以包含多张表,而一张表中又可以包
    含多行记录。

二、SQL

2.1 通用语法与注释

通用语法:

  1. SQL语句可以单行或多行书写,以分号结尾。
  2. SQL语句可以使用空格/缩进来增强语句的可读性。
  3. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。

注释:

  • 单行注释:-- 注释内容 或 # 注释内容
  • 多行注释:/* 注释内容 */

2.2 SQL分类

SQL语句,根据其功能,主要分为四类:DDL、DML、DQL、DCL。

分类全程说明
DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)
DMLDate Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改查
DQLData Query Language数据查询语言,用来查询数据库中表的记录
DCLData Control Language数据控制语言,用来创建数据库用户,控制数据库的访问权限

2.3 DDL

Data Definition Language,数据定义语言,用来定义数据库对象(数据库,表,字段) 。

2.3.1 数据库操作

查询所有数据库:

show databases ;

在这里插入图片描述

查询当前数据库:

select database() ;

创建数据库:

create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序规则 ] ;

实验: 创建一个数据库mydatabase

create database if not exists mydatabase default charset utf8mb4;

在这里插入图片描述

顺便提一下:不能创建同名数据库:
禁止创建同名数据库删除数据库

drop database [ if exists ] 数据库名 ;

删除数据库切换数据库

use 数据库名;

2.3.2 表操作

2.3.2.1 表操作-查询创建

查询当前数据库所有表

show tables;

查看数据库
查看特定表结构

desc 表名;

查看某一张表查看指定表的建表语句

show create table 表名;

这条指令用来查看某一张表的建表语句,而有部分参数我们在创建表的时候,并未指定也会查询到,因为这部分是数据库的默认值,如:存储引擎、字符集等。

创建表结构

CREATE TABLE 表名(
字段1 字段1类型 [ COMMENT 字段1注释 ],
字段2 字段2类型 [COMMENT 字段2注释 ],
字段3 字段3类型 [COMMENT 字段3注释 ],
......
字段n 字段n类型 [COMMENT 字段n注释 ]
) [ COMMENT 表注释 ] ;

注意: […] 内为可选参数,最后一个字段后面没有逗号

实验:
现有一张表结构如下,使用sql语句建表:

idnameagegender
1令狐冲28
2风清扬68
3东方不败32
 create table xajh( 
 id int comment '编号', 
 name varchar(50) comment '姓名', 
 age int comment '年龄', 
 gender varchar(1) comment '性别' 
 )comment '笑傲江湖人物表';
2.3.2.2 表操作-数据类型

MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。

1). 数值类型

类型大小(byte)有符号范围无符号范围描述
TINYINT1(-128,127)(0,255)小整数值
SMALLINT2(-32768,32767)(0,65535)大整数值
MEDIUMINT3(–223,223-1)(0,16777215)大整数值
INT/INTEGER4(–231,231-1)(0,4294967295)大整数值
BIGINT8(-263,263-1)(0,2^64-1)极大整数值
FLOAT4(-3.402823466 E+38,3.402823466351 E+38)0 和 (1.175494351 E-38,3.402823466 E+38)单精度浮点数值
DOUBLE8(-1.7976931348623157E+308,1.7976931348623157E+308)0 和(2.2250738585072014E-308,1.7976931348623157E+308)双精度浮点数值
DECIMAL依赖于M(精度)和D(标度)的值(100.0,精度为整个数值的长度4,标度为小数部分1)依赖于M(精度)和D(标度)的值小数值(精确定点数)

如:
1). 年龄字段 – 不会出现负数, 而且人的年龄不会太大
age tinyint unsigned
2). 分数 – 总分100分, 最多出现一位小数
score double(4,1)(100.0,精度4,标度1)

2). 字符串类型

类型大小(bytes)描述
CHAR0-255定长字符串(需要指定长度)
VARCHAR0-65535变长字符串(需要指定长度)
TINYBLOB0-255不超过255个字符的二进制数据
TINYTEXT0-255短文本字符串
BLOB0-65535二进制形式的长文本数据
TEXT0-65535长文本数据
MEDIUMBLOB0-16 777 215二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215中等长度文本数据
LONGBLOB0-4 294 967 295二进制形式的极大文本数据
LONGTEXT0-4 294 967 295极大文本数据

char 与 varchar 都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和
字段值的长度无关 。而varchar是变长字符串,指定的长度为最大占用长度 。相对来说,char的性
能会更高些。

如:
1). 用户名 username ------> 长度不定, 最长不会超过50
username varchar(50)
2). 性别 gender ---------> 存储值, 不是男,就是女
gender char(1)
3). 手机号 phone --------> 固定长度为11
phone char(11)

3). 日期时间类型

类型大小范围格式描述
DATE31000-01-01 至 9999-12-31YYYY-MM-DD日期值
TIME3-838:59:59 至 838:59:59HH:MM:SS时间值或持续时间
TIME11901 至 2155YYYY年份值
DATETIME81000-01-01 00:00:00 至9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP41970-01-01 00:00:01 至2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS混合日期和时间值,时间戳

如:
1). 生日字段 birthday
birthday date
2). 创建时间 createtime
createtime datetime

示例:
设计一张员工信息表,要求如下:

  1. 编号(纯数字)
  2. 员工工号 (字符串类型,长度不超过10位)
  3. 员工姓名(字符串类型,长度不超过10位)
  4. 性别(男/女,存储一个汉字)
  5. 年龄(正常人年龄,不可能存储负数)
  6. 身份证号(二代身份证号均为18位,身份证中有X这样的字符)
  7. 入职时间(取值年月日即可)

对应的建表语句:

create table emp(
id int comment '编号',
workno varchar(10) comment '工号',
name varchar(10) comment '姓名',
gender char(1) comment '性别',
age tinyint unsigned comment '年龄',
idcard char(18) comment '身份证号',
entrydate date comment '入职时间'
) comment '员工表';

在这里插入图片描述

2.3.2.3 表操作-修改

1). 添加字段

ALTER TABLE 表名 ADD 字段名 类型 (长度) [ COMMENT 1 注释 ] [ 约束 ];

2). 修改数据类型

ALTER TABLE 表名 MODIFY 字段名 新数据类型 (长度);

3). 修改字段名和字段类型

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 (长度) [ COMMENT 1 注释 ] [ 约束 ];

示例:将emp表的nickname字段修改为username,类型为varchar(30)

ALTER TABLE emp CHANGE nickname username varchar(30) COMMENT '昵称';

4).删除字段

ALTER TABLE 表名 DROP 字段名;

案例:将emp表的字段username删除

ALTER TABLE emp DROP username;

5). 修改表名

ALTER TABLE 表名 RENAME TO 新表名;

案例:将emp表的表名修改为 employee

ALTER TABLE emp RENAME TO employee;
2.3.2.4 表操作-删除

1).删除表

DROP TABLE [ IF EXISTS ] 表名;

2).删除指定表,并重新创建表(清空表中所有数据)

TRUNCATE TABLE 表名;

注意: 在删除表的时候,表中的全部数据也都会被删除。

类比于excel,将第一种方式理解成删除某个sheet页,第二种方式理解成情况表中所有数据但并不删除此sheet页

2.4 图形化界面

安装DataGrip:

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

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

相关文章

UIAutomator2安装及连接手机,我踩的坑都在这儿了

一、大致步骤 大家搜索网络教程,都会看到差不多的安装步骤: 1、本人使用的python3.11 2、OPPO手机 3、安装UIAutomator2: 在命令行中输入:pip install --pre uiautomator2 4、安装配置adb 安装window上(其他的自…

excal中遇到数据变成科学计数法的处理方法

1、单元格宽度太小(解决办法增加单元格的宽度) 2、通过设置单元格格式里面调整 #;#;0;G/通用格式

Python毕业设计 抖音短视频数据分析与可视化 - python 大数据 可视化

文章目录 0 前言1 课题背景2 数据清洗3 数据可视化地区-用户观看时间分界线每周观看观看路径发布地点视频时长整体点赞、完播 4 进阶分析相关性分析留存率 5 深度分析客户价值判断 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕…

Python实现猫狗分类

不废话了,直接上代码: def load_imagepath_from_csv(csv_name):image_path []with open(csv_name,r) as file:csv_reader csv.reader(file)next(csv_reader)for row in csv_reader:image_path.append(row[0])return image_pathimport csv csv_name &…

如何监控制造业精密空调?看这技能就够了!

在半导体制造、电子元件生产、光学设备制造等领域,精密空调监控是关键的保障,因为微小的温度或湿度变化、微生物或颗粒物污染都可能对产品质量和性能造成巨大影响。 精密空调监控系统作为一种高度智能化的解决方案,能够实时监测和调节生产环境…

IIS站点无法启动,万维网发布服务无法开机启动

对于 IIS 站点无法启动和万维网发布服务无法自动启动的问题,你可以尝试以下的注册表设置修改: 1.启动类型设置: 打开注册表编辑器,导航至以下路径:HKEYLOCALMACHINE\SYSTEM\CurrentControlSet\Services\W3SVC 确保在右…

【参赛送好礼】2023 云原生编程挑战赛·赛道 3 赛题解析助您快速 get 参赛技能

大赛介绍 第四届云原生编程挑战赛,是由阿里云主办,云原生应用平台、天池联合承办的云原生著名品牌赛事。 自 2015 年开始,大赛已经成功举办了八届,并从 2020 年开始升级为首届云原生编程挑战赛,共吸引了超过 53000 支…

18、springboot默认的配置文件及导入额外配置文件

springboot默认的配置文件及导入额外配置文件 ★ Spring Boot默认加载的配置文件: (1) 类加载路径(resources目录)application.properties|yml (相当于JAR包内)optional: classpath:/ (2)类加…

中国农村程序员学习此【ES6】购买大平层,开上帕拉梅拉,迎娶白富美出任CEO走上人生巅峰

注:最后有面试挑战,看看自己掌握了吗 文章目录 比较 var 和 let 关键字的作用域--var可能被随时覆盖-全局变量for循环全局作用域函数作用域块作用域循环作用域HTML 中的全局变量提升改变一个用 const 声明的数组防止对象改变使用箭头函数编写简洁的匿名函…

aws的EC2云服务器

亚马逊官网有免费试用1年的服务器 1. 启动生成实例 1.1 创建实例时需要生成 使用的默认的 Debian 和 一个.pem后缀的秘钥 1.2 网上下一个Mobaxterm ,实例名是公有 IPv4 DNS 地址 ,使用SSH连接,登录名是admin 1.3 登录进去后 输入用户名 admin 后进去,sudo su 切换成 root…

python-爬虫作业

# -*- coding:utf-8 -*-Author: 董咚咚 contact: 2648633809qq.com Time: 2023/7/31 17:02 version: 1.0import requests import reimport xlwt from bs4 import BeautifulSoupurl "https://www.dygod.net/html/gndy/dyzz/" hd {user-Agent:Mozilla/4.0 (Windows N…

项目管理困扰?这里有个6W3H解决方案

引言 在项目管理的过程中,我们经常面临各种各样的挑战和问题。例如,如何确定项目的目标?如何分配资源?何时开始执行项目?在哪里进行项目?这些问题如果没有得到正确的解答,将会严重影响项目的进…

LAXCUS:私域部署的DataBricks

随着大数据技术的不断发展,越来越多的企业开始关注数据的价值和应用。Databricks作为一家开源的大数据平台,为企业提供了强大的数据分析和处理能力。然而,传统的Databricks部署方式存在一定的局限性,比如需要依赖于云服务提供商的…

go 语言实战入门案例之猜数字

文章和代码已经归档至【Github仓库:https://github.com/timerring/backend-tutorial 】或者公众号【AIShareLab】回复 go 也可获取。 猜数字 第一个例子里面,我们会使用 Golang 来构建一个猜数字游戏。 在这个游戏里面,程序首先会生成一个介…

如何在群晖NAS中使用cpolar内网穿透

如何在群晖nas中使用cpolar内网穿透 文章目录 如何在群晖nas中使用cpolar内网穿透 今天,我们来为大家介绍,如何在群晖系统中,使用图形化界面的cpolar。 cpolar经过图形化改造后,使用方法已经简便了很多,基本与其他应用…

如何正确使用 ThreadLocal,你真的用对了吗? | 京东云技术团队

引言: 当多线程访问共享且可变的数据时,涉及到线程间同步的问题,并不是所有时候,都要用到共享数据,所以就需要ThreadLocal出场了。 ThreadLocal又称线程本地变量,使用其能够将数据封闭在各自的线程中&…

振弦传感器信号转换器应用山体滑坡安全监测

振弦传感器信号转换器应用山体滑坡安全监测 随着人类文明的进步,自然灾害对人们的生活和财产安全造成的威胁也越来越大。山体滑坡作为自然灾害中的一种,给人们的生活和财产安全带来了极大的威胁。因此,进行山体滑坡的安全监测显得尤为重要。振…

Vue2:基础入门2

Vue2:基础入门2 Date: July 29, 2023 Sum: Computed计算属性、watch侦听器、水果车 计算属性 基础及案例: 概念: 基于现有的数据,计算出来的新属性。 依赖的数据变化,自动重新计算。 计算属性本质上就是一个 func…

C语言中的常量

整型常量 常量是指在程序运行期间其数值不发生变化的数据。整型常量通常简称为整数。 整数可以是十进制数、八进制数和十六进制数。例如,十进制的数值3356可以有下列二种不同的表示形式: 八进制数 06434十六进制数 0xd1c Tip:当我们判断十六进制或八进…

【JavaEE初阶】博客系统后端

文章目录 一. 创建项目 引入依赖二. 设计数据库三. 编写数据库代码四. 创建实体类五. 封装数据库的增删查改六. 具体功能书写1. 博客列表页2. 博客详情页3. 博客登录页4. 检测登录状态5. 实现显示用户信息的功能6. 退出登录状态7. 发布博客 一. 创建项目 引入依赖 创建blog_sy…