Mysql基础与安装

一、数据库的概念和相关的语法和规范
1、数据库的概念
数据库:组织,存储,管理数据的仓库。

数据库的管理系统(DBMS):实现对数据有效组织,管理和存取的系统软件。

数据库的种类:

mysql 、oracle 大数据系统一般使用、 sql-server、 MariaDB 也是mysql 也叫mysqld 、 postgreSQL 大象数据库。

2、关系型数据库和非关系型数据库
关系型数据库:mysql oracle postgreSQL

关系型存储的结构:是一张二维的表格,表里面有行和列

列:是对象,字段

行:对象的信息,字段的属性

行+列组成一张表

非关系型数据库:

缓存型数据库:arredis

索引型数据库:ES

文档型数据库:MongoDB

键值对形式存储的结构 key value

关系型数据库和非关系型数据库优缺点:

关系型的优点:表的结构清晰,逻辑容易整理,记录的证据比较完整。

缺点:读写速度比较慢,并发量差,数据迁移比较麻烦。

非关系型数据库:

优点:可以进行高并发读写,对海量数据依旧可以保持高效率的存储和访问,架构可拓展

缺点:键值对形式存储,数据逻辑比较复杂,数据是保存子在缓存(内存)当中的(redis)如果意外重启所有数据都会丢失。

3、mysql的数据类型
char:固定长度的字符类型,用于存储固定长度的字符串。

varchar:可变长度的字符类型,存储的是可变长度的字符串。

char定义好了长度之后,不论写的值多少,都会占用固定长度的字节大小,保存在磁盘上都是接点字节。

varchar 在保存字符串是时,多少就是保存多少,在保存的字符串结尾默认有一个隐藏的结束符,会多占一个字节。

varchar比char节约磁盘。

读写速度方面:

char的读写性能高于varchar,char是连续的磁盘空间,保存的内容是连续的。

varchar在增删改查之后,会产生一个磁盘空间的碎片文件,影响读写性能。

int :存储的数据类型为整数。

float:浮点数,小数点(float(m:d))m表示总位数,d表示小数位数。

double:双精度浮点数,(double(m:d))m表示总位数,d表示小数位数。

date类型用于存储日子,YYYY-MM-DD datetime用来存储日期和时间 YYYY-MM-DD HH:MM:SS timestamp和dateime类型,但是他可以自动记录当前时间。

decimal(5,2)存储浮点数,压精度的浮点数,5表示总数位,2表示小数位。

4、数据库的管理
增删改查-----------sql语句

sql中的名词:

数据库:database

表:table

行:row

列:column

索引:index

视图:view

用户:user

权限:privilege

存储过程:procedure

存储函数:function

调度器:exent

5、sql的语言规范
在数据库系统中,sql语言不区分大小写的,但是建议用大写。

sql语句可以单行也可以多行,但是必须要以“;”结尾。

命名规范:库名,表名,列的名字,必须都是字母开头,后面可以数字。后面也可以跟上特殊符号。

不要使用mysql的保留字,table select show。

数据库,表面,用户名严格区分大小写。

6、sql语言的分类
1、DDL 数据库定义语言:创建数据的对象语言,库,表和索引等等

create drop

2、DML:数据库操作语言,对表里面的数据进行管理

select update insert delete

3、DQL:数据库查询语言,数据的查询语句

select

4、DCL数据控制语言,控制和管理数据用户的角色和权限。

grant 赋权 revoke取消权限

5、tcl事务控制语言,用来管理的数据库的事务,脚本开发,存储过程等等

commit rollback savepoint

二、数据库安装
安装使用的是绿色硬盘版本,无需额外安装依赖环境,也不需要麻烦的编译安装,因为比较简单

将安装包拖进/opt目录下

cd /opt
tar -xf mysql安装包
mv 解压出的目录 /usr/local/mysql
#创建程序用户
useradd -M -s /sbin/nologin mysql
#mysql的主配置文件设定所属用户和组
chown -R mysql.mysql /usr/local/mysql/
chown mysql.mysql /etc/my.cnf

修改配置文件

vim /etc/my.cnf
[client]
port = 3306
#客户端访问的端口
socket=/usr/local/mysql/mysql.sock
#指定MySQL的通信套接字文件[mysqld]
user = mysql
basedir=/usr/local/mysql
#MySQL的安装目录
datadir=/usr/local/mysql/data
#MySQL数据保存的目录
port = 3306
#服务端的端口
character-set-server=utf8
#字符集的编码
pid-file = /usr/local/mysql/mysqld.pid
#pid文件位置
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
#表示任意地址都可以访问数据库
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
#MySQL默认的存储引擎
max_allowed_packet=16M
server-id = 1
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#MySQL支持的数据类型和相关的模块

设置环境变量,声明/宣告MySQL命令便于系统识别:

echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile

初始化数据库:

cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

设置系统识别,进行操作:

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
systemctl daemon-reload
systemctl restart mysqld

这样一个数据库就安装成功了。

三、使用数据库(增删改查)
1、基础操作
初始化数据库密码:

mysqladmin -u root -p password "123456"
#在交互界面直接回车,不要输入!

进入数据库:

mysql -u root -p123456
#进入数据库交互界面
show databases;
#创建用户并设置密码
create user 'root'@"%" identified by '123456';
#赋予远程连接的权限
grant all privileges on *.* to 'root'@'%';
#刷新生效
flush privileges;
#修改加密方式,可以进行远程连接
alter user 'root'@'%' identified with mysql_native_password by "123456";
exit;

这就可以使用本地的数据库软件进行连接。

创建一个表

CREATE table stu03(
#表名是stu03
id int(5),
name char(10),
date_time date not null,
#不能为空
data_times datetime,
date_time1 timestamp not null,
PRIMARY KEY (id)
);

添加一条数据

INSERT into stu03 VALUES(1,2,'2024-07-08','2024-09-08 09:09:00',NOW());#插入数据

查看效果

删除表

DROP TABLE stu03;

创建表

CREATE TABLE stu (
id int(4) not null,
name CHAR(10) not null,
score decimal(5,2)
);

查看

2、insert插入数据
语法1

insert into 表名(字段1,字段2,字段3)values (值1,值2,值3);

insert into stu (id,name,score) VALUES (1,'zhangsan',87.5);

字符串需要使用单引号引起来。

语法2

insert into 表名 values(1,'lisi',88.7);

查看全部内容

SELECT * from stu; 查询所有

null和空值之间的区别:

null就是啥也没有,就是为空

空值也是值,只是值是空的

3、修改和更新update
update 表名 set 列名=值where 条件;

UPDATE stu set score=90 WHERE id=3;

4、删除delete表的数据
delete from 表面 where 条件;

删除lisi字段

DELETE from student WHERE id=2;

查看

SELECT * from student;

5、 DQL语句,select查询语句

查看指定行limit

SELECT * from student LIMIT 1,3;

表示查询你从第一行开始的后面是三行,包括自己

去重查询

SELECT DISTINCT name FROM student; 

去重

不能多个去重

SELECT DISTINCT name,score FROM student; 

根据一个条件进行查找

SELECT * from student WHERE id=7;

多个条件逻辑或,只需要有一个成立即可

SELECT * from student WHERE id=7 or score=99;

多个条件逻辑且,必须同时满足,否则为空

SELECT * from student WHERE id=7 and score=99;

SELECT * from student WHERE id=8 and score=99;

模糊查询like

select * from student where name like '王%'; 查询以王为开头的
select * from student where name like '%二'; 以二为结尾
select * from student where name like '%王%'; 包含有王字的

6、 更新alter
alter修改表面和修改表结构

alter table student rename stu;

修改表结构

给表添加一个列

ALTER TABLE stu add address VARCHAR(50) DEFAULT '地址不详';

查看修改字段的数据类型

desc stu;

ALTER TABLE stu MODIFY COLUMN address CHAR(10);
desc stu;

删除列

ALTER TABLE stu DROP address;

修改name列的名称

ALTER TABLE stu change name uname char(10);

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

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

相关文章

QT 多线程 QThread

继承QThread的线程 继承 QThread 是创建线程的一个普通方法。其中创建的线程只有 run() 方法在线程里的。其他类内定义的方法都在主线程内。 通过上面的图我们可以看到,主线程内有很多方法在主线程内,但是子线程,只有 run() 方法是在子线…

Python | Leetcode Python题解之第236题二叉树的最近公共祖先

题目: 题解: # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val x # self.left None # self.right Noneclass Solution:def lowestCommonAncestor(self, root: TreeNode, p…

实战篇(十一) : 拥抱交互的三维世界:利用 Processing 和 OpenGL 实现炫彩粒子系统

🌌 拥抱交互的三维世界:利用 Processing 和 OpenGL 实现炫彩粒子系统 在现代计算机图形学中,三维粒子系统是一个激动人心的领域。它不仅可以用来模拟自然现象,如烟雾、火焰和水流,还可以用来创造出令人叹为观止的视觉效果。在这篇文章中,我们将深入探讨如何使用 Proces…

第四届中国移动“梧桐杯”大数据创新大赛正式启动报名!

“梧桐杯”大赛是中国移动面向海内外高校青年学生打造的年度大数据创新赛事,以“竞逐数海,领航未来”为主题,携手政府、高校和行业企业通过比赛发掘高校优秀人才,孵化投资优秀项目。大赛设置“企业导师校内导师”双轨导师制&#…

Linux_线程的同步与互斥

目录 1、互斥相关概念 2、代码体现互斥重要性 3、互斥锁 3.1 初始化锁 3.2 申请、释放锁 3.3 加锁的思想 3.4 实现加锁 3.5 锁的原子性 4、线程安全 4.1 可重入函数 4.2 死锁 5、线程同步 5.1 条件变量初始化 5.2 条件变量等待队列 5.3 唤醒等待队列…

MySQL学习记录 —— 이십이 MySQL服务器文件系统(2)

文章目录 1、日志文件的整体简介2、一般、慢查询日志1、一般查询日志2、慢查询日志FILE格式TABLE格式 3、错误日志4、二进制日志5、日志维护 1、日志文件的整体简介 中继服务器的数据来源于集群中的主服务。每次做一些操作时,把操作保存到重做日志,这样崩…

JAVASE-医疗管理系统项目总结

文章目录 项目功能架构运行截图数据库设计设计模式应用单列设计模式JDBC模板模板设计模式策略模式工厂设计模式事务控制代理模式注解开发优化工厂模式 页面跳转ThreadLocal分页查询实现统计模块聊天 项目功能架构 传统的MVC架构,JavaFX桌面端项目,前端用…

R语言进行集成学习算法:随机森林

# 10.4 集成学习及随机森林 # 导入car数据集 car <- read.table("data/car.data",sep ",") # 对变量重命名 colnames(car) <- c("buy","main","doors","capacity","lug_boot","safety"…

ARM体系结构和接口技术(五)封装RCC和GPIO库

文章目录 一、RCC&#xff08;一&#xff09;思路1. 找到时钟基地址2. 找到总线的地址偏移&#xff08;1&#xff09;AHB4总线&#xff08;2&#xff09;定义不同GPIO组的使能宏函数&#xff08;3&#xff09;APB1总线&#xff08;4&#xff09;定义使能宏函数 二、GPIO&#x…

基于Java的汽车租赁管理系统设计(含文档、源码)

本篇文章论述的是基于Java的汽车租赁管理系统设计的详情介绍&#xff0c;如果对您有帮助的话&#xff0c;还请关注一下哦&#xff0c;如果有资源方面的需要可以联系我。 目录 摘 要 系统运行截图 系统总体设计 系统论文 资源下载 摘 要 近年来&#xff0c;随着改革开放…

React遍历tree结构,获取所有的id,切换自动展开对应层级

我们在做一个效果的时候&#xff0c;经常可能要设置默认展开多少的数据 1、页面效果&#xff0c;切换右侧可以下拉可切换展开的数据层级&#xff0c;仅展开两级等 2、树形的数据

C语言中常见库函数(1)——字符函数和字符串函数

文章目录 前言1.字符分类函数2.字符转换函数3.strlen的使用和模拟实现4.strcpy的使用和模拟实现5.strcat的使用和模拟实现6.strncmp的使用和模拟实现7.strncpy函数的使用8.strncat函数的使用9.strncmp函数的使用10.strstr的使用和模拟实现11.strtok函数的使用12.strerror函数的…

【文献阅读】Social Bot Detection Based on Window Strategy

Abstract 机器人发帖的目的是在不同时期宣传不同的内容&#xff0c;其发帖经常会出现异常的兴趣变化、而人类发帖的目的是表达兴趣爱好和日常生活&#xff0c;其兴趣变化相对稳定。提出了一种基于窗口策略&#xff08;BotWindow Strategy&#xff09;的社交机器人检测模型基于…

深入了解MySQL文件排序

数据准备 CREATE TABLE user_info (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT ID,name varchar(20) NOT NULL COMMENT 用户名,age tinyint(4) NOT NULL DEFAULT 0 COMMENT 年龄,sex tinyint(2) NOT NULL DEFAULT 0 COMMENT 状态 0&#xff1a;男 1&#xff1a; 女,creat…

R语言实现对模型的参数优化与评价KS曲线、ROC曲线、深度学习模型训练、交叉验证、网格搜索

目录 一、模型性能评估 1、数据预测评估 2、概率预测评估 二、模型参数优化 1、训练集、验证集、测试集的引入 2、k折线交叉验证 2、网格搜索 一、模型性能评估 1、数据预测评估 ### 数据预测评估 #### 加载包&#xff0c;不存在就进行在线下载后加载if(!require(mlben…

NFS存储、API资源对象StorageClass、Ceph存储-搭建ceph集群和Ceph存储-在k8s里使用ceph(2024-07-16)

一、NFS存储 注意&#xff1a;在做本章节示例时&#xff0c;需要拿单独一台机器来部署NFS&#xff0c;具体步骤略。NFS作为常用的网络文件系统&#xff0c;在多机之间共享文件的场景下用途广泛&#xff0c;毕竟NFS配置方 便&#xff0c;而且稳定可靠。NFS同样也有一些缺点&…

《Towards Black-Box Membership Inference Attack for Diffusion Models》论文笔记

《Towards Black-Box Membership Inference Attack for Diffusion Models》 Abstract 识别艺术品是否用于训练扩散模型的挑战&#xff0c;重点是人工智能生成的艺术品中的成员推断攻击——copyright protection不需要访问内部模型组件的新型黑盒攻击方法展示了在评估 DALL-E …

昇思25天训练营Day18 - 基于MobileNetv2的垃圾分类

基于MobileNetv2的垃圾分类 本文档主要介绍垃圾分类代码开发的方法。通过读取本地图像数据作为输入&#xff0c;对图像中的垃圾物体进行检测&#xff0c;并且将检测结果图片保存到文件中。 1、实验目的 了解熟悉垃圾分类应用代码的编写&#xff08;Python语言&#xff09;&a…

[MySQL][复核查询][多表查询][自连接][自查询]详细讲解

目录 1.铺垫&基本查询回顾1.多表查询1.何为笛卡尔积&#xff1f;2.示例 2.自连接1.何为自连接&#xff1f;2.示例 3.子查询1.何为子查询&#xff1f;2.单行子查询3.多行子查询4.多列子查询5.在from子句中使用子查询6.合并查询 1.铺垫&基本查询回顾 前面讲解的MYSQL表的…

【深度学习入门篇 ⑨】循环神经网络实战

【&#x1f34a;易编橙&#xff1a;一个帮助编程小伙伴少走弯路的终身成长社群&#x1f34a;】 大家好&#xff0c;我是小森( &#xfe61;ˆoˆ&#xfe61; ) &#xff01; 易编橙终身成长社群创始团队嘉宾&#xff0c;橙似锦计划领衔成员、阿里云专家博主、腾讯云内容共创官…