MySQL基本指令记录

SQL

DQL:查询语句


  • 排序查询
    *语法:order by 子句
    *order by 排序字段1,排序字段2.。。;
    select * from stu order by name ASC; --排序方式;
    *排序方式:ASC 升序,DESC降序
    注意: 如果多个条件排序时,当前面条件一样才会判断下一个条件

  • .聚合函数
    将一列数据作为一个整体,进行纵向计算。
  1. count:计算个数
    select count(name) from Stu;
  2. max:计算最大值
    select max(name) from Stu;
  3. min:最小值
    select min(name) from Stu;
  4. sum:和
    select sum(name) from Stu;
  5. avg:计算平均值
    select avg(name) from Stu;
  • 注意:聚合函数计算时,派出了null值。
    解决方案:
    1,选择部位null的列。
    2,ifnull函数:
    select count(ifnull(addr,0)) from stu;

  • 分组查询
  1. 语法:group by 分组字段;
    select addr,avg(score),count(id) from stu group by addr;
    添加限制条件的分组1:select addr,avg(score),count(id) from stu where score >30 group by addr;
    添加限制条件的分组2:
    select addr,avg(score),count(id) from stu where score >10 group by addr having count(id)>2;
  2. 注意:
    1,分组之后查询的字段:分段字段,聚合函数。
    2,分组使用的限制条件where 和 having 它们之间的区别:where再分组之前进行限定,不满足条件暴怒参与分组;having再分组之后进行限定,如果不满足结果就不会被查询出来。 where后不可以跟聚合函数,having可以使用聚合函数。

  • 分页查询
  1. 语法: limit 开始的索引,每页查询的条数;
    select * from stu limit 3,2
    索引计算公式:开始的索引=(当前页码数-1)*每页显示的条数。
    分页操作时mysql的’方言‘。

DQL:查询表中的记录

  • select * from 表名;
  1. 语法
    select 字段列表
    from 表明列表
    where 条件列表
    group by 分组字段
    having 分组之后的条件
    order by 排序
    limit 分页限定。

  1. 基础查询
    1.多个字段查询
    select 字段1,字段2 from 表名;
    select name from stu
    2.去除重复 distinct
    select distinct name from stu
    3.计算列 (一般四则运算)
    select score ,ifnull(score1,0),score+score1 from stu;
    4.起别名 as
    select score ,score1,score+score1 as allScore from stu;
  2. 条件查询
    1.where 后面跟条件
    2.运算符
    < > <= >= = <>(不等)
    between…and
    in
    like:模糊查询,占位符:_表示一个占位符;%表示多个占位符。
    select * from stu where name like '%张%';
    is null
    and &&
    or ||
    not !

约束

  • 概念:对表中的数据进行限定,保证数据的正确性、有效性、完整性。
  • 分类:
  1. 主键约束:primary key
    注意:

    1. 含义:非空且唯一
    2. 一张表只能有一个字段为主键
    3. 主键就是表中的记录的唯一标识
    • 创建表时添加主键约束
      create table stus(
      			id int primary key  -- 添加主键约束约束
      			name varchar(10) 
      );
      

    删除主键约束:
    alter table stu drop primary key
    创建表后,添加唯一约束
    alter table stu modify id int primary key;


  1. 非空约束: not null 值不能为null
    1,在创建表时添加约束
    create table stus(
    		id int,
    		name varchar(10) not null   -- name 为非空约束
    );
    
    –删除name的非空约束
    alter table stu modify name varchar(10);
    2,创建表后,添加非空约束
    alter table stu modify name varchar(10) not null;

  1. 唯一约束:unique 值不能重复
    1, 创建表时添加
    create table stus(
    			id int,
    			phone varchar(10) unique   -- phone添加了唯一约束
    );
    
    删除唯一约束:
    alter table stu drop index phone
    2,创建表后,添加唯一约束
    alter table stu modify phone varchar(20) unique;

  1. 外键约束:foreign key ,让表与表之间产生关联
    1,创建表时,可以添加外键约束
    语法:create table 表名(
    。。。
    外键列
    constraint 外键名称 foreign key (外键列名称) references 主表名称(主表
    列名)
    );
    2,删除外键
    alter table 外键表名 drop foreign key 外键名称;
    3,添加外键
    alter table 外键表名 add constraint 外键名称 foreign key (外键字段)references 主表名称
    4,级联操作(修改两表连接节点的字段的操作)
    设置级联更新
    alter table 外键表名 add constraint 外键名称 foreign key (外键字段)references 主表名称 on updata cascade
    级联删除
    alter table 外键表名 add constraint 外键名称 foreign key (外键字段)references 主表名称 on updata cascade on delete cascade

  1. 自动增长
    1. 概念:如果某一列是数值类型的,使用auto_increment 可以完成自动增长
    2. 在创建表示添加约束,并且完成主键自增长
      create table stus(
      			id int primary key auto_increment,  -- 给id添加主键约束
      			name varchar(10) 
      );
      
      自动增长只和上一条数据有关。
      删除自动增长
      alter table stu modify id int;
      添加自动增长
      alter table stu modify id int auto_increment;

多表之间的关系

  • 多表之间的关系
  1. 一对一关系
    如:人与身份证
  2. 一对多(多对一)关系
    如:部门与员工
  3. 多对多
    如:学生和课程
  • 实现关系
  1. 一对多(多对一)
    的一方建立外键指向的乙方的主键
  2. 多对多
    借助第三张中间表,中间表必须包含至少两个字段,如
     多对多关系举例
    3.一对一关系
    可以在任意方添加唯一约束外键指向另一方的主键 。

数据库的备份和还原

  • 命令行
  1. 备份: mysqldump -u用户名 -p密码 数据库名称 > 保存的路径

  2. 还原:

    1. 登录数据库
    2. 创建数据库
    3. 使用数据库
    4. 执行文件 。source 文件路径

范式

  • 数据库设计范式
    概念
    分类:
    例表
  1. 第一范式(1NF):每一列都是不可分割的原子数据项

  2. 第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对码的部分函数的依赖)
    小概念

    1. 函数依赖:A --> B,如果通过A属性(属性组)可以唯一确定B属性的值。则称B依赖于A。
      如:学号–>姓名。 (学号,名称)–>分数。
    2. 完全函数依赖:A --> B,如果A是一个属性组,则B属性值的确定需要依赖A属性组中所有的属性值。
      如:(学号,课程名)–> 分数
    3. 部分函数依赖:A --> B,如果A是一个属性组,则B属性值的确定只需要依赖A属性组中某些的属性值。
      如:(学号,课程名)–> 姓名
    4. 传递函数依赖:A --> B,B --> C,通过A 属性(属性组)的值,可以确定唯一B属性的值,再通过B的值确定C属性的值,则成为C传递幻术依赖于A。
      如:
    5. :如果一种表中,一个属性或者属性组,被其他所有属性所完全依赖,则称这个属性(属性组)为该表的码。
      如:该表中码为(学号,课程名称)
      主属性:码属性组中的所有属性
      非主属性:除过码属性组的属性
  3. 第三范式 (3NF):在2NF基础上,任何非主属性不一概与其他非主属性(在2NF基础上消除传递依赖)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值