博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

3、数据操作、数据查询

内容:

数据库操作 create drop

数据表操作 create drop alter rename as

查看表: show tables

查看表结构: desc 表名

字段的操作 modify 

添加字段: alter table 表名 add 字段名 类型

删除字段  alter table 表名 drop 字段名

修改字段:  alter table 表名 modify 字段名 新的数据类型

 alter table 表名 change 旧字段名 新字段名 新的数据类型

 

改表名: alter table 表名 rename as 新表名

约束的设置  外键 foreign key (bid) references book(bid)

索引 create index 索引名 on 字段名

创建表时设置约束:

Create table 表名(

字段名 类型 primary key auto_increment,

字段名 类型  unique not null,

字段名 类型 default 默认值,

字段名 类型,

Foreign key (字段名) references 另外一张表名(主键字段名)

)

 

修改表添加约束:

1、适用于主键、唯一键、非空、默认

Alter table 表名modify 字段名 类型 约束关键词

1、使用外键、主键、唯一键

Alter table 表名 add Foreign key (字段名) references 另外一张表名(主键字段名)

 

删除约束

删除主键: Alter table 表名 drop primary key

删除外键: Alter table 表名 drop Foreign key 约束名

删除唯一键: Alter table 表名 drop index 约束名

删除非空和默认: alter table 表名 modify 字段名 新的数据类型 [写上需要保留的约束]

 

Sql

DDL:用来定义和管理数据库对象 create drop alter

DML:数据操作语言,用来操作数据库对象中的数据

Insert (添加数据)

Delete(删除数据)

Update(修改数据)

DQL:查询数据 select

常见报错信息:

 

因为插入的外键值不符合外键约束

 

Newsid的值不能为空

 

Column count :字段数量

doesn't match 不匹配

value count   值得数量

一定要注意:添加数据时,值列表和字段列表一一对应

代码:

use newsdb

show tables

创建学生表

create table student (

sid int primary key auto_increment,

sname varchar(20),

sex varchar(20),

lilun double,

jineng double,

birthday datetime,

age int ,

cid int

)

添加/录入数据

不指定字段

insert into student values(0,'刘亚帅','',90,89,'1999-10-01',20,1)

insert into student values(0,'刘徐泽','',90,89,'1999-10-01',20,1)

 

指定字段:

insert into student(sname,lilun,jineng,birthday,cid) values('田晓峰',100,80,'1997-08-08',2)

批量添加:

insert into student values(0,'徐泽浩','',59,100,'1995-11-11',26,1)

,(0,'徐泽浩02','',89,19,'1998-11-11',26,1)

,(0,'徐泽浩03','',96,98,'1996-11-11',22,2)

,(0,'徐泽浩04','',99,93,'1995-11-11',23,1)

查看: select * from student

 

修改数据: update 表名  set 字段名=,字段名=,字段名=[where 字段 关系运算符 值]

需求: 修改学号为2的学生性别为女,理论分99,技能分97

update student set sex='',lilun=99,jineng=97 where sid=2

update student set jineng=90

删除数据: delete from 表名 [where 字段 关系运算符 值]

 

需求: 删除姓名为徐泽浩2的学生信息

delete from student where sname='徐泽浩02'

delete from student  #慎用,会删除表中全部数据

####################各种查询########################################

查询起别名:只是查询的时候起别名并不会修改表结构

select * from student

只查询姓名性别,并且起别名 as 可省略: select sname as 姓名,sex 性别 from student

 

条件查询是通过WHERE子句进行检索的查询方式

查询编号为1的学生信息 : select * from student where sid = 1

 

多条件查询是利用逻辑运算符把多个条件组合起来的条件查询

查询姓名是田晓峰,性别是男的学生信息: select * from student where sname='田晓峰' and sex=''

 

in查询符合括号内条件的数据:

查询学号是234的学生信息:   select * from student where sid in (2,3,4)

 或者: select * from student where sid =2 or sid =3 or sid =4

 

区间查询: 字段名 between 1 and 2

需求:查询年龄再18~25之间的学生信息

select * from student where age >=18 and age <=25

或者:

select * from student where age between 18 and 25

 

增加数据: insert into 表名[(字段列表)] values(值列表)

删除数据:  delete from 表名 where 条件

修改数据:  update 表名 set 字段=,字段=值  where 条件

查询数据 :

基本查询: select * from 表名

条件查询: select * from 表名 where 字段 关系运算符 值

多条件查询: select * from 表名 where 字段 关系运算符 值   逻辑运算符  字段 关系运算符 值

 

模糊查询:

模糊查询是使用SQL 通配符替代一个或多个字符的条件查询

SQL通配符:

_ : 代表一个字符  where 字段 like 'ab_'   字段的值必须是三个字符而且以AB开头

%:代表任意个字符 where 字段 like 'ab%' 字段的值必须是以ab开头

 

需求:查询学生表中学生姓名包含‘徐泽’的学生信息

select * from student where sname like '%徐泽%'

需求:查询学生表中学生姓名以‘徐泽’开头的学生信息

select * from student where sname like '徐泽%'

查询学生表中田某某的学生信息

select * from student where sname like '__'

 

需求:查询姓名包含晓并且性别是男的学生信息

select * from student where sname like '%%' and sex=''

 

去重查询:  distinct 去掉SELECT查询返回的记录结果中重复的记录, 相同记录只返回一条

需求:查询学生表中所有的班级编号

select distinct cid from student

 

排序查询: order by 字段 asc|desc(降序)  : 一组数据按照升序或降序排列

需求: 查询所有学生信息,并且根据理论分降序排序

select * from student order by lilun desc

需求: 查询名字包含泽的学生信息并且按照出生日期升序排序

select * from student where sname like '%%' order by birthday

 

分页查询:limit MySQL查询语句中使用LIMIT子句限制结果集

语法: limit [1,]2

1:索引值,索引从0开始

2:代表查几条

 

需求: 查询学生表中学生信息,从第3条开始查询,查3

select * from student limit 2,3

 

需求:查询学生表中学生信息,从第4条开始查询,查到6

select * from student limit 3,3

 

需求: 查询学生表中学生信息,每页展示5条,查询第五页

查询的前4页已经展示了4*5=20条,那么第5页从21条开始查,下标就是20

select * from student limit 20,5

 

null查询: 查询性别是空的学生信息

select * from student where sex is null

 

null查询: 查询性别不是空的学生信息

select * from student where sex is not null

 

查询田晓峰的性别、生日、年龄

select sex,birthday,age from student where sname='田晓峰'

 

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

count() : 查询总记录数

sum() : 查询某一组数据的和

avg() : 平均值

max() : 最大值

min() : 最小值

 

需求:

查询学生表中的记录数: select count(*),count(0),count(sid) from student where sex=''

查询学生表中理论总分: select sum(lilun),avg(lilun),max(jineng),min(lilun) from student

 

需求: 查询最近出生的日期   select max(birthday) from student

查询最近出生的一条学生信息

方式一: select * from student where birthday = (select max(birthday) from student)

方式二: select * from student  order by birthday desc limit 1

 

分组查询: group by 字段   分组查询是按照指定的字段分类汇总结果的查询方式 

需求: 查询每个班有多少人

先查询班级编号是1的学生数量: select count(*) from student where cid=2

 

再转换为分组: 查询每个组的: select cid,count(*) from student group by cid

 

需求: 查询每个班的理论最高分: select max(lilun) from student where cid=1

select cid,max(lilun),min(lilun),max(jineng) from student group by cid

 

需求:查询班级分数大于3人的班级编号和班级人数

 

需要先直到每个班多少人: select cid,count(*) from student group by cid

在查人数大于3人的 : 分完组之后过滤使用having

select cid,count(*) from student group by cid having count(*)>3

 

总结:

增加语法: insert into 表名[(字段列表)] values(值列表)

删除语法: delete from 表名 where 条件

修改语法: update 表名 set 字段=,字段=where 条件

查询:

基本查: select * from 表名

条件查: select * from 表名 where 字段 =

多条件查: select * from 表名 where 条件1 逻辑运算符 条件2

区间查询: select * from 表名 where 字段 between 1 and 2

排序查询: select * from 表名  [where 条件]  order by 字段 asc|desc

模糊查询: select * from 表名 where 字段 like %_

聚合函数:

count() :

Sum(字段)

Max(字段)

Min(字段)

Avg(字段)

in查询: select * from 表名 where 字段 in (值列表)

Null查询: select * from 表名 where 字段 is notnull

分页查询: select * from 表名 [where 条件] limit [1,]2

分组查询 select 字段,聚合函数 from group by 字段

posted @ 2021-07-12 14:44  CHANG_09  阅读(165)  评论(0)    收藏  举报