MySQL的介绍
SQL概述
Structured Query Language:结构化查询语言,其实就是定义了操作所有关系型数据库的基本使用规则。
MySQL的概述
用于存储和管理数据的仓库
MySQL数据库特点:
- MySQL是关系型数据库。
- 持续性存储数据,本质就是一个文件管理系统。
- 使用统一的QSL语句存储数据,存储数据方便。
MySQL基本使用步骤
- 安装MySQL
- 配置MySQL
- 登录MySQL
- 退出MySQL
详细分析步骤:
安装MySQL详细步骤:
参考百度,本片文章不再赘述。
配置MySQL详细步骤:
方法一:cmd使用管理员权限下,执行下列指令:
net start mysql 启动MySQL服务
net stop mysql 停止mysql服务
方法二:使用图形界面配置
我的电脑 -> 管理 -> 服务 -> mysql [单击启动服务即可,停止服务异同]
登录MySQL详细步骤:
- cmd命令行输入:mysql -u用户名 -p
- 输入账号密码
- 登录成功
退出MySQL详细步骤:
方法一:cmd命令行输入:exit
方法二:cmd命令行输入:quit [适用于远程登录时使用]
MySQL目录对比
MySQL目录与普通文件管理器名称对比:
MySQL数据库 | 普通文件管理器 |
---|---|
数据库 | 文件夹 |
表 | 文件 |
数据 [记录] | 数据 |
SQL通用语法的注意事项
- SQL语法可以单行或者多行书写,以分号结尾。
- 可以使用空格或者分隔符提高代码阅读
- SQL语句不区分大小写,建议使用大写。
注释
单行注释:-- 注释内容
注意:-- 和内容之间有一个空格
多行注释:/* 注释内容 */
SQL分类
DDL数据定义语言,用于定义数据库对象:数据库、表、列等。
DML数据操作语言,用于数据库中表的增、删、改等操作。
DQL数据查询语言,用于查询数据库中表的数据。
DCL数据库控制语言,用于定义数据库访问权限和安全级别,及创建用户的操作。
MySQL操作指令
创建数据库 or 表
/* 操作数据库 */
create database 数据库名称;-- 创建数据库
create database if not exists 数据库名称;-- 判断是否存在指定数据库
create database 数据库名称 character set 字符集(gbk,utf-8);-- 创建数据库时指定字符集
create database if not exists 数据库名称 character set 字符集(gbk,utf-8);-- 创建数据库时检查是否存在,不存在创建时指定字符集
/* 操作表 */
create table 表名称 (
列名1 数据类型1,
列名2 数据类型2,
...
列名n 数据类型n
);-- 创建表
create table 表名称1 like 表名称2;-- 创建表2,表2的结果复制表1
/* 增加记录 */
insert into 表名称 (
列名1,列名2...列名n
) value (
元素值1,元素值2...元素值n
) ;-- 添加记录
-- 注意:添加字符串类型需要'' or "",列名和元素值必须一一对应。
删除数据库 or 表
/* 操作数据库 */
drop database 数据库名称;-- 删除数据库
drop database if exists 数据库名称;-- 删除数据库前判断是否存在
/* 操作表 */
drop table 表名称;-- 删除表
drop table if exists 表名称;-- 删除表前判断是否存在
/* 操作记录 */
delete from 表名称 where 条件;-- 删除记录
-- 注意:如果没有条件,那么就删除全部记录。不过这样效率低,它是一条一条删除的。
truncate table 表名称;-- 先删除整张表,再创建一张结构、名称与删除表一致的表。
修改数据库 or 表
/* 操作数据库 */
alter database 数据库名称 character set 字符集名称;-- 修改数据库的字符集
/* 操作表 */
alter table 表名称 rename to 新的表名称;-- 修改表的名称
alter table 表名称 character set 字符集名称;-- 修改表的字符集
alter table 表名称 add 列名 数据类型;-- 添加一列
alter table 表名称 change 新的列名称;-- 修改列名称
alter table 表名称 modify 列名 新的数据类型;-- 数据类型
/* 操作记录 */
update 表名称 set 列名1=元素值1,列名2=元素值2...列名n=元素值n [where 条件];-- 修改记录内容
-- 注意:没有条件是修改全部内容。
查询数据库 or 表
/* 操作数据库 */
show databases;-- 查询所有数据库
show create database mysql; -- 查询创建数据库的语法
/* 操作表 */
show table;-- 查询某个数据库中所有的表名称
desc 表名称;-- 查询表的结果
/* 操作记录 */
select * from 表名称;-- 查询表中所有记录
select 列名1,列名2...列名n from 表名称;-- 查询表中指定列的记录
select distinct 列名1,列名2...列名n from 表名称; -- 查询表中不重复指定列的记录
select distinct 列名1,列名2...列名n (列名a+列名b) as 别名 from 表名称;-- 查询表中不重复指定列和(列名a+列名b)的记录,(列名a+列名b)显示列名为别名
-- 注意:as:as可省略
select distinct 列名1,列名2...列名n ifnull(列名a+列名b) as 别名 from 表名称;-- 查询表中不重复指定列和(列名a+列名b)的记录,(列名a+列名b)显示列名为别名。
-- 注意:ifnull(列名a+列名b):null参与运算,计算结果有null参与就为null。
条件查询
- where后面跟查询条件。
运算符 | 含义 |
---|---|
>,<,<=,>=,=,<>(不等于) | 与数学中同义 |
数值 between 数值 and | 在两个数值之间 |
in(集合) | 与数学中同义 |
like() | 模糊查询 |
is null | null不能使用 |
and、&& | 并 |
or、|| | 或 |
not、! | 不、取反 |
占位符
占位符在like()模糊查询中使用。
_:单个任意字符
%:多个任意字符
排序查询
order by 排序字段1,排序方式1,排序字段2,排序方式2...排序字段n 排序方式n;
-- 排序方式:
-- asc:升序
-- desc:降序
-- 注意:如果排序字段有多个排序方式,则前者排序完的值出现相同时,再进行后者排序方式。
select * from 表名称 where order by 排序字段1,排序方式1,排序字段2,排序方式2...排序字段n 排序方式n;
聚合函数
- count:统计个数,不含null。
- max:求最大值。
- min:求最小值。
- sum:求和。
- avg:求平均值。
select count(ifnull(列名称,0)) from 表名称;-- 统计列的记录数,包含null。
分组查询
group by 分组字段;
使用时(示例):
select * from 表名称 where group by 分组字段;
select * from 表名称 having group by 分组字段;-- 可以使用聚合函数
-- where 和 having 的区别:where在分组之前进行条件筛选。having则在分组之后进行条件筛选,所以可以使用聚合函数。
分页查询
limit 开始的索引,每页查询的条数;
-- 分页公式:开始索引 = (当前的页码 - 1) * 每页显示的条数
-- 注意:分页是一个方言操作,也就是mysql中才有。
约束
概念:对表中数据进行限制,保证数据的正确性、有效性和完整性。
分类:
- 主键约束:primary key
- 非空约束:not null
- 唯一约束:unique
- 外键约束:foreign key
增加约束:
- 在创建表示添加
- alter table 表名称 modify 列名 新的数据类型 约束条件;
特殊情况:
唯一约束不能通过modify 修改(删除)
解决方法:alter table 表名称 drop index 列名;
主键约束不能通过modify 修改(删除)
解决方法:alter table 表名称 drop primary key;
自动增加
概念:数据类型为数值型的,使用auto_increment
可以完成值得自动增长。