Appearance
Mysql
mysql
查看所有数据库:a(少写了可以后面补)
使用数据库:use数据库名;
查看当前使用的数据库:select database();
创建数据库:creat database 数据库名 charset=utf8;
删除数据库:drop database 数据库名;
drop table if exists 表名;
(操作数据表之前要先通过use打开对应的数据库)
常见数据表操作命令:查看当前数据库所有的表:show tables;
查看表结构:desc表名;
查看表的创建语句:show creat table 表名;
创建数据库表:格式:creat table 表名(
字段名1 类型 约束,
字段名2 类型 约束,
... ... ...
);
例:
创建学生表,要求:年龄姓名(长度为10),年龄,身高(保留2位小数)
creat table students(
id int unsigned primary key auto_increment,
name varchar(20),
age int unsigned,
height decimal(5,2)
);
格式如下: --英文逗号
insert into 表名 values (...),(...) 例:(0,'小明',22,168)
insert into 表名 (字段1,字段2,...)values(值1,值2,...)(值1,值2,...)
// 修改数据
格式:
update 表名 set 字段名1=值1,字段名2=值2 ...where 条件
例:
修改id为5的学生数据,姓名改为小红,年龄改为20岁
update students set name ='小红',age=20 where id =5
// 删除数据
delete from 表名 where 条件(物理删除,不用)
例:delete from students where id=1; --删除第一行
常用逻辑删除:通过设定一个字段来标识当前记录已经删除
truncate table 表名--(只删数据)
drop table 表名 --(删除所有数据和表结构)
说明:
delete --删除数据时,若新增数据,新增数据的id是删除的id号的后一个
truncate --删除数据后,若新增数据,是从id=1开始的
格式:select 字段1,字段2,...from 表名 where 条件;
说明:where 支持多种运算符进行条件处理
比较运算:=、>、>=、<、<=、!=
逻辑运算:and、or、not
模糊查询:关键字like、匹配任意多个字符%、 匹配一个任意字符:-
范围查询:连续范围内between、非连续范围in
空判断:判断为空is null、为非空is not null
例:
1、查询家乡是北京/南京/新疆的学生:
select * from 表名 where hometown in ('北京','南京','新疆');
2、查询年龄为18-20岁的学生:
select * from 表名 where age between 18 and 20;
格式:
select * from 表名 order by 字段名1 ase/desc,字段名2 ase/desc,...;
说明:ase:升序(默认可以不写) desc:降序
例:查询所有学生信息,按年龄从小到大排序,年龄相同时,再按学号从小到大排:
select * from 表名 order by age,studentsNo;
聚合函数作用:方便进行数据统计 --注!不能在where中使用!!!
count()--查询总记录数
例:
1、查询学生总数:
select count(*)from students;
2、查询1班年龄小于18岁的同学有几个:
select count(*)from students where class='1班' and age<18;
max(字段名):--查询最大值
例:
查询女生的最大年龄:
select max(age)from st where sex='女';
min(字段名):--查询最小值
sum(字段名):--求和
avg(字段名):--求平均值
例:
1、查询所有学生的最大年龄、最小年龄、平均年龄:
select max(age),min(age),avg(age)from students;
2、查询1班年龄小于18岁的同学有几个:
select count(*)from st where class='1班' and age<18;
作用:按照字段分组,此字段相同的数据会放到同一个组中
目的:使用聚合函数,对每一组的数据进行统计
格式:
select 字段1,字段2,聚合函数...from 表名 group by 字段1,字段2,...;
例:
1、查询各种性别的人数:
select sex,count(*)from st group by sex;
2、查询每个班级中各种性别的人数:
select class,sex,count(*)from st group by class,sex;
3、查询各个性别中的总人数、最大年龄、平均年龄:
select sex,count(*),max(age),avg(age)from st group by class,sex;
注!分组后再过滤不能用where,要用having
区别:
1、where是对from后面指定的表进行数据筛选,属于对原始数据的筛选
2、having是对group by的结果进行筛选
3、having后面的条件可以用聚合函数,where不能
例:
1、查询每个班级男生的总数:
select class,sex,count(*)from st group by class,sex having sex='男';
2、查询所有班级中不同性别的记录数大于1的信息:
select class,sex,count(*)from st group by class,sex having count(*)>1;
SQL 语句书写顺序和执行顺序
select->distinct->from->join->on->where->group by->having->order by->limit