MySQL数据库

295 阅读7分钟

MySQL数据库的特点

  • 性能卓越、服务稳定
  • 开源、无版权限制、成本低
  • 多线程、多用户
  • 基于C/S(客户端/服务端)架构
  • 安全可靠

SQL语句

SQL语句用于维护管理数据库,包括数据库查询、数据更新、访问控制、对象管理等功能。

分类

DDL:数据定义语言,用于创建数据库对象,如库、表、索引等

DML:数据操纵语言,用于对表中的数据进行管理

DQL:数据查询语言,用于从数据表中查找符合条件的数据记录

DCL:数据控制语言,用于设置或者更改数据库用户或角色权限

mysql查看命令

登录mysql命令

mysql -u 用户 -p密码

微信截图_20221024094334.png

退出命令

quit

微信截图_20221024094705.png

查看数据库的版本号

mysql -V

微信截图_20221024101701.png

查看库

show databases;
#可以查看数据库中有哪些库

微信截图_20221024102204.png

查看表

方法一

 use 库名;
 #use进行切换
 show tables;
 #查看库中有哪些表
 
 
 

微信截图_20221024102655.png

方法二

 show tables from 库名;
 
 

微信截图_20221024105031.png

查看表结构

 desc 表名;
 #以表格格式展示结构

微信截图_20221027101345.png

 show create table 表名
 #以SQL命令格式展示表结构,还能显示表的其他信息

微信截图_20221027100837.png

查看表的字段

方法一

 use  库名;
 #进行切换
 describe(desc)  表名;

微信截图_20221024105755.png

方法二

 desc  库名.表名;

微信截图_20221024110309.png

创建和删除命令

创建新的数据库

  create database 库名
  
  

微信截图_20221024112941.png

创建新的 表

 create table 表名 (字段1 数据类型,字段2 数据类型,...,[,PRIMARY KEY(主键名)]);
 #主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键
 

微信截图_20221024115243.png

删除表命令

方法一

drop table 表名;


微信截图_20221024200749.png

方法二

 delete from 表名 where 条件表达式;

微信截图_20221025204558.png

删除库命令

微信截图_20221024201553.png

注意:删除命令为高危命令,谨慎使用

插入命令

方法一

insert into 表名  (字段1,....) values(值1,....);

微信截图_20221024203651.png

方法二

 insert into 表名  values(值1,...);
 
 

微信截图_20221024210003.png

de8115be216e88e8407e32336ec9f3e.png

查看所有字段命令

 select * from 库名/表名;
 #\G竖型显示

微信截图_20221024210823.png

微信截图_20221024210954.png

指定查看指定列

select  列 名,列 名,...  from  表名;


微信截图_20221025084612.png

只显示前两行

 select * from  表名  limit  行数;
 
 

微信截图_20221025085427.png

显示后两行

  select * from 表名  limit 行数1,行数2#行数1指从第几行开始
  #行数2指指定的行数
  
  

微信截图_20221025090006.png

修改数据

update 表名 set 字段=where 条件表达式

微信截图_20221025091007.png

如果不加where 指定条件会整行修改

微信截图_20221025091221.png

修改表名和表结构

修改表名

 alter  table  旧表名  rename  新表名
 

微信截图_20221026085233.png

扩展表结构(增加字段)

alter  table  表名  add  字段名  字段数据类型  default(属性约束) '地址不详';
#default ‘地址不详’:表示此字段设置默认值 地址不详,可与NOT NULL配合使用

微信截图_20221026093057.png

修改字段名,添加唯一键

alter    table    表名    change    旧列名   数据类型   [unique key]

微信截图_20221026112730.png

删除字段

alter table 表名 drop 字段;

微信截图_20221027084556.png

数据类型的属性

MySQL关键字含义
NULL数据列可包含NULL值
NOT NULL数据列不允许包含NULL值
DEFAULT默认值
PRIMARY KEY主键
AUTO_INCREMENT自动递增,适用于整数类型
UNSIGNED无符号
CHARACTER SET name指定一个字符集

MySQL常见约束

1、非空约束(not null)

非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。

Null类型特征:所有的类型的值都可以是null,包括int、float 等数据类型

2、唯一性约束(unique)

唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。

唯一约束不允许出现重复的值,但是可以为多个null。

同一个表可以有多个唯一约束,多个列组合的约束。

在创建唯一约束时,如果不给唯一约束名称,就默认和列名相同。

唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束。

3、主键约束(primary key) PK

主键约束相当于 唯一约束 + 非空约束 的组合,主键约束列不允许重复,也不允许出现空值。

每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别创建。

当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。

4、外键约束(foreign key) FK

外键约束是用来加强两个表(主表和从表)的一列或多列数据之间的连接的,可以保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。

创建外键约束的顺序是先定义主表的主键,然后定义从表的外键。也就是说只有主表的主键才能被从表用来作为外键使用,被约束的从表中的列可以不是主键,主表限制了从表更新和插入的操作。

5、默认值约束 (Default)

若在表中定义了默认值约束,用户在插入新的数据行时,如果该行没有指定数据,那么系统将默认值赋给该列,如果我们不设置默认值,系统默认为NULL。

6、自增约束(AUTO_INCREMENT)

自增约束(AUTO_INCREMENT)可以约束任何一个字段,该字段不一定是PRIMARY KEY字段,也就是说自增的字段并不等于主键字段。

但是PRIMARY_KEY约束的主键字段,一定是自增字段,即PRIMARY_KEY 要与AUTO_INCREMENT一起作用于同一个字段。

当插入第一条记录时,自增字段没有给定一个具体值,可以写成DEFAULT/NULL,那么以后插入字段的时候,该自增字段就是从1开始,没插入一条记录,该自增字段的值增加1。当插入第一条记录时,给自增字段一个具体值,那么以后插入的记录在此自增字段上的值,就在第一条记录该自增字段的值的基础上每次增加1。

也可以在插入记录的时候,不指定自增字段,而是指定其余字段进行插入记录的操作。

克隆表

克隆表结构

create table 新表名 like 旧表名;
#通过like方法复制旧表的表结构
#可以保证新表的表结构跟旧表是一致的

微信截图_20221027090851.png

克隆数据

方法一

 insert into 新表名 select * from 旧表名;
 #向新表插入旧表的查询数据
 #可以保证新表的表数据跟旧表的一致

微信截图_20221027091155.png

方法二

 create table 新表名 (select *  from 旧表名);
 #在创建表的时候直接引用旧表查询的结构和数据
 #新表的表数据和旧表是一样,但可能会出现新表的表结构和旧表的不一致

微信截图_20221027091847.png

微信截图_20221027095046.png

清空表,删除表内的所有数据

方法一

delete from 表名;
#清空表后,返回的结果内有删除的记录条目,delete工作时是一行一行的删除记录数据的,如果表中有自增长字段,使用delete from删除所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自 增写入记录

微信截图_20221027105500.png

方法二

truncate table 表名;
清空表后,没有返回被删除的条目,truncate工作时是将表结构按原样重新建立,因此在速度上truncate会比delete清空表快,使用truncate table清空表内数据后,ID会从1开始重新记录

微信截图_20221027110220.png

创建临时表

临时表创建成功后,使用show tables命令是看不到创建的临时表的,临时表会在连接退出后被销毁。如果在推出连接之前 ,也可以可执行增删改查等操作,比如使用drop table语句手动直接删除临时表。

 create temporary table 表名 (字段1 数据类型,...);
 
 

微信截图_20221028091015.png

微信截图_20221028091032.png

创建外键约束

保证数据的完整性和一致性

外键的定义

如果同一个属性字段x在表中是主键,而在表二中不是主键,则字段x称为表二的外键

主键表和外键表的理解

  • 以公共关键字作为主键的表为主键表(父表,主表)
  • 以公共关键字作为外键的表为外键表(从表,外表)

注意

与外键关联的主表的字段必须设置为主键。要求从表不能是临时表,主从表的字段具备相同的数据类型,字符长度和约束

创建主键表

微信截图_20221028094831.png

创建外键表,并与主键表做关联

微信截图_20221028095414.png

微信截图_20221028095454.png

主表和从表插入和删除规则

插入新的数据记录时,要先主表再从表 删除数据记录时,要先从表再主表,也就是说删除主键表的记录时必须先删除其他与之类联的表中的记录

微信截图_20221028100835.png

微信截图_20221028101019.png