MySQL知识汇总

一、Mysql语言组成

  • DDL语言—数据定义语言(建立库、建立表)
  • DML语言—数据操作语言(数据增删改)+DQL(数据查询语言)
  • DCL语言—数据控制语言

二、MySQL安装

1、安装

参照:Linux服务器安装Mysql 5.7 yum安装

2、工具

使用工具navicat连接MySQL,连接如图:

MySQL知识汇总插图

三、DDL语言

在navicat里选择命令,按下ctrl+shift+R执行

1、创建数据库

create database 数据库名;

2、查看当前数据库

show database;

3、使用数据库

use 数据库名;

4、删除数据库

drop database 数据库名;

5、创建表格式

Create table 数据库名.表名 (
    字段名字1 字段类型 可选字段约束,
    字段名字2 字段类型 可选字段约束,
    ...
);

6、MySQL常见字段类型

  • int:整数,比如:学号
  • float:浮点小数,比如:运算 3/9=0.3333 (不精确)
  • decimal:定点小数,decimal(16,4),一个数字16位,小数一定占四位,比如:钱财 19.6234
  • char(字母位数)或者varchar(字母位数)
  • datetime:时间,比如:YYYY-MM-DD HH:mm:ss
  • date:时间,比如:格式YYYYMMDD

7、约束

MySQL知识汇总插图2

Primary key等价于unique+not null

四、外键约束

1、说明

一张表的数据(引用表)必须依从于另外一张表的数据(被引用表)

例:分数表的学生id来源于学生表的id

2、格式

constraint 约束的名字 foreign key(引用表的id) references 被引用表(被引用表中的字段)

例如:学生表 student(student_id) 分数表:grade(grade_id)是在grade表上写

SQL语句:

Constraint fw_foreign foreign key(grade_id) references student(student_id)

3、注意点

  • 被引用字段必须有唯一特性(primary key unique)的建议就是主键;
  • 被引用字段和引用字段他们名字可以一样也可以不一样,但是类型必须一模一样;
  • 注意外键的名字必须要唯一;

4、解除外键关系

第一种方式:

删除表的时候,先删除引用表(分数表),再删除 被引用表(学生表);

第二种方式:

任意删除,删除外键语句:

alter table grade drop foreign key fw_foreign;

五、DML语言

1、insert语句

insert into 表(字段1,字段2,字段3,。。。)values (数据1,数据2,数据3,。。。);

2、制作SQL文件

导出—选择数据库—-右键选择转储SQL文件—-结构和数据

导入—选择数据库—-右键选择运行SQL文件—-选择SQL文件

六、DQL语言

1、select语句

select * from 表名;
  • 条件逻辑符号:and 与 or 或者 not 非
  • 支持各种比较符号:> >= <= < = <> != 不等于
  • 模糊查询:like %代表1~多个字符 _下划线代表1个字符
  • 集合查询:in 和 not in 例如:select * from 表 where 字段 in(属性1,属性2,。。)
  • 排序查询:order by desc(降序) order by asc(升序)
  • 空/非空查询:is null 空查询 is not null 非空查询
  • 去重复查询:distinct 例如:select distinct 字段 from 表
  • 范围查询包含:between 条件 and 条件
  • 分页查询:limit 例如:select * from 表 limit0,4 索引下标从零开始
  • 统计查询:count(*) 计算总记录数;avg(字段)平均数;sum(字段) 字段总数; max(字段) 最大值;min(字段) 最小值
  • 分组查询:group by having 条件

2、update语句

update 表 set 修改内容 where 字段;

3、delete语句

delete from 表;

注意:Select 可选distinct.字段 或者* 或者 统计函数 或者 as ‘别名’ from 表 join where 条件 like in and or not > < >=<= group by 组名 having order by union limit

例如:

Select > from> where 分组前条件> group by>having 分组后条件>order by >limit

问题:如何删除表里的数据,请回答出至少3种方式?
答:根据sql语言语法 企业保留表结果 采用delete(支持where)和truncate(不支持where 删除表里历史记录 ),彻底删除drop

企业中不推荐删除数据,一般会采用update 将数据换一个状态,对表增加字段 is_delete 是 1,这个数据未删除 1=》0 删除掉了

七、复杂查询

1、内连接查询

Select语句 from 表1,表2 条件 where 等值条件1 and 条件2;

或者

Select语句 from 表1 inner join 表2 on 等值条件1 where 。。。条件2;

2、左右连接查询

select * from 表1 left join(right join) 表2 on 等值条件;

发表评论