MySQL 第二天学习

135 阅读4分钟

一、列表型

1.数值型(使用时可以不加引号)

  1. tinyint 微整性, 1个字节,-128~127

  2. smallint 小整型, 2个字节

  3. int 整型,4个字节

  4. bigint 大整型,8个字节

  5. decimal(M,D) 定点小数,16个字节 M(总有效位数),D(小数点后有效位数)

  6. boolean 布尔型 true,false (使用时会转为tinyint)

float 单精度浮点型 4个字节

double 双精度浮点型 8个字节

2.字符串型

  1. date 日期型

  2. time 时间型

  3. datetime 日期时间型

  4. year() 获取日期中年的部分

3.日期时间型

  1. varchar(M) 变长字符串

  2. char(M) 定长字符串,M最大值为255,储存手机号、身份证号……

  3. text(M) 大型变长字符串

二、列约束

  1. 主键约束——primary key

声明了主键约束的列,不允许插入重复的值,常和auto_increment联合使用

auto_increment 自增 声明了自增列,在插入数据的时候,只需提供值为null,就会获取最大值然后 +1 插入

  1. 非空约束—— not null

null 空,是暂时无法确定的值。关键字 not null 非空,声明了非空约束的列,不允许插入空

  1. 唯一约束——unique

声明了唯一约束的列,不允许插入重复的值,可以插入null,多个null

  1. 默认值约束——default

插入一条数据,如果不提供值,会使用默认值

  1. 先设置默认值,使用default设置默认值

  2. 然后调用默认值

指定的列提供值,没有出现的列会自动调用默认值

insert into 数据表名称(列名称...) values(值);*

哪个列要使用默认值,只需提供关键字default就会自动调用默认值

insert into 数据表名称 values(值, default);****

  1. 外键约束——foreign key

为了确保两个表直接建立关联

声明了外键约束的列插入的值必须在另一个表的主键列中出现过,两者类型要一样

要用逗号隔开,另起一行,一般放在表中的最下面

,

foreign key(外键列) references 另一个表(主键列)

检查约束——check MySQL不支持

三、简单查询

  1. 查询特定的列

select 列名称,列名称... from 表名称;

  1. 查询所有的列

select * from 表名称;

select 所有的列名称 from 表名称;

  1. 给列起别名 as

select 列名称 as 新起的列名称 from 表名称;* as可省略,

  1. 显示不同的记录 distinct

select distinct 列名称 from 表名称;

  1. 查询时执行计算

  2. 查询结果排序 order y

select * from 表名称 order by 列名称asc; 升序

select * from 表名称 order by 列名称desc; 降序

默认 升序

  1. 条件查询

select * from 表名称 where 列名称 not in(列名称中内容,列名称中内容);

      条件 where is null;

           where in();

  1. 模糊条件查询 like

以e结尾:select * from 表名称 where 列名称 like'%e';

倒数第二个为e:select * from 表名称 where 列名称 like'%e_';

  1. 分页查询1. ——查询结果太多,数据多,分页显示

需要两个已知数据:当前的页码,每页的数据量

每页开始查询的值=(当前的页码-1)*每页的数据量

select * from 表名称 limit 开始查询的值,每页的数据量

limit 后(有空格)的开始查询的值不能写运算,只能写值

开始查询的值,每页的数据量必须是数值型,不能加引号


四、复杂查询

  1. 聚合查询/分组查询

聚合查询 函数

select count() from 表名称; count()/sum()/avg()/max()/min()

分组查询 group by列名称

  1. 子查询

是多个查询命令的组合,把其中一个的结果作为另一个的条件来使用

  1. 多表查询

要查询的列分布在多个表中,前提表之间已经建立了关联

防止列名称相同,在列名称的前边加上表名称

  1. 内连接 inner join... on

inner join 要连接的表名称 on 列名称=主键列名称

  1. 左外连接  left outer join...on

  2. 右外连接 right outer join...on

显示副表中的所有记录,outer 可省略

  1. 全连接 full join … on MySQL不支持

union 联合后,合并相同记录

 union all 联合后,不合并相同记录

将左外连接和右外连接进行联合,合并相同记录。