mysql 数据管理
数据库中的不同表负责不同业务的管理

数据库:是表的集合,是一个大的分类

表:是一个小的分类

mysql -u root -p 登录mysql的命令

db_name : 代表的数据库的名字

登录mysql: mysql -u root -p

 1.显示服务器上所有已有的数据库:

show databases;

2.在服务器中创建自己的数据库
create database;
create database character set utf8;创建的数据库支持中文

3.如何切换到指定的数据库
use db_name;

4.如何删除已有数据库
drop database db_name;

如何在数据库中建立数据表

数据表是一个二维表格(行,列)

一行代表一条数据

每一个列代表的是当前一条数据的字段

建表的基本语法: create table tb_name(字段1 类型,字段2 类型)

主键:唯一的识别一条记录的字段,是不重复的 primary key 主键

自增:某个字段不需要手动填写数据,而是通过系统分配的整数(每一条数据分配的值都是前一条数据的增量)auto_increment 自增

 

非空:字段设置为非空属性时,填写数据时要求该字段为必填项 not null

 

默认值:向表中填写数据时,字段不写入数据时,会默认填充值 default

 

comment ‘’ 字段说明

 

插入数据: 方法1: insert tb_name values() 适用于全记录插入

 

注意:按表中字段顺序插入数据

 

方法2:

insert tb_name (字段1,字段2,……) values(‘字段1的值’,‘字段2的值’,……);

 

对指定的字段进行数据的插入操作

如果是字符类型的数据要用’’号包含要插入的数据

 

修改表中数据

upadate tb_name set 字段1=值,字段2=值 where 条件

 

1.把表中的要修改的字段,所有的指定字段都给修改了

2.指定要修改的是哪行的字段,只修改指定行的字段

 

删除表中的指定记录

 

delete语法 

 

delete from tb_name where 条件

删除掉后,但系统会记住自增量(id设的自增),再添加一条数据的时候,id为3,不是2.

查看全表信息select * from tb_name

 

投影

select 字段1,字段2…… from tb_name

在查询时,将字段别名

 select id '编号', title '主题' from tb_name;

带筛选条件的查询

 select 字段 from tb_name where 条件 title=‘’

模糊查询 select 字段 from tb_name where 条件 title like‘%公告’  

select 字段 from tb_name where 条件 title like‘_公告’

%是通配符,可以代表任意多个字符

_只代表一个未知字符

 

两个条件都需满足时,两个条件之间 and 链接

 

 

两个条件只需满足任意一个两个条件之间 or 链接:

 

任何查询操作的反查询都可以用 not  列如:not like

 

not like 满足的条件是 “不是…”  

 count是统计函数或者叫聚合函数,作用:统计当前记录的个数

 

只显示统计的结果,不显示查询的具体的信息

 

 

sum求和

 select sum()from tb_name

 

avg 求平均值

  select avg()from tb_name

最大值 max

 select max()from tb_name

最小值 min

  select min()from tb_name

 

 

 

升序排序  asc(可以省略)

 select * from tb_name order by 字段

 

降序排序 desc

  select * from tb_name order by 字段 desc

 

第一排序,第二排序

当第一排序出现有部分行字段相同的情况时,可以进行第二排序

  select * from tb_name order by age,id desc  

多个排序用 ,(逗号)分隔

 

 

 

 

 

 

group by 分组

先会把指定的字段里面相同的数据划分成一组,然后再进行显示

 select 字段名 from tb_name group by 字段名;

 

注意:在分组的时候做其他字段的投影是没意义的

 

 

 

分组可以和聚合函数一起使用 

select 字段名,count(*) from tb_name group by 字段名

 having 分组后的筛选(不分组的时候筛选用where)

 

两表关联,一定有主从之分,从主表建立一个新的字段以便关联到从表,主表中新建的这个用于关联的字段称为外键。

 

如何建这个外键?

  • 在主表中新建一个字段
  • 新建的这个字段应于从表的主键类型相同,并关联到从表的主键

 

 

 

 

 

 

 

 

一次查询,涉及到的数据来自多张表

join 多表联合查询   多表查询时:先关联在查询

 语法:select  from tb_name inner join tb_name on 主表的外键=从表的主键

 where放在关联之后 

 

 

 

 子查询

select * from tb_name where 字段 = (select 字段名 from tb_name2 where 字段2='条件');

将分步操作合在一起,

子查询中in的用法(包含)

select * from tb_name where 字段 in (select 字段名 from tb_name2 where 字段2='条件');

 

 

 

 

limit 限制查询显示结果

 

limit 5 查询显示前5条记录

 

 

在子查询中使用limit 外层不能使用 in、all…

 

 

从第五条开始显示三条 limit 4,2

 

 

注:mysql中两个生日日期(年月日)相减时,得到的是年与年之间相减的数值 如果得到的数字为‘0’那就是同年

    mysql中取日期只取年用 year 只取月用month

 

表的查询结果还是表

语法:(select * from tb_name) as

 

将两个结构相同的查询结果进行合并 union