创建数据表
create table 表名(
字段名1 类型 约束,
字段名2 类型 约束,
)
在新建查询里面,用命令行的方式创建表,这样会有提示,有错的话,方便后面检查
选中要运行的代码-》点击上方的“运行已选择的”-》下方出现OK,表示运行成功
如图所示,成功创建students表
删除表
//删除数据表
drop table students;
drop table if exists students;
练习一(创建表,删除表,插入数据,简单查询数据)
//创建一个成绩表,姓名(长度为10),班级(长度为8),科目(长度为56),成绩(保留两位小数)
create table score(
name varchar(10),
class varchar(8),
subject varchar(56),
result decimal(4,1)
);
insert into score values('Mike','六班','语文','59');
insert into score(name) values('Jane');
select * from score;
drop table score;
drop table if exists score;
一些操作数据库,表的命令
功能 | 命令 |
---|---|
查看所有数据库 | show databases |
使用数据库 | use 数据库名 |
查看当前使用的数据库 | select database() |
创建数据库 | create database 数据库名 charset=utf-8 |
删除数据库 | drop database 数据库名 |
查看数据库所有的表 | show tables |
查看数据表的结构 | desc 表名 |
查看数据表的创建语句 | show create table 表名 |
添加多行数据
//通过一条insert语句,插入多条数据,数据间用逗号分隔
insert into 表名 values(0,'Bill',25,158.56),(0,'kill',21,168.56)
insert into 表名(字段名1,...)values(值1,...)
修改数据
update 表名 set 字段名1=值1,字段名2=值2,... where 条件
PS:修改数据时一定要记得加条件,不然修改的是所有记录的值
删除数据
//这个方法是物理删除对应的数据,工作中大部分使用逻辑删除。
//所谓逻辑删除是指通过设定一个字段来标识当前记录已删除,is_delete字段来标识,1表示删除,0标识未删除
delete from 表名 where 条件
delete from students where id=6
//其他删除数据的方法,这个方法用得少,一般直接用drop table 表名,这样删的彻底点,效率高
truncate table 表名(清除表里面所有数据,但是表结构会保留,自增长字段的值会从1开始)
truncate table students;
练习二(添加多条数据,修改数据,删除数据)
通过一条SQL语句在成绩表中新增以下三条数据
– 张三,一班,语文,89.5
– 李四,二班,数学,66.3
– 王五,三班,英语。78.6
将成绩表中李四的数学成绩改为97
删除学生为王五的记录
数据查询
数据准备
//查询部分字段数据
select 字段1,字段2,... from 表名
//起别名
select 别名.字段1,别名.字段2,... from 表名 as 别名
select 字段1 as 别名1,字段2 as 别名2,... from 表名
//去重
select distinct 字段1,... from 表名
/*
条件查询
where支持多种运算符进行条件处理
比较运算
逻辑运算
模糊查询
范围查询
空判断
*/
select 字段1,字段2,... from 表名 where 条件;
查询某些字段
起别名 表名 as 表别名
字段内容去重
练习三(条件查询-比较运算符)
查询小乔的年龄
查询20岁以下的学生
查询家乡不在北京的学生
查询学号是‘007’的学生的身份证号
查询‘1班’以外的学生信息
查询年龄大于20的学生的姓名和性别
练习四(条件运算符-逻辑运算符)
查询年龄小于20的女同学
查询女学生或者‘1班’的学生
查询非天津的学生
查询河南或河北的学生
查询’1班’的‘上海’的学生
查询非20岁的学生
练习五(条件查询-模糊查询)
关键字:like
%:匹配任意多个字符
_:匹配一个任意字符
查询姓孙的学生
查询姓孙且名字是一个字的学生
查询姓名以‘乔’结尾的学生
查询姓名中包含‘白’的学生
查询姓名为两个字的学生
查询姓‘百’且年龄大于20的学生
查询学号以1结尾的学生
练习六(条件查询-范围查询)
in:表示在一个非连续的范围内
between...and...:表示在一个连续的范围内
查询家乡是北京或上海或广东的学生
查询年龄为18至20的学生
查询年龄为18或19或22的女生
查询年龄在20到25以外的学生
练习七(空判断)
判断为空:is null
判断非空:is not null
查询没有填写身份证的学生
查询填写了身份证的学生
空字符和null,两者不一样
排序
语法格式
select * from 表名 order by 字段名1 asc|desc,字段名2 asc|desc,...
说明:
将行数据按照字段1进行排序,如果某些字段1的值相同时,则按照字段2排序,以此类推;
默认按照值从小到大排列;
asc从小到大排列,即升序;
desc从大到小排序,即降序
查询所有学生信息,按年龄从小到大排序
查询所有学生信息,按年龄从大到小排序,年龄相同时,按学号从小到大排序
查询所有学生信息,按班级从小到大排序,班级相同时,再按学号从小到大排序
练习八(聚合函数)
1、使用聚合函数方便进行数据统计
2、聚合函数不能在where中使用
count():查询总记录数
max(字段名):查询最大值
min(字段名):查询最小值
sum(字段名):求和
avg(字段名):求平均值
查询学生总数
因为不管查询那个字段,出来的结果都是12个,所以这边可以直接用*表示查询所有的
查询女生的最大年龄
查询1班的最小年龄
查询北京学生的年龄总和
查询女生的平均年龄
查询所有学生的最大年龄,最小年龄,平均年龄
一班一共有多少个学生
查询3班年龄小于18岁的同学有几个
练习九(分组查询)
按照字段分组,此字段相同的数据会被放到一个组中;
分组的目的是对每一组的数据进行统计(使用聚合函数);
语法格式:
select 字段1,字段2,聚合函数... from 表名 group by 字段1,字段2...
分组后的数据筛选
语法格式:
select 字段1,字段2,聚合... from 表名 group by 字段1,字段2,...having
说明:关键字having后面的条件运算符与where相同
//having与where的区别
1.where是对from后面指定的表进行数据筛选,属于对原始数据的筛选
2.having是对group by的结果进行筛选
3.having后面的条件中可以使用聚合函数,where后面不可以
查询各种性别的人数
查询每个班级中各种性别的人数
查询男生总人数
查询所有班级中不同性别的记录数大于1的信息
查询各个班级学生的平均年龄,最大年龄,最小年龄
查询1班除外其他班级学生的平均年龄,最大年龄,最小年龄
练习十(分页-获取部分数据)
使用场景:用来获取一部分的数据或者用来分页
语法格式:
select * from 表名 limit start,count
说明:
从start开始,获取count条数据;
start索引从0开始
select * from 表名 limit (n-1)*m,m
n:表示的是显示第几页的数据
m:表示每页显示多少条数据
查询前3行学生信息
查询第4行到第6行学生信息
每页显示5条数据,显示每一页的数据
已知总记录数和每页显示条数,求总页数
– 总数为12,每页显示3个数据,12/3=4页
– 总数为12,每页显示5个数据,12/5,取商加1