MySQL基本用法

文章目录

    • MySQL
      • MySQL配置
      • 导入csv
      • 导出csv
      • 备份与恢复
    • sql语法
      • 数据库和模式 DATABASE SCHEMA
      • 表 TABLE
      • 数据操纵
        • 数据查询
        • 数据更新
      • 视图 VIEW
      • 触发器 TRIGGER
      • 授权
    • type

MySQL

MySQL配置

SHOW [GLOBAL] VARIABLES LIKE <>;

SHOW DATABASES;  
SHOW CREATE DATABASE <db>; 
SHOW TABLES;
SHOW CREATE TABLE <tb>;

导入csv

LOAD DATA INFILE 'D:/MySQL/data/Uploads/<file>.csv'
    INTO TABLE <tb>  
    FIELDS TERMINATED BY ','    -- 字段分割
    OPTIONALLY ENCLOSED BY '"'  -- 双引号包围的,视为一个字段
    ESCAPED BY '"'              -- 引号字段之内可使用另一个引号转义
    LINES TERMINATED BY '\r\n'; -- 元组分割

导出csv

<select语句>
    INTO OUTFILE 'D:/MySQL/data/Uploads/Downloads/<file>.csv' 
    FIELDS ENCLOSED BY '"' 
    TERMINATED BY ',' 
    ESCAPED BY '"' 
    LINES TERMINATED BY '\r\n';

备份与恢复

sqldump -u <user> -p <db> > <db_dump>.sql
sql -u <user> -p <db> < <db_dump>.sql

sql语法

db - database 数据库
scm - schema 模式
tb - table 表
v - view 视图
col - column 列
tp - type 数据类型
ck - check 检查
cst - constraint 约束
idx - index 索引
tg - trigger 触发器

数据库和模式 DATABASE SCHEMA

USE <db> 
CREATE DATABASE <db> [CHARACTER SET gbk COLLATE gbk_chinese_ci]; 
ALTER DATABASE <db> CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP DATABASE <db>;

CREATE SCHEMA <scm> AUTHORIZATION <user> [<tb>|<v>|<授权定义子句>]
DROP SCHEMA <scm>[CASCADERESTRICT];

表 TABLE

create

CREATE TABLE <tb>(
    <col> <tp> <col_cst>,
    CONSTRAINT <cst_name> <tb_cst>
);

-- example
CREATE TABLE Student( 
    Sno CHAR(6) PRIMARY KEY,
    Sname CHAR(8) NOT NULL UNIQUE,
    Sage INT DEFAULT 20,  
    Ssex CHAR(2),
    Sdept CHAR(12) DEFAULT NULL,
    CONSTRAINT C1 CHECK (Ssex IN('男','女')),
);
CREATE TABLE SC(
    Sno CHAR(6) NOT NULL,
    Cno CHAR(6) REFERENCES Course(Cno), 
    Grade INT CHECK (Grade BETWEEN 0 AND 100),
    Sdate DATE,
    CONSTRAINT SC_PK PRIMARY KEY(Sno,Cno),
    CONSTRAINT SC_FK FOREIGN KEY (Sno) REFERENCES Student(Sno)
);

alter

ALTER TABLE <tb> ADD <col> <tp>; -- 新列NULL
ALTER TABLE <tb> ALTER Sname CHAR(20); -- 修改原列,可能破坏数据 MySQL失败了
ALTER TABLE <tb> MODIFY COLUMN <col> <new_tp> [<dft> <not_null> <ck>]; -- 修改类型
ALTER TABLE <tb> CHANGE <old_col> <new_col> <tp>;

-- 添加约束
ALTER TABLE <tb> ADD PRIMARY KEY (<col>);
ALTER TABLE <tb> ADD [constraint <key_name>] FOREIGN KEY (Sno) REFERENCES <other_tb>(<pk>);
ALTER TABLE <tb> ADD CONSTRAINT <ck_name> CHECK (<ck>);
ALTER TABLE <tb> ALTER COLUMN <col> SET DEFAULT <dft>;
-- 删除约束
ALTER TABLE <tb> DROP PRIMARY KEY;
ALTER TABLE <tb> DROP FOREIGN KEY <key_name>;
ALTER TABLE <tb> DROP CONSTRAINT <cst>;
ALTER TABLE <tb> ALTER COLUMN <col> DROP DEFAULT;

drop

DROP TABLE <tb> [RESTRICTCASCADE];

index

CREATE [UNIQUE] [CLUSTER] INDEX <idx> 
    ON <tb> (<col>[ASC|DESC][,<col2>[A|D] ]);

DROP INDEX <idx>;

数据操纵

数据查询
  1. 单表查询
SELECT [ALL|DISTINCT] <cols> FROM <tb/v>
    WHERE <> 
    GROUP BY <col> HAVING <>
    ORDER BY <col> [ASC|DESC];
WHERE子句查询条件
比较表达式[NOT] =、>、>=、<、<=、<>(或!=)
逻辑表达式AND、OR、NOT
BETWEEN<列名>[NOT]BETWEEN <常> AND <>
IN<列名>[NOT]IN (常量表列 或 SELECT语句)
LIKE<列名>[NOT]LIKE ‘匹配字符串’
NULL<列名> IS[NOT] NULL
EXISTS[NOT]EXISTS (SELECT语句)

% 任意长度, _ 单个字符
要查询含%_字符串时,使用ESCAPE ‘<换码字符>’ 转义:
以"DB_"开头,且倒数第3个字符为i:Cname LIKE 'DB\_%i__' ESCAPE '\'

集函数

COUNT/SUM/AVG/MAX/MIN ([ALL|DISTINCT] <col>)
  1. 连接查询
SELECT <cols> FROM <tb1>, <tb2> WHERE <>;
SELECT <cols> FROM <tb1> INNER JOIN <tb2> ON <>;
SELECT <cols> FROM <tb1> INNER JOIN <tb2>;
SELECT <cols> FROM <tb1> LEFT JOIN <tb2> ON <>;
  1. 嵌套查询
SELECT Sname FROM Student 	-- 外层查询/父查询
WHERE Sno IN
  (SELECT Sno FROM SC WHERE Cno= '2') --内层查询/子查询

SELECT Sname FROM Student
WHERE EXISTS -- 相关子查询
  (SELECT * FROM SC WHERE Sno = Student.Sno AND Cno = '1'); 
  1. 集合查询
<查询块>
UNION [ALL] -- INTERSECT MINUS
<查询块>
[ORDER BY]
数据更新
  1. 插入数据
INSERT INTO <tb> [(<cols>)] VALUES (<vals>);
INSERT INTO <tb> [(<cols>)] <select>;
  1. 修改数据
UPDATE <tb> SET <cols> = <col_vals> [WHERE <>];
  1. 删除数据
DELETE FROM <tb> WHERE <>;
TRUNCATE TABLE <tb>; -- 无日志

视图 VIEW

  1. create
CREATE VIEW <v> [(<cols>)] AS <select> [WITH CHECK OPTION];

-- example
CREATE VIEW dbo.ShipStatusView 
AS SELECT OrderID, ShippedDate, ContactName FROM Customers c, Orders o
   WHERE c.CustomerID=O.CustomerID and RequiredDate<ShippedDate;

CREATE VIEW D-Sage (Sdept, Avgage)
AS SELECT Sdept, AVG(Sage) FROM Student GROUP BY Sdept;
  1. drop
DROP VIEW <v>;

触发器 TRIGGER

CREATE TRIGGER <触发器名>  
{BEFORE | AFTER} <INSERT|UPDATE|DELETE> ON <表名>
FOR EACH ROW
[WHEN <触发条件>]
<触发动作体>

-- example
drop trigger if exists <tg>;
DELIMITER // 
CREATE TRIGGER check_name_update
BEFORE UPDATE ON address
FOR EACH ROW
BEGIN 
    IF NOT EXISTS 
        (SELECT name FROM salaried_worker WHERE name = NEW.name) 
    THEN 
      SIGNAL SQLSTATE '45000'
      SET MESSAGE_TEXT = 'THE NAME DOSE NOT EXIST.';
    END IF;
END//
DELIMITER ; -- 分隔符
  • NEW:新插入的记录
  • OLD:刚删除的记录

授权

创建用户

CREATE USER 'BIT'@'localhost' IDENTIFIED BY 'password';

授权

GRANT {<权限1>, <权限2>, …}
  ON <表名或视图名>
  TO {<用户名1>,<用户名2>,| PUBLIC}
  [WITH GRANT OPTION];

-- example
GRANT UPDATE (折扣) ON Lineitem TO 'BIT'@'localhost';

撤销

REVOKE {<权限1>, <权限2>, …} 
  ON TABLE <表名或视图名>
  FROM {<用户名1>,<用户名2>,| PUBLIC}
  [RESTRICT|CASCADE];

-- example
REVOKE ALL PRIVILEGES ON Lineitem FROM 'BIT'@'localhost';

查看

SHOW GRANTS FOR CURRENT_USER(); -- 当前用户
SHOW GRANTS FOR 'username'@'localhost'; --特定用户
SELECT User, Host FROM mysql.user; -- 所有用户列表

删除

DROP USER 'username'@'localhost';

type

CREATE DOMAIN <域名> <数据类型> -- MySQL不支持
  • 数值类型:
    INT: − 2 31 → 2 31 − 1 -2^{31} \to 2^{31}-1 2312311
    TINYINT: − 128 → 127 -128 \to 127 128127
    SMALLINT: − 2 15 → 2 15 − 1 -2^{15} \to 2^{15}-1 2152151
    BIGINT: − 2 63 → 2 63 − 1 -2^{63} \to 2^{63}-1 2632631
    FLOAT: 4个字节,精度大约为7位小数位
    DOUBLE: 8个字节,精度大约为15位小数位
    DECIMAL(或NUMERIC): 定点数,可以指定精度和小数位数。
    可以通过在类型后面添加UNSIGNED关键字来指定无符号类型。

  • 日期和时间类型:
    DATE: 日期,格式为 YYYY-MM-DD。
    TIME: 时间,格式为 HH:MM:SS。
    DATETIME: 日期和时间组合,格式为YYYY-MM-DD HH:MM:SS。
    TIMESTAMP: 时间戳,与DATETIME类似,但范围较小。

  • 字符串类型:
    CHAR(n): 固定长度字符串,最大长度为 255 个字符。
    VARCHAR(n): 可变长度字符串,最大长度为 65535 个字符。
    TEXT: 长文本数据,最大长度为 65535 个字符。
    BLOB: 二进制大对象,用于存储大型二进制数据,如图片或文件。

  • 空间数据类型:
    POINT: 点。
    LINESTRING: 线。
    POLYGON: 多边形。
    GEOMETRY: 任意类型的空间对象。

  • JSON数据类型:
    JSON: 用于存储JSON(JavaScript Object Notation)数据。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux-进程间通信】匿名管道的应用-进程池实现+命名管道的应用ClientServer通信

匿名管道的应用--进程池/C实现 当系统中需要处理众多任务时&#xff0c;可以将这些任务分配给多个子进程来分担工作。然而&#xff0c;频繁地创建和销毁进程会导致较高的时间成本。为减少这种开销&#xff0c;可以采取预先创建一组子进程的策略&#xff08;以避免在任务分配时…

java设计模式之创建者模式(5种)

设计模式 软件设计模式&#xff0c;又称为设计模式&#xff0c;是一套被反复利用&#xff0c;代码设计经验的总结&#xff0c;他是在软件设计过程中的一些不断发生的问题&#xff0c;以及该问题的解决方案。 **创建者模式又分为以下五个模式&#xff1a;**用来描述怎么“将对象…

数据库->数据库约束

目录 一、数据库约束 1.定义 2.约束类型 3.NOT NULL 非空约束 4. UNIQUE 唯一约束 5.PRIMARY KEY 主键约束 1.主键的使用 2.把表中的主键交给数据库自己维护 2.1主键列设置为null 则使用自增 2.2插入除了主键以外的所有非空列&#xff08;推荐方法&#xff09; 2.3自…

ValueError: Object arrays cannot be loaded when allow_pickle=False

文章目录 问题解决方法1&#xff1a;allow_pickleTrue解决方法2&#xff1a;降低numpy版本错误原因&#xff1a;python和numpy版本不兼容 问题 Traceback (most recent call last): File “D:\project\test_st\retrieval\read_npy.py”, line 4, in data np.load(‘mosi0__le…

HTML CSS

目录 1. 什么是HTML 2. 什么是CSS ? 3. 基础标签 & 样式 3.1 新浪新闻-标题实现 3.1.1 标题排版 3.1.1.1 分析 3.1.1.2 标签 3.1.1.3 实现 3.1.2 标题样式 3.1.2.1 CSS引入方式 3.1.2.2 颜色表示 3.1.2.3 标题字体颜色 3.1.2.4 CSS选择器 3.1.2.5 发布时间字…

Prometheus和Grafana的安装部署

初识Prometheus和Grafana 通常来说&#xff0c;对于一个运行时的复杂系统&#xff0c;如果系统出了问题是很难排查的。因为你是不太可能在运行时一边检查代码一边调试的。因此&#xff0c;你需要在各种关键点加上监控&#xff0c;通过监控获取的数据&#xff0c;指导我们进一步…

ubuntu20.04 加固方案-设置用户缺省UMASK

一、编辑/etc/profile配置文件 打开终端。 查看当前umask 使用文本编辑器&#xff08;如vim&#xff09;编辑/etc/profile文件。 sudo vim /etc/profile 二、添加配置参数 在打开的配置文件的末尾中&#xff0c;添加或修改以下参数&#xff1a; umask 027 三、保存并退出…

liunx网络套接字 | 实现基于tcp协议的echo服务

前言&#xff1a;本节讲述linux网络下的tcp协议套接字相关内容。博主以实现tcp服务为主线&#xff0c;穿插一些小知识点。以先粗略实现&#xff0c;后精雕细琢为思路讲述实现服务的过程。下面开始我们的学习吧。 ps&#xff1a;本节内容建议了解网络端口号的友友们观看哦。 目录…

【果蔬识别】Python+卷积神经网络算法+深度学习+人工智能+机器学习+TensorFlow+计算机课设项目+算法模型

一、介绍 果蔬识别系统&#xff0c;本系统使用Python作为主要开发语言&#xff0c;通过收集了12种常见的水果和蔬菜&#xff08;‘土豆’, ‘圣女果’, ‘大白菜’, ‘大葱’, ‘梨’, ‘胡萝卜’, ‘芒果’, ‘苹果’, ‘西红柿’, ‘韭菜’, ‘香蕉’, ‘黄瓜’&#xff09;…

isp框架代码理解

一、整体框架如下&#xff1a; 1 外层的src中 1.1 从camera.c->task.c&#xff1a;封装了3层&#xff0c;透传到某个功能的本级。 1.2 core.c和capability.c中实现&#xff1a;开机初始化加载参数。2. plat/src中 2.1 fun.c中继task.c又透传了一层&#xff1b;以及最后功能…

VuePress文档初始化请求过多问题探讨

1. 背景 公司有部门使用VuePress 1.0搭建平台的帮助文档&#xff0c;前期文档不是很多&#xff0c;所以没有暴露出特别明显的问题。但随着文档的逐步迭代和内容的增多&#xff0c;出现了大量的并发请求&#xff0c;总共有218个请求&#xff0c;导致服务器带宽耗尽、响应速度下降…

Paimon x StarRocks 助力喜马拉雅构建实时湖仓

作者&#xff1a;王琛 喜马拉雅数仓专家 小编导读&#xff1a; 本文将介绍喜马拉雅直播的业务现状及数据仓库架构的迭代升级&#xff0c;重点分享基于 Flink Paimon StarRocks 实现实时湖仓的架构及其成效。我们通过分钟级别的收入监控、实时榜单生成、流量监测和盈亏预警&am…

Virtuoso使用layout绘制版图、使用Calibre验证DRC和LVS

1 绘制版图 1.1 进入Layout XL 绘制好Schmatic后&#xff0c;在原理图界面点击Launch&#xff0c;点击Layout XL进入版图绘制界面。 1.2 导入元件 1、在Layout XL界面左下角找到Generate All from Source。 2、在Generate Layout界面&#xff0c;选中“Instance”&#…

vscode插件-08 Golang

文章目录 Go安装其他必须软件 Go Go语言环境&#xff0c;只需安装这一个插件。然后通过vscode命令下载安装其他go环境需要的内容。 程序调试&#xff0c;需要创建.vscode文件夹并编写launch.json文件。 安装其他必须软件 ctrlshiftp&#xff0c;调出命令面板&#xff0c;输入…

Linux系列-vim的使用

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” vim的使用 vim是多模式编辑器&#xff0c;不同的是vim是vi的升级版本&#xff0c;它不仅兼容vi的所有指令&#xff0c;而且还有一些新的特性在里面&#xff0c;比如语法加亮&am…

强化学习DQN实践(gymnasium+pytorch)

Pytorch官方教程中有强化学习教程&#xff0c;但是很多中文翻译都太老了&#xff0c;里面的代码也不能跑了 这篇blog按照官方最新教程实现&#xff0c;并加入了一些个人理解 工具 gymnasium&#xff1a;由gym升级而来&#xff0c;官方定义&#xff1a;An API standard for rei…

2024快手面试算法题-生气传染

问题描述 思路分析 生气只会向后传播&#xff0c;最后一个生气的人一定是最长连续没有生气的人中的最后一个人&#xff0c;前提是前面得有一个人生气。 注意&#xff0c;一次只能传播一个人&#xff0c;比如示例1&#xff0c;第一次只会传播给第一个P&#xff0c;不会传播给第…

入门 | Kafka数据使用vector消费到Loki中使用grafana展示

一、Loki的基本介绍 1、基本介绍 Loki 是由 Grafana Labs 开发的一款水平可扩展、高性价比的日志聚合系统。它的设计初衷是为了有效地处理和存储大量的日志数据&#xff0c;与 Grafana 生态系统紧密集成&#xff0c;方便用户在 Grafana 中对日志进行查询和可视化操作。 从架构…

分类算法——逻辑回归 详解

逻辑回归&#xff08;Logistic Regression&#xff09;是一种广泛使用的分类算法&#xff0c;特别适用于二分类问题。尽管名字中有“回归”二字&#xff0c;逻辑回归实际上是一种分类方法。下面将从底层原理、数学模型、优化方法以及源代码层面详细解析逻辑回归。 1. 基本原理 …

【Spring MVC】DispatcherServlet 请求处理流程

一、 请求处理 Spring MVC 是 Spring 框架的一部分&#xff0c;用于构建 Web 应用程序。它遵循 MVC&#xff08;Model-View-Controller&#xff09;设计模式&#xff0c;将应用程序分为模型&#xff08;Model&#xff09;、**视图&#xff08;View&#xff09;和控制器&#x…