数据库基本增删改查语法和多表接查的方式

数据库的基本操作

数据定义语句(DDL):定义和管理数据对象,如数据库,数据表等。

创建库

Create database 库名;

查看库

Show databases;

删除库

Drop database 库名;

使用库

Use 库名;

查看库中的表

Show tables;

创建表

Create table 表名(

字段名 数据类型 属性,

字段名 数据类型 属性

DML数据操作语言

增加数据(insert)

Insert into 表名(字段名。。字段名)values(值1,值2)()()

Insert into  select 查询表和插入表都要存在

Insert into 插入表 select 字段名…字段名 form 查询表

Create table 表名 select 查询表存在 插入表不存在

Create table 表名 select 字段名…字段名 form 查询表

修改数据(update)(修改必须要加条件)

Update 表名 set 字段名=值,…..,字段名=值,where 子句【条件】

不加where整张表修改

删除数据(delete)

Delete form 表名 where 子句【条件】

Delete form 表名 删除整表

Delete from 表名 where 子句 【条件】

Delete 不能清楚 主键自增的序号

清空表:

Truncate 表名 将整张表的数据还有索引值【主键的自增】全部清空,保留表结构

DQL数据查询语言

Select *|字段名,….字段名 from 表名

Select 表别名.字段名1 as 字段别名1,表别名.字段名2 as 字段别名2,from 表名 as 表别名

注意:

“.”当前表存在的字段;

As 可以忽略不写,as的功能:给字段去一个新别名;给表一个新别名

Select distinct *|字段名,….字段名 from 表名 去除重复的数据

Select *|字段名,….字段名 from 表名 where 子句【条件】

Like 模糊查询

模糊符号%任意多的任意字符

模糊符号 _一个任意字符

前模糊%key 后模糊key% 前后都模糊%key%

Select *|字段名,….字段名 from 表名 where sname %xx%

In 在某个特定范围内

Select *|字段名,….字段名 from 表名 where id in (1,2,3,5,75)

查询null

Select *|字段名,….字段名 from 表名 where id is null

Select *|字段名,….字段名 from 表名 where id is not null

聚合函数:

count()统计个数 不统计null

聚合数值

Sum() 总和

max() 最大值

min() 最小值

avg() 平均值

select count(1) 次数, sum(score) 总成绩,

max(score) 最高分, min(score) 最低分, avg(score) 平均分 from 表名

分组(group by):

select *|字段名,….字段名 from student group by 字段名;

Having

-- 每个学生总成绩( 总成绩 大于200分,只统计 成绩高于60分)

-- where 后的筛选是针对表中的每一条数据进行

-- having  筛选 分组之后的数据进行筛选 having 不能单独出现必须要有group by

select sid, sum(score) from sc

where score > 60 group by sid  having sum(score) > 200

Limit 分页 limit 数值【获取多少个】limit 【位置】,数值【步长】

Select *|字段名,….字段名 from 表名 limit

select * from student limit 3 offset 1   -- mysql8

分页公式(页码-1)*步长,步长

高级DQL:

-- 内联查询

select * from student,class,sc where class.classid = student.classid and student.Sid = sc.Sid

-- 内联查询(inner join on)

inner join on

select * from student

inner join class

on student.classid = class.classid

inner join sc

on student.Sid=sc.Sid

-- 外联查询 谁是主表,谁是从表

-- 左外联

left join on

-- 所有的学生信息和对应的班级信息

select * from student left join class

on student.classid=class.classid

-- 右外联

right join on

select * from class right join student

on class.classid = student.classid

-- 查询两个集合并集

union 

-- 1.数据类型不同可以进行合并 2.两个集合的列数要一致 3.表头是第一个集合的信息 4.union会去除重复

select Sname,Ssex from student

union

select Tname,Tsex from teacher

-- 子查询 在查询中又有一个查询

-- 所有子查询都需要小括号括起来

-- 查询id最大的学生

select * from student order by student.Sid desc limit 1

-- where 子查询

select * from student where Sid=(select max(Sid) from student)

-- from 子查询

select * from class

select count(Sid) from student group by classid

select * from class

left join (select classid,count(Sid) 人数 from student group by classid) t

on class.classid=t.classid

where 人数 > 3

-- exists 子查询 字句有数据 父句执行 字句没有数据 父句不执行

-- 如果学生表中有男同学则查询出所有的老师

select * from teacher where exists (select * from student where Ssex = '男')

-- any some 子查询

Select …from…where a>any/some(…);

相当于

Select …from…where a>r1 or a>r2….a>rn

all子查询:

Select …from…where a>all(…);

相当于

Select …from…where a>r1 and a>r2… and a>rn

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值