MySQL操作指令笔记
查看所有数据库 show databases;
使用数据库 use 数据库名
查看当前使用的库 select database( );
创建数据库 create database 数据库名 charset=utf8;
删除数据库 drop database 数据库名
表的操作
查看当前数据库所有表 show tables;
创建表 create tables 表名(id int,name varchar(30));
--auto_increment 表示自动增长
--not null 表示为空
--primay key 表示主键
--default 表示默认值
--unsigned 无符号
例
--create table 数据表名(字段 类型 约束,【字段 类型 约束】);
create table students(id int primay key not null auto_increment, name varchar(30));
查询表
查询所有列 select * from 表名;
--指定条件查询 select * from 表名 where 条件
--查询指定列 select 列1,列2, from 表名
使用 as 为列表指定别名 select 字段 as 别名,字段 as 别名 from 表名;
模糊查询
--like (rlike 正则)
--% 替换一个或多个
--_ 替换一个
例:查询姓名以 “小”开始的名字
select name from students where name like"小%";
范围查询
--in(1,3,8) 表示在一个非连续的范围内
例: select name,age from students where age in(12,18,34);
--not in 不非连续的范围内
--between ... and ... 表示在一个连续的范围内
例:select * from students where age not between 18 and 34;
空判断
--判空 is null
--非判空 is not null
排序
--order by 字段
--asc 从小到大排序即升序(默认为升序)
--desc 从大到小排序即降序
例:select * from students where (age between 18 and 34)and gender=1 order by age desc;
--order by 多个字段
例:select * from students where(age between 18 and 34)and gender=2 order by height desc,id desc;
聚合函数
--总数 count
例:select count(*) as 男性人数 from students where gender=1;
--最大值max ,最小值min,求和sum,平均数avg或sum(age)/count(*)
例:select avg(age) from students;
分组
--group by
例:按性别分类查询
select gender from students group by gender;
计算每种性别中的人数
select gender,count(*)from students group by gender;
计算男性的人数
select gender,count(*) from students where gender=1 group by gender;
--group_concat(...)
例:查询同种性别中的姓名
select gender,group_concat(name) from students where gender=1 group by gender;
--having
例:查询每种性别中的人数多于2个的信息
select gender,group_concat(name) from students group by gender having count(*)>2;
分页
--limit start
例:每页显示两个,第一页面
select * from students limit 0, 2;
每页显示两个,第二页面
select * from students limit 2,2; {limit (第N页-1)*每个的个数,就是每页显示的个数)
每页显示两个,第三页面
select * from students limit 4,2;
每页显示两个,显示第六页信息,按年龄从小到大排序
select * from students order by age asc limit 10,2;
链接查询
--inner join ... on
--select * from 表A inner join 表B;
例: select * from students inner join dasses;
--查询能够对应班级学生以及班级的信息
例: select * from students inner join classes on students.cls_id =classes.id;
--按要求显示姓名班级
例:select students.*,classes.name from students inner join classes on students.cls_id =classes.id;
select students.name,classes.name from students inner join classes on students.cls_id =classes.id;
--给数据表起名字
select s.name c,name from students as s inner join classes as c on s.cls_id=c.id;
--left join 左对齐
--查询没有对应的学生
例:select ... from ... as x left join ... as x on ... where ...
select ... from ... as x left join ... as x on ... having ...
导入数据(sql文件)
source 路径 .sql结尾的文件;
标量 子查询
查询最高男生信息
--select * from students where height=(select max(height) from students);
列级 子查询
查询学生班级号能够对应学生信息
--select * from students where cls_id in(select id from classes);
修改表
修改表-添加字段 alter table 表名 add 列名 类型;
修改表-改字段:重命名 alter table 表名 change 原名 新名 类名及约束;
修改表-改字段:不重命名 alter table 表名 modify 列名 类型及约束;
修改表-删除字段 alter table 表名 drop 列名;
删除表 drop table 表名;
修改表 update 表名 set 列1=值1, 列2=值2....,where 条件;
消除重复行
--distinct 字段
例 select distinct gender from students;
删除表
--物理删除 delete from 表名 where 条件;
(Delete可以rollback撤销,truncate不能)
-- 逻辑删除,(用一个字段表示这个信息是否已不再使用。)
--alter table 表名 add is_delete 字段 bit类型;
例 -- alter table students add is_delete bit default 0;
--update students set is_delete=1 id=6;
向表中插入信息
insert into 表名 values(信息);
部分插入 insert into 表名(列1,列2)values();
多行插入 例 --insert into 表名(列1,列2)values(‘大乔’,2),(‘貂蝉’,2);
--insert into 表名 values(0,"西施",20,"女",1,"1991-01-01"),
(0,"貂蝉",20,"女",1,"1991-01-01");
浙公网安备 33010602011771号