MySQL语法看这一篇就够啦

MySQL语法看这一篇就够啦

    • 1. MySQL介绍与登录
      • 1.1 MySQL介绍
      • 1.2 Mariadb安装与启动
        • 1.2.1 在centos7环境下安装启动
      • 登录
    • 数据库操作部分
      • 增删改查:增 CREATE DATABASE
      • 增删改查:删 DROP
      • 增删改查:查找数据库 SHOW DATABASE
      • 使用数据库:use
      • 查看数据库中的数据表 show tables
    • 数据表单与表列操作部分
      • 增删改查:增 CREATE TABLE
        • 1. 引导头
        • 2. 表单列表配置
        • 3. 表单引擎
      • 增删改查:删 DROP TABLE
      • 增删改查:改 ALTER TABLE
        • 1. 修改表名 RENAME TO
        • 2. 新增表单的列表配置 ADD
        • 3. 删除表单的列配置 DROP
        • 4. 修改表单的列配置 MODIFY / CHANGE
      • 增删改查:查 SHOW COLUMNS FROM
    • 值操作(数据操作)
      • 增删改查:增 INSERT INTO
      • 增删改查:删 DELETE FROM ... WHERE
      • 增删改查:改 UPDATE ... SET
      • 增删改查:查 SELECT ... FROM ...
    • 表单的统计类操作
      • 表单排序 ORDER BY
    • 表的事务
    • 数据的导入导出
      • 导出数据为txt和csv格式 INTO OUTFILE
      • 导出数据为mysql脚本
      • 导入mysql脚本
      • 插入txt或者csv数据 INTO TABLE
    • WHERE 条件筛选的用法
    • SELECT FROM 提取用法

这一篇文章主要从功能出发来描述MySQL的基本用途~可以作为大家以后查找语法时候用呀!
目前进度在70%左右,还有一些功能还没补充上来~

1. MySQL介绍与登录

1.1 MySQL介绍

MySQL数据库的层次结构可以如下描述:[库 - 表 - 列 - 值]

-- database1||__  table1|----------------------------------|__ col1  | col2  | col3  | col4  |-----------------------------------|__ val11 | val21 | val31 | val41 | -----------------------------------|__ val12 | val22 | val32 | val42 | -----------------------------------        

1.2 Mariadb安装与启动

个人开发者可以使用 MariaDB 代替MySQL,MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。在Linux下安装方便,无需额外配置。

1.2.1 在centos7环境下安装启动

  • centos环境使用yum,如果本地有残留冲突,添加--allowerasing表示允许先卸载本地环境
# 常规安装
yum -y install mariadb-server mariadb# 当本地有Mysql残留冲突时候
yum -y install mariadb-server mariadb --allowerasing
  • 启动
systemctl start mariadb  #启动MariaDB
systemctl stop mariadb  #停止MariaDB
systemctl restart mariadb  #重启MariaDB
systemctl enable mariadb  #设置开机启动
  • 查看版本与设置密码
mysqladmin --versionmysqladmin -u root password "new_password"

登录

  • mysql -u用户名 -p
  • 密码输入时不显示字符,放心输入然后回车即可
> mysql -uroot -p
> Enter password:
  • 显式的输入密码 mysql -u用户名 -p密码
> mysql -uroot -p123456

数据库操作部分

增删改查:增 CREATE DATABASE

CREATE DATABASE 数据库名;
CREATE database if not exists 数据库名;

增删改查:删 DROP

drop database 数据库名;
Drop database if exists 数据库名;

增删改查:查找数据库 SHOW DATABASE

# 查看所有的数据库
SHOW DATABASES;

使用数据库:use

use 数据库名;

查看数据库中的数据表 show tables

# 默认显示当前数据库中的表;
SHOW TABLES;# 查看任意数据库的表
SHOW TABLES FROM 数据库名;

数据表单与表列操作部分

增删改查:增 CREATE TABLE

新增数据表的命令可以分成如下几个代码快:引导头,表单列表,配置表引擎。
CREATE TABLE if not exists table_name (column_name column_type) 配置表单引擎;
其中:

1. 引导头

CREATE TABLE IF NOT EXISTS 表名是引导头

2. 表单列表配置

(column_name, column_type)是表单列表配置
表单可配置内容又可以分为如下结果部分: 列表名, 列数据类型,是否自增,是否为空, 是否带默认值,设置主键。

  • 除了列名和列数据类型,其他的配置参数的关键词及用法如下表示
    • 自增标识符 AUTO_INCREMENT
  • 不可为空标识符 NOT NULL
  • 设置默认值 DEFAULT 值
  • 设置主键,通常独立于(col_name, col_type),PRIMARY KEY (列x, 列y, ...)

下面举几个栗子~
runoob_id INT UNSIGNED AUTO_INCREMENT,
runoob_title VARCHAR(100) NOT NULL,
runoob_author VARCHAR(40) NOT NULL,
submission_date DATE,

3. 表单引擎

表单引擎:ENGINE=InnoDB DEFAULT CHARSET=utf8;

增删改查:删 DROP TABLE

DROP TABLE 表单名;
drop table if exists 表单名;

增删改查:改 ALTER TABLE

1. 修改表名 RENAME TO

ALTER TABLE 旧表单名 RENAME TO 新表单名;

2. 新增表单的列表配置 ADD

在上文增加数据表时候提到过表单列表配置,使用alter命令进行配置的时候,可以补充任意表单可配置内容。

ALTER TABLE 表单名 ADD 列名 列类型 表单配置选项; # 默认添加在最后一列
ALTER TABLE 表单名 ADD 列名 列类型 表单配置选项 FIRST; # 添加在第一列# 添加在已存在列表后面
ALTER TABLE 表单名 ADD 列名 列类型 表单配置选项 AFTER 已存在列表名;

3. 删除表单的列配置 DROP

ALTER TABLE 表单名 DROP 列表名;

4. 修改表单的列配置 MODIFY / CHANGE

修改列的配置信息其实和新增类似,也科比补充任意列可配置内容

  • modify
ALTER TABLE 表单名 MODIFY 列名 列类型 可选列配置;
  • change
ALTER TABLE 表单名 CHANGE 旧列名 新列名 列类型 可选配置;
  • 常见的修改疑问
    有待补充

增删改查:查 SHOW COLUMNS FROM

SHOW COLUMNS FROM 表单名;

显示结果举例

+------+----+----+--------+---------------------+--------+
| dd   | id | ii | name   | date                | signin |
+------+----+----+--------+---------------------+--------+
|    0 |  1 |  0 | 小明   | 2016-04-22 15:25:33 |      1 |
|    0 |  2 |  0 | 小王   | 2016-04-20 15:25:47 |      3 |
|    0 |  3 |  0 | 小丽   | 2016-04-19 15:26:02 |      2 |
|    0 |  4 |  0 | 小王   | 2016-04-07 15:26:14 |      4 |
|    0 |  5 |  0 | 小明   | 2016-04-11 15:26:40 |      4 |
|    0 |  6 |  0 | 小明   | 2016-04-04 15:26:54 |      2 |
+------+----+----+--------+---------------------+--------+

值操作(数据操作)

增删改查:增 INSERT INTO

# 基本语法
INSERT INTO 表单名 (列名1, 列名2, ...) VALUES (1,2, ...);# 按默认的列顺序可以不用输入列名
INSERT INTO 表单名 VALUES (1,2, ...);

增删改查:删 DELETE FROM … WHERE

删除表单数据时候,如果没有where语句会将整个表单里的所有内容都删掉。所以谨慎使用啊兄弟姐妹们,最好是在嵌入式SQL中做更高一层的写判断保护。不过delete操作支持rollback。

# 删除表单所有数据!谨慎使用,最好在嵌入式SQL中做额外的写保护。
DELETE FROM 表单名;# 根据where判断删除对应的表单值
DELETE FROM 表单名 [WHERE Clause]

增删改查:改 UPDATE … SET

  • 使用update进行修改时,需要使用where语法进行选择正确的数据行,否则同列的所有值都会被修改,因此一定也需要进行写判断保护啊!
# 使用update参数对某一列的参数批量修改
UPDATE 表单名 SET1=表达式1,2=表达式2 [WHERE Clause]

增删改查:查 SELECT … FROM …

  • 查找表的时候,通常可以用*来直接返回表单的所有数据,也可以指定部分用户关心的col来返回。
  • 同样的,支持where语句进行筛选,注意,where筛选字符串时候默认不区分大小写的,要主动区分需要添加BINARY,where的更多用法在where专题详细介绍。也可以使用wherelike进行组合实现更高级的匹配功能。
  • 你可以使用 LIMIT 属性来设定返回的记录数。
# 返回表单所有数据
SELECT * FROM 表单名;# 返回指定列表
SELECT 列名1, 列名2, ... FROM 表单名;# where筛选
SELECT * from 表单名 WHERE BINARY author='Hugo';# where筛选 + 指定列表
select id,name from 表单名 where id>3;

表单的统计类操作

表单排序 ORDER BY

  • 表单的排序并不会打乱表单原始的组织结构,只是在返送返回值的时候,返送的元组是一个排序完成的形式。
  • order by排序方式有升序和降序两种,升序为ASC(默认配置),降序为DESC
# 从多个表中选出多个列,并按照order by顺序排序。
SELECT field1, field2,...fieldN FROM table_name1, table_name2... 
-> ORDER BY field1 排序方式, [field2 排序方式]SELECT * FROM 表单 ORDER BY 列表名 ASC;

表的事务

一般来说,事务是必须满足4个条件(ACID)~~ 原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。事务操作通常目的是为了闭环一个修改提交,类似于git,是一个回退式的设计理念。

  • 简单的使用:BEGIN 开始一个事务,ROLLBACK 事务回滚,COMMIT 事务确认
BEGIN # 开始一个事务
# ... 一些增删改查操作
COMMIT # 事务确认BEGIN # 开始一个事务
# ... 一些增删改查操作,操作错了
ROLLBACK # 事务回滚
COMMIT # 事务确认
  • 复杂的介绍(用不到,估计只有笔试会用…)
BEGINSTART TRANSACTION 显式地开启一个事务;COMMIT 也可以使用 COMMIT WORK,提交事务,并使已对数据库进行的所有修改成为永久性的;ROLLBACK 也可以使用 ROLLBACK WORK,回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;SAVEPOINT identifier,SAVEPOINT 允许在事务中创建一个保存点,一个事务中可以有多个 SAVEPOINTRELEASE SAVEPOINT identifier 删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常ROLLBACK TO identifier 把事务回滚到标记点;SET TRANSACTION 用来设置事务的隔离级别。
InnoDB 存储引擎提供事务的隔离级别有
READ UNCOMMITTEDREAD COMMITTEDREPEATABLE READSERIALIZABLE

数据的导入导出

导出数据为txt和csv格式 INTO OUTFILE

  • 这种导出方法仅导出数据内容,一般用于我们需要对数据库中的数据做额外的处理和量化的时候会使用到。因此我们一般会导出为txt或者csv格式的文件。
  • 使用select语法选取要导出的列内容,这也就意味着,可以筛选多个表的多个列进行输出,更高级的select语法详见select语法介绍
  • 再用into outfile输入想保存的路径。
# 默认导出的样式,用txt展示
SELECT * FROM 表单名 INTO OUTFILE '/tmp/data_file.txt';# 导出结果展示
vim ./tmp/data_file.txt
0       1       0       小明    2016-04-22 15:25:33     1
0       2       0       小王    2016-04-20 15:25:47     3
0       3       0       小丽    2016-04-19 15:26:02     2
0       4       0       小王    2016-04-07 15:26:14     4
0       5       0       小明    2016-04-11 15:26:40     4
0       6       0       小明    2016-04-04 15:26:54     2
  • 使用INTO OUTFILE 时候可以在生成格式fieldlines上选取断句参数terminated by, enclosed by。通过命令选项来设置数据输出的指定格式。如以下命令就可以按照CSV格式的形式导出csv文件
SELECT * FROM 表单名 INTO OUTFILE '/tmp/user_count.csv'-> FIELDS TERMINATED BY ',' ENCLOSED BY '"'-> LINES TERMINATED BY '\r\n';

导出数据为mysql脚本

通常需要做数据库迁移的时候我们需要将数据导出成mysql脚本,进行迁移。

  • 我们需要在终端环境下操作mysqldump
  • 导出一个数据库mysqldump -u用户名 -p 数据库名 > 导出的文件名
  • 导出一个表mysqldump -u用户名 -p 数据库名 表名 > 导出的文件
  • 仅导出格式mysqldump -u用户名 -p -d 数据库名 表名 > 文件
  • 导出整个数据库mysqldump -u用户名 -p --all-databases > 文件
# 全量导出,包括数据格式和数据内容
> mysqldump -uroot -p database_name tbl_name > dump.sql# 仅导出数据格式(库信息和表信息)
> mysqldump -uroot -p -d database_name tbl_name > dump.sql# 导出整个数据库
> mysqldump -uroot -p --all-databases > dump.sql

导入mysql脚本

由于我们保存的格式有完整的数据库和单张表两种形式的脚本,因此导入方式也可以分为两种。

  • 导入数据库mysql -u用户名 -p密码 < 导入脚本
  • 导入数据表mysql -u用户名 -p密码 数据库名 < 导入脚本

插入txt或者csv数据 INTO TABLE

  • LOAD DATA LOCAL INFILE '文件名' INTO TABLE 表名 (列x, 列y, 列z, ...);
  • 也可以根据导入文件格式需要,添加FILES LINES的格式处理命令
-> LOAD DATA LOCAL INFILE 'dump.txt' 
-> INTO TABLE mytbl (b, c, a);-> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl (b, c, a)
-> FIELDS TERMINATED BY ':'
-> LINES TERMINATED BY '\r\n';

WHERE 条件筛选的用法

SELECT FROM 提取用法

SELECT a,b,a+b FROM test_table;

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

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

相关文章

Python数据库:嵌入式MySQL

Python数据库&#xff1a;嵌入式MySQLPython访问MySQL的库函数PyMySQL安装PyMySQL快速上手以及代码上下文PyMySQL常见语法1. 导包2.连接数据库 connect3. 创建访问对象 cursor4. 下达命令 cursor.execute5. 接收结果 cursor.fetch*6.事务的用法7. 关闭mysql链接 closePython访问…

部门名称部门结构叠用_金属结构分公司三部门联合开展工会小组活动

为丰富职工的业余生活&#xff0c;营造轻松欢乐的氛围&#xff0c;增强部门间交流沟通&#xff0c;舒缓职工工作压力&#xff0c;在金属结构分公司工会的支持下&#xff0c;9月12日&#xff0c;分公司工程管理部、安全监管部和综合办公室联合开展工会小组活动&#xff0c;分公司…

linux环境下安装Java运行Java

Linux环境下安装与运行Java一. Linux环境下安装Java环境——最最最简单粗暴的教程二. Linux下编译Java代码---javac和java命令的使用2.1 编译单个java文件2.2 编译多个Java文件&#xff0c;每个类都在一个包中2.3 不同包编译一. Linux环境下安装Java环境——最最最简单粗暴的教…

不是区块链的特征_上市公司日照港物流区块链平台上线,不是谁都能玩“区块链+物流”?...

免责声明&#xff1a;本文旨在传递更多市场信息&#xff0c;不构成任何投资建议。文章仅代表作者观点&#xff0c;不代表火星财经官方立场。小编&#xff1a;记得关注哦投资区块链&#xff0c;猛戳&#xff1a;火星财经App下载来源&#xff1a;火星一线文 | 成文厚火星财经APP(…

lg手机历史机型_华为后,又一中国芯崛起!国际手机巨头LG都采用它的芯片了...

众所周知&#xff0c;这几年芯片火热&#xff0c;中国芯片厂商们也是受到了大家空前的关注。任何有关于中国芯的利好&#xff0c;都会被放大&#xff0c;被网友们看好。当然&#xff0c;华为是中国这些芯片企业中最强的&#xff0c;5G芯片华为也是目前最领先的&#xff0c;像巴…

Python学习笔记(6): 如何消除字符串前后中间的空白

Python如何消除字符串前后中间的空白 &#xff08;这里不使用正则表达式非常适合小白&#xff09; 相信这是很多人都会遇到的一个小问题。其实要是只想消除前后的空白。我们知道在C/C语言中只需要将字符串数组进行遍历&#xff0c;遇到非字母的值直接剔除即可。那么python要怎…

python转义引号的作用_python传到前端的数据,双引号被转义的问题

python部分def mallTemplateConfig(request):gameRole_edit request.session.get(gameRole_edit, []) #获取json串return render(request, "operationGL/mallTemplateConfig.html",{gameRole_edit: json.dumps(gameRole_edit)})html部分这样写显示正常&#xff0c;没…

Java学习资料汇总

Java语言特点和常见错误1 Java语言特点总结1.1 语言特点1.2 运行机制1.3 JVM虚拟机1.4 JRE运行环境1.5 JDK开发环境Linux下的java安装,编译,运行三大引用类型1 Java语言特点总结 这段内容来自北大唐教授的教案 1.1 语言特点 • 无直接指针操作 • 自动内存管理 • 数据类型长…

任意python版本下载,所有python版本下载的FTP路径

python的官网一般只会给出一些最常用的和最近最新发布的python版本&#xff0c;那么如何去下载任意的python版本呢。 python版本的存储是一个ftp路径&#xff0c;我们输入如下网站&#xff0c;就可以找到所有的python版本。 https://www.python.org/ftp/python

埃斯顿机器人 王杰高_埃斯顿自动化王杰高博士受邀赴韩参加“ROBOT WORLD 2016”等一系列相关活动...

10月12-13日&#xff0c;2016韩国机器人世界展览会(“ROBOT WORLD 2016”)在韩国KINTEX(一山)隆重举行。该展会由韩国机器人产业协会主办&#xff0c;是规模最为盛大的三大国际机器人展会之一。同期&#xff0c;由中国机器人产业联盟(CRIA)与韩国机器人产业协会(KAR)共同主办的…

windows环境下安装多个任意版本的python环境

windows环境下安装多个任意版本的python环境windows环境下安装多个任意版本的python环境下载Python下载pipstep1. 用get-pip下载pipstep2. 分析安装的文件step3. 使用pip得到报错" No module named pip "step4. 原因分析和解决方案其他报错1. ERROR: Could not find …

cdh 简介_CDH 1、CDH简介

1、Apache Hadoop 不足之处• 版本管理混乱• 部署过程繁琐、升级过程复杂• 兼容性差• 安全性低2、Hadoop 发行版• Apache Hadoop• Cloudera’s Distribution Including Apache Hadoop(CDH)• Hortonworks Data Platform (HDP)• MapR• EMR• …3、CDH能解决哪些问题• 10…

Windows环境下用python嵌入式环境跑程序可太方便了

Windows环境下用python嵌入式环境跑程序可太方便了1. 嵌入式包默认的文件夹设置2. 建立python环境文件夹3. 添加python索引包路径4. 安装pip和requirements5. 运行环境6. 完整的powershell install.bat 脚本之前觉得windows电脑安装的python环境太乱太不纯净&#xff0c;或者临…

python 列表 笛卡尔积_python-列表字典的笛卡尔积

python-列表字典的笛卡尔积我正在尝试编写一些代码来测试一堆输入参数的笛卡尔积。我看过itertools&#xff0c;但是它的product功能并不是我想要的。 是否有一种简单明了的简单方法来制作一个字典&#xff0c;每个字典中有任意数量的键和任意数量的元素&#xff0c;然后生成具…

2022年新版Pycharm通过project interpreter国内镜像源设置

2022年新版Pycharm通过project interpreter国内镜像源设置解决方案速览一、国内镜像源列表二、pycharm访问project interpreter解决方案速览 File->Settings->project interpreter-> -> Available Packages将options打勾&#xff0c;并输入-i https://pypi.tuna.…

git push origin master是什么意思_git 设置远端仓库

欢迎转载,但请在开头或结尾注明原文出处【blog.chaosjohn.com】 前段时间,公司开了一个新项目,买了另一家公司的源码做二次开发。 项目进行了几天后,我突然听到参与开发的几个同学在讨论,关于 “不想把我们修改的版本推给他们”。 我就顿感奇怪,买了源码还要遵循他们的开…

flink 不设置水印_从0到1学习Flink—— Flink parallelism 和 Slot 介绍

前言之所以写这个是因为前段时间自己的项目出现过这样的一个问题&#xff1a;1Caused by: akka.pattern.AskTimeoutException: 2Ask timed out on [Actor[akka://flink/user/taskmanager_0#15608456]] after [10000 ms]. 3Sender[null] sent message of type "org.apache.…

cad设计院常用字体_趣谈 | 那些年我们看过的电气图纸(附CAD/EPLAN区别)

电气二次回路图是我们工作中必不可少的内容&#xff0c;形形色色的图纸我们见过很多&#xff0c;小编就下面额图纸和大家分享一下&#xff0c;仅作为个人观点&#xff0c;大家的意见可在留言区补充哦&#xff01;先看看几张老外额图纸吧&#xff0c;譬如ABB、GE&#xff0c;但并…

centos写mysql光标移到上一行_mysql:一条SQL更新语句(update)是如何执行的

一条更新语句的执行流程又是怎样的呢&#xff1f;之前你可能经常听DBA同事说&#xff0c;MySQL可以恢复到半个月内任意一秒的状态&#xff0c;惊叹的同时&#xff0c;你是不是心中也会不免会好奇&#xff0c;这是怎样做到的呢&#xff1f;我们还是从一个表的一条更新语句说起&a…

小米wifi每天晚上准时断网_小米 11再次确定,将于28日准时发布,售价更感人

今天是12月25日&#xff0c;在28日晚上&#xff0c;小米 11将准时发布。如今&#xff0c;关于小米 11的消息已经越来越多&#xff0c;小米官方也已经确定了不少配置&#xff0c;同时&#xff0c;小米 11的售价也已经有爆料出现。根据爆料消息显示&#xff0c;小米 11此次或为45…