1、MySQL是什么?
mysql是一种流行的关系型数据库管理系统,其建立在关系模型基础上,由多张相互连接的二维表组成的数据库。
2、为什么MySQL叫做关系型数据库,这个“关系模型”是什么意思呢?
关系模型是一种数据模型,它描述了如何在数据库中组织和操作数据。这个模型是由IBM的研究员E.F. Codd在1970年提出的,他因此被誉为“关系数据库之父”。关系模型基于数学理论,尤其是集合论和谓词逻辑,为数据库设计提供了一个结构化的方法。
在关系模型中,数据被表示为关系,也就是二维表格。这些表格由行和列组成,其中:1、关系:相当于一个表格,是关系模型中的基础数据结构。
2、元组:表格中的一行,代表了数据集中的一条记录
3、属性:表格中的一列,代表了记录的一个特征或方面,每个属性有一个名字和一个数据类型。
4、码:一组属性,它们的组合能够唯一地标识关系中的每一个元组,最常见的是主键(Primary Key),它是一个关系的主标识符。
为了便于理解,你可以这么认为:通过二维表格来存储数据的数据库就可以称之为关系型数据库,不通过二维表格存储数据的数据库叫非关系型数据库。
注意这不严谨,但大多数情况是这样的。只是便于理解的一种方式。
3、接下来开始学习语法
学习语法之前,插入一个观点:
SQL语句通常使用大写字母进行书写,尽管这不是强制性的,但这一惯例有几个原因:
传统与习惯:
- 在SQL语言的早期版本中,一些数据库系统如Oracle可能在内部将SQL语句转换为大写,因此使用大写可以避免大小写转换所带来的任何潜在问题。
可读性与清晰性:
- 使用大写字母书写SQL关键字(如 SELECT, FROM, WHERE 等)可以帮助区分关键字与表名、列名等标识符,后者通常使用小写或遵循不同的命名约定。
- 这种对比使得SQL语句更容易阅读和理解,特别是在复杂的查询中。
一致性与团队协作:
- 在团队开发环境中,统一的编码风格可以减少混淆,提高代码的可维护性。
- 使用大写关键字可以作为一种编码标准,确保所有团队成员的SQL代码风格一致。
性能考量:
- 尽管现代数据库系统通常不会因为关键字的大小写而有显著的性能差异,但在某些情况下,如Oracle数据库,如果关键字或对象名称的大小写不一致,可能会导致额外的解析开销。
- 使用大写可以避免这种情况,尤其是在数据库优化和大规模数据处理场景中。
兼容性和移植性:
- 使用大写关键字可以确保SQL语句在不同的数据库系统间具有更好的兼容性,尽管大多数系统对大小写不敏感,但统一使用大写可以减少因系统差异而导致的意外错误。
下面我的案例都是用小写,没有原因,打字方便而已
4、DDL-数据库操作
1、列出当前数据库管理系统中有哪些数据库。
show databases;
2、创建数据库
格式:create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则] ;
语法一:create database 数据库名语法二:create database if not exists 数据库名
含义:如果数据库不存在,那么创建,如果存在,那么不创建
语法三:create database if not exists 数据库名 default charset 字符集
含义:如果数据库不存在,那么创建,如果存在,那么不创建;如果数据库被创建,那么设置为指定的字符集
语法四:create database if not exists 数据库名 default charset 字符集 collate 排序规则含义:如果数据库不存在,那么创建,如果存在,那么不创建;如果数据库被创建,那么设置为指定的字符集;并设置指定的排序规则
插个眼:后续会专门出一篇关于字符集与排序规则的文章,这里将会成为跳转链接
语法一:
语法二:
语法三:
语法四:
3、使用数据库
use yz;
4、查看当前用的是那个数据库
select database();
5、删除指定数据库
格式:drop database [if exists] 数据库名
语法一:drop database 数据库名
语法二:drop database if exists 数据库名含义:如果数据库存在,才会删除,不存在就不做操作
语法一:
语法二:
5、DDL-表操作-创建
1、创建表
create table 表名 (
字段1 类型 [comment 注释内容],字段2 类型 [comment 注释内容],
字段3 类型 [comment 注释内容],
.....
字段n 类型 [comment 注释内容]
)
6、DDL-表操作-数据类型
MySQL中的数据类型有很多,主要分为三类:数值类型,字符串类型,日期时间类型。
数值类型:
字符串类型:
时间类型:
7、DDL-表操作-查询
1、查询当前数据库中所有的表
show tables;
没有表的情况,所以查不出来。
有表的情况
2、查询表结构语句
desc 表名;
3、查询指定表的创建语句
show create table 表名;
8、DDL-表操作-修改
1、添加字段
alter table 表名 add 字段名 字段类型(长度) [comment 注释] [约束];
2、修改字段类型
alter table 表名 modify 字段名 新数据类型(长度);
3、修改字段名与字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度)[comment 注释] [约束];
4、删除字段
alter table 表名 drop 字段名;
5、修改表名
alter table 表名 rename to 新表名;
6、删除表
drop table [if exists] 表名;
7、删除指定表,并重新创建该表(删除表后,会自动重建,表结构完全一致,但原数据表的数据被全部删除了,这个指令有一个作用就是可以清空一张数据表)
truncate table 表名;