跳转至

02-mysql-基本命令

连接数据库

mysql 命令格式: mysql -h 主机地址 -u 用户名 -p 用户密码

数据库的增删改查

创建数据库

CREATE DATABASE <database_name>;
CREATE DATABASE `nvwa` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */

查看数据库

  • 显示所有数据库。
# show <database_name>;
show databases;
  • 查看所在数据库
# 查看所在数据库
select database();

# 显示 MYSQL 的版本
select version();

# 显示当前时间
select now();

# 显示年月日
SELECT YEAR(CURRENT_DATE);
SELECT MONTH(CURRENT_DATE);
SELECT DAYOFMONTH(CURRENT_DATE);
SELECT concat(YEAR(CURRENT_DATE),'-', MONTH(CURRENT_DATE),'-',  DAYOFMONTH(CURRENT_DATE));
  • 查看创建数据库语句
show create database nvwa;
  • 选择使用数据库
# use <database_name>;
use nvwa;
  • 删除数据库
#drop database <database_name>;
drop database `nvwa`;
# 判断数据库是否存在
drop database if exists `nvwa`;

数据表的增删改查

  • 创建数据表

create table:创建数据表,语法规则如下:

CREATE TABLE <表名>
(
    字段名 1,数据类型 [列级别约束条件] [默认值],
    字段名 2,数据类型 [列级别约束条件] [默认值],
    „„
    [表级别约束条件]
);

使用 CREATE TABLE 创建表时,必须指定以下信息:

  • 要创建的表的名称,不区分大小写,不能使用 SQL 语言中的关键字,如 DROP、ALTER、INSERT 等。

  • 数据表中每一个列(字段)的名称和数据类型,如果创建多个列,要用逗号隔开。创建员工表 tb_emp1,结构如下表所示。

字段名称 数据类型 备注
id INT(11) 员工编号
name VARCHAR(25) 员工名称
deptId INT(11) 所在部门编号
salary FLOAT 工资
  • 创建数据库 test_db;
create database test_db;
  • 连接 数据库 test_db;
use test_db;
  • 创建 eb_empl 表, SQL 语句如下:
CREATE TABLE tb_emp1
    (
    id INT(11),
    name VARCHAR(25),
    deptId INT(11),
    salary FLOAT
);
  • 查看数据表
SHOW TABLES;
# 查看建表语句
show create table tb_emp1;
# 插入数据
INSERT INTO tb_emp1 (id, name, deptId, salary)
VALUES
    (1, 'John', 1, 5000.00),
    (2, 'Emily', 2, 6000.00),
    (3, 'Michael', 1, 5500.00),
    (4, 'Sarah', 3, 7000.00);
# 查看数据
select * from tb_emp1;
  • desc:获取表结构

    1. 在 MySQL 中,查看表结构可以使用 DESCRIBE 和 SHOW CREATE TABLE 语句。

    2. DESCRIBE/DESC 语句可以查看表的字段信息,其中包括:字段名、字段数据类型、是否为主键、是否有默认值等。语法规则如下:

      DESCRIBE tb_emp1;
      DESC tb_emp1;
      
  • drop table:删除数据表

 DROP TABLE IF EXISTS tb_dept2;
  • insert into:向表中插入数据

    • INSERT INTO 语句用于向表格中插入新的行。语法如下:
    INSERT INTO 表名称 VALUES (值 1, 值 2,....) 
    
    • 指定所要插入数据的列:
    INSERT INTO table_name (列 1, 列 2,...) VALUES (值 1, 值 2,....)
    

    创建数据表 tmp3,定义数据类型为 YEAR 的字段 y,向表中插入值 2010,’2010’,SQL 语句如下:

    1. 创建表 tmp3:
      CREATE TABLE tmp3( y YEAR );
      
    2. 向表中插入数据:
      INSERT INTO tmp3 values(2010),('2010');
      
  • select from:查询表中数据

    MySQL 从数据表中查询数据的基本语句为 SELECT 语句。SELECT 语句的基本格式是:

    SELECT
        {* | <字段列表>}
        [
            FROM < 1>,< 2>...
            [WHERE <表达式>
            [GROUP BY <group by definition>]
            [HAVING <expression> [{<operator> <expression>}...]]
            [ORDER BY <order by definition>]
            [LIMIT [<offset>,] <row count>]
        ]
    SELECT [字段 1,字段 2,,字段 n]
    FROM [表或视图]
    WHERE [查询条件];
    
    其中,各条子句的含义如下:
    • {* | <字段列表>}包含星号通配符选字段列表,表示查询的字段,其中字段列至少包含一个字段名称,如果要查询多个字段,多个字段之间用逗号隔开,最后一个字段后不要加逗号。

    • FROM <表 1>,<表 2>...,表 1 和表 2 表示查询数据的来源,可以是单个或者多个。

    • WHERE 子句是可选项,如果选择该项,将限定查询行必须满足的查询条件。

    • GROUP BY <字段>,该子句告诉 MySQL 如何显示查询出来的数据,并按照指定的字段分组。

    • [ORDER BY <字段 >],该子句告诉 MySQL 按什么样的顺序显示查询出来的数据,可以进行的排序有:升序(ASC)、降序(DESC)。

    • [LIMIT [,] ],该子句告诉 MySQL 每次显示查询出来的数据条数。

  • delete from:删除记录

    从数据表中删除数据使用 DELETE 语句,DELETE 语句允许 WHERE 子句指定删除条件。DELETE 语句基本语法格式如下:

    DELETE FROM table_name [WHERE <condition>];
    
    • table_name 指定要执行删除操作的表;

    • “[WHERE ]”为可选参数,指定删除条件,如果没有 WHERE 子句,DELETE 语句将删除表中的所有记录。

    【例】在 person 表中,删除 id 等于 11 的记录,SQL 语句如下:

    DELETE FROM person WHERE id = 11;
    
  • update set:修改表中的数据。

    MySQL 中使用 UPDATE 语句更新表中的记录,可以更新特定的行或者同时更新所有的行。基本语法结构如下:

    UPDATE table_name 
    SET column_name1 = value1,column_name2=value2,……,column_namen=valuen
    WHERE (condition);
    
    • column_name1,column_name2,……,column_namen 为 指 定 更 新 的 字 段 的 名 称 ;

    • value1,value2,……valuen 为相对应的指定字段的更新值;

    • condition 指定更新的记录需要满足的条件。更新多个列时,每个“列-值”对之间用逗号隔开,最后一列之后不需要逗号。

    【例】在 person 表中,更新 id 值为 11 的记录,将 age 字段值改为 15,将 name 字段值改为 LuMing,SQL 语句如下:

    UPDATE person SET age = 20, name=’LuMing’ WHERE id = 11;
    
  • alter add:增加字段

    添加字段的语法格式如下:

    ALTER TABLE <表名> ADD <新字段名> <数据类型> 
    [约束条件] [FIRST | AFTER 已存在字段名];
    
    新字段名为需要添加的字段的名称;“FIRST”为可选参数,其作用是将新添加的字段设置为表的第一个字段;“AFTER”为可选参数,其作用是将新添加的字段添加到指定的“已存在字段名”的后面。

    【例】在数据表 tb_dept1 中添加一个没有完整性约束的 INT 类型的字段 managerId(部门经理编号),SQL 语句如下:

    ALTER TABLE tb_dept1 ADD managerId INT(10);
    
  • rename:修改表名

    MySQL 是通过 ALTER TABLE 语句来实现表名的修改的,具体的语法规则如下:

    ALTER TABLE <旧表名> RENAME [TO] <新表名>;
    

    其中 TO 为可选参数,使用与否均不影响结果。

    【例】将数据表 tb_dept3 改名为 tb_deptment3,SQL 语句如下

    ALTER TABLE tb_dept3 RENAME tb_deptment3
    
  • mysqldump:备份数据库

    mysqldump 备份数据库语句的基本语法格式如下:

    mysqldump –u user –h host –ppassword dbname[tbname, [tbname...]]> filename.sql
    
    • user 表示用户名称

    • host 表示登录用户的主机名称

    • password 为登录密码

    • dbname 为需要备份的数据库名称

    • tbname 为 dbname 数据库中需要备份的数据表,可以指定多个需要备份的表;右箭头符号“>”告诉 mysqldump 将备份数据表的定义和数据写入备份文件;filename.sql 为备份文件的名称。

    【例】使用 mysqldump 命令备份数据库中的所有表,执行过程如下:

    输入备份命令如下:

    mysqldump -u root -p nvwa > /backup/nvwa-bak.sql
    
  • mysql 和 source:还原数据库

    备份的 sql 文件中包含 CREATE、INSERT 语句(有时也会有 DROP 语句)。mysql 命令可以直接执行文件中的这些语句。其语法如下:

    mysql –u user –p [dbname] < filename.sql
    
    • user 为执行 backup.sql 中语句的用户名;

    • -p 表示输入用户密码;

    • dbname 为数据库名。

    • 如果 filename.sql 文件为 mysqldump 工具创建的包含创建数据库语句的文件,执行的时候不需要指定数据库名。

    【例 1】使用 mysql 命令将 /backup/nvwa-back.sql 文件中的备份导入到数据库中,输入语句如下:

    mysql –u root –p nvwa < /backup/nvwa-back.sql
    

    执行该语句前,必须先在 MySQL 服务器中创建 nvwa 数据库,如果不存在恢复过程将会出错。命令执行成功之后 /backup/nvwa-back.sql 文件中的语句就会在指定的数据库中恢复以前的表。

    使用 root 用户登录到服务器,然后使用 source 导入本地的备份文件 /backup/nvwa-back.sql,输入语句如下:

    # 选择要恢复到的数据库
    use nvwa;
    
    #使用 source 命令导入备份文件
    mysql> source /backup/nvwa-back.sql
    
  • mysqlhotcopy:快速恢复数据库

    mysqlhotcopy 备份后的文件也可以用来恢复数据库,在 MySQL 服务器停止运行时,将备份的数据库文件复制到 MySQL 存放数据的位置(MySQL 的 data 文件夹),重新启动 MySQL 服务即可。如果以根用户执行该操作,必须指定数据库文件的所有者,输入语句如下:

    chown -R mysql.mysql /var/lib/mysql/dbname
    

    【例】从 mysqlhotcopy 复制的备份恢复数据库,输入语句如下:

    cp -R /usr/backup/test usr/local/mysql/data
    
    执行完该语句,重启服务器,MySQL 将恢复到备份状态。