测试人员必备之 mysql 常用命令学习指南

发布于 更新于
本文目录
  1. 1、数据库连接
  2. 2、创建数据库
  3. 3、显示数据库
  4. 4、删除数据库
  5. 5、选择数据库
  6. 6、创建表
  7. 7、显示数据表
  8. 8、查看表结构
  9. 9、删除表
  10. 10、插入表数据
  11. 11、修改表数据
  12. 12、查询单表数据
  13. 13、查询多表关联数据
  14. 14、删除表数据
  15. 15、mysql学习教程

技术文章Linux与数据库

通过命令行连接数据库

1、数据库连接

  1. 通过命令行连接数据库

[root@localhost ~]# mysql -u root -p
Enter password:

输入以上命令,回车后输入密码,回车,出现 mysql> 命令提示窗口则表示登录成功,可以在mysql>下输入任何sql语句。

  1. 退出mysql

mysql> exit
Bye

2、创建数据库

语法:CREATE DATABASE <数据库名>;

先连接mysql服务后,再使用sql语句。可以通过命令连接也可以通过客户端工具例如navicat连接,以下创建一个库名为lemon的数据库

mysql> create DATABASE lemon;

3、显示数据库

语法:show databases;

示例:查看mysql服务所有数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| future             |
| lemon              |
| mysql              |
| test               |
| test_mysql         |
+--------------------+

4、删除数据库

语法:drop database <数据库名>;

drop删除数据库命令谨慎使用,一旦删除,所有数据都没有了。以下示例:删除一个库名为test的数据库。

mysql> drop DATABASE test;

5、选择数据库

语法:use <数据库名>;

示例:选取数据库lemon进行操作。

mysql> use lemon;
Database changed

6、创建表

语法:create table <表名> ( <字段名1> <类型1>,<字段名2> <类型2>, ...,<字段名n> <类型n>);

示例:需要创建一个学员信息表,用于存储学号、姓名、性别、班级、年龄。

create table student(
   sno int(8) not null primary key auto_increment comment '学号',
   sname varchar(20) NOT NULL comment '姓名',
   ssex varchar(4) NOT NULL comment '性别',
   sclass int(8) NOT NULL comment '班级',
   sage int(4) NOT NULL comment '年龄'
)DEFAULT CHARSET=utf8;

解析:

int为整型,这里学号sno、班级编号sclass设定为整型;

varchar字符型,这里姓名sname、性别ssex、年龄sage设定为字符型;

字段属性设定为not null,表示字段值不允许空;

primary key关键字用于定义列为主键。主键唯一、不重复,一般以编号为主键;

auto_increment定义列属性为自增,一般用于主键,插入数据时数值会自动加1;

comment相当于给列添加备注;

DEFAULT CHARSET 设置编码,utf8对传值中文防止乱码。

7、显示数据表

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| student        |
| student1       |
+----------------+

8、查看表结构

mysql> desc student;
+--------+-------------+------+-----+---------+----------------+
| Field  | Type        | Null | Key | Default | Extra          |
+--------+-------------+------+-----+---------+----------------+
| sno    | int(8)      | NO   | PRI | NULL    | auto_increment |
| sname  | varchar(20) | NO   |     | NULL    |                |
| ssex   | varchar(5)  | NO   |     | NULL    |                |
| sclass | int(8)      | NO   |     | NULL    |                |
| sage   | int(4)      | NO   |     | NULL    |                |
+--------+-------------+------+-----+---------+----------------+

9、删除表

语法:drop table <表名>;

drop删除表请谨慎操作,因为执行删除命令后该表及包含的数据都会消失。以下示例:删除一个表名为student的数据表。

mysql> drop table student;

10、插入表数据

语法:insert into <表名> ( 字段名1,字段名2,...字段名N)
                       values
                       ( 值1, 值2,...值N );

示例:

  1. 往学员信息表中插入一条学员信息

insert into student (sno,sname,ssex,sclass,sage) values (6301,'柠檬','女',20190163,18);

注意:如果数据值为字符型必须用单引号或者双引号括起来。

  1. 批量插入,插入多条学员信息

insert into student (sname,ssex,sclass,sage)
                    values
                    ('毛毛','女',20190163,20),('大大','女',20190163,22);

11、修改表数据

语法:update 表名 set 字段名1= 新值1,字段名2=新值2, … where 条件表达式1 and(or)  条件表达式2 …;

示例:修改学员姓名为毛毛的性别为男

update student set ssex = '男' where sname = '毛毛';

12、查询单表数据

语法:select 字段名1,字段名2,… from  <表名>  where  条件表达式1 and(or) 条件表达式2  … ;
  1. 查询所有字段列信息

示例:查询student表中,性别女且年龄在20岁以上的学员信息

select * from  student where  ssex = '女' and sage > 20;
  1. 查询指定字段列信息

示例:查询student表中,性别女或者年龄在20岁以上的学员姓名

select sname from student where ssex = '女' or sage > 20;
  1. 查询前几行信息

示例:查询student表中,性别女且年龄在20岁以上的前2行学员信息

select sname from student where ssex = '女' and sage > 20 limit 0,2;

13、查询多表关联数据

语法:
1. 关联查询:select 字段名1,… from 表名1,表名2,…where  关联条件表达式 and 过滤条件表达式 …;
2. 等值连接:select 字段名1,… from 表名1 inner join 表名2 on 关联条件表达式 and 过滤条件表达式… ;
3. 左连接:select 字段名1,… from 表名1 left join 表名2 on 关联条件表达式 and 过滤条件表达式… ;
3. 右连接:select 字段名1,… from 表名1 right join 表名2 on 关联条件表达式 and 过滤条件表达式… ;

示例: image.png

  1. 以上左表user表,右表为左表的对象信息user_lover表,查询两表中存在对象关系的信息

SELECT * FROM `user`, user_lover WHERE `user`.id = user_lover.u_id;
SELECT * FROM `user`INNER JOIN user_lover on `user`.id = user_lover.u_id;

运行结果:

image.png
  1. 读取左表全部数据,即使右表没有关联数据

SELECT * FROM `user`LEFT JOIN  user_lover on `user`.id = user_lover.u_id;

运行结果:

image.png
  1. 以右表为基础,与LEFT JOIN相反

SELECT * FROM `user` RIGHT JOIN user_lover on `user`.id = user_lover.u_id;

运行结果:

image.png

14、删除表数据

语法:delete from 表名 where 条件1 and(or) 条件2……;

示例:删除student表中年龄小于18岁的用户信息

delete from student where sage < 18;

15、mysql学习教程

mysql官网:https://dev.mysql.com/doc/

runoob.com:https://www.runoob.com/mysql/

w3cschool:https://www.w3cschool.cn/mysql/

来源:testingpai

继续阅读