【写在前面】
哈喽,这里是「夏末初临」。
作为一名测试工程师,我的日常工作就是点点点,偶尔也要跟数据库打交道。
如果你想要从事测试行业,熟练掌握SQL语句是必备技能。
很多企业HR坚定立场“不会SQL,我们不要”,可以这么说,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
id | u_name | age |
---|---|---|
1 | 杨紫 | 1992 |
2 | 王源 | 2000 |
3 | 肖站 | 1991 |
4 | 胡歌 | 1982 |
用户对象信息表user_lover
id | u_id | lover_name |
---|---|---|
1 | 1 | 赵丽颖 |
2 | 4 | 杨颖 |
3 | 5 | 孙俪 |
4 | 9 | 王一博 |
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是软件测试工程师必备技能,除了需要掌握基础的“增删改查”操作,还要掌握各种条件的使用方法。
(本文完)