首页 > 数据库 >MySQL

MySQL

时间:2024-10-25 22:24:46浏览次数:6  
标签:JOIN name column MySQL 表名 NULL SELECT

MySQL

RDBMS 术语

数据库: 数据库是一些关联表的集合
数据表: 表是数据的矩阵
列: 一列包含了相同类型的数据
行:一行一组相关的数据
冗余:存储两倍数据
主键:主键是唯一的,可以用主键来查询数据
外键:外键用于关联两个表
复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引
索引:使用索引可快速访问数据库表中的特定信息,类似于书籍的目录
参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性

启动及关闭 MySQL

启动

sudo systemctl start mysql

关闭

sudo systemctl stop mysql

重启

sudo systemctl restart mysql

检查

sudo systemctl status mysql

MySQL连接

mysql -u username -p

执行 SQL 查询

列出可用的数据库

SHOW DATEBASES;

选择需要使用的数据库

USE datebase;

列出所选数据中的所有表

SHOW TABLES;

退出

mysql>EXIT;/QUIT;

创建数据库、数据表

CREATE DATABASE 数据库名
CHARACTER SET 字符集名称
COLLATE 校对规则;

字符集是可以识别、储存和表示的字符和符号的集合,

校对规则是字符集内部字符比较和排序的规则。

CREATE TABLE 数据表名(
表名1,数据类型1,
表名2,数据类型2,
);

NOT NULL 字段不为空;

AUTO_INCREMENT 用于创建自增长的列;

PRIMARY KEY 用于定义主键;

ENGINE 设置存储引擎,CHARSET 设置编码

使用mysqladmin创建数据库

mysqladmin -u 用户名 -p 数据库名\
  --default-character-set=字符集名称\
  --default-collation=校对规则

删除数据库、数据表

DROP DATABASE/TABLE 数据库/表名

插入数据

INSERT INTO 表名(列名1,2,3)
VALUES(具体数值1,2,3),
      (.....);

查询数据

SELECT 列名 FROM 表名;

查询所有列时用*表示

WHERE 子句

SELECT 列名 
FROM 表名 
WHERE 过滤条件

  • 查询多个表用,隔开
  • <> != 相当于不等于
  • 组合条件(AND,OR)
  • 模糊匹配条件(LINK)
  • IN条件(和=类似)
  • BETWEEN AND
  • IS NULL / IS NOT NULL

UPDATE 更新

UPDATE 表名
SET 列名 = 新的值
WHERE 指定要更改的行

省略WHERE将更新所有行,可以更新多列

image-20241024170416966

QQ截图20241024170138

DELETE 语句

DELETE FROM 表名
WHERE 指定要删除的行

省略WHERE删除所有行,

可以使用子查询删除符合条件的行

LIKE 子句

SELECT 要选择的列名列名
FROM 表名
WHERE 要应用LINK子句的列名 LINK 匹配模式

通配符:

%:表示零个或多个任意字符
_:表示一个任意字符

不使用%和_时,LINK与 = 效果一样

SELECT * FROM uuu WHERE name LINK _a%o 

查询uuu中,第二个字符是a以o结尾的name

UNION 操作符

SELECT 列名 FROM 表名
UNION
SELECT 列名 FROM 表名
  • 使用 UNION ALL 不去除重复行
  • UNION 操作中的列数和数据类型必须相同
  • 可以通过 UNION 过滤条件

ORDER BY 语句

SELECT 列名
FROM 表名
ORDER BY 指定排序顺序的表名
  • ASC 为升序(默认),DESC 为降序

  • 可以多列排序,哪个在前先按哪个排,在内容一样时再考虑下一项

  • 用数字表示列的位置

    其中,weight 为第二列,height 为第三列

  • 使用表达式排序

  • 从 MySQL 8.0.16 版本开始,可以使用 NULLS FIRST 或 NULLS LAST 处理 NULL 值

GROUP BY 语句

SELECT 列名,对分组后的每个组执行的聚合函数
FROM 表名
WHERE(可选,用于过滤条件)
GROUP BY 列名
  • 聚合函数:

    SUM() AVG() MIN() MAX() COUNT()

  • 按country分组,并统计每个国家有几个

  • 按name分组,并计算每个人的平均身高

  • WITH ROLLUP 可实现在分组统计数据基础上再进行相同的统计,

    其中记录 NULL 表示所有人的登录次数,

    我们可以使用 coalesce 来设置一个可以取代 NUll 的名称

coalesce(a,b,c)

连接的使用

INNER JOIN

SELECT column1,column2,...
FROM table1 AS 1
INNER JOIN table2 AS 2 ON 1.column1_name=2.column2_name;

  • 使用表别名

  • 多表连接
SELECT orders.order_id, customers.customer_name, products.product_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id
INNER JOIN order_items ON orders.order_id = order_items.order_id
INNER JOIN products ON order_items.product_id = products.product_id;
  • 使用 WHERE 子句进行过滤

LEFT JOIN

SELECT column1, column2, ...
FROM table1
LEFT JOIN table2 ON table1.column_name = table2.column_name;

LEFT JOIN 会读取左边数据表的全部数据,即使右边表无对应数据;当右表中没有匹配的行时,相关列将显示为 NULL

RIGHT JOIN

SELECT column1,column2...
FROM table1
RIGHT JOIN table2 ON table1.column_name=table2.column_name;

RIGHT JOIN 会读取右边数据表的全部数据,即使左边边表无对应数据;RIGHT JOIN 并不经常使用,因为它可以用 LEFT JOIN 和表的顺序交换来实现相同的效果。

NULL值处理

IS NULL: 当列的值是 NULL,此运算符返回 true。
IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。
<=>: 比较操作符(不同于 = 运算符),当比较的两个值相等或者都为 NULL 时返回 true。

ALTER 命令

添加列

ALTER TABLE table_name
ADD COLUMN new_column_name datatpye

修改列的数据类型

ALTER TABLE table_name
MODIFY COLUMN 

修改列名

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name datatype;

删除列

ALTER TABLE table_name
DROP COLUMN column_name

添加 PRIMARY KEY

ALTER TABLE table_name
ADD PRIMARY KEY (column_name);

添加 FOREIGN KEY

ALTER TABLE child_table
ADD CONSTRAINT fk_name
FOREIGN KEY (column_name)
REFERENCES parent_table (column_name);

其他:

  • 重要的地方要大写,末尾加;才能运行
  • 命令后加IF NOT EXISTS ,避免执行出现错误
  • 使用mysqladmin前要先保证MySQL在运行
mysqladmin -u 用户名 -p 命令
  • 创建/删除数据表前要先选择数据库

  • 不写列名连接不到

  • 查询中的字符串记住要加引号

  • date < 2006-12-23 是指之前的时间

  • COLLATE utf8mb4_general_ci 不区分大小写

  • 插入多行数据,要在一行数据后加上,

  • 聚合函数:

    SUM():计算某列总和

    AVG():计算平均值

    MIN():返回最小值

    MAX():返回最大值

    COUNT():计算某列行数

标签:JOIN,name,column,MySQL,表名,NULL,SELECT
From: https://www.cnblogs.com/xmt123/p/18503357

相关文章

  • MySQL-事务
    目录事务简介事务操作事务四大特性ACID并发事务问题1.脏读2.不可重复读3.幻读事务隔离级别1.读未提交Readuncommitted2.读已提交Readcommitted3.可重复读RepeatableRead(默认)4.串行化Serializable隔离级别与一致性的关系事务简介事务是一组操作的集合,它是......
  • 数据库中对MySQL查询的学习
    MySQL查询目录MySQL查询基本语法条件查询条件查询运算符逻辑运算符排序与分页排序分页弊端与解决方案分组查询单字段分组多字段分组where和having的区别常用函数数值性函数字符串函数日期和时间函数流程控制函数(了解)子查询子查询的基本概念子查询的分类子查询的位置子查询的注意......
  • 初识MySQL · 表的操作
    前言:上一篇文章我们介绍了库的操作,而在我们学习MySQL的第一篇文章就提及了,使用MySQL的时候,先是创建数据库,然后是创建表,表和数据库的重要关系其实是对等的,所以相关的操作,对于增删查改也是同理。删除方面其实对于数据库来说或者是表来说,都是需要非常谨慎的,因为数据库对于开......
  • 高效实现聚水潭·奇门售后单集成到MySQL的关键技术
    聚水潭·奇门数据集成到MySQL:售后单数据的高效对接方案在企业数据管理中,如何实现不同系统之间的数据无缝对接一直是一个关键问题。本文将分享一个具体的技术案例,即如何通过轻易云数据集成平台,将聚水潭·奇门的售后单数据高效集成到MySQL数据库中,形成BI狄菲俪诗-售后表。本次集......
  • 高效集成:聚水潭采购入库数据导入MySQL案例
    聚水潭数据集成到MySQL的技术案例分享在企业数据管理中,如何高效、准确地将业务系统的数据集成到分析平台是一个关键问题。本篇文章将聚焦于一个具体的系统对接集成案例:将聚水潭的采购入库单数据集成到MySQL数据库中,以便在BI勤威平台上进行进一步的数据分析和处理。案例背景本......
  • 关系型数据库(1)----MySQL(初阶)
    目录1.mysql2.mysqld3.mysql架构1.连接层2.核心服务层3.存储引擎层4.数据存储层4.SQL分类5.MySQL操作库6.MySQL数据类型1.数值类型2.日期和时间类型3.字符串类型4.空间类型5.JSON数据类型7.MySQL表的约束1.主键约束(PRIMARYKEY)2.非空约束(NOTNULL)3.......
  • mysql之 关联表(left join | right join | inner join | union)
    一.首先给出两张表user表:用户基本信息表score表:分数表(学生在哪一天,哪一科目,所考分数)二.分别解释leftjoin,rightjoin,innerjoin,union1.leftjoin 原理userleftjoinscore=以user表为准,去查询所有user表成员的分数select*fromuserleftjoinscoreonuser.......
  • Linux系统rpm安装MySQL详细操作步骤
    安装方式介绍在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下:安装方式特点二进制发布包安装软件已经针对具体平台编译打包发布,只要解压,修改配置即可rpm安装软件已经按照redhat的包管理规范进行打包,使用rpm命令进行安装(不能自行解决库依赖问题)yum安装一种在线......
  • MySql5.7及以上 ORDER BY 报错问题
    一、问题本人使用的MySql版本是8.0的当MySql5.7及以上的版本执行带有ORDERBY的SQL语句时可能会报错。例如,执行以下mysql语句:SELECTid,user_id,titleFROMm_articleWHEREuser_id>=100ANDuser_id<=200GROUPBYuser_id;SQL报错信息如下:1055-Expression#1o......
  • mysql命令行插入大量数据
    关键字的使用:delimiter定好结束符为"$$",(定义的时候需要加上一个空格)然后最后又定义为";",MYSQL的默认结束符为";"如何通过mysql命令行批量插入100条数据呢,可以在代码里实现,也可以通过命令行,也就是通过存储过程:#第一步:向表user_behavior中插入数据delimiter$$createp......