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;
本文来自博客园,作者:无尽白日梦,转载请注明原文链接:https://www.cnblogs.com/endless-daydream/articles/14018667.html

浙公网安备 33010602011771号