MySQL知识总结(一)

SQL通用语法:

  • SQL语句可以单行或多行书写,以分号结尾
  • 可以用空格和缩进来增强语句的可读性
  • MySQL 数据库的SQL 语句不区分大小写,关键字建议用大写
  • 注释:

    ​ 单行注释:-- 注释内容 或 # 注释内容
    多行注释:/ 注释内容 */

SQL分类:

名称 作用
DDL(操作数据库、表) 用来定义数据库对象,关键字:create,drop,alter
DML(增删改表种的数据) 用来对数据库种表的数据进行增删改,关键字:insert,delete,update
DQL(查询表中的数据) 用来查询数据库种表的记录(数据),关键字:select,where等
DCL(授权) 用来定义数据库的访问权限和安全级别及创建用户,关键字:GRANT,REMOVE

DDL:操作数据库、表:

操作数据库:CRUD
名称 作用
(Create):创建 create database if not exists 【数据库名】 character set 【字符集】;
创建数据库,判断是否存在,并制定字符集
(Retrieve):查询 show databases; 查询所有数据库的名称
(Update):修改 alter database 【数据库名称】 character set 【字符集】
(Delete):删除 drop database if exists 【数据库名】 ; 判断是否存在并删除数据库
使用数据库:
操作 作用
select database(); 查询正在使用的数据库名称
use 【数据库名】; 使用数据库
操作表:(CRUD):
操作 作用
create table 【表名1】 like 【表名2】; 创建复制 【表名2】
drop table if exists 【表名】; 删除表
alter table 【表名】 rename to 【新表名】 ; 修改表名
alter table 【表名】 character set 【字符集编码】; 修改表的字符集
alter table 【表名】add 【列名】【数据类型】; 添加一列
alter table 【表名】modify 【列名】【新数据类型】; 修改数据类型
alter table 【表名】change 【列名】【新列名】【数据类型】; 修改列名和数据类型
alter table 【表名】drop 【列名】; 删除列
show tables; 查询某个数据库种所有表名称
show create table【表名】 ; 查询某张表
desc 【表名】; 查询表结构
常用数据类型:
名称 说明
int : 整型类型
double : 浮点类型 score double(5,2) 表示有效位5位,两位小数
date :日期 只包含年月日,YYYY-MM-DD
datetime: 时间 包含年月日时分秒 yyyy-MM-dd HH:mm:ss
varchar: 字符串类型 name varchar(20), 最大20个字符
timestamp:时间戳类型 如果不给这个字段赋值,或赋值为null,则默认使用当前的系统时间。

DML :增删改查表中的数据:

操作 说明
insert into 【表名】(列名1,列名2,...,列名n) values(值1,值2,...,值n); 插入数据
delete from 【表名】where 【条件】; 删除数据
update 【表名】 set 列名1=值1,列名2=值2,... where【条件】; 修改数据
truncate table 【表名】; 删除表,然后重新创建一个一模一样的空表

DQL:查询表中的记录:

select * from <表名>;
关键字顺序:

select distinct<列名1>,<列名2>... -- 去除重复结果
from <表名>
where -- 条件
group by -- 分组字段
having -- 分组后的条件
order by -- 排序
limit -- 分页限定

关键字:
操作 说明
select distinct 【列名】....,【列名】 from ...; 去除重复
select 【列名1】+【列名2】from 【表名】...; 计算两个列名之和(数值型)
select 【列名】as【列名】from 【表名】 ....; 起别名 ,as可以省略
select * from 【表名】 where 【表达式】 基本运算符: > , < , = , != , <> ,between and,or ,in;
注意:null值不能用=,!= 判断,,改用is null 或 is not 判断
like 模糊查询, _ :单个任意字符; %多个任意字符
order by 排序查询, ASC :升序,默认的;DESC :降序
注意:如果有多个排序条件,则当前的条件值一样时,才会判断第二条件
select * from 【表名】 limit 2,3; 从第4条记录开始,往后查3条记录
公式:开始的索引 = (当前的页码-1) * 每页显示的条数
聚合函数:
名称 说明
count 计算个数
max 计算最大值
min 计算最小值
sum 计算和
avg 计算平均值
注意:聚合函数计算,排除null值
解决方案:1.选择不包括非空的列进行计算;2.ifnull函数
where 和 having 的区别:
  • where 在分组之前进行限定,如果不满足条件,则不参与分组。
    having 在分组之后进行限定,如果不满足条件,则不会被查询出来。
  • where 后不可以跟聚合函数,having 可以进行聚合函数的判断

约束:对表中的数据进行限定,保证数据的正确型,有效性和完整性

主键约束 : primary key (非空且唯一)
    *  一张表只能有一个字段为主键
            *  主键就是表中记录的唯一标识
  • 添加主键(修改时):
    alter table <表名>modify <列名><数据类型>primary key;
  • 删除主键(修改时):
    alter table <表名>drop primary key
非空约束: not null
  • 添加与删除非空约束:
    alter table <表名>modify <列名><数据类型>; --删除(修改时)
    alter table <表名>modify <列名><数据类型>not null; --添加(修改时)
    添加与删除非空约束通过修改列名来完成
唯一约束:unique(列中有的记录不能重复)
  • 添加唯一约束(修改时):
  • alter table <表名>modify <列名><数据类型>unique;
    -删除唯一约束(修改时):
  • alter table <表名> drop index <列名>;
自动增长:auto_increment
  • 概念:如果某一列时数值类型的,使用 auto_increment 可以来完成值的自动增长
    -添加与删除自动增长:
    alter table <表名>modify <列名><数据类型>; --删除(修改时)
    alter table <表名>modify <列名><数据类型>auto_increment; --添加(修改时)
    添加与删除自动增长通过修改列名来完成
外键约束:foreign key (级联更新:on update cascade 级联删除:on delete cascade)

作用:让表与表产生关系,保证数据的正确性。

在创建表时,可以添加外键:

  • 语法:

    create table <表名>(
    .........
    外键列
    constraint <外键名称> foreign key <外键列名称> references <主键名称><主表列名称>
    );

添加外键(修改时):

  • alter table <表名>add constraint <外键名称> foreign key <外键列名称)> references<主键名称><主键列名称>;

删除外键:

  • alter table <表名>drop foreign key <外键名称>;

级联操作:在添加外键时设置
级联更新:on update cascade
级联删除:on delete cascade

  • constraint <外键名称> foreign key (外键列名称)
    references <主键名称>(主表列名称)on update cascade on delete cascade;
posted @ 2020-11-22 11:27  无尽白日梦  阅读(57)  评论(0)    收藏  举报