SQL测试必备命令和语法教程在这儿!


【写在前面】
哈喽,这里是「夏末初临」。 

作为一名测试工程师,我的日常工作就是点点点,偶尔也要跟数据库打交道。

如果你想要从事测试行业,熟练掌握SQL语句是必备技能

很多企业HR坚定立场“不会SQL,我们不要”,可以这么说,SQL直接关系到你是否能够通过面试

好了,接下来夏末初临给胖友们整理一篇SQL语法教程。

MySQL,SQL语句,命令语法,SQL面试

 01   连接数据库

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

[root@localhost ~]# mysql -u root -pEnter password;

02.退出MySQL

mysql > exitBye

 02   创建数据库
01.语法:先连接MySQL服务后,再使用 SQL 语句。可以通过命令连接也可以通过客户端工具例如 navicat 连接。

CREATE DATABASE <数据库名>;

02.例子:创建一个库名为 school 的数据库。

mysql > create DATABASE school;

 03   显示数据库
01.语法

show databases;

02.例子:查看MySQL服务所有数据库

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

 04   删除数据库
01.语法:drop 删除数据库命令谨慎使用,一旦删除,所有数据都没有了。

drop database <数据库名>;

02.例子:删除一个库名为 test 的数据库。

mysql> drop DATABASE test;

 05   选择数据库
01.语法

use <数据库名>;


02.例子:选取数据库 test 进行操作。

mysql > use test;Database changed

 06   创建表

01.语法

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

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

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 '班级';  age 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 对传值中文防止乱码。 07   显示数据表

01.语法

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

 08   查看表结构

01.语法

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    |                |+--------+-------------+------+-----+---------+----------------+

 09   删除表

01.语法:drop 删除表请谨慎操作,因为执行删除命令后该表及包含的数据都会消失。

drop table <表名>;   

02.例子:删除一个表名为 student 的数据表。

mysql> drop table student; 


 10   插入表数据

01.语法:drop 删除表请谨慎操作,因为执行删除命令后该表及包含的数据都会消失。


insert into <表名> (字段名1,字段名2,……字段名N)
                  values
                  (值1,值2,……值N);

02.例子:往学员信息表中插入一条学员信息


insert into student (sno,sname,ssex,sclass,sage) values (6301,'夏末初临','女',2000163,18);  

在这里呢,我们要注意如果数据值为字符型,必须用单引号或者双引号括起来哦。

02.例子2:批量插入,插入多条学员信息


insert into student (sname,ssex,sclass,sage)
                   values
                   ('夏末初临','女',20000163,18),('阿绪','女',20000163,20);

 11   修改表数据

01.语法


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

02.例子:修改学员姓名为阿绪的性别为男


update student set ssex = '男' where sname = '阿绪';


 12   查询单表数据

01.语法


select 字段名1,字段名2,… from  <表名>  where  条件表达式1 and(or) 条件表达式2  … ;

02.查询所有字段列信息

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


select * from  student where  ssex = '女' and sage > 18;

03.查询指定字段列信息

查询 student 表中,性别女或年龄在 18 岁以上的学员信息


select sname from student where ssex = '女' or sage > 18;

04.查询前几行信息

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


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

 13   查询多表关联数据

01.语法


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 过滤条件表达式… ;

02.例子:查询两表中存在对象关系的信息

用户信息表user

idu_nameage
1杨紫1992
2王源2000
3肖站1991
4胡歌1982

用户对象信息表user_lover

idu_idlover_name
11赵丽颖
24杨颖
35孙俪
49王一博
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;

例子:读取左表全部数据,即使右表没有关联数据

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

 14   查询表数据

01.语法

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

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

delete from student where sage < 18;

“日常督促自己”
软件测试不是点点点页面这样简单,也不是没有技术含量,测试工程师有自己的价值。如果你一直停留在手工测试,那么薪资就不会往上涨了,随着35岁的推进,甚至会面临失业危机。
MySQL是软件测试工程师必备技能,除了需要掌握基础的“增删改查”操作,还要掌握各种条件的使用方法。

(本文完)