提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
MySQL作为当下热门的关系型数据库操作系统,MySQL也是程序开发必备技术之一。其开源免费的条件,也为学习者提供了良好条件。本文主要介绍关于MySQL基本操作和操作细节,有MySQL操作四个板块、数据库设计、事务等。
一、MySQL操作四大板块
预备知识
Mysql语法 | |
---|---|
1.可单行或多行书写,以分号结尾 | |
2.不区分大小写 | |
3.注释:1) --注释内容 2) #注释内容 |
注意:--前必须有空格
2.char 和 varchar的区别:
char在存储字符时,如果存储字符的长度小于char定义的最大长度,会自动用空格补齐到最大长度,因此char被成为定长字符。
varchar在存储字符时,会根据存入表中数据自动计算。varchar被称为变长字符。
1.DDL(操作数据库和表)
1)create database 数据库名; #创建数据库
2)show databases; #展示当前所有数据库
3)use 数据库名; #使用数据库
4)drop database 数据库名; #删除数据库
5)show tables; #展示当前数据库的所有表
6)desc 表名; 查询表结构
7)create table 表名; #创建表
8)drop table 表名; #删除表
9)drop table if exists 表名; #如果存在xx表,才删除它
10) --修改表
11)alter table 表名 rename to 新表名; #设置表名
12)alter table 表名 add 字段名 字段类型; #添加新字段
13)alter table 表名 modify 字段名 字段类型; #修改字段类型
14)alter table 表名 change 字段名 新字段名 字段类型; #修改字段名和字段类型
2.DML(对表中数据进行增删改)
2.1添加数据
insert into 表名 字段名1,字段名2,... values(值1,值2, ...);
2.2删除数据
delete from 表名 [where 条件];
注意:如果不加条件,则删除所有。
2.3更新数据
update 表名 set 字段名1 = 值1,字段名2 = 值2, ... [where 条件];
注意:如果不加条件,则更新所有。
3.DQL(对表中数据进行查询)
1)select * from 表名; #查询表中所有记录
#注意最好不使用 * ,使用字段名来查询
2)select 字段名1,字段名2 from 表名; #查询指定字段的记录
3)select distinct 字段名 from 表名; #查询指定字段时,去除重复记录
注:1.as 关键字可为字段名取别名,可省略
2. 查询中不等于也可用<>
3.in() 多选一查询(两个以上用)
3.1排序查询
select 字段名 from 表名 order by Asc/Desc;
Asc:表示查询到的数据以升序方式展示,排序查询默认为升序。
Desc:表示查询到的数据以降序方式展示。
注:如果有多个排序条件,当前字段值一样,会按第二条件排序。
聚合函数:聚合函数运算,null不能参与
聚合函数 | 功能 |
---|---|
count() | 统计数量,查询时不能为null |
max() | 最大数 |
min() | 最小数 |
sum() | 求和 |
avg() | 求平均 |
3.2分组查询
select 字段名 from 表名 group by 字段名;
注意:分组之后,查询字段为聚合函数和分组字段,其他字段无意义。
补充:where 与 having的区别
1)使用时机不同,where在分组之前,having在分组之后
2)判断条件不同,where不能对聚合函数判断,having可以
执行顺序:where --> 聚合函数 -->having
3.3分页查询
select 字段名 from 表名 limit 起始索引,查询条目数;
起始索引 = (当前页码 -1) * 显示条目数
4.DCL(对数据库进行权限控制)
4.1约束
约束:即为加入表中的数据进行限制;约束的存在保证了数据库中数据的正确性、完整性和有效性。
primary key 主键约束
not null 非空约束
unique 唯一约束
default 默认约束
auto_increment 自增
外键约束:用来让两个表之间的数据建立连接,保证数据的一致性。
constraint 外键名 foreign key (字段名) reference 主表名(字段名)
alter table 表名 drop foreign key 外键名; #删除外键
alter table 表名 add constraint 外键名 foreign key (字段名) reference 主表名(字段名); #添加外键
二、数据库设计
- 数据库设计概念:根据业务需求运行DBMS,设计构造成最优模型,建立数据库中的表结构以及表与表之间的关联关系的过程。
- 数据库设计步骤:1.需求分析 2.逻辑分析 3.物理分析 4.维护设计
1.数据表之间的关系
1)一对多
实现方式:需通过外键使两张表建立连接。(字段多的表设外键)
2)多对多
实现方式:需建立中间表,中间表至少包含两个外键,分别关联两方主键。
3)一对一
实现方式:在任意一方加入外键,关联另一方主键,并且设外键为唯一。
注意:一对一,实际应用场景是将表拆分。例如用户信息表有很多,把用户信息表拆分为用户基本信息表,和用户详细信息表,再做一对一关系。
2.连接查询
1)内连接:相当于 A B表交集的数据
2)左外连接:查A表中的所有数据和B表交集的部分数据
3)右外连接:查B表中的所有数据和A表交集的部分数据
内连接查询语法
1)select 字段列表 from 表1,表2,... where 条件; #隐式内连接
2)select 字段列表 from 表1 [inner] join 表2 on 条件; #显式内连接
外连接查询语法
3)select 字段列表 from 表1 left join 表名 on 条件; #左外连接
4)select 字段列表 from 表1 right join 表名 on 条件; #右外连接
三、事务
1.事务是一组操作数据库的命令。
2.事务操作时:这一组数据库操作命令要么全部成功,要么全部失败。
命令 | 功能 |
---|---|
begin; | 开启事务 |
rollback; | 回滚事务 |
commit; | 提交事务 |
3.事务四大特性:1)原子性 2)一致性 3)隔离性 4)持久性
总结
以上就是今天要讲的内容了,本文仅简单介绍MySQL的基本操作和一些需注意的地方,只能满足基本使用的需求。有更多需要深入了解的可以另查资料。
2022年8月14日更新
创建数据库db1并指定字符集utf8
create database db1 default charater set utf8 collate utf8_general_ci
创建数据库表hero并指定字符集utf8
create table hero(
name(varchar(10))
)charater set utf8 collate utf8_general_ci
在hero表的最前面添加uid字段,在name后面添加price字段
alter table hero add uid int first
alter table hero add price int after name