初始MySQL

1、数据库

概念:数据库,英文名称为Database,简称DB。从专业角度解释为存储在计算机磁盘上的有组织,可共享的大量数据的集合。

1.1、数据库的类型

数据库分为关系型数据库非关系数据库 两大类。常见的关系型数据库由MySQL 、 Oracle 、 SQL 、Server 、 SQLite 、 DB2等。

数据库管理系统,英文名称为Database Management System,简称DBMS。主要用于科学组织和存储数据、高效的获取和维护数据。

2、结构化查询语言

2.1、SQL分类

名称 描述 命令
数据定义语言(DDL) 数据库、数据表的创建、修改和删除 CREATE、ALTER、DROP
数据操作语言( DML ) 数据的增加、修改和删除 INSERT、UPDATE、DELETE
数据查询语言( DQL ) 数据的查询 SELECT
数据控制语言( DCL ) 用户授权、事务的提交和回滚 GRANT、COMMIT、ROLLBACK

2.2、数据库操作

2.2.1、创建数据库的语法

sql 复制代码
CREATE DATABASE [IF NOT EXISTS] 数据库名称 DEFAULT CHARACTER SET 字符集 COLLATE 排序规则;

示例:创建数据库lesson,并指定字符集为 GBK,排序规则为 GBK_CHINESE_CI

sql 复制代码
CREATE DATABASE IF NOT EXISTS lesson DEFAULT CHARACTER SET GBK COLLATE GBK_CHINESE_CI;

2.2.2、修改数据库的语法

sql 复制代码
ALTER DATABASE 数据库名称 CHARACTER SET 字符集 COLLATE 排序规则;

示例:修改数据库lesson的字符集为 UTF8,排序规则为 UTF8_GENERAL_CI

sql 复制代码
ALTER DATABASE lesson CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;

2.2.3、删除数据库的语法

sql 复制代码
DROP DATABASE [IF EXISTS] 数据库名称;

示例:删除数据库lesson

sql 复制代码
DROP DATABASE IF EXISTS lesson;

2.2.4、查看数据库语法

sql 复制代码
SHOW DATABASES;

2.2.5、查看数据库语法

sql 复制代码
USE 数据库名称;

示例:使用数据库lesson

sql 复制代码
USE lesson;

3、列类型

在 MySQL中,常用列类型主要分为数值类型、日期时间类型、字符串类型。

3.1 数值类型

类型 说明 存储需求
tinyint 非常小的数据 1字节
smallint 较小的数据 2字节
mediumint 中等大小的数据 3字节
int 标准整数 4字节
bigint 较大的整数 8字节
float 单精度浮点数 4字节
double 双精度浮点数 8字节
decimal 字符串形式的浮点数 m个字节

3.2、日期时间类型

类型 说明
DATE YYYY-MM-dd,日期格式
TIME HH:mm:ss,时间格式
DATETIME YY-MM-dd HH:mm:ss
TIMESTAMP YYYY-MM-dd HH:mm:ss格式表示的时间戳
YEAR YYYY格式的年份值

3.3、字符串类型

类型 说明
char [(M)] 固定长字符串,检索快但费空间, 0 <= M <= 255
varchar [(M)] 可变字符串0 <= M <= 65535
text 文本串

3.4、列类型修饰属性

属性名 示例
UNSIGNED INT(4) UNSIGNED,表示只能为4位大于等于0的整数
ZEROFILL INT(4) ZEROFILL,如果给定的值为10,此时只有2位,而该列需要4位,不足的2位由0来填充,最终值为0010
NOT NULL VARCHAR (20) NOT NULL,表示该列数据不能为空值
DEFAULT INT(4) DEFAULT 0,表示该列不赋值时默认为0
AUTO_INCREMENT INT(11) AUTO_INCREMENT NOT NULLPRIMARY KEY。第一次为该列中插入值时为1,第二次为2

4、数据表操作

4.1、 数据表类型

MySQL中的数据表类型有许多,如 MyISAM、InnoDB、HEAP、BOB、CSV等。其中最常用的就是MyISAM和 InnoDB

4.2、MyISAM与 InnoDB的区别

InnoDB 支持事务、行锁、外键,适合业务核心表;MyISAM 无事务、表锁,适合读多写少的静态表。

4.3、创建数据表

sql 复制代码
CREATE TABLE [IF NOT EXISTS] 数据表名称(
    字段名1 列类型(长度) [修饰属性] [键/索引] [注释],
    字段名2 列类型(长度) [修饰属性] [键/索引] [注释],
    字段名3 列类型(长度) [修饰属性] [键/索引] [注释],
    ......
    字段名n 列类型(长度) [修饰属性] [键/索引] [注释]
) [ENGINE = 数据表类型][CHARSET=字符集编码] [COMMENT=注释];

示例:创建学生表,表中有字段学号、姓名、性别、年龄和成绩

sql 复制代码
CREATE TABLE IF NOT EXISTS student(
    `number` VARCHAR(30) NOT NULL PRIMARY KEY COMMENT '学号,主键',    name VARCHAR(30) NOT NULL COMMENT '姓名',
    sex TINYINT(1) UNSIGNED DEFAULT 0 COMMENT '性别:0-男 1-女 2-其他',    age TINYINT(3) UNSIGNED DEFAULT 0 COMMENT '年龄',
    score DOUBLE(5, 2) UNSIGNED COMMENT '成绩'
)ENGINE=InnoDB CHARSET=UTF8 COMMENT='学生表';

4.4、修改数据表

  • 修改表名
sql 复制代码
ALTER TABLE 表名 RENAME AS 新表名;

示例:将student表名称修改为 stu

sql 复制代码
ALTER TABLE student RENAME AS stu;
  • 增加字段
sql 复制代码
ALTER TABLE 表名 ADD 字段名 列类型(长度) [修饰属性] [键/索引] [注释];

示例:在 stu表中添加字段联系电话(phone),类型为字符串,长度为11,非空

sql 复制代码
ALTER TABLE stu ADD phone VARCHAR(11) NOT NULL COMMENT '联系电话';
  • 查看表结构
sql 复制代码
DESC 表名; -- 查看表结构
  • 修改字段
sql 复制代码
-- MODIFY 只能修改字段的修饰属性
ALTER TABLE 表名 MODIFY 字段名 列类型(长度) [修饰属性] [键/索引] [注释];
-- CHANGE 可以修改字段的名字以及修饰属性
ALTER TABLE 表名 CHANGE 字段名 新字段名 列类型(长度) [修饰属性] [键/索引] [注释];

示例: 将 stu表中的 sex字段的类型设置为 VARCHAR,长度为2,默认值为'男',注释为 "性别,男,女,其他"

sql 复制代码
ALTER TABLE stu MODIFY sex VARCHAR(2) DEFAULT '男' COMMENT '性别:男,女,其他';

示例:将 stu表中 phone字段修改为 mobile,属性保持不变

sql 复制代码
ALTER TABLE stu CHANGE phone mobile VARCHAR(11) NOT NULL COMMENT '联系电话';
  • 删除字段
sql 复制代码
ALTER TABLE 表名 DROP 字段名;

示例:将 stu表中的 mobile字段删除

sql 复制代码
ALTER TABLE  stu DROP mobile;

4.5、删除数据表

sql 复制代码
DROP TABLE [IF EXISTS] 表名;

示例:删除数据表 stu

sql 复制代码
DROP TABLE IF EXISTS stu;
相关推荐
weelinking3 小时前
【2026】08_Claude与版本控制:Git协作技巧
数据库·人工智能·git·python·数据挖掘·交互·cloudera
黄焖鸡能干四碗8 小时前
固定资产管理系统建设方案和源码(Java源码)
大数据·数据库·人工智能·物联网·区块链
JoneBB8 小时前
ABAP Webservice连接
运维·开发语言·数据库·学习
解决问题no解决代码问题8 小时前
从乱码到脱敏导出:TiDB CSV 导出实战全指南
数据库
未若君雅裁9 小时前
MySQL高可用与扩展-主从复制读写分离分库分表
java·数据库·mysql
2401_867623989 小时前
CSS Flex布局中如何设置子元素间距_掌握gap属性的现代用法
jvm·数据库·python
月落归舟9 小时前
一篇文章了解Redis内存淘汰机制与过期Key清理
数据库·redis·mybatis
phltxy9 小时前
Redis 事务
数据库·redis·缓存
康乾隆10 小时前
SQL Server Always On 重新添加从库步骤
数据库·sqlserver
环流_10 小时前
redis核心数据类型在java中的操作
java·数据库·redis