MySQL 使用方法简单教程

2023-11-13

目录

启动MySQL服务器

进入mysql交互操作界面

退出MySQL操作界面

第一条命令

多行语句

使用SHOW语句找出在服务器上当前存在什么数据库:

创建一个数据库abccs

选择你所创建的数据库

创建一个数据库表

显示表的结构

查询所有数据

修正错误记录

选择特定行

多表操作

增加一列

修改记录

增加记录

删除记录

删除表

数据库的删除

数据库的备份

用批处理方式使用MySQL

请先用root登录到mysql,方法

创建一个用户


  • 启动MySQL服务器

实际上上篇已讲到如何启动MySQL。两种方法:
一是用winmysqladmin,如果机器启动时已自动运行,则可直接进入下一步操作。
二是在DOS方式下运行

d:/mysql/bin/mysqld
  • 进入mysql交互操作界面

在DOS方式下,运行:

d:/mysql/bin/mysql -u root -p

出现提示符,此时已进入mysql的交互操作方式。
如果出现 "ERROR 2003: Can‘t connect to MySQL server on ‘localhost‘ (10061)“,说明你的MySQL还没有启动。

  • 退出MySQL操作界面

在mysql>提示符下输入quit可以随时退出交互操作界面:

mysql> quit
Bye

你也可以用control-D退出。

  • 第一条命令

mysql> select version(),current_date();
+----------------+-----------------+
|    version()   |  current_date() |
+----------------+-----------------+
| 3.23.25a-debug |    2001-05-17   |
+----------------+-----------------+
1 row in set (0.01 sec)

此命令要求mysql服务器告诉你它的版本号和当前日期。尝试用不同大小写操作上述命令,看结果如何。
结果说明mysql命令的大小写结果是一致的。
练习如下操作: (AS: 指定假名为Result)

mysql>Select (20+5)*4;
mysql>Select (20+5)*4,sin(pi()/3);
mysql>Select (20+5)*4 AS Result,sin(pi()/3);
  • 多行语句

一条命令可以分成多行输入,直到出现分号“;”为止:

mysql> select
    -> USER()
    -> ,
    -> now()
    -> ;
+--------------------+-----------------------------+
| USER()             | now()                       |
+--------------------+-----------------------------+
| ODBC@localhost     | 2001-05-17 22:59:15         |
+--------------------+-----------------------------+
  • 使用SHOW语句找出在服务器上当前存在什么数据库:

mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql    |
| test     |
+----------+
3 rows in set (0.00 sec)
  • 创建一个数据库abccs

mysql> CREATE DATABASE abccs;

注意不同操作系统对大小写的敏感。

  • 选择你所创建的数据库

mysql> USE abccs
Database changed

此时你已经进入你刚才所建立的数据库abccs.

  • 创建一个数据库表

首先看现在你的数据库中存在什么表:

mysql> SHOW TABLES;
Empty set (0.00 sec)

说明刚才建立的数据库中还没有数据库表。下面来创建一个数据库表mytable:

我们要建立一个你公司员工的生日表,表的内容包含员工姓名、性别、出生日期、出生城市。

mysql> CREATE TABLE mytable (name VARCHAR(20), sex CHAR(1),
-> birth DATE, birthaddr VARCHAR(20));
Query OK, 0 rows affected (0.00 sec)


由于name、birthadd的列值是变化的,因此选择VARCHAR,其长度不一定是20。可以选择从
1到255的任何长度,如果以后需要改变它的字长,可以使用ALTER TABLE语句。);
性别只需一个字符就可以表示:"m"或"f",因此选用CHAR(1);
birth列则使用DATE数据类型。

创建了一个表后,我们可以看看刚才做的结果,用SHOW TABLES显示数据库中有哪些表:

mysql> SHOW TABLES;
+---------------------+
| Tables in menagerie |
+---------------------+
| mytables            |
+---------------------+

 

  • 显示表的结构

mysql> DESCRIBE mytable;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| name        | varchar(20) | YES  |     | NULL    |       |
| sex         | char(1)     | YES  |     | NULL    |       |
| birth       | date        | YES  |     | NULL    |       |
| deathaddr   | varchar(20) | YES  |     | NULL    |       |
+-------------+-------------+------+-----+---------+-------+

 

  • 查询所有数据

mysql> select * from mytable;
+----------+------+------------+----------+
| name     | sex  | birth      | birthaddr|
+----------+------+------------+----------+
| abccs    |f     | 1977-07-07 | china    |
| mary     |f     | 1978-12-12 | usa      |
| tom      |m     | 1970-09-02 | usa      |
+----------+------+------------+----------+
3 row in set (0.00 sec)

 

  • 修正错误记录

假如tom的出生日期有错误,应该是1973-09-02,则可以用update语句来修正:

mysql> update mytable set birth = "1973-09-02" where name = "tom";


再用2中的语句看看是否已更正过来。

  • 选择特定行

上面修改了tom的出生日期,我们可以选择tom这一行来看看是否已经有了变化:

mysql> select * from mytable where name = "tom";
+--------+------+------------+------------+
| name   |sex   | birth      | birthaddr  |
+--------+------+------------+------------+
| tom    |m     | 1973-09-02 | usa        |
+--------+------+------------+------------+
1 row in set (0.06 sec)

上面WHERE的参数指定了检索条件。我们还可以用组合条件来进行查询:
 

mysql> SELECT * FROM mytable WHERE sex = "f" AND birthaddr = "china";
+--------+------+------------+------------+
| name   |sex   | birth      | birthaddr  |
+--------+------+------------+------------+
| abccs  |f     | 1977-07-07 | china      |
+--------+------+------------+------------+
1 row in set (0.06 sec)

 

  • 多表操作


前面我们熟悉了数据库和数据库表的基本操作,现在我们再来看看如何操作多个表。

在一个数据库中,可能存在多个表,这些表都是相互关联的。我们继续使用前面的例子。前面建立的表中包含了员工的一些基本信息,如姓名、性别、出生日期、出生地。我们再创建一个表,该表用于描述员工所发表的文章,内容包括作者姓名、文章标题、发表日期。

1、查看第一个表mytable的内容:

mysql> select * from mytable;
+----------+------+------------+-----------+
| name     | sex  | birth      | birthaddr |
+----------+------+------------+-----------+
| abccs    |f     | 1977-07-07 | china     |
| mary     |f     | 1978-12-12 | usa       |
| tom      |m     | 1970-09-02 | usa       |
+----------+------+------------+-----------+


2、创建第二个表title(包括作者、文章标题、发表日期):

mysql> create table title(writer varchar(20) not null,
-> title varchar(40) not null,
-> senddate date);


向该表中填加记录,最后表的内容如下:

mysql> select * from title;
+--------+-------+------------+
| writer | title | senddate   |
+--------+-------+------------+
| abccs  | a1    | 2000-01-23 |
| mary   | b1    | 1998-03-21 |
| abccs  | a2    | 2000-12-04 |
| tom    | c1    | 1992-05-16 |
| tom    | c2    | 1999-12-12 |
+--------+-------+------------+
5 rows in set (0.00sec)


3、多表查询
现在我们有了两个表: mytable 和 title。利用这两个表我们可以进行组合查询:
例如我们要查询作者abccs的姓名、性别、文章:

mysql> SELECT name,sex,title FROM mytable,title WHERE name=writer AND name=‘abccs‘;
+-------+------+-------+
| name  | sex  | title |
+-------+------+-------+
| abccs | f    | a1    |
| abccs | f    | a2    |
+-------+------+-------+



上面例子中,由于作者姓名、性别、文章记录在两个不同表内,因此必须使用组合来进行查询。必须要指定一个表中的记录如何与其它表中的记录进行匹配。
注意:如果第二个表title中的writer列也取名为name(与mytable表中的name列相同)而不是writer时,就必须用mytable.name和title.name表示,以示区别。
再举一个例子,用于查询文章a2的作者、出生地和出生日期:
 

mysql> select title,writer,birthaddr,birth from mytable,title
-> where mytable.name=title.writer and title=‘a2‘;
+-------+--------+-----------+------------+
| title | writer | birthaddr | birth      |
+-------+--------+-----------+------------+
| a2    | abccs  | china     | 1977-07-07 |
+-------+--------+-----------+------------+

 

  • 增加一列

如在前面例子中的mytable表中增加一列表示是否单身single:
 

mysql> alter table mytable add column single char(1);

 

  • 修改记录

将abccs的single记录修改为“y”:

mysql> update mytable set single=‘y‘ where name=‘abccs‘;

现在来看看发生了什么:

mysql> select * from mytable;
+----------+------+------------+-----------+--------+
| name     | sex  | birth      | birthaddr | single |
+----------+------+------------+-----------+--------+
| abccs    |f     | 1977-07-07 | china     | y      |
| mary     |f     | 1978-12-12 | usa       | NULL   |
| tom      |m     | 1970-09-02 | usa       | NULL   |
+----------+------+------------+-----------+--------+

 

  • 增加记录

前面已经讲过如何增加一条记录,为便于查看,重复与此:

mysql> insert into mytable
-> values (‘abc‘,‘f‘,‘1966-08-17‘,‘china‘,‘n‘);
Query OK, 1 row affected (0.05 sec)


查看一下:
 

mysql> select * from mytable;
+----------+------+------------+-----------+--------+
| name     | sex  | birth      | birthaddr | single |
+----------+------+------------+-----------+--------+
| abccs    |f     | 1977-07-07 | china     | y      |
| mary     |f     | 1978-12-12 | usa       | NULL   |
| tom      |m     | 1970-09-02 | usa       | NULL   |
| abc      |f     | 1966-08-17 | china     | n      |
+----------+------+------------+-----------+--------+

 

  • 删除记录

用如下命令删除表中的一条记录:

mysql> delete from mytable where name=‘abc‘;


DELETE从表中删除满足由where给出的条件的一条记录。
再显示一下结果:
 

mysql> select * from mytable;
+----------+------+------------+-----------+--------+
| name     | sex  | birth      | birthaddr | single |
+----------+------+------------+-----------+--------+
| abccs    |f     | 1977-07-07 | china     | y      |
| mary     |f     | 1978-12-12 | usa       | NULL   |
| tom      |m     | 1970-09-02 | usa       | NULL   |
+----------+------+------------+-----------+--------+

 

  • 删除表

mysql> drop table ****(表1的名字),***表2的名字;


可以删除一个或多个表,小心使用。
 

  • 数据库的删除

mysql> drop database 数据库名;


小心使用。

  • 数据库的备份

退回到DOS:
mysql> quit
d:\mysqlbin
使用如下命令对数据库abccs进行备份:

mysqldump --opt abccs>abccs.dbb


abccs.dbb就是你的数据库abccs的备份文件。

  • 用批处理方式使用MySQL

首先建立一个批处理文件mytest.sql,内容如下:

use abccs;
select * from mytable;
select name,sex from mytable where name=‘abccs‘;

在DOS下运行如下命令:

d:\mysqlbin mysql < mytest.sql


在屏幕上会显示执行结果。
如果想看结果,而输出结果很多,则可以用这样的命令:

mysql < mytest.sql | more

我们还可以将结果输出到一个文件中:

mysql < mytest.sql > mytest.out
  • 请先用root登录到mysql,方法

 c:/mysql/bin/mysql -u root -p  
  • 创建一个用户

 mysql> GRANT ALL PRIVILEGES ON javatest.* TO javauser@"%"  
     ->   IDENTIFIED BY "javadude" ;

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 使用方法简单教程 的相关文章

  • 错误:SQLSTATE[HY000] [2002] 无法建立连接,因为目标计算机主动拒绝连接

    当我调试代码时突然发生错误 它有一系列关于数据库连接的错误 ERROR SQLSTATE HY000 2002 No connection could be made because the target machine actively
  • 如何使用 SQL - INSERT...ON DUPLICATE KEY UPDATE?

    我有一个脚本可以捕获推文并将其放入数据库中 我将在 cronjob 上运行脚本 然后在我的网站上显示数据库中的推文 以防止达到 Twitter API 的限制 所以我不想在我的数据库中有重复的推文 我知道我可以使用 INSERT ON DU
  • 尝试在 Mac OSX 上的 virtualenv 和 MySQL 中安装 Django CMS 时出错

    当我尝试使用 virutalenv 安装带有 MySQL 的 django CMS 时 出现以下错误 RuntimeError maximum recursion depth exceeded Users ethan Sites env b
  • 我们可以使用 Skip()、Take() 和 OrderBy() 控制 LINQ 表达式顺序吗

    我正在使用 LINQ to Entities 来显示分页结果 但我在组合方面遇到了问题Skip Take and OrderBy calls 一切正常 除了OrderBy 分配得太晚了 它在结果集被削减后执行Skip and Take 因此
  • 表被指定两次作为 INSERT 的目标和单独的数据源

    我做了这个查询 但它给了我错误 就像标题中一样 INSERT INTO data waktu vaksinasi id binatang id vaksin tanggal vaksin status vaksin VALUES 1 1 S
  • 将歌词存储在 MySQL 数据库中

    我想知道在 mysql 数据库中存储音乐 歌词 的最佳方式是什么 以及用于此目的的设置是什么 另外 我想要表格来存储断线 我正在考虑使用 指示新行并使用 php 替换字符串 我不知道从哪里开始 或者使用什么参数 varchar int 我知
  • sql连接一个表中的两个字段

    我有一个预订表 其中有两个人 我想将 person 1 作为一行返回 将 person 2 作为新行返回 但该人的 id 与人员表相关 这是我所得到的 但没有提取预订信息 SELECT people FROM select booking
  • 在评论中查找不同风格的日期

    我还有一个问题要问preg match 我有一个表 其中评论的日期写在评论本身内 手动 现在我需要提取该日期并将其放置在不同的列中 我发现评论和日期的样式如下 id warning sent warning date 6109 2011 0
  • MySQL Spatial CONTAINS 显示错误结果

    我的 MySQL 空间搜索有一个奇怪的行为 我在 GEOM 字段 葡萄牙边界 中创建了一个多边形 然后我尝试在内部找到一个点 发现没问题 下一次尝试是查找多边形外部的点 但查询仍返回 1 个找到的行 请帮忙 我做错了什么 为什么它会找到多边
  • 如何读取 sql 查询到 pandas dataframe / python / django

    我在下面使用这个views py获取应用程序 from django db import connection def test request cursor connection cursor sql SELECT x n from ta
  • System.IndexOutOfRangeException:索引超出了数组的范围[重复]

    这个问题在这里已经有答案了 我正在开发一个 ATM 软件作为家庭作业 我想知道今天处理的交易总量 为此我编写了以下代码 public decimal getDayTransaction int accountid string date s
  • 获取直方图数据

    有没有办法在 MySQL 中指定 bin 大小 现在 我正在尝试以下 SQL 查询 select total count total from faults GROUP BY total 生成的数据足够好 但行太多 我需要的是一种将数据分组
  • 如何在函数内部使用 require_once [重复]

    这个问题在这里已经有答案了 你好 我想在函数内使用 require once 但不起作用 实际上我的页面中有三个函数我该怎么做 它在外面工作但不在函数内部 请问有谁吗 这是我的代码
  • Hibernate HQL Join 查询 DOT 节点,没有左侧

    我有两个模型类 应用程序 java Entity Table name Application catalog mysqldb XmlRootElement public class Application extends BaseObje
  • 子查询在多项选择时返回超过 1 个值的 SQL 错误

    我想要一个临时表 它将使用 select 语句插入值 但每次我运行查询时 总是出现错误 子查询返回超过 1 个值 当查询跟随 gt 或子查询用作表达式时 不允许这样做 该语句已终止 0 行受影响 这很奇怪 因为代码中似乎没有错误 但如果有的
  • PDO 多查询“SQLSTATE[HY000]:一般错误”

    我仍在学习 PDO 所以我可能会错过一些东西 但基本上我正在尝试将一行插入表中 然后选择生成的 id 我不确定它是否喜欢一个 pdo 语句中的两个查询 这是我用来执行 SQL 的代码 public function ExecuteQuery
  • 如何更改Linux服务器中的MySQL表名不区分大小写?

    我正在开发一个旧网站 该网站曾经托管在 Apple 服务器上 当它迁移到新的 Linux 服务器时 它停止工作 我很确定这是因为 php 脚本中使用的所有 MySQL 查询对于表名都有不同的大小写组合 我不知道为什么原始开发人员在创建表名或
  • 将 MS-Access 表单结果导出到 Excel?

    我对 Access 有点陌生 我在将 MySQL 和 Oracle 与 PHP 集成以创建基于 Web 的数据库搜索引擎方面拥有一些经验 但我很难理解 Access 的某些概念 我有一个小型数据库 其中包含大约 200 个条目 每个条目有
  • 当子查询具有组列时,MySQL 8 不使用 INDEX

    我们刚刚从 mariadb 5 5 迁移到 MySQL 8 一些更新查询突然变得很慢 经过更多调查 我们发现当子查询有组列时 MySQL 8不使用索引 例如 下面是一个示例数据库 桌子users维护每种类型用户的当前余额 表 帐户 维护每天
  • MySql 西班牙语字符数据

    我有一个包含西班牙语字符的数据库 为了填充数据库 我从字符编码 UTF 8 的客户端页面获取值 当我在 mySql 数据库中插入值时 行包含更改的数据 例如 如果我插入 M xico 数据库中的条目是 M xico 其影响是当我对指定 M

随机推荐

  • 华为FusionCompute之个人学习环境虚拟化嵌套部署方案

    华为FusionCompute之个人学习环境虚拟化嵌套部署方案 一 环境介绍 1 本次实践背景 2 物理机配置介绍 3 FC虚拟化部署方案介绍 4 虚拟化环境介绍 5 本次实践目的 二 检查本地环境 1 检查虚拟化环境 2 FC部署进度介绍
  • 软考-系统架构师-计算机与网络基础知识-系统性能

    文章目录 1 性能指标 2 性能计算 3 性能设计 4 性能评估 说明 系统性能是一个系统提供给用户的中国性能指标的集合 它包括硬件性能 软件性能 部件性能指标 综合性能指标 1 性能指标 性能指标是软 硬件的性能指标的集成 在硬件中包括计
  • EMC测试的那些项目,你都知道么?

    转载 EMC电磁兼容 2022 03 27 08 30 EMC检测 电磁兼容性检测 的全称是Electro Magnetic Compatibility 其定义为 设备和系统在其电磁环境中能正常工作且不对环境中任何事物构成不能承受的电磁骚扰
  • gethostbyname()函数详解

    基本概念 gethostbyname 函数主要作用 用域名或者主机名获取地址 操作系统提供的库函数 以下的讨论基于linux环境 域名系统 Domain Name System DNS 主要用于主机名字与IP地址之间的映射 每个组织机构往往
  • 【NLP】1、BERT

    文章目录 一 背景 二 方法 论文 BERT Pre training of Deep Bidirectional Transformers for Language Understanding 出处 Google 一 背景 在 BERT
  • flutter图片点击跳转_flutter页面跳转 Route 使用汇总

    一 push方式直接跳转 普通跳转 Navigator push context MaterialPageRoute builder BuildContext context gt Page1 复制代码 带参数跳转和接收参数 Navigat
  • Python习题四

    习题四 1 已知10个学生的成绩为68 75 32 99 78 45 88 72 83 78 请将成绩存放在列表中 请对其进行统计 输出优 100 89 良 89 80 中 79 60 差良 59 0 4个等级的人数 代码 运行 2 利用W
  • 代码质量管理工具:SonarQube常见的问题及正确解决方案

    SonarQube 简介 Sonar 是一个用于代码质量管理的开放平台 通过插件机制 Sonar 可以集成不同的测试工具 代码分析工具 以及持续集成工具 与持续集成工具 例如 Hudson Jenkins 等 不同 Sonar 并不是简单地
  • C#基于串行通讯不同计算机数据库之间数据交换系统(原创作品,送论文查重报告)

    论文编号 C 005 论文题目 基于串行通讯不同计算机数据库之间数据交换系统 开发语言 C 包括内容 论文 可执行程序 源码 答辩ppt 外文翻译 进度表 程序操作演示录像 数 据 库 SQL 论文字数 7000字以上
  • c++ 关于opencv 的基本操作

    读取影像 include
  • 没钱也能创业么?没钱怎样创业?

    一 先说结果不但并不是没钱就不能创业 反而是一切追求完美资本的人 无论有钱没钱 都能够且应当创业 二 界定问题我还在风投领域当上五六年兵线 眼界过上百个各式各样企业和创业者 项目投资总额度过亿人民币 也用掉过他人项目投资帮我的上百万用以创业
  • 组成最大数 华为机试

    题目描述 给定一组非负整数 重新排列它们的顺序使之组成一个最大的整数 示例 输入 10 2 输出 210 输入 3 30 34 5 9 输出 9534330 解题思路 回溯法 代码 package Huawei import java ut
  • Mysql分库分表实战(一)——一文搞懂Mysql数据库分库分表

    由于业务需要 需要对Mysql数据库进行分库分表 故而最近一直在整理分库分表的相关知识 现手上的工作也告一段落了 抽空将自己最近的学习结果转化为博文 分享给大家 本博文打算做成一个系列的 首先是分库分表的理论知识的了解 其次是基于Java编
  • 方差分析中怎么看有无显著性影响_一文带你轻松掌握,重复测量方差分析

    在某些实验研究中 常常需要考虑时间因素对实验的影响 当需要对同一观察单位在不同时间重复进行多次测量 每个样本的测量数据之间存在相关性 因而不能简单的使用方差分析进行研究 而需要使用重复测量方差分析 案例 当前有这样一项关于抑郁症的研究 共有
  • html中%20是什么意思?

    两个空格的话就是两个 20 转载于 https www cnblogs com linsx p 6943985 html
  • shell select用法

    select 是 Bash shell 中的一个命令 用于在终端中创建交互式菜单 select 语法格式如下 select varname in list do command1 command2 done 其中 varname 是一个变量
  • 竞争条件(race condition)

    在一些操作系统中 协作的进程可能共享一些彼此都能读写的公用存储区 这个公用存储区可能在内存中 可能是在内核数据结构中 也可能是一个共享文件 这里共享存储区的位置并不影响通信的本质及其带来的问题 为了理解实际中进程间通信如何工作 我们考虑一个
  • linux下五颜六色的文件——具体含义

    1 有一个伟人说过 Linux下一切都是文件 没错 他说的很对 但是文件又有很多汇总类型 Linux系统中用不同的颜色先大致区分一下 2 LINUX下不同的文件类型有不同的颜色 绿色文件 可执行文件 可执行的程序 红色文件 压缩文件或者包文
  • 【数论基础】—— 二项式定理

    二项式定理 内容 x y n
  • MySQL 使用方法简单教程

    目录 启动MySQL服务器 进入mysql交互操作界面 退出MySQL操作界面 第一条命令 多行语句 使用SHOW语句找出在服务器上当前存在什么数据库 创建一个数据库abccs 选择你所创建的数据库 创建一个数据库表 显示表的结构 查询所有