笔记:MySQL基础概要
* MySQL数据库:
* 概念:按照数据结构来组织、存储和管理数据的仓库
用于存储数据的仓库.
* 关系型数据库:
* 具有多个行和列的表格.
* 产品:MySQL、Oracle、SQL Server等.
* NoSQL:
* 开发网站:LAMP - Linux Apache MySQL PHP
* MySQL:
* SQL语言:(重要)
* DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等.
* DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据).
* DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别.
* DQL(Data Query Language):数据查询语言,用来查询记录(数据).
* DDL
* 操作数据库
* 编码问题:
* 指的不是MySQL数据库的编码问题.
* MySQL默认的连接方式,命令行方式.(只能支持GBK编码,不支持UTF-8编码)
* 创建数据库:
* 语法:
* CREATE DATABASE 数据库名称;
* CREATE DATABASE IF NOT EXISTS 数据库名称;
* 切换数据库(设置当前使用的是哪个数据库)
* 语法:USE 数据库名称;
* 查看数据库:
* 语法:SHOW DATABASES;
* 删除数据库:
* 语法:DROP DATABASE 数据库名称;
* 操作数据库表
* 数据类型:
* 数值数据类型:
* INT - 整数
* FLOAT - 单精度浮点数
* DOUBLE - 双精度浮点数
* DECIMAL - 精确浮点数
* 日期\时间类型:
* YEAR - 年
* DATE - YYYY-MM-DD
* TIME - HH:MM:SS
* DATETIME - YYYY-MM-DD HH:MM:SS
* TIMESTAMP - 时间戳
* 字符串类型
* CHAR - 固定长度字符串 - M个字节,1<=M<=255
* VARCHAR - 可变长度字符串 - M+1个字节,1<=M<=255
* 枚举 - 几选一的问题
* 创建数据库表
* 语法:
CREATE TABLE 表名 (
字段名 数据类型 PRIMARY KEY,
字段名 数据类型 NOT NULL,
字段名 数据类型 UNIQUE,
字段名 数据类型 DEFAULT 默认值
);
* 查看数据库表
* 语法:
* DESC 表名; - 查看表结构
* 修改数据库表
* 语法参考WORD文档.
* ALTER TABLE 表名 ADD 新字段名 数据类型 [约束条件][FIRST|AFTER 已存在字段名];
* 删除数据库表
* 语法:DROP TABLE 表名;
* 表的行和列含义:
* 行 - 记录 - 一条信息.
* 列 - 字段 - 一个信息所有记录.
* 完整性约束:(与创建表有关)
* 主键:
* 主键字段的数据唯一,并且不允许为空.
* 分类:
* 单字段主键:
* 创建表语句中使用:字段名 数据类型 PRIMARY KEY
* 创建表语句执行完毕后:PRIMARY KEY(字段名1);
* 多字段主键:PRIMARY KEY(字段名1, 字段名2,... 字段名n);
* 主键自增约束:
* 语法:字段名 数据类型 PRIMARY KEY AUTO_INCREMENT
* 外键约束:
* 语法:FOREIGN KEY(字段名) REFERENCES 主表名(主键字段);
* 非空约束:
* 语法:NOT NULL
* 唯一约束:
* 语法:UNIQUE
* 唯一与主键区别:
* 主键:非空+唯一
* 唯一:允许为空
* 默认约束:
* 语法:DEFAULT 默认值.
* DQL:
* 基本查询语句:
* 默认查询所有记录:SELECT * FROM 表名;
* 指定查询字段记录:SELECT 字段名1,字段名2,... FROM 表名;
* 条件查询语句:
* 语法:SELECT * FROM 表名 WHERE 条件子句;
* 条件子句使用的运算符:
* 不等:!=或<>
* BETWEEN 值(下限) AND 值(上限) age>=25&&age<=95
* IS NULL:
* ""和null的区别:
* "" - 存在,但值为空.
* null - 不存在.
* AND和OR:
* AND - &&
* OR - ||
* NOT
* IN(SET)
* 模糊查询语句:
* 语法:SELECT * FROM 表名 WHERE 字段名 LIKE 模糊条件;
* 模糊条件:
* '%' - 一个'%'占一个或多个字符.
* '_' - 一个'_'占一个字符.
* 字段控制语句:
* 去掉重复记录:DISTINCT关键字
* 用在SELECT 与去重的字段名之间.
* 如果查询字段为多个时,去重的字段必须是第一个字段.
* 如果查询字段为多个时,去重的字段是查询的所有字段值.
* 起别名:
* SELECT 字段名1+字段名2 [AS] 别名 FROM 表名;
* 查询两个字段之和的记录.
* 排序查询语句:
* 语法:SELECT * FROM 表名 ORDER BY s_age [ASC/DESC];
* 关键字:
* ASC - 正序排序(默认)
* DESC - 倒序排序
* 聚合函数查询:
* SUM() - 求和
* COUNT() - 记录总数
* MAX() - 最大值
* MIN() - 最小值
* AVG() - 平均数
* 分组查询查询:
* 语法:SELECT * FROM 表名 GROUP BY 字段名;
* 注意:多与聚合函数配合使用.
* 聚合函数作为条件时,使用HAVING关键字,而不是WHERE.
* 完整的查询SQL语句:
SELECT * FROM 表名 WHERE 条件子句 GROUP BY 字段名 HAVING 聚合函数条件 ORDER BY 字段名;
* 连接查询语句(多表查询):
* 多表查询的分类:
* 表A和表B一起查询的结果.
* 表A从逻辑上当作两个张表查询.
* 连接查询语句分类:
* 内连接 - 表A从逻辑上当作两个张表查询.
* 外连接 - 表A和表B一起查询的结果.
* 左外连接
SELECT 字段名1,字段名2,... FROM 表名1 LEFT JOIN 表名2 ON 表名1.字段名=表名2.字段名;
* 右外连接
* DML:
* 新增:
* 语法:
* 插入所有字段值:INSERT INTO 表名 VALUES(所有字段值,字段值之间用",");
* 插入指定字段值:INSERT INTO 表名(指定字段名) VALUES(所有字段值,字段值之间用",");
* 修改(更新):
* 语法:UPDATE 表名 SET 字段名=新值 WHERE 条件子句;
* 删除
* 语法:DELETE FROM 表名 WHERE 条件子句;
* 实际情况:
* 物理删除:DELETE语句
* 逻辑删除:增加字段"状态",0为正常,1为新增,2为修改,3为删除.
* DCL:
* 用户管理
* 数据库的备份与还原
* 备份:
* 注意:不需要登录MySQL数据库.
* mysqldump –u用户名 –p密码 数据库名>生成脚本路径;
* 还原:
* 注意:可以登录MySQL数据库,也可以不登陆.
* 不登陆:mysql –u用户名 –p密码 数据库名<恢复脚本路径;