MySQL的简单介绍

news2024/9/19 9:39:12

文章目录

    • 数据库
    • 关系型数据库
    • 非关系型数据”
    • 数据库的概念和用途
      • MySQL数据库服务器、数据库和表的关系
      • 数据库的创建和删除
      • 表创建
      • 表修改
      • 常见的数据类型和约束
      • 字符串类型
      • 日期和时间类型
      • PRIMARY KEY使用
      • AUTO_INCREMENT使用
      • UNIQUE使用
      • FOREIGN KEY使用
    • SQL语言基础
      • SQL语言简介
      • SQL分类
      • SELECT语句的使用
      • INSERT语句的使用
      • UPDATE语句的使用
      • DELETE语句的使用
    • 基本查询
      • WHERE子句的使用
      • ORDER BY使用
      • GROUP BY和HAVING子句使用
      • LIMIT和OFFSET子句的使用

MySQL是一种开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,现隶属于Oracle公司。MySQL以其高性能、可靠性、扩展性和安全性而著称,广泛应用于Web开发、企业应用、数据分析等领域。

数据库

  • 数据库是数据的仓库
  • 与普通的数据仓库不同的是,数据库依据数据结构来组织数据,因为数据结构的存在,所以看到的数据是条理化的
  • 数据库和普通文件系统的区别在与:数据库拥有数据结构,能都快速查找对应的数据
  • 常说的MySQL数据库,其实就是MySQL数据库管理系统:数据库管理系统是一个软件,是数据库服务的体现
  • 根据数据结构的不同,数据库分为关系型数据库和非关系型数据库

关系型数据库

  • 关系型数据库是依据关系模型创建数据库
  • 关系模型就是一对一,一对多,多对多等关系模型,关系模型就是存储格式是以行列组成的二维表格,所以一个关系型数据库就是由二维表之间的联系所组成的一个数据组织
  • 关系型数据库可以很好的存储一些关系模型的数据,比如老师对应学生的数据(“多对多”),一本书对应多个作者(“一对多”),一个人对应一个身份证号码(“一对一”)

非关系型数据”

由于关系型太大和复杂,所以一般使用“非关系型数据”来表示其他类型的数据库
非关系型的模型比如:

  • 列模型:存储的数据是一列一列,关系型数据库以一行作为一个记录,列模型数据库以一列为一个记录
  • 键值对模型:存储的数据是一个个键值对,比如name:lisi
  • 文档类模型:以一个个文档来存储数据,类似于键值对

数据库的概念和用途

数据库是一个有组织的数据集合,它们被存储在计算机上以便于管理和访问。数据库的主要目的是为了存储和管理数据,同时使数据能够被高效地访问、检索和更新。
数据库的主要用途包括:

  • 数据存储和管理:数据库可以帮助组织和存储大量的数据,包括结构化数据(如表格)和非结构化数据(如文本、图片和视频等)。
  • 数据访问:数据库可以提供高效的数据访问方式,包括查询、过滤、排序等操作,以便用户能够轻松地检索所需的数据。
  • 数据共享:多个用户可以同时访问数据库中的数据,从而实现数据的共享和协作。
  • 数据安全性:数据库可以提供安全性控制,包括访问控制和数据加密等,以保护数据的机密性和完整性。
  • 数据备份和恢复:数据库可以提供备份和恢复功能,以确保数据的可靠性和完整性。
  • 数据分析和挖掘:数据库可以提供高级数据分析和挖掘功能,包括统计分析、数据挖掘和机器学习等,以便用户可以从数据中获得更多的价值。

MySQL数据库服务器、数据库和表的关系

数据库使用步骤:登录MySQL => 创建数据库 => 切换到指定数据库 => 创建表 => 使用表。
关系:数据库服务器 => 数据库 => 表,从左到右为一对多的关系。

数据库的创建和删除

创建数据库
CREATE DATABASE [IF NOT EXISTS] db_name

显示数据库语句:
SHOW DATABASES

显示数据库创建语句:
SHOW CREATE DATABASE db_name

数据库删除语句:
DROP DATABASE [IF EXISTS] db_name

DEFAULT CHARSET :指定数据库采用的字符集

切换数据库
use db_name;

查看当前使用的数据库
select database();

表创建

要创建一个新的表,需要使用SQL中的CREATE TABLE语句,并指定表名、列名和数据类型等信息。以下是一个基本的创建表的语法示例:

CREATE TABLE [IF NOT EXISTS]  students(
  id VARCHAR(255) PRIMARY KEY,
  name VARCHAR(255) NOT NULL,
  age INT,
  gender VARCHAR(255),
  clazz VARCHAR(255)
);

PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据表时如果输入该字段的数据为NULL ,就会报错。
加载本地数据:LOAD DATA local INFILE ‘students.txt’ INTO TABLE students FIELDS TERMINATED BY ‘,’ ;

表修改

使用 ALTER TABLE 语句追加, 修改, 或删除列的语法。

-- 增加列
alter table students add length float;
-- 修改列类型,属性
alter table students modify length int not null;
-- 删除列
alter table students drop length;
--修改表的名称
rename table students to student;
--修改列的名称
alter table  student change id sid varchar(255);
--修改表的字符集
alter table student character set utf8;

常见的数据类型和约束

数据类型

  • 数值类型:INT、BIGINT、FLOAT、DOUBLE,DECIMAL等。

  • 字符串类型:CHAR、VARCHAR、TEXT等。

  • 日期和时间类型:DATE、DATETIME、TIMESTAMP等。

  • 二进制类型:BLOB、LONGBLOB、VARBINARY等。

  • 枚举类型:ENUM。

  • 集合类型:SET。

约束

  • 主键约束(PRIMARY KEY):用于唯一标识表中的每一行数据,通常使用整数类型的列。
  • 唯一约束(UNIQUE):保证列中的所有值都是唯一的,可以包含空值。
  • 外键约束(FOREIGN KEY):用于定义列与其他表的关系,保证引用完整性。
  • 非空约束(NOT NULL):确保列中不包含空值。
  • 默认值约束(DEFAULT ):在插入新行时,如果没有指定列的值,则使用默认值。
  • 检查约束(CHECK):用于确保列中的值满足特定的条件,可以使用各种表达式和运算符来定义。
    在这里插入图片描述

字符串类型

字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。
字符串类型 主要是:varchar和char, UTF-8:一个汉字=3个字节 GBK:一个汉字=2个字节。
在这里插入图片描述

日期和时间类型

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR
在这里插入图片描述
示例:

CREATE TABLE users (
  id INT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  email VARCHAR(100) UNIQUE,
  password VARCHAR(100) NOT NULL,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  age INT CHECK(age >= 18),
  address TEXT,
  role ENUM('admin', 'user') DEFAULT 'user'
);

这个语句将创建一个名为users的表,包含多个列和约束。其中id列是主键,name列是非空字符串,email列是唯一的,password列是非空字符串,created_at列是日期时间类型,updated_at列是日期时间类型,但在更新时会自动更新,age列使用检查约束以确保其值大于等于18,address列是文本类型,role列是枚举类型,且默认值为’user’。

PRIMARY KEY使用

PRIMARY KEY 是一列或一组列,其值唯一标识表中的每一行。一个表只能有一个PRIMARY KEY。在表创建时,可以指定其中的一列为主键,也可以使用多列来组合作为主键。对于多列组合主键,它们的值的组合必须是唯一的。

CREATE TABLE employees (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  age INT
);

AUTO_INCREMENT使用

AUTO_INCREMENT是一种MySQL特有的属性,它允许一个整数列自动增长,每次插入新行时自动递增。这通常用于为表创建一个唯一的、自动生成的数字标识符。必须将AUTO_INCREMENT属性与INTEGER数据类型一起使用,通常是使用INT或BIGINT数据类型。

CREATE TABLE users (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50)
);

在上面的代码中,每次插入一行时,MySQL将自动为id列生成一个新的唯一值,而不需要手动为该列指定一个值。这使得插入新行时更加方便,同时也确保每个行都有一个唯一的标识符。

UNIQUE使用

假设有一个“学生”数据表,其中包含学生ID、姓名和电子邮件地址。为了确保每个学生的电子邮件地址是唯一的,可以在“电子邮件地址”列上创建UNIQUE约束。

CREATE TABLE students (
    student_id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE
);

在上面的代码中,我们创建了一个名为“students”的数据表,并在“email”列上创建了一个UNIQUE约束。这将确保每个学生的电子邮件地址是唯一的。

FOREIGN KEY使用

假设有一个“订单”数据表和一个“产品”数据表,其中“订单”表包含订单ID、订单日期和产品ID,而“产品”表包含产品ID、产品名称和产品价格。为了确保订单中的每个产品ID都是有效的,可以在“订单”表中为“产品ID”列创建FOREIGN KEY约束,该约束参照“产品”表中的“产品ID”列。

CREATE TABLE products (
    product_id INT PRIMARY KEY,
    product_name VARCHAR(50) NOT NULL,
    price DECIMAL(8, 2) NOT NULL
);

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    order_date DATE NOT NULL,
    product_id INT,
    FOREIGN KEY (product_id) REFERENCES products(product_id)
);

在上面的代码中,我们创建了一个名为“products”的数据表和一个名为“orders”的数据表,并在“orders”表中为“product_id”列创建了一个FOREIGN KEY约束。这将确保订单中的每个产品ID都是有效的,并且参照了“products”表中的产品ID列。

SQL语言基础

SQL(Structured Query Language)是一种标准化的关系型数据库管理系统,主要用于管理和查询数据库中的数据。

SQL语言简介

Structured Query Language, 结构化查询语言
非过程性语言
为加强SQL的语言能力,各厂商增强了过程性语言的特征
如Oracle的PL/SQL 过程性处理能力
SQL Server、Sybase的T-SQL
SQL是用来存取关系数据库的语言,具有查询、操纵、定义和控制关系型数据库的四方面功能

SQL分类

DDL

  • 数据定义语言 - Data Definition Language
  • 用来定义数据库的对象,如数据表、视图、索引等

DML

  • 数据处理语言 - Data Manipulation Language
  • 在数据库表中更新,增加和删除记录
  • 如 update, insert, delete

DCL

  • 数据控制语言 – Data Control Language
  • 指用于设置用户权限和控制事务语句
  • 如grant,revoke,if…else,while,begin transaction

DQL

  • 数据查询语言 – Data Query Language

SELECT语句的使用

SELECT语法是一种用于查询数据库中数据的SQL语句。其基本语法如下:

SELECT column1, column2, ... FROM table_name WHERE condition;

其中,SELECT关键字用于指定要查询的列,可以使用*代表所有列;FROM关键字用于指定要查询的表;WHERE关键字用于指定查询的条件。

select * from student where  sex=’男’;

INSERT语句的使用

INSERT语句用于向数据库中插入新的数据行。其基本语法如下:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

其中,table_name是要插入数据的表名,column1、column2等是表中的列名,value1、value2等是要插入的值。

UPDATE语句的使用

UPDATE语句用于修改数据库中已有的数据行。其基本语法如下:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE some_column = some_value;

其中,table_name是要更新数据的表名,column1、column2等是要修改的列名,value1、value2等是要修改的值,WHERE子句是用于指定要更新的行的条件。

DELETE语句的使用

DELETE语句用于删除数据库中的数据行。其基本语法如下:

DELETE FROM table_name
WHERE some_column = some_value;

其中,table_name是要删除数据的表名,WHERE子句是用于指定要删除的行的条件。
注意:如果不指定条件相当于删除表中所有数据

基本查询

基本查询是SQL中最常用的操作之一,它允许用户从数据库表中检索数据。这些查询通常使用SELECT语句来执行。

WHERE子句的使用

模糊搜索
WHERE子句还可以使用LIKE运算符进行模糊搜索。例如:

SELECT * FROM students WHERE clazz like ‘文科%

返回名字以字母“文科”开头的所有学生。

select * from students where clazz in ('文科一班','文科二班','文科三班');

返回名字以字母”文科一班’,‘文科二班’,'文科三班’的学生。

--BETWEEN AND
select * from students where age BETWEEN 22 AND 24;

返回年龄在22到24的学生

ORDER BY使用

ORDER BY子句用于对查询结果按照一个或多个列进行排序。它接受一个或多个列名或表达式作为参数,并可指定每个列的排序方式(升序或降序)。语法如下:

--ASC:升序,DESC:降序
SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC | DESC], column2 [ASC | DESC], ...

GROUP BY和HAVING子句使用

GROUP BY子句用于将查询结果按照一个或多个列进行分组,并对每个组进行聚合计算(如COUNT、SUM、AVG等)。语法如下:

SELECT column1, column2, ..., aggregate_function(column_name)
FROM table_name
GROUP BY column1, column2, ...

HAVING子句用于对分组后的结果进行过滤,只返回符合条件的分组。它接受一个或多个聚合函数作为参数,并可指定每个函数的过滤条件。语法如下:

SELECT column1, column2, ..., aggregate_function(column_name)
FROM table_name
GROUP BY column1, column2, ...
HAVING condition;

LIMIT和OFFSET子句的使用

LIMIT用于限制查询结果集的行数。其语法如下:

SELECT column1, column2, ...
FROM table_name
LIMIT number;

其中,number是你想要返回的行数。

OFFSET用于指定查询结果集的偏移量。其语法如下:

SELECT column1, column2, ...
FROM table_name
LIMIT number OFFSET offset;

其中,number是你想要返回的行数,offset是从查询结果集的起始位置偏移的行数。

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

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

相关文章

基于Spark的豆瓣书籍推荐系统的设计与实现-计算机毕业设计源码53447

摘要 本论文主要论述了如何基于Spark开发一个豆瓣书籍推荐系统,本系统将严格按照软件开发流程进行各个阶段的工作,面向对象编程思想进行项目开发。在引言中,作者将论述豆瓣书籍推荐系统的当前背景以及系统开发的目的,后续章节将严…

谷粒商城实战笔记-MySQL踩坑记录

文章目录 1, Public Key Retrieval is not allowed问题描述解决办法 2,1044 -Access denied for user root% to database解决方案 1, Public Key Retrieval is not allowed 问题描述 打开DBeaver连接MySQL提示“Public Key Retrieval is no…

大数据信用报告查询有什么作用?怎么选择查询平台?

随着互联网的快速发展,人们的金融行为越来越多地依赖于网络平台。然而,网络上的金融交易存在着一定的风险,为了有效地防范这些风险,金融机构采用了大数据技术进行风险控制,下面,小易大数据平台将详细介绍大…

20240807 每日AI必读资讯

👨‍💼马斯克再发难、OpenAI 高层巨变:两大核心人物离职,总裁休长假到年底 - OpenAI 联合创始人 John Schulman 官宣离职,加入原是竞品公司的 Anthropic - 陪伴 OpenAI 共同成长 9 年的总裁兼联合创始人 Greg Brockm…

《计算机组成原理》(第3版)第3章 系统总线 复习笔记

第3章 系统总线 一、总线的基本概念 总线是连接多个部件的信息传输线,是各部件共享的传输介质,如图3-1所示。 图3-1 面向CPU的双总线结构框图 倘若将CPU、主存和I/O设备都挂到一组总线上,便形成单总线结构的计算机,如图3-2所示…

【自动驾驶】ubuntu server安装桌面版

目录 安装桌面版当锁屏界面使用root用户登录错误时 这里环境一开始是ubuntu20.04服务器版本 安装桌面版 sudo apt-get update sudo apt-get upgrade apt-get install -y ubuntu-desktop # 如果你不想安装一些附加的程序,可用以下命令 sudo apt install --no-instal…

java创建多线程方式

文章目录 概要继承 Thread 类实现 Runnable 接口实现 Callable 接口线程池 概要 继承 Thread 类 public class Test extends Thread {Overridepublic void run() {System.out.println("current thread is:" Thread.currentThread().getName());}public static voi…

Aigtek超声功率放大器在建筑结构检测中的应用

超声功率放大器是一种可以可放大交、直流信号的功率放大器。它可以用来驱动高压型负载。通过与主流的信号发生器配套使用,实现信号的放大,因此超声功率放大器在建筑结构检测中有着良好应用,今天Aigtek安泰电子就为大家介绍一下。 什么是超声波…

拓普壹老阳:人力rpo项目如何做才会成功?

为了成功执行老阳推荐的人力RPO项目(招聘流程外包),关键在于几个核心要素的有效整合和执行。RPO项目不仅仅是简单地外包招聘流程,更是通过优化流程、提升效率和质量,帮助企业实现人才招聘的战略目标。 首先,项目的成功与需求分析和…

PID控制算法

关于PID算法最全的文章!从浅入深快速掌握 GitHub - br3ttb/Arduino-PID-Library

STM32F28335:按键实验

一个简单的按键实验: 每一个按键的功能是不一样的 其中不知道为什么key3出现了问题,可是查不出原因,就先放在这里了 按键采用行列扫描的方式判断 大家可以自己看资料 看管脚和资料是程序猿的基本功 代码: key的驱动 keys.c…

【Java】Java泛型、集合、UML统一建模语言、final关键字

昨天在昆仑巢,下午练习Spring Boot的过滤器Filter。 昨天傍晚开始阅读《疯狂Java讲义(第2版)》,熟悉了UML建模语言、Final修饰符、List集合和泛型。 1.UML建模语言: 13种图,常用的包括用例图、类图、组件图、部署图、顺序图、活动图和状态机…

【ai】 时间序列分析的python例子

时间序列分析 :分析和理解随时间变化的数据序列 在gcc的趋势滤波后,需要对排队延迟梯度进行检测及调整,参考的是一个阈值, 调整阈值时就使用了时间序列分析技术: 时间序列分析是统计学和数据分析中的一种技术,用于分析和理解随时间变化的数据序列。时间序列数据具有时间上…

活动易企秀H5场景秀源码系统 带完整的安装代码包以及搭建教程

在数字化营销飞速发展的今天,H5页面以其独特的互动性、高度的传播性和良好的兼容性成为众多企业及个人宣传推广的首选。而“活动易企秀H5场景秀”作为一款广受欢迎的在线H5创作工具,凭借其丰富的模板、简易的操作流程,让非技术背景的用户也能…

MySQL笔记(八):事务

一、事务 事务用于保证数据的一致性,它由一组相关的dml组成,该组的dml语句要么全部成功,要么全部失败:转账。 事务和锁:当执行事务操作时(dml语句),mysql会在表上加锁,防止其他用户…

【Mysql】第十四章 使用C语言链接(环境配置+连接库+sql函数)

文章目录 1.下载库2.上传库3.编译库4.连接库创建对象-mysql_init连接数据库-mysql_real_connect关闭数据库连接-mysql_close 5.sql函数设置编码格式-mysql_set_character_set发送请求-mysql_query获取查询结果-mysql_store_result获取查询结果的行数-mysql_num_rows获取查询结果…

案例开发-日程管理2第一期(超详细教程、配备图文和源代码注释,没学过也能看懂)

文章目录 一、 项目前期准备1.数据库准备2.导入依赖3.pojo包处理4.dao包处理5.service包处理6.controller包处理7.加密工具类的使用8.页面文件的导入 总结 一、 项目前期准备 1.数据库准备 创建schedule_system数据库并执行如下语句 SET NAMES utf8mb4; SET FOREIGN_KEY_CHE…

国产AI大模型:从萌芽到繁盛,未来可期

I一、AI****大模型的起源 自1950年图灵提出著名的“图灵测试”以来,人工智能领域经历了从学术探索到实际应用的转变。1956年达特茅斯会议上“人工智能”一词的首次提出,标志着AI正式成为学术研究的焦点。进入21世纪,随着计算能力的显著提升和…

【Pyspark-驯化】一文搞懂Pyspark中的withColumnRenamed函数的使用技巧

【Pyspark-驯化】一文搞懂Pyspark中的withColumnRenamed函数的使用技巧 本次修炼方法请往下查看 🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地! 🎇 相关内容文档获取…

常见的中间件漏洞:Tomcat

Tomcat简介 tomcat是一个开源而且免费的isp服务器,默认端口:8080,属于轻量级应用服务器。它可以实现JavaWeb程序的装载,是配置JSP(Java Server Page)和JAVA系统必备的一款环境。在历史上也披露出来了很多的漏洞,这里我们讲几个经典…