MySQL

SQL语言

SQL的通用语法

  1. SQL语句可以单行或者多行书写,以分号结尾
  2. SQL语句可以用空格,缩进增加可读性。
  3. MySQL数据库SQL语句不区分大小写,关键字建议使用大写
  4. 注释:
    • 单行注释:–注释内容 或者 # 注释内容**(MySQL的特有)**
    • 多行注释**/* 注释内容*/**

SQL的分类

分类全称说明
DDLData Definition Language数据定义语言,用来定义数据库
DMLData Mainpulation Language数据操作语言,对于数据库进行增删改查
DQLData Query Language数据查询语言,用来查询数据库里的数据
DCLData Control Language数据控制语言,用来创建数据库用户,控制权限

DDL-数据库操作

  • 查询
    • 查询所有数据库: SHOW DATABASES;
    • 查询当前的数据库: SELECT DATABASE();
    • 查询当前数据库的所有表:SHOW TABLES;
    • 查询表结构:DESC 表名;
    • 查询指定表的建表语句:SHOW CREATE TABLE 表名;
  • 创建
    • 数据库的创建:CREATE DATABASE [IF ONT EXISTS] 数据库名称 [DEFAULT CHARSET 字符集][COLLATE 排列规则]
    • 表的创建:CREATE TABLE 表名(
      字段1 字段1类型[COMMENT 字段1的注解],
      字段2 字段2类型[COMMENT 字段2的注解],
      字段3 字段3类型[COMMENT 字段3的注解],

      字段n 字段n类型[COMMENT 字段n的注解]
      )[COMMENT 表的注释];
  • 删除
    • 删除数据库:DROP DATABASE [IF EXISTS] 数据库名称;
    • 删除字段:ALTER TABLE 表名 DROP 字段名;
    • 删除表名:DROP TABLE 表名;
    • 删除指定的表,并且重新创建:TRUNCATE TABLE 表名;
  • 使用
    • USE 数据库名称;
  • 修改
    • 修改数据类型:ALTER TABLE 表名 MODIFY 字段名 新的数据类型;
    • 修改字段名和字段类型:ALTER TABLE 表名 CHANGE 旧的 新的字段名 新的数据类型 注解;
    • 修改表名:ALTER TABLE 表名RENAME TO 新的名称;

DML

  • 添加数据
    • 给指定的字段添加数据:INSERT INTO 表名()VALUES();
    • 给全部字段添加数据:INSERT INTO 表名 VALUES ();
    • 批量添加数据:INSERT INTO 表名()VALUES(),(),()
    • INSERT INTO 表名 VALUES (),(),();
  • 修改数据
    • 修改指定的数据:UPDATE 表名 SET 字段名1 = 值1,…[WHERE 条件];
  • 删除
    • 删除数据:DELETE FROM 表名[WHERE 条件];

DQL

  • 基本查询
    • 查询多个字段:SELECT 字段1,字段2… FROM 表名;
    • 设置别名:SELECT 字段1[AS 别名1]…FROM 表名;
    • 去除重复记录:SELECT DISTINCT 字段列表FROM 表名;
    • 条件查询:SELECT 字段列表 FROM 表名 WHERE 条件列表;
    • 聚合函数:SELECT 聚合函数(字段列表) FROM 表名;
    • 分组查询:SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分段字段名 [HAVING 分组后过滤条件];
    • 排序排序:SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2,排序方式2;(ASC:升序,DECS:降序)
    • 分页查询:SELECT 字段列表 FROM 表名 LIMIT 起始索引,每页的页数;

外键

语法

  • 添加外键
    • ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键名称) REFERENCE 主表(主表列名);
  • 删除外键
    • alter table emp drop foreign key fk_emp_dept_id;
  • 删除/更新行为
行为说明
NO ACTION当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。 (与 RESTRICT 一致) 默认行为
CASCADE当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有,则也删除/更新外键在子表中的记录。
SET NULL当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(这就要求该外键允许取null)。
SET DEFAULT父表有变更时,子表将外键列设置成一个默认的值
具体语法ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES 主表名 (主表字段名) ON UPDATE CASCADE ON DELETE CASCADE;

多表查询

内连接

  • 隐式内连接
    • SELECT 字段列表 FROM 表1 , 表2 WHERE 条件 … ;
  • 显示内连接
    • SELECT 字段列表 FROM 表1 [ INNER ] JOIN 表2 ON 连接条件 … ;

外连接

  • 左外连接
    • SELECT 字段列表 FROM 表1 LEFT [ OUTER ] JOIN 表2 ON 条件 … ;
  • 右外链接
    • SELECT 字段列表 FROM 表1 RIGHT [ OUTER ] JOIN 表2 ON 条件 … ;

自连接

  • SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件 … ;

联合查询

  • select * from emp where salary < 5000
  • union [all]
  • select * from emp where age > 50;
    当要去重时,需要去掉all关键字

子查询

  • 按照子查询不同的返回结果,分为
    • 标量子查询(子查询结果为单个值)
    • 列子查询(子查询结果为一列)
    • 行子查询(子查询结果为一行)
    • 表子查询(子查询结果为多行多列)
  • 根据查询位置,分为
    • WHERE之后
    • FROM之后
    • SELECT之后

标量子查询

子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式,这种子查询称为标量子查询

常用的操作符:= <> > >= < <=

列子查询

子查询返回的结果是一列(可以是多行),这种子查询称为列子查询

常用的操作符:IN 、NOT IN 、 ANY 、SOME 、 ALL

操作符描述
IN在指定的集合范围之内,多选一
NOT IN不在指定的集合范围之内
ANY/SOME子查询返回列表中,有任意一个满足即可
ALL子查询返回列表的所有值都必须满足

行子查询

子查询返回的结果是一行(可以是多列),这种子查询称为行子查询

常用的操作符:= 、<> 、IN 、NOT IN

表子查询

子查询返回的结果是多行多列,这种子查询称为表子查询

常用的操作符:IN

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值