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

news/2024/11/24 16:46:58/

文章目录

  • 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.ppmy.cn/news/1001394.html

相关文章

spring boot+thymeleaf+semantic ui 分页

参考&#xff1a; https://my.oschina.net/ayyao/blog/898041 后端 springboot 使用&#xff1a; com.github.pagehelper.PageInfo&#xff0c;作为分页对象 <!--引入分页插件--> <dependency><groupId>com.github.pagehelper</groupId><artifa…

【CSS】3D卡片效果

效果 index.html <!DOCTYPE html> <html><head><title> Document </title><link type"text/css" rel"styleSheet" href"index.css" /></head><body><div class"card"><img…

[Linux]手把手教你制作进度条小程序

[Linux]制作进度条小程序 文章目录 [Linux]制作进度条小程序C语言中的\n和\r字符缓冲区的刷新策略进行进度条代码编写 C语言中的\n和\r字符 C语言中字符分为两种: 可显字符控制字符 其中可显字符就是字符a这类的字符&#xff0c;控制字符就是\n这种控制字符。 对于我们制作…

【开源源码学习】

C 迷你高尔夫 一款打高尔夫的游戏。亮点是碰撞反应和关卡设计。 GitHub - mgerdes/Open-Golf: A cross-platform minigolf game written in C. TypeScript 俄罗斯方块 复刻经典的俄罗斯方块&#xff0c;项目采用ReactReduxImmutable的技术栈。 GitHub - chvin/react-tetr…

DataTable过滤某些数据

要过滤DataTable中的某些数据&#xff0c;可以使用以下方法&#xff1a; 使用Select方法&#xff1a;可以使用DataTable的Select方法来筛选满足指定条件的数据行。该方法接受一个字符串参数作为过滤条件&#xff0c;返回一个符合条件的数据行数组。 DataTable filteredTable …

DataGrip使用教程

DataGrip使用教程 DataGrip是一款由JetBrains开发的强大数据库集成开发环境&#xff08;IDE&#xff09;。作为一款全功能的数据库工具&#xff0c;它旨在帮助开发者和数据库管理员高效地管理和处理数据库。DataGrip支持多种主流数据库管理系统&#xff0c;包括MySQL、Postgre…

数字孪生的「三张皮」问题:数据隐私、安全与伦理挑战

引言 随着数字化时代的来临&#xff0c;数据成为了当今社会的宝贵资源。然而&#xff0c;数据的广泛使用也带来了一系列隐私、安全与伦理挑战。数字孪生作为一种虚拟的数字化实体&#xff0c;通过收集和分析大量数据&#xff0c;模拟和预测现实世界中的各种情境&#xff0c;为…

ddddddd

有个问题解释以下就是&#xff0c;编程的知识体系都是框架的&#xff0c;你现在接触到的还只是基础语法&#xff0c;也有知识架构&#xff0c;那个网站每个课程每个章节就是小的架构&#xff0c; 我的习惯是用markdown文档来做笔记&#xff0c;和word一样也是文档&#xff0c;…