SQL 学习笔记(一)

1. SQL语言按功能划分

  1. DDL,英文叫做 Data Definition Language,也就是数据定义语言,它用来定义我们的数据库对象,包括数据库、数据表和列。通过使用 DDL,我们可以创建,删除和修改数据库和表结构。
  2. DML,英文叫做 Data Manipulation Language,数据操作语言,我们用它操作和数据库相关的记录,比如增加、删除、修改数据表中的记录。
  3. DCL,英文叫做 Data Control Language,数据控制语言,我们用它来定义访问权限和安全级别。
  4. DQL,英文叫做 Data Query Language,数据查询语言,我们用它查询想要的记录,它是 SQL 语言的重中之重。

SQL 是如何执行的

  • Oracle
    SQL 学习笔记(一)_第1张图片
  • MySQL 执行过程
    SQL 学习笔记(一)_第2张图片

数据库的执行引擎

  1. InnoDB 存储引擎:它是 MySQL 5.5 版本之后默认的存储引擎,最大的特点是支持事务、行级锁定、外键约束等。
  2. MyISAM 存储引擎:在 MySQL 5.5 版本之前是默认的存储引擎,不支持事务,也不支持外键,最大的特点是速度快,占用资源少。
  3. Memory 存储引擎:使用系统内存作为存储介质,以便得到更快的响应速度。不过如果 mysqld 进程崩溃,则会导致所有的数据丢失,因此我们只有当数据是临时的情况下才使用 Memory 存储引擎。
  4. NDB 存储引擎:也叫做 NDB Cluster 存储引擎,主要用于 MySQL Cluster 分布式集群环境,类似于 Oracle 的 RAC 集群。
  5. Archive 存储引擎:它有很好的压缩机制,用于文件归档,在请求写入时会进行压缩,所以也经常用来做仓库。
  • 如何在 MySQL 中对一条 SQL 语句的执行时间进行分析

select @@profiling;

profiling=0 代表关闭,我们需要把 profiling打开,设置为1

set profiling=1;
show profile; – 显示上次执行时间
show profile for query 执行的ID; – 显示某个的
select version; – 当前版本

DDL建表

  • 数据库定义

create database test;
drop database test;

  • 数据表定义

create table 表名;

DROP TABLE IF EXISTS player;
CREATE TABLE player (
player_id int(11) NOT NULL AUTO_INCREMENT,
team_id int(11) NOT NULL,
player_name varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
height float(3, 2) NULL DEFAULT 0.00,
PRIMARY KEY (player_id) USING BTREE,
UNIQUE INDEX player_name(player_name) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

  • 修改表结构

添加字段: alter table 表名 add (表字段 字段类型)
修改字段名称: alter table 表名 rename column 原来字段名 to 新字段名
修改字段的数据类型: alter table 表名 modify (字段名 字段类型 )
删除字段: alter table 表名 drop column 字段名称

  • 数据常见约束

主键 UNIQUE+NOT NULL
外键、唯一性、NOT NULL、DEFAULT、CHECK约束等

SELECT

  • 基础语法

DISTINCT 去除重复行关键字 , 针对于它后面所有的字段, 它放在所有查询字段之前

  • 关键字的书写顺序,不能颠倒

SELECT … FROM … WHERE … GROUP BY … HAVING … ORDER BY …

  • 执行顺序

FROM > WHERE > GROUP BY > HAVING > SELECT 的字段 > DISTINCT > ORDER BY > LIMIT

  • 比较运算符
    SQL 学习笔记(一)_第3张图片

通配符过滤:
_ 一个字符
% 任意个字符

SQL 函数

  • 算术函数
    SQL 学习笔记(一)_第4张图片
  • 字符串函数
    SQL 学习笔记(一)_第5张图片

,大多数 DBMS 使用(||)或者(+)来做拼接符,而在 MySQL中使用concat()函数

  • 日期函数

SQL 学习笔记(一)_第6张图片

  • 转换函数
    SQL 学习笔记(一)_第7张图片

  • 这里有一个有关命名规范的建议:

  1. 关键字和函数名称全部大写;
  2. 数据库名、表名、字段名称全部小写;
  3. SQL 语句必须以分号结尾。

你可能感兴趣的:(mysql,学习笔记)