MySQL数据库管理

  • 一、数据库介绍
  • 二、常用数据类型
  • 三、查看数据库结构
    • [3.1 进入数据库](#3.1 进入数据库)
    • [3.2 查看当前服务器中的数据库](#3.2 查看当前服务器中的数据库)
    • [3.3 查看数据库中包含的表](#3.3 查看数据库中包含的表)
    • [3.4 显示数据表的结构(字段)](#3.4 显示数据表的结构(字段))
  • 四、SQL语句
    • [4.1 SQL语句类型](#4.1 SQL语句类型)
    • [4.2 DDL(数据定义语言)](#4.2 DDL(数据定义语言))
      • [4.2.1 创建新的数据库](#4.2.1 创建新的数据库)
      • [4.2.2 创建新的表](#4.2.2 创建新的表)
      • [4.2.3 删除指定的数据表](#4.2.3 删除指定的数据表)
      • [4.2.4 删除指定的数据库](#4.2.4 删除指定的数据库)
    • [4.3 DML(数据操纵语言)](#4.3 DML(数据操纵语言))
      • [4.3.1 向数据表中插入新的数据记录](#4.3.1 向数据表中插入新的数据记录)
      • [4.3.2 修改、更新数据表中的数据记录](#4.3.2 修改、更新数据表中的数据记录)
      • [4.3.3 在数据表中删除指定的数据记录](#4.3.3 在数据表中删除指定的数据记录)
    • [4.4 DQL(数据查询语言)](#4.4 DQL(数据查询语言))
    • [4.5 DCL(数据控制语言)](#4.5 DCL(数据控制语言))
      • [4.5.1 修改表名](#4.5.1 修改表名)
      • [4.5.2 扩展表结构(增加字段)](#4.5.2 扩展表结构(增加字段))
      • [4.5.3 修改字段(列)名,添加唯一键](#4.5.3 修改字段(列)名,添加唯一键)
      • [4.5.4 修改类型](#4.5.4 修改类型)
      • [4.5.5 删除字段](#4.5.5 删除字段)
  • 五、扩展
  • 六、总结

一、数据库介绍

  • MySQL数据库的数据文件存放在/usr/local/mysql/data目录下,每个数据库对应一个子目录,用于存储数据表文件。当使用 myisam 存储引擎时,每个数据表对应为三个文件,扩展名分别为" .frm "、" .MYD "和" .MYI "。

  • " .frm "存放myisam表的表结构; " .MYD "存放myisam表的数据。每一个myisam表都会有一个".MYD"文件与之对应,同样存放于所属数据库的文件夹下,和".frm"文件在一起。

  • ".MYI"文件主要存放 myisam 表的索引相关信息。对于 myisam 存储来说,可以被 cache 的内容主要就是来源于".MYI"文件中。每一个myisam 表对应一个".MYI"文件,存放于位置和".frm"以及".MYD"一样。

  • myisam 存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件(frm,myd,myi)。 每个表都有且仅有这样三个文件做为 myisam 存储类型的表的存储,也就是说不管这个表有多少个索引,都是存放在同一个.MYI 文件中。

  • 另外还有 ".ibd" 和 ibdata 文件,这两种文件都是用来存放 innodb 数据的,之所以有两种文件来存放 innodb 的数据(包括索引),是因为 innodb 的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。独享表空间存储方式使用 ".ibd" 文件来存放数据,且每个表一个 ".ibd" 文件,文件存放在和 myisam 数据相同的位置。如果选用共享存储表空间来存放数据,则会使用 ibdata 文件来存放,所有表共同使用一个(或者多个,可自行配置)ibdata 文件。

二、常用数据类型

类型 说明
int 整形(定义整数类型数据)
float 单精度浮点。4字节32位。准确到小数点后六位
double 双精度浮点。8字节64位
char 固定长度的字符类型,定义字符类数据,不足的空格补齐
varchar 可变长度的字符类型
text 文本
image 图片
decimal(a,b) a个有效长度数字,小数点后面有b位,指定长度数组

三、查看数据库结构

3.1 进入数据库

bash 复制代码
mysql -uroot -p

3.2 查看当前服务器中的数据库

mysql 复制代码
show databases;

3.3 查看数据库中包含的表

mysql 复制代码
方法一:
USE  数据库名;      #切换库
SHOW TABLES;      #查看库中的表
 
方法二:
show tables from 数据库名;    #直接查看某个库中的表

3.4 显示数据表的结构(字段)

mysql 复制代码
方法一:
USE 数据库名;       #切换库
DESCRIBE 表名;     #查看指定表的结构
 
方法二:
DESCRIBE [数据库名.]表名;
可缩写成:DESC 数据库名.表名;

字段具体含义

字段 解释
Field 字段名称
Type 数据类型
Null 是否允许为空
Key 主键
Default 默认值
Extra 扩展属性,例如:标志符列(标识了种子,增量/步长)1 2

四、SQL语句

4.1 SQL语句类型

1、DDL:数据定义语言(Data Definition Language),用于创建数据库对象,如库、表、索引等。

例如:CREATE,DROP,ALTER 等。

2、DML:数据操纵语言(Data Manipulation Language),用于对表中的数据进行管理。

例如: UPDATE、INSERT、DELETE 等。

3、DQL:数据查询语言( Data Query Languag ),用于从数据表中查找符合条件的数据记录。

例如: SELECT

4、DCL:数据控制语言(Data Control Language),用于设置或者更改数据库用户或角色权限

例如: GRANT,REVOKE

4.2 DDL(数据定义语言)

4.2.1 创建新的数据库

mysql 复制代码
CREATE DATABASE 数据库名;

4.2.2 创建新的表

mysql 复制代码
CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);

主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。

NOT NULL 不允许为空值

DEFAULT 默认值为空

PRIMARY KEY 主键,一般选择没有重复并且不为空值的字段

4.2.3 删除指定的数据表

mysql 复制代码
法一
use 数据库名
DROP TABLE 表名

法二
DROP TABLE [数据库名.] 表名;
#如不用USE进入库中,则需加上数据库名


4.2.4 删除指定的数据库

mysql 复制代码
DROP DATABASE 数据库名;

4.3 DML(数据操纵语言)

4.3.1 向数据表中插入新的数据记录

mysql 复制代码
INSERT INTO 表名(字段1,字段2[,...]) VALUES (字段1的值,字段2的值,...);
mysql 复制代码
#为表中所有字段插入值,此种方式密码会以明文显示。
INSERT INTO class (id,name,score,passwd)  values(1,'张三',87.54,123456);

#为指定字段插入值
INSERT INTO class values (2,'李四',87.54,PASSWORD('123456'));
#PASSWORD ('123456'):查询数据记录时,密码字串以加密形式显示。若不使用PASSWORD(),查询时以明文显示

SELECT * FROM class;    #查询表的数据记录

4.3.2 修改、更新数据表中的数据记录

mysql 复制代码
UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];
mysql 复制代码
UPDATE class SET passwd=PASSWORD('') WHERE name='zhangsan';
UPDATE class SET name='王五',passwd='' WHERE id=2;

4.3.3 在数据表中删除指定的数据记录

mysql 复制代码
DELETE FROM 表名 [WHERE 条件表达式];

4.4 DQL(数据查询语言)

查询表数据记录

SELECT 字段名1,字段名2[,...] FROM 表名[WHERE 条件表达式];
mysql 复制代码
SELECT * FROM class;
SELECT id,name,score FROM class WHERE id=3;
select name from class\G				#以列表方式竖向显示
select * from class limit 2;			#只显示头2行
select * from class limit 2,3;		#显示第2行后的前3行





4.5 DCL(数据控制语言)

4.5.1 修改表名

mysql 复制代码
ALTER TABLE 旧表名 RENAME 新表名;

4.5.2 扩展表结构(增加字段)

mysql 复制代码
ALTER TABLE 表名 ADD address varchar(50) default '地址不详';
#default '地址不详':表示此字段设置默认值为地址不详,可与NOT NULL配合使用

4.5.3 修改字段(列)名,添加唯一键

ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [unique key];

unique key:唯一键(特性:唯一,但可以为空,空值只允许出现一次)

Primary key:唯一且非空(主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。)

4.5.4 修改类型

mysql 复制代码
ALTER TABLE 表名 modify column 字段名 类型;


4.5.5 删除字段

mysql 复制代码
ALTER TABLE 表名 DROP 字段名;

五、扩展

mysql 复制代码
create table if not exists info (
id int(4) zerofill primary key auto_increment,     #指定主键的第二种方式
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar(50));

#if not exists:表示检测要创建的表是否已存在,如果不存在就继续创建
#int(4) zerofill:表示若数值不满4位数,则前面用"0"填充,例0001
#auto_increment:表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;
自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且
添加失败也会自动递增一次
#unique key:表示此字段唯一键约束,此字段数据不可以重复:一张表中只能有一个主键,但是一张表中可以有多个唯一键
#not null:表示此字段不允许为NULL

六、总结

  1. 介绍了mysql的概述以及基本命令
  2. 介绍了SQL语句(DDL、DML、DQL、DCL)
相关推荐
qq_2003373919 分钟前
可以从以下几个方面判断一个 SQL 查询是否需要优化:
数据库
乐容27 分钟前
14,子查询语句嵌套
数据库
cyt涛32 分钟前
Redis访问工具
数据库·redis·spring cache·注解·客户端·lettuce·redistemplae
AllWe$1 小时前
九、Redis 的实际使用与Redis的设计
数据库·redis·缓存
u0133087091 小时前
大模型训练数据库Common Crawl
数据库·语言模型
杨浦老苏1 小时前
跨平台数据库管理软件SQLynx
数据库·docker·群晖
Flying_Fish_roe1 小时前
Java中NoSQL 与分布式数据库
java·数据库·nosql
草木·君2 小时前
【SQL】百题计划:SQL排序Order by的使用。
数据库·sql
小时候的阳光2 小时前
Docker方式部署ProxySQL和Keepalived组合实现MGR的高可用访问
mysql·docker·keepalived·mgr·proxysql
好奇的菜鸟2 小时前
GORM安全-保护你的应用免受SQL注入攻击
数据库·sql·安全