MySQL基本介绍和基本操作---002

来源:互联网 发布:seo 关键词掉排名 编辑:程序博客网 时间:2024/05/17 00:55
紧接上篇,查询数据库有很多种方式和条件:

1.排序(order by)

需求:1 ---- 按照价格升序排列
需求:2 ---- 按照价格降序排列
总结:
    排序关键字:order by(默认是升序)
order by xxx desc;(降序)
order by xxx asc(升序);   
需求:
    价格按照升序排列,如果价格相同,按照品牌排序
    SELECT * FROM phones ORDER BY  jiage,pinpai DESC;
注意:
    1、字符串可以排序,因为字符底层对应的是数字
    2、排序标准可以有多个,多个情况下
       如果第一排序标准一样,再按照第二排序标准比较....

2.聚合

聚合(函数):
  根据多条记录产生一个结果,比如求平均价格,最大价格,最小价格,总记录数,总和....
  avg ----- 平均值
  max ----- 最大值
  min ----- 最小值
  sum ----- 总和
  count --- 总记录数  
例:  
SELECT AVG(jiage) FROM phones;
总结:
   a、聚合函数一般作用于数字,字段最好是数值型的
   b、如果在字符串上使用聚合函数,那么不建议(了解)
      max min ----- 按照字符串排序得到一个结果
      sum avg ----- 得到的结果是 0

3.分组:

    就是按照某个字段,对表内数据进行分类
需求:
  按照品牌分组,求出每组的平均价格  
语法:
  a、group by xxx ---- 按照某个字段分组,字段值相同的归为一组
  b、分组一般结合聚合函数使用
  c、如果不使用聚合函数,使用字段,那么选取组内的第一条记录(不建议使用)
     字段可以使用,但是一般都用分组依赖的字段
注意:
   对组进行条件筛选时,使用 having + 条件,不能使用 where
   注意:这是固定语法
为什么?
   where ----- 用于单条记录筛选
   having ---- 专门用于组的筛选

4.备份和还原

备份:
  将数据从一台机器A导出一个文件
 还原:
  将机器A导出的文件中的数据写入到机器B,就是数据的还原

5.主键约束

主键特点:非空唯一,主键列不能包含null值  
每个表都应该包含一个主键,一个表中只能有一个主键
 添加语法:

  方式1(最为常用):

    字段名 字段类型 primary key;

  方式2:

    字段最后:
     primary key (字段);

  方式3:

    字段最后(CONSTRAINT 约束,给主键约束起个名字,基本没用)
    CONSTRAINT mypk PRIMARY KEY(id)      //constraint

  方式4:

    先创建表,再添加主键    
  注意:
   约束可以建表时就创建,还可以表建完了,添加数据,再添加约束,但是可能会出问题,
   因为表中已有的数据,可能违反约束      
  主键删除(很少用):
   alter table xxx drop primary key;  
  主键自增长:
   auto_increment
   特点:主键可以插入 null 值,且自动计算  
  注意:
   1、自增长不适用字符串类型的主键  
   2、delete 与 truncate 的关于主键自增长的区别,前者会保留以前的主键信息
      但是后者从1开始,为什么?因为后者要删表再建表

6.唯一约束

作用:
  使用唯一约束的字段,在当前表中值不能重复出现
  
 语法:
  方式1:字段名 字段类型 unique (最常用)
  方式2:字段最后:
    CONSTRAINT myun UNIQUE (NAME)
  方式3:
    字段最后
    UNIQUE (NAME)
  方式4:
    先建表,再修改表
    ALTER TABLE un_4 ADD [CONSTRAINT myun2] UNIQUE(NAME);
    
   注意:
    如果使用方式4那么可能表中有数据存在了,且数据违反了唯一约束,那么这时约束添加失败
    
   总结:
    不管添加什么约束,只要是在表创建完了,去修改表添加约束的方式都是存在安全隐患的
    
  删除约束:
alter table 表名 drop index 约束字段名;

7.非空约束

作用:
  限制字段,让字段必须插入对应的值
  
 语法:
  字段名 数据类型 not null

8.外键约束_一对多

在很多情况下,一类事物与另一类事物之间存在一定的关系,如果想用数据库方式展现出来: 

  A.一张表设计,存在的问题:

a、数据重复出现,造成空间浪费
b、数据修改时效率低

  B、从表必须依赖于主表

    a、从业务逻辑上讲,从表依赖于主表,那么从表中和主表关联的字段的值,必须在主表中存在,但是当前版本2
显然不符合该要求
b、主表可以随意删除数据,语法没有问题,但是可能导致业务逻辑冲突
“一”的表  ---- 主表
“多”的表  ---- 从表

  C、实现思想,为从表中关联主表的字段添加约束 --- 外键约束

  外键约束语法:
    alter table 从表 add constraint 约束名 
foreign key (从表字段) ---- 外键约束
references 主表(字段); ---- 引用主表字段
  优点:
   从表中不能随便插入数据
   主表中不能随便删除数据
   但是从表可以随便删,主表可以随便插

9.外键约束_多对多

设计一个中间表,使用外键约束.