一、数据库信息操作
1.查询所有数据库: show databases;
2.创建数据库:create database 数据库名;
3.查看数据库默认字符集:show create database 数据库名;
4.删除数据库:drop database 数据库名;
5.修改数据库:alter database 数据库名 default character set gbk; (将数据库的默认字符集改为gbk,在创建的初期默认为utf8)
二、表管理
在进行第一次表操作的之前,需要使用 : use 数据库名;
1.查看所有表信息:show tables;
2.创建表信息:
//在第一打开mysql的时候要先说明使用的是哪一个数据库
//use 数据库名称;
create table student( //mysql语句不区分大小写,在写表名时也要注意此种情况
sid int primary key, //主键 (auto_increment 代表自增)
sname varchar(20),
sage int
);
3.查看表结构:desc 表名;
4.删除表:drop table 表名;
5.修改表:
1)添加字段:
alter table 表名 add column 字段名称 字段格式;
例如:alter table student add column sgender char(4); (其中column是可以省略的)
2)删除字段:
alter table 表名 drop column 字段名称;
例如:alter table student drop column sgender;
3)修改字段类型:
alter table 表名 modify column 字段名称 新的字段格式;
例如: alter table student modify column sgender varchar(10);
4)修改字段名称:
alter table 表名 change column 字段名称 新字段名称 字段格式;
例如:alter table student change column sgender gender varchar(10);
5)修改表名称:
alter table 表名 rename to 新表名;
例如:alter table student rename to teacher;
三、数据操作
1.增删改数据
1)添加数据:
--插入所有字段,一定要按顺序插入!(注意不能少字段或多字段值)
insert into 表名 values (数据1,数据2,...);
例如:insert into student values(1,'张三','男',20);
--插入部分字段(插入的数据一定要与字段名称相匹配,不能多也不能少)
insert into 表名 (字段名称1,字段名称2,...) values(数据1,数据2,...);
例如:insert into student(id,name) values(2,'李四');
2)修改数据:
--修改所有数据(慎用)
update 表名 set 字段名称=字段值;
例如:update student set gender = '男'; (慎用:此操作会修改所有表中student的gender信息!)
--带有条件的修改(推荐使用)
update 表名 set 字段名 = 字段值 where 条件; (条件可多个修改字段也可多个,用逗号隔开即可)
例如:update student sgender = '女' where id = 1;
3)删除数据:
--删除所有数据(慎用)
delete from 表名;(建议少用)
例如:delete from student;
--带条件的删除(推荐使用)
delete from 表名;(条件可多个)
例如:delete from student where id = 2;
--delete from 与 truncate之间的区别
--delete from :可以全表删除 1)可以带条件删除 2)只能删除表的数据,不能删除表的约束 3)使用delete from 删除的数据可以回滚(事务)
--truncate :可以全表删除 1)不能带条件删除 2)既可以删除表的数据,也可以删除表的约束 3)使用truncate删除的数据不能回滚
truncate 用法: truncate table 表名;
2.查询数据(重点)
2.1查询所有列:
select * from 表名;
例如:select * from student;
2.2查询指定列:
select 字段名称1,字段名称2,... from 表名;
例如:select id,name,gender from student;
2.3查询时添加常量列(as的用法):
select 字段名称 as 'xxx' from 表名;
例如:select name as '姓名' from student;
2.4查询时和并列:
select (字段名称1+字段名称2) as 'xxx' from 表名; (合并列只可合并数据类型相同的字段)
例如:select (id+score) as '总成绩' from student;
2.5查询时去除重复记录:
select distinct 字段名称 from 表名;
select distinct (字段名称) from 表名;
例如:select distinct (name) from student;
2.6条件查询(where):
1)逻辑查询 and 和 or
and:指的是且,相当于java语言中的&,取交集
select 字段名称 from 表名 where 条件1 and 条件2 ; (指的是同时满足条件1和条件2的字段信息)
例如:select name from student where id =1 and gender = '女';
or:指的是或者,相当于java语言中的 | ,取的是并集
select 字段名称 from 表名 where 条件1 or 条件2; (指的是满足条件1或者满足条件2的字段信息)
例如:select name from student where id = 1 or gender = '女';
2)比较查询(> 、< 、!= 、 <>)
!= 与<> 意思相同,都是指不等于
select 字段名称 from 表名 where 字段名称 比较标识符 比较值;
例如:select nam from student where age > 20;
3)判断空条件(null空字符串):is not null / is null
注意区分 null 和 ' '之间的区别,' '要用比较查询中的比较标识符
select 字段名称 from 表名 where 字段名称 is null ;
is not null;
例如:select name from student where gender is null;
4)模糊查询:like
%: 代表任意长度字符
_ :代表一个字符
select 字段名称 from 表名 where 字段名称 like '%x';
select 字段名称 from 表名 where 字段名称 like '_x';
%、_ 可放在前亦可放在后
例如:select gender from student where name = '%五';
2.7 聚合查询
--常用聚合函数:sum()、avg()、max()、min()、count()
select 聚合函数(字段名称) from 表名;
例如:select sum(score) from student;
--注意:count() 函数统计的数量不包含null的数据
--当使用count() 函数进行统计的时候,要使用不包含null值的字段
2.8分页查询(limit 起始行,查询几行)
--起始行从0开始
--分页:当前页 每页显示多少条数据
--分页查询当前页的数据
select字段名称 from 表名 limit (当前页-1) * 每页显示多少条数据, 每页显示数据;
例如:select * from student limit 0,2; (代表第一页的数据,每页显示2条数据)
2.9 查询排序(order by)
select 字段名称 from 表名 order by 字段名称 asc; (asc 默认排序 或者正序排序)
desc;(desc 反序)
例如:select * from student order by score desc; (意为根据学生成绩从高到低排序)
--多个排序条件
select 字段名称 from 表名 order by 字段名称1 排序符, 字段名称2 排序符,...; (在第一个排序的基础上,如果有相等的则再根据第二个排序条件排序)
例如:select * from student order by score desc, name asc;
2.10 分组查询(group by)
select 字段名称 from 表名 group by 字段名称;
--可以通过count(字段名称)来统计分组后每一组的人数
select 字段名称,count(字段名称) from student group by 字段名称;
例如:select gender,count(gender) from student group by gender; (其中的count(gender) 也可以换做count(*))
2.11分组之后筛选(having)
依照2.10分组排序的例子,对分组后的数据进行筛选 ,筛选出人数大于2的记录
select gender,count(*) from student where group by gender having count(*) >2;
注:分组之前条件使用where ,分组之后条件使用having 关键字
ps:笔者在书写博客时,可能会有错误之处,若有误,方请及时指出,万望诸君海涵