MySQL数据库增删改排查

1INSERT插入数据

语法格式:

INSERT [INTO]

表名 [字段名]

VALUES (值列表);

示例 :向学生表中插入一行数据

第一种:

insert into students (id,name,age,height,gender,cls_id,is_delete)

values (0,'小明',18,180.00,2,1,0);

第二种:

insert into students values (0,'小明',18,180.00,2,1,0);

运行结果:

(select * from students;是查询语句,这里用于检验数据是否被写入表中)

向学生表中插入多行数据:

insert into students (id,name,age,height,gender,cls_id,is_delete)

values (2,'佩奇',8,130.00,2,1,0),(3,'超人',36,180.00,1,2,0);

运行结果:

2删除数据

2.1delete删除数据

语法格式:

DELETE FROM 表名

[WHERE条件];

示例:删除id是1的学生的数据

delete from students where id = 1;

运行结果:

2.2truncate删除数据

语法格式:

TRUNCATE TABLE 表名;

示例:删除学生表中的数据 

truncate table students;

  运行结果:

可以看见表students为空,truncate删除的是表中数据,但表还在。

3修改数据

UPDATE 表名 SET 字段1=值1,

字段2=值2,…,字段n=值n

[WHERE 条件];

示例:将年龄为8,体重为130的学生姓名改为Lily

update students set name='Lily' where age=8 and height=130;

运行结果:

4查询数据

4.1select基本查询语句

语法格式:

SELECT 列名 FROM 表名;

示例:查询所有学生信息

select * from students;

运行结果:

4.2where条件查询

语法格式:

SELECT 列名

FROM 表名

WHERE 条件

示例:查询id为1学生的姓名,性别

select name,gender from students where id=1;

运行结果:

4.3where多条件查询

语法格式:

SELECT 列名

FROM 表名

WHERE 条件 运算符 条件

示例:查询id为1或者为3的 学生 姓名,性别

select name,gender from students where id=1 or id=3;

运行结果:

4.4like模糊查询

语法格式:

SELECT 列名

FROM 表名

WHERE 字段

LIKE '值'

like值后的通配符如下

-

示例:查询名字里面包含'小'的学生的信息

select * from students where name like '小%';

运行结果:

4.5IN关键字查询

语法格式:

SELECT 列名

FROM 表名

WHERE 字段

IN (值1,值2,....);

示例:查询id为1,5,6,10的学生的信息

select * from students where id in (1,5,6,10);

运行结果:

还有NOT IN查询

示例:查询班级不是1或2的学生的信息

 select * from students where cls_id not in (1,2);

运行结果:

4.6BETWEEN关键字查询

语法格式:

SELECT 列名

FROM 表名

WHERE 字段

BETWEEN 值1 and 值2;

示例:查询身高在170到180的学生的信息

select * from students where height between 170 and 180;

运行结果:

4.7DISTINCT关键字查询【用于去重】

语法格式:

SELECT DISTINCT

字段名1,字段名2......

FROM 表名;

示例:在students中查找重复的性别

select distinct gender from students;

运行结果:

4.8ORDER BY关键字查询

SELECT <字段名列表>

FROM <表名>

[WHERE ] <查询条件>

[ORDER BY <排序的列名>

[ASC 或 DESC]];

(asc和desc用于降序排列)

示例:将学生的身高按照升序排列

select * from students order by height;

运行结果:

降序示例:将学生的身高按照降序排列

select * from students order by height desc;

运行结果:

4.9LIMIT关键字查询

SELECT <字段名列表>

FROM <表名>

[WHERE ] <查询条件>

[ORDER BY <排序的列名>

[ASC 或 DESC]];

[LIMIT  <行数>];

示例:只看前3条学生的信息

select * from students limit 3;

运行结果:

4.10连接查询

连接查询是将多张表中记录按照指定的条件进行连接的查询方式

注意:连接查询涉及到两个表以上,在查询的时候至少要有一个必备的连接条件,这个必备的条件就是两个表共有的那个字段相等,而且这个字段一定在一个表里是主键,在另一个表里是外键,

下图中teacher_id在classes表中是外键,id在teachers表中是主键

连接查询包含内连接和外连接查询

4.10.1内连接

内连接是返回连接表中符合连接条件记录的连接查询。

包括:显式内连接、隐式内连接

4.10.1.1显式内连接查询

语法格式:

SELECT 字段 FROM 表1

INNER JOIN 表2

ON 连接条件

[WHERE 条件]

示例:查看老师所在班级

 select t.name,c.name from teachers t inner join classes c on t.id=c.teacher_id;

运行结果:

4.10.1.2隐式内连接查询

语法格式:

SELECT 字段

FROM 表1,表2

WHERE 表1.条件=表2.条件

示例:查看老师所在班级

 select t.name,c.name from teachers t,classes c where c.teacher_id=t.id;

运行结果:

4.10.2外连接

4.10.2.1左外连接查询

左外连接是以左表为基表,返回左表中所有记录及连接表中符合条件的记录的外连接

语法格式:

SELECT 字段 FROM 表1

LEFT [outer] JOIN 表2

ON 连接条件

[WHERE 条件];

示例:查看老师所在班级

 select t.name,c.name from classes c left join teachers t on c.teacher_id=t.id;

运行结果:

4.10.2.2右外连接查询

右外连接是以右表为基表,返回右表中所有记录及连接表中符合条件的记录的外连接。

语法格式:

SELECT 字段 FROM 表1

RIGHT [outer] JOIN 表2

ON 连接条件

WHERE 条件

示例:查看老师所在班级

 select c.name,t.name from classes c right join teachers t on c.teacher_id = t.id;

运行结果:

5.聚合函数

聚合函数是可以对一组值进行计算,并返回单个值的函数。

常见的函数类型:

  1. count()-计数
  2. sum()-求和
  3. max()-最大值
  4. min()-最小值
  5. avg()-平均值

语法格式:

SELECT 聚合函数

FROM 表名

[WHERE 条件]

[GROUP BY 聚合函数]

示例:查询班级学生的平均身高

select avg(height) as '平均身高' from students;

运行结果:

示例:显示每个班级学生的平均身高

 select cls_id,avg(height) as'平均身高' from students group by cls_id;

运行结果:

6.子查询(查询嵌套)

6.1简单子查询

示例:查看刘亦菲同学的所在班级的所有同学

 select * from students where cls_id =
   (select cls_id from students where name = '刘亦菲');

运行结果:

6.2 ANY/SOME子查询

示例:查看赵老师所带的学生信息

select * from students where cls_id =
 any(select id from classes where teacher_id = 
(select id from teachers where name='赵老师'));

运行结果:

6.3 All子查询

示例:查看赵老师不在的班级中的学生信息

select * from students where cls_id >
all(select id from classes where teacher_id = 
(select id from teachers where name='赵老师'));

运行结果:

6.4 EXISTS子查询

示例:查看存在王老师的班级表

select * from classes where exists 
(select * from teachers where name='赵老师');

运行结果:

6.5 NOT EXISTS子查询

示例:创建教师表

create table IF NOT EXISTS teachers(
    id int primary key,
    name varchar(20)
);

运行结果:

因为我的库里存在teachers表,所以这里不会再创建一个教师表。

避免重复创建

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值