什么是数据库
数据库(Database,简称DB),长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据“仓库”,用于保存、管理数据。
数据库总览
关系型数据库(SQL)
MySQL、Oracle、SQL Server、SQLite、DB2
非关系型数据库(NOSQL)
Redis、MongoDB
什么是DBMS
数据库管理系统(Database Management System)
数据管理软件,科学组织和存储数据、高效地获取和维护数据
MySQL简介
是现流行的开源、免费的关系型数据库。
特点:
免费、开源数据库
小巧、功能齐全
使用便捷
可运行于Windows或Linux操作系统
可适用于中小型甚至大型网站应用
MySQL的运行机制
常见的MySQL数据库连接工具
MySQL Workbench:官方推出的数据库管理工具,提供了图形化界面进行数据库设计、管理、查询和调试等操作。
Navicat for MySQL:一个功能强大的MySQL数据库管理工具,可通过图形化界面进行数据库操作,支持多种连接方式。
HeidiSQL:一个免费的开源MySQL数据库管理工具,提供了简单而强大的界面,支持多个数据库连接。
DBeaver:一个通用的数据库管理工具,支持多种数据库,包括MySQL,提供了图形化界面和SQL编辑器。
SQLyog:一个流行的MySQL数据库管理工具,提供了直观的界面进行数据库管理和查询操作。
除此之外,一些常见的开发工具也集成这些功能,比如idea、vscode等。
结构化查询语句SQL
结构化查询语句分类
命令行操作数据库
创建数据库
CREATE DATABASE [IF NOT EXISTS] 数据库名;
删除数据库
DORP DATABASE [IF EXISTS] 数据库名;
查看数据库
SHOW DATABASES;
使用数据库
USE 数据库名;
显示表结构
desc 表名
显示表创建语句
show create table 表名
创建数据表
属于DDL的一种
CREATE TABLE [ IF NOT EXISTS ] 表名
(字段名1
列类型 [ 属性 ] [ 索引 ] [注释] ,字段名2
列类型 [ 属性 ] [ 索引 ] [注释] ,
… …字段名n
列类型 [ 属性 ] [ 索引 ] [注释]
) [ 表类型 ] [ 表字符集 ] [注释] ;
反引号 (可选、区别于单引号),
反引号用于区别MySQL保留字与普通字符而引入的。
数据值和列类型
列类型:
规定数据库中该列存放的数据类型
分为:数值类型、字符串类型、日期和时间型数值类型、NULL值。
数值类型:
字符串类型:
日期和时间型数值类型:
NULL值
理解为“没有值”或“未知值”
不要用NULL进行算术运算,结果仍为NULL
数据字段属性
UNSIGNED
无符号的
声明该数据列不允许负数
ZEROFILL
0填充的
不足位数的用0来填充,如 int(3),5则为 005
AUTO_INCREMENT
自动增长的,每添加一条数据,自动在上一个记录数上加1
通常用于设置主键,且为整数类型
可定义起始值和步长
NULL 和 NOT NULL
默认为NULL,即没有插入该列的数值
如果设置为NOT NULL,则该列必须有值
DEFAULT
默认的
用于设置默认值
表列类型注释
1 | CREATE TABLE [ IF NOT EXISTS ] `test` ( |
设置数据表的类型
1 | CREATE TABLE 表名( |
MySQL的数据表的类型:
MyISAM、InnoDB 、HEAP、BOB、CSV等。
常见的MyISAM与InnoDB类型:
设置数据表字符集
可为数据库、数据表、数据列设定不同的字符集
创建时通过命令来设置,如无设定,则根据MySQL数据库配置文件my.ini中的参数设定
1 | CREATE TABLE 表名( |
数据表的存储位置
MySQL数据表以文件方式存放在磁盘中
包括表文件、数据文件以及数据库的选项文件
位置:MySQL安装目录\data下存放数据表。目录名对应数据库名,该目录下文件名对应数据表
InnoDB类型数据表只有一个*.frm文件,数据文件为上一级目录的 ibdata1 文件。
MyISAM类型数据表对应三个文件:
*.frm – 表结构定义文件
*.MYD – 数据文件
*.MYI – 索引文件
修改数据表
修改表名
1 | ALTER TABLE 旧表名 RENAME AS 新表名 |
添加字段
1 | ALTER TABLE 表名 ADD 字段名 列类型 [ 属性 ] |
修改字段
1 | ALTER TABLE 表名 MODIFY 字段名 列类型 [ 属性 ] |
删除字段
1 | ALTER TABLE 表名 DROP 字段名 |
删除数据表
1 | DROP TABLE [ IF EXISTS ] 表名 |
IF EXISTS 为可选,判断是否存在该数据表,
如删除不存在的数据表会抛出错误.