时间:2021-07-01 10:21:17 帮助过:9人阅读
-- 查看当前数据库中所有表 show tables; -- 创建表 -- auto_increment表示自动增长 -- not null 表示不能为空 -- primary key 表示主键 -- default 默认值 -- create table 数据表名字(字段 类型 约束[,字段 类型 约束]); -- 创建classes表(id,name) create table xxx(id int,name varchar(30)); create table yyy( id int primary key not null auto_increment, name varchar(30) ); -- 创建students表(id,name,age,high,gender,cls_id) create table students( id int unsigned not null auto_increment primary key, name varchar(30), age tinyint unsigned default 0, high decimal(5,2), gender enum("男","女","妖"), cls_id int unsigned ); insert into students values(0,"老王",18,188.88,"男",0); select * from students; -- 创建一个classes表(id,name) create table classes( id int unsigned not null auto_increment primary key, name varchar(30) ); --查看表的创建语句 -- show create table 表名字; show create table students; -- 查看表结构 -- desc 数据表的名字; desc xxx; -- 修改表-添加字段 -- alter table 表名 add 列名 类型; alter table students add birthday datetime; -- 修改表--修改字段:不重命名版 -- alter table 表名 modify 列名 类型以及约束; alter table students modify birthday date; -- 修改表--修改字段:重命名版 -- alter table 表名 change 原名 新名 类型以及约束; alter table students change birthday bitrh date default "2000-01-01"; -- 修改表 - 删除字段 -- alter table 表名 drop 列名; alter table students drop high; -- 能不删除就别删除,风险太大 -- 删除表 -- drop table 表名; drop table xxx;
增删改查(crud)
-- 增加 -- 全列插入 -- insert [into] 表名 values(...); -- 主键字段 可以用 0 null default 来占位 -- 向classes表中插入 一个班级 insert into classes values(0,"菜集班"); +--------+-------------------------+------+-----+------------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------------------+------+-----+------------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | name | varchar(30) | YES | | NULL | | | age | tinyint(3) unsigned | YES | | 0 | | | gender | enum(‘男‘,‘女‘,‘妖‘) | YES | | NULL | | | cls_id | int(10) unsigned | YES | | NULL | | | bitrh | date | YES | | 2000-01-01 | | +--------+-------------------------+------+-----+------------+----------------+ -- 向studnts表插入 一个学生信息 insert into students values(0,‘小王来了‘,20,‘男‘,1,‘1990-01-01‘); insert into students values(null,‘小王来了‘,20,‘男‘,1,‘1990-01-01‘); insert into students values(Default,‘小王来了‘,20,‘男‘,1,‘1990-01-01‘); -- 枚举中的下标从1 开始 insert into students values(null,‘小王来了‘,20,1,1,‘1990-01-01‘); insert into students values(null,‘小王来了‘,20,2,1,‘1990-01-01‘); insert into students values(null,‘小王来了‘,20,3,1,‘1990-01-01‘); --部分插入 -- insert into 表名(列1,...) values(值1,...) insert into students(name,gender) values(‘小桥‘,2); -- 多行插入 insert into students(name,gender) values(‘大桥‘,2),(‘凋残‘,2); insert into students values(0,‘小王‘,20,‘男‘,1,‘1990-01-01‘), (0,‘小刚‘,20,1,1,‘1991-09-09‘), (0,‘小强‘,22,1,1,‘1998-09-08‘);
-- 修改
-- update 表名 set 列1=值1,列2=值2...where 条件; update students set gender=1 where id=6; update students set age=22,gender=2 where name=‘小王来了‘;
-- 删除
-- 物理删除 -- delete from 表名 where 条件 delete from students; --整个数据表中的数据全部被删除 delete from students where name=‘小王来了‘; -- 逻辑删除 -- 用一个字段来表示 这条信息是否已经不能再使用了 -- 给students 表添加一个is_delete字段 bit类型 alter table students add is_delete bit default 0; update students set is_delete=1 where id=6;
-- 查询基本使用
-- 查询所有列 -- select * from 表名; select * from students; --指定条件查询 select * from students where name=‘小刚‘; select * from students where id>3; -- 查询指定列 -- select 列1,列2,... from 表名; select name,age from students; -- 可以使用as为ie列或者表指定别名 -- select 字段[as 别名],字段[as 别名] from 数据表 where ....; select name as 姓名,gender as 性别 from students; -- 字段的顺序 select id as 序号,gender as 性别, name as 姓名 from students;
-- 数据的准备
-- 创建一个数据库 create database python_test charset=utf8; -- 使用一个数据库 use python_test; -- 显示使用的当前数据是那个? select database(); -- 创建一个数据表 create table studnets( id int unsigned primary key auto_increment not null, name varchar(20) default ‘‘, age tinyint unsigned default 0, height decimal(5,2), gender enum(‘男‘,‘女‘,‘妖‘), cls_id int unsigned default 0, is_delete bit default 0 ); create table classes( id int unsigned auto_increment primary key not null, name varchar(30) not null ); insert into students values (0,‘小明‘,18,180.00,2,1,0), (0,‘小月月‘,18,180.00,2,2,1), (0,‘彭于宴‘,29,185.00,1,1,0), (0,‘刘德华‘,59,175.00,1,2,1), (0,‘黄蓉‘,38,160.00,2,1,0), (0,‘凤姐‘,28,150.00,2,2,1), (0,‘王祖贤‘,18,172.00,2,1,1), (0,‘周杰伦‘,36,NULL,1,1,0), (0,‘陈坤‘,27,181.00,1,2,0), (0,‘刘亦菲‘,25,166.00,2,2,0), (0,‘金星‘,33,162.00,3,3,1), (0,‘静香‘,12,180.00,2,4,0), (0,‘郭靖‘,12,170.00,1,4,0), (0,‘周杰‘,34,176.00,2,5,0); insert into classes values(0,‘python1‘),(0,‘python2‘);View Code
-- 查询
-- 查询所有字段 -- select * from 表名; select * from students; -- 查询指定字段 -- select 列1,列2,...from 表名; select name,age from students; --使用as给字段起别名 -- select 字段 as 名字 ... from 表名;可以省略as 用空格替代 select name as 姓名, age as 年龄 from students; -- select 表名.字段 ... from 表名; select students.name,students.age from students; -- 可以通过as 给表起别名 -- select 别名.字段 ... from 表名 as 别名; select s.name,s.age from students as s; -- 消除重复行 -- distinct 字段 select distinct gender from students;
-- 条件查询
-- 比较运算符 -- select .. . from 表名 where .... -- > -- 查询大于18岁的信息 select * from students where age>18; -- < -- 查询小于18 岁的信息 select * from students where age<18; -- >= -- <= -- 查询小于或者等于18岁的信息 select * from students where age<=18; -- = -- 查询年龄为18岁的所有学生 select * from students where age=18; -- != 或者<>
-- 逻辑运算符
--and -- 18到28之间的所有学生的信息 select * from students where age>18 and age<28; -- 18岁以上的女生 select * from students where age>18 and gender=2; --or -- 18以上或者身高高过180(包含)以上 select * from students where age>18 or height>=180; --not -- 不在18岁以上的女生 这个范围内的女生 select * from students where not (age>18 and gender=2);
-- 模糊查询
-- like -- %替代一个或者多个 -- _替换1个 -- 查询姓名中以‘小’开始的名字 select name from students where name like ‘小%‘; -- 查询有2个字的名字 select name from students where name like ‘__‘; --查询有3个子的名字 select name from students where name like ‘___‘; --查询至少有两个字的名字 select name from students where name like ‘__%‘; -- rlike 正则 -- 查询以周开始的姓名 select name from students where name rlike ‘^周.*‘; -- 查询以周开始、伦结尾的姓名 select name from students where name rlike ‘^周.*伦$‘;
--范围查询
-- in(1,3,8)表示一个非连续的范围内 -- 查询年龄为18、34的姓名 select name,age from students where age=18 or age=34; select name,age from students where age in (12,18,34); -- not in 不非连续的范围之内 -- 年龄不是18、34岁之间的信息 select name,age from students where age not in (12,18,34); --between...and... 表示在一个连续的范围内 -- 查询年龄在18到34之间的信息 select name,age from students where age between 18 and 34; --not between...and... 表示不在一个连续的范围内 -- 查询年龄不在18到34之间的信息 select name,age from students where age not between 18 and 34; select name,age from students where not age between 18 and 34; --错误 select name,age from students where age not (between 18 and 34); --空判断 --判空 is NULL --查询身高为空的信息 select * from students where height is NULL; -- select * from students where height =0; --不对 --判断非空 is not null select * from students where height is not NULL;
-- 排序
-- order by 字段 --asc 从小到达排列,即升序 --desc从大到小排序,即降序 select * from students order by asc; --查询年龄在18到34之间的男性,按照年龄从小到大排序 select * from students where (age between 18 and 34) and gender=1; select * from students where (age between 18 and 34) and gender=1 order by age; select * from students where (age between 18 and 34) and gender=1 order by age desc; -- 查询年龄在18到34之间的女性,身高从高到矮排序 select * from students where (age between 18 and 34) and gender=2 order by height desc; -- order by 多个字段 -- 查询年龄在18到34之间的女性,身高从高到矮排序,如果身高相同则按照年龄从小到大排序 select * from students where (age between 18 and 34) and gender=2 order by height desc,age desc; -- 查询年龄在18到34之间的女性,身高从高到矮排序,如果身高相同则按照年龄从小到大排序,如果年龄相同那么按照id从大到小排序 select * from students where (age between 18 and 34) and gender=2 order by height desc,age desc,id desc; --按照年龄从小到大,身高从高到矮排序 select * from students order by age asc,height desc;
-- 聚合函数
--总数 --count --查询男性有多少人,女性有多少人 select count(*) from students where gender=1; select count(*) from students where gender=2; --最大值 --max --查询最大的年龄 select max(age) from students ; --查询女性的最高身高 select max(height) from students where gender=2; --最小值 --min select min(age) from students ; -- 求和 --sum --计算所有人的年龄总和 select sum(age) from students ; --平均值 --avg --计算平均年龄 select avg(age) from students ; --计算平均年龄 sum(age)/count(*) --四色五入 round(123.23,1) 保留一位小数 --计算所有人的平均年龄,保留2位小数 select round(avg(age),2) from students ; --计算男性的平均身高,保留2位小数 select round(avg(age),0) from students where gender=1;
--分组
--group by --按照性别分组,查询所有的性别 select gender from students group by gender; --计算每种性别中的人数 select count(*),gender from students group by gender; select gender,group_concat(name) from students group by gender; --计算男性的人数 select count(*) from students group by gender=1; select gender,group_concat(name,‘_‘,age,‘_‘,id) from students group by gender; --having --group_concat(...) --查询同性别中的人数多余2个的信息 select gender,group_concat(name),avg(age) from students group by gender having avg(age)>30; select gender,group_concat(name) from students group by gender;
--分页
--limit start,count --