mysql的一些命令_MySQL case when

mysql的一些命令_MySQL case when这是MySQL系列笔记的第一部分,本系列笔记希望能按照笔者自己学习MySQL技术的经历来记录,避免纯粹按照内容一块一块总结,也就是不同于一般按内容分配章节的书籍的结构,有一个平滑的阅读曲线。内容比较丰富的技术点会按照专题在多个学习笔记中逐渐深入。 首先,请如果还完全为接触过My…

这是MySQL系列笔记的第一部分,本系列笔记希望能按照笔者自己学习MySQL技术的经历来记录,避免纯粹按照内容一块一块总结,也就是不同于一般按内容分配章节的书籍的结构,有一个平滑的阅读曲线。内容比较丰富的技术点会按照专题在多个学习笔记中逐渐深入。

首先,请如果还完全为接触过MySQL的读者先阅读w3c的SQL教程,再来读本篇内容。

这部分的标题叫比CRUD多一丁点儿,比起最基础的w3c的SQL教程之外,只多一点的扩展,满足应付从纯粹阅读入门资料到可以上手完成一个简单的工作的需求。

第一篇的主要内容会是最常用的一些mysql命令。因为虽然有很多图形化的工具,但在实际的工作中因为需要去线上服务查看数据,处理问题,字符界面的命令行工具是必不可少的。

客户端程序mysql:

连接交互式终端

mysql -h $host -P $port -u $user -p$passsword $database_name

例如用户root使用密码mydb@xxx用链接到地址为192.168.1.99,端口为3306的数mysql进程,并默认使用上名为testdb的数据库(即自动执行use testdb)。

mysql -h 192.168.1.99 -P 3306 -u"root" -p"mydb@xx" testdb

各参数如果有@,&等bash的关键字,则需要用””引起来。

非交互式的执行SQL

有时候需要在命令行执行某句SQL,则建议使用 -Bse 参数。-B参数的含义是执行多条语句(batch)这样可以执行多条,-e即是执行(execute),-s参数意思是静默执行(silent)可以让输出格式精简一些。

mysql -h $host -P $port -u $user -p$passsword -Bse "command1;command2;....;commandn"

例如,常见的将执行结果导出到文件中方便留存和阅读。

mysql -h 192.168.1.99 -P 3306 -u"root" -p"mydb@xx" -Bse "select id,name from testdb.Account;" > result.txt

导出程序mysqldump

mysqldump是做数据导出的命令行工具,也是mysql安装后默认会带的。作用是将mysql数据库中的数据导出出来。

导出特定的表的内容

mysql -h $host -P $port -u $user -p$passsword $database_name $table1 $table2 ...
```bash 例如 ```bash
mysqldump -h 192.168.1.99 -P 3306 -u"root" -p"mydb@xx" mydb table1 table2 > result.sql

只导出表结构

使用--no-data参数只导出表结构,

mysqldump -h 192.168.1.99 -P 3306 -u"root" -p"mydb@xx" --no-data mydb  > result.sql

比较表结构mysqldiff

在开发实践中难免会遇到校验数据表结构不同,或者根据开发环境和目标环境的表结构不同来生成对应的表结构修改语句。mysql在5.7版本就提供了一个自带的mysqldiff工具。参数比较多,直接举例说明生成difftype=sql的ALTER语句的命令写法,如下:

 mysqldiff --server1=root@host1 --server2=root@host2 \
          --show-reverse --difftype=sql \
          db1.table1:dbx.table3

# server1 on host1: ... connected.
# server2 on host2: ... connected.
# Comparing db1.table1 to dbx.table3                               [FAIL]
# Transformation statements:

# --destination=server1:
ALTER TABLE db1.table1
  ADD COLUMN notes char(30) AFTER a,
  CHANGE COLUMN misc misc char(55);

# --destination=server2:
# ALTER TABLE dbx.table3
#   DROP COLUMN notes,
#   CHANGE COLUMN misc misc char(30);

具体看mysql的官方文档:https://dev.mysql.com/doc/mysql-utilities/1.5/en/mysqldiff.html

如果在mysql5.7版本以下就使用mysqldump命令参数输出简洁的表结构,随后diff文件然后自行编写ALTER语句吧。

mysqldump --skip-comments --skip-extended-insert -u root -p dbName1>file1.sql
mysqldump --skip-comments --skip-extended-insert -u root -p dbName2>file2.sql
diff file1.sql file2.sql

内建?, \s命令

心急火燎的进入mysql终端处理线上问题,这时候一个语法拼不对,还得切出去查手册?万一环境是内网不能上网就更是麻烦,其实mysql内建了帮助手册,可以直接在终端查询。

? 是交互式mysql终端内建的帮助命令。可以按照此帮助查阅文档等。其输出如下

mysql> ?

For information about MySQL products and services, visit:
   http://www.mysql.com/
For developer information, including the MySQL Reference Manual, visit:
   http://dev.mysql.com/
To buy MySQL Enterprise support, training, or other products, visit:
   https://shop.mysql.com/

List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
?         (\?) Synonym for `help'.
clear     (\c) Clear the current input statement.
connect   (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit      (\e) Edit command with $EDITOR.
ego       (\G) Send command to mysql server, display result vertically.
exit      (\q) Exit mysql. Same as quit.
go        (\g) Send command to mysql server.
help      (\h) Display this help.
nopager   (\n) Disable pager, print to stdout.
notee     (\t) Don't write into outfile.
pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print     (\p) Print current command.
prompt    (\R) Change your mysql prompt.
quit      (\q) Quit mysql.
rehash    (\#) Rebuild completion hash.
source    (\.) Execute an SQL script file. Takes a file name as an argument.
status    (\s) Get status information from the server.
system    (\!) Execute a system shell command.
tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.
use       (\u) Use another database. Takes database name as argument.
charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
warnings  (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
resetconnection(\x) Clean session context.

\s 可查看当前状态,版本,客户端ip,QPS等,\!可以在mysql终端中执行shell命令。在是很多处理问题的时候终端界面一进入mysql的交互式终端,就找不到ip、端口等在bash中的信息了又需要频繁切出,这两个命令都非常有用。\s输出如下:

mysql> \s
--------------
mysql  Ver 14.14 Distrib 5.7.12, for osx10.11 (x86_64) using  EditLine wrapper



Connection id:		2
Current database:	rizhiyi_system
Current user:		root@localhost
SSL:			Not in use
Current pager:		less
Using outfile:		''
Using delimiter:	;
Server version:		5.7.12 MySQL Community Server (GPL)
Protocol version:	10
Connection:		127.0.0.1 via TCP/IP
Server characterset:	utf8
Db characterset:	utf8
Client characterset:	utf8
Conn. characterset:	utf8
TCP port:		3306
Uptime:			21 sec

Threads: 1 Questions: 74 Slow queries: 0 Opens: 171 Flush tables: 1 Open tables: 164 Queries per second avg: 3.523
--------------

? contents 可以看内建的帮助手册

mysql> ? contents
You asked for help about help category: "Contents"
For more information, type 'help <item>', where <item> is one of the following
categories:
   Account Management
   Administration
   Compound Statements
   Data Definition
   Data Manipulation
   Data Types
   Functions
   Functions and Modifiers for Use with GROUP BY
   Geographic Features
   Help Metadata
   Language Structure
   Plugins
   Procedures
   Storage Engines
   Table Maintenance
   Transactions
   User-Defined Functions
   Utility

然后就可以继续查看子菜单帮助手册的内容,比如? Functions

mysql> ? Functions
You asked for help about help category: "Functions"
For more information, type 'help <item>', where <item> is one of the following
categories:
   Bit Functions
   Comparison operators
   Control flow functions
   Date and Time Functions
   Encryption Functions
   Information Functions
   Logical operators
   Miscellaneous Functions
   Numeric Functions
   String Functions

? insert 帮助命令还可以直接按关键字进行模糊查询,如:

mysql> ? insert
Name: 'INSERT'
Description:
Syntax:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    [PARTITION (partition_name,...)]
    [(col_name,...)]
    {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]

Or:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    [PARTITION (partition_name,...)]
    SET col_name={expr | DEFAULT}, ...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]

Or:

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    [PARTITION (partition_name,...)]
    [(col_name,...)]
    SELECT ...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]

INSERT inserts new rows into an existing table. The INSERT ... VALUES
and INSERT ... SET forms of the statement insert rows based on
explicitly specified values. The INSERT ... SELECT form inserts rows
selected from another table or tables. INSERT ... SELECT is discussed
further in [HELP INSERT SELECT].

When inserting into a partitioned table, you can control which
partitions and subpartitions accept new rows. The PARTITION option
takes a comma-separated list of the names of one or more partitions or
subpartitions (or both) of the table. If any of the rows to be inserted
by a given INSERT statement do not match one of the partitions listed,
the INSERT statement fails with the error Found a row not matching the
given partition set. See
http://dev.mysql.com/doc/refman/5.7/en/partitioning-selection.html, for
more information and examples.

In MySQL 5.7, the DELAYED keyword is accepted but ignored by the
server. See [HELP INSERT DELAYED], for the reasons for this.

URL: http://dev.mysql.com/doc/refman/5.7/en/insert.html

本文中常用命令的更详细内容可看MySQL手册: dev.mysql.com/doc/refman/…

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13137.html

(0)

相关推荐

  • 使用Python编写套接字的网络应用程序

    使用Python编写套接字的网络应用程序Python是一种通用编程语言,它可以很轻松地处理网络应用程序。在这篇文章中,我们将介绍如何使用Python编写套接字的网络应用程序。套接字是实现网络通信的一种方式。Python内置了一些套接字API,可以使用它们来编写网络应用程序。

    2024-01-13
    113
  • Python图形化界面编程:使用tkinter创建交互按钮

    Python图形化界面编程:使用tkinter创建交互按钮Python是一种非常流行的编程语言,它具有简单易学、灵活性强、可移植性好等优点,得到了广大编程爱好者的追捧。基于Python的图形化界面编程也得到了广泛的应用,使得开发者可以更加方便地创建交互式的应用程序。

    2024-03-06
    92
  • 关于复制,你了解多少(附副本集常见任务教程)「终于解决」

    关于复制,你了解多少(附副本集常见任务教程)「终于解决」MongoDB Manual (Version 4.2) Replication MongoDB中的副本集是一组维护相同数据集合的 mongod进程。副本集提供了冗余和高可用性,并且这是所有生产部署的

    2023-02-26
    146
  • Python类定义中心

    Python类定义中心Python是一种高级编程语言。它具有简单易学、可读性强、应用广泛等优点。其中的类定义是Python编程的最基础和最重要的部分之一。类定义是定义一个类的过程,类是用于表示一组相关对象的概念。Python中的类定义可以定义对象的属性和方法,以及它们的相互关系。Python类定义的中心是指这些关系建立在同一点之上的意思。在Python中,每个类都有一个对象,即类的实例。Python面向对象编程的特点在于它是基于类和实例来完成任务的。Python的类定义允许用户重载运算符,定义属性、成员方法和静态方法,以及实现公共和私有接口等。Python还允许用户继承和多重继承类,从而使得代码的复用性更高。

    2024-09-10
    24
  • 倒转列表顺序:Python .reverse方法

    倒转列表顺序:Python .reverse方法Python是一种高级编程语言,它可以轻松地实现各种算法和数据结构。Python中的列表(List)是一种特殊的数据结构,它可以用来存储一系列有序的元素,这些元素可以是数字、字符串、对象等等。Python提供了许多方法来操作列表,其中一个非常便利的方法是.reverse(),它可以将列表的顺序反转。

    2024-02-29
    87
  • Python def函数:如何定义函数

    Python def函数:如何定义函数函数是一段可重复使用的代码块,用于实现特定任务。在Python中,函数是一等公民,这意味着它们可以像任何其他对象一样传递、分配和操作。Python使用def关键字定义函数,这使得函数定义变得简单且易于阅读。

    2024-03-08
    87
  • 使用Python对List进行排序的方法

    使用Python对List进行排序的方法排序是编程中非常基础的操作之一,它可以帮助我们更好地组织和处理数据。在Python中,有多种方法可以对List进行排序。本文将从多个方面对使用Python对List进行排序的方法进行详细阐述。

    2024-05-20
    73
  • 将Django Model转换为字典格式的实用函数

    将Django Model转换为字典格式的实用函数在Django应用程序中,进行数据库操作主要使用Django的ORM框架,这个框架可以方便的将数据库中的表映射成为Python类,然后通过这个类就可以进行数据库的增删改查等操作了。ORM框架提供了manager、queryset等对象来帮助我们更加方便的操作数据库。然而,在一些情况下,我们需要将Django的Model对象转换成Python字典,以便于对返回数据进行处理、或者我们希望将Model对象序列化成JSON字符串。这篇文章将介绍从Django Model转换为Python字典的实用函数。

    2024-04-09
    73

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注