热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL基础操作与优化

本文详细介绍了MySQL的基础连接、数据库及表的操作,涵盖创建、修改、删除等常用命令,并深入解析了数据类型、列属性、索引、外键和存储引擎等内容。

## 连接与退出 MySQL


要连接到 MySQL 数据库,可以使用以下命令格式:


mysql -h 主机地址 -P 端口号 -u 用户名 -p 密码
例如: mysql -h 127.0.0.1 -P 3306 -u root -p

要退出 MySQL 客户端,只需输入 exit; 或者 quit;



## 数据库操作


### 创建数据库


CREATE DATABASE 数据库名 [选项];
例如: CREATE DATABASE test DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

字符集和校对规则:
- 字符集:通常使用 utf8
- 校对规则:
- _ci 结尾的表示不区分大小写。
- _cs 结尾的表示区分大小写。
- _bin 结尾的表示二进制编码比较。



### 查看数据库


SHOW DATABASES;


### 查看数据库创建语句


SHOW CREATE DATABASE 数据库名;


### 修改数据库选项


ALTER DATABASE 数据库名 [新选项];
例如: ALTER DATABASE test DEFAULT CHARACTER SET gbk;


### 删除数据库


DROP DATABASE 数据库名;


### 使用数据库


USE 数据库名;


## 表的操作


### 创建数据表


CREATE TABLE 表名 (
字段1 类型 [选项],
字段2 类型 [选项],
...
) [表选项信息];

例如: CREATE TABLE test (
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
content VARCHAR(100) NOT NULL DEFAULT '' COMMENT '内容',
time INT(10) NOT NULL DEFAULT 0 COMMENT '时间',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='测试表';

语法解析:
- NOT NULL:不允许为空。
- AUTO_INCREMENT:自增字段,通常用于主键。
- PRIMARY KEY:定义主键。
- ENGINE:设置存储引擎。
- CHARSET:设置字符集。
- COMMENT:备注信息。



### 查看数据表


SHOW TABLES;


### 模糊查询数据表


SHOW TABLES LIKE '模糊查询表名%';


### 查看表结构


DESC 表名;


### 查看表创建语句


SHOW CREATE TABLE 表名;


### 删除数据表


DROP TABLE [IF EXISTS] 表名;
例如: DROP TABLE IF EXISTS test;


### 修改表名


ALTER TABLE 旧表名 RENAME TO 新表名;


### 修改表结构


#### 添加列


ALTER TABLE 表名 ADD 新列名 类型 [选项];
例如: ALTER TABLE test ADD name CHAR(10) NOT NULL DEFAULT '' COMMENT '名字';


#### 删除列


ALTER TABLE 表名 DROP COLUMN 列名;
例如: ALTER TABLE test DROP COLUMN content;


#### 修改列定义


ALTER TABLE 表名 MODIFY COLUMN 列名 新类型 [新选项];
例如: ALTER TABLE test MODIFY COLUMN name VARCHAR(100) NOT NULL DEFAULT 'admin' COMMENT '修改后名字';


#### 修改列顺序


- 将某列放在最前面:


ALTER TABLE 表名 MODIFY COLUMN 列名 类型 [选项] FIRST;
例如: ALTER TABLE test MODIFY COLUMN name VARCHAR(100) NOT NULL DEFAULT 'admin' COMMENT '最前面' FIRST;


- 将某列放在另一列后面:


ALTER TABLE 表名 MODIFY COLUMN 列名 类型 [选项] AFTER 另一列名;
例如: ALTER TABLE test MODIFY COLUMN name VARCHAR(100) NOT NULL DEFAULT 'admin' COMMENT 'time字段后面' AFTER time;


#### 重命名列


ALTER TABLE 表名 CHANGE 原列名 新列名 新类型 [新选项];
例如: ALTER TABLE test CHANGE name username VARCHAR(50) NOT NULL DEFAULT '' COMMENT '用户名字';


#### 修改表选项


ALTER TABLE 表名 [表选项信息];
例如: ALTER TABLE test ENGINE=MyISAM DEFAULT CHARSET=gbk;


## 数据操作


### 插入数据


INSERT INTO 表名 (字段列表) VALUES (值列表);
例如: INSERT INTO user (id, name, age) VALUES (1, 'admin_a', 50);
INSERT INTO user (name) VALUES ('admin_b');


### 查询数据


SELECT [字段列表] FROM 表名 [查询条件];
例如: SELECT * FROM user; -- 查询所有字段
SELECT name FROM user WHERE age > 0; -- 查询特定字段并加条件


### 删除数据


DELETE FROM 表名 [删除条件];
例如: DELETE FROM user WHERE age <1; -- 删除年龄小于1的数据


### 更新数据


UPDATE 表名 SET 字段1 = 新值1, 字段2 = 新值2 [更新条件];
例如: UPDATE user SET age = 100 WHERE name = 'admin_a';


## MySQL 数据类型


MySQL 支持三种主要的数据类型:数值型、字符串型和日期时间型。



### 数值型


包括整数类型(如 TINYINT, SMALLINT, INT, BIGINT)和浮点数类型(如 FLOAT, DOUBLE, DECIMAL)。



### 字符串型


包括定长字符串(如 CHAR)和变长字符串(如 VARCHAR),以及文本类型(如 TEXT, MEDIUMTEXT, LONGTEXT)。



### 日期时间型


包括 DATE, TIME, DATETIME, TIMESTAMPYEAR



## MySQL 列属性


MySQL 提供了多种列属性来约束和描述字段,包括:NULL, NOT NULL, DEFAULT, PRIMARY KEY, AUTO_INCREMENT, COMMENT



### 空属性


NULLNOT NULL 分别表示允许或不允许空值。



### 默认值


DEFAULT 设置默认值,通常与 NOT NULL 一起使用。



### 主键


PRIMARY KEY 是唯一的且不能为空,用来唯一标识表中的每一行。



### 自动增长


AUTO_INCREMENT 为每次插入记录时自动递增。



### 列描述


COMMENT 用于给字段添加注释。



## 索引


索引是一种特殊的文件结构,能够加速数据检索。常见的索引类型包括普通索引、唯一索引、主键索引、组合索引和全文索引。



### 创建索引


CREATE [UNIQUE] INDEX 索引名 ON 表名 (列名称 [排序]);
例如: CREATE UNIQUE INDEX number ON student(seat_number DESC);


### 删除索引


DROP INDEX 索引名 ON 表名;
例如: DROP INDEX number ON student;


## 外键


外键用于维护两个表之间的关系。被约束的表称为副表,引用的表称为主表。外键只能在 InnoDB 存储引擎中使用。



## 存储引擎


MySQL 支持多种存储引擎,常用的有 InnoDBMyISAM。其中 InnoDB 支持事务、行级锁和外键,而 MyISAM 支持全文索引。



## 三范式


三范式是设计数据库表结构时遵循的规范化原则,分为第一范式、第二范式和第三范式,旨在消除冗余数据,确保数据的一致性和完整性。


推荐阅读
  • MySQL锁机制详解
    本文深入探讨了MySQL中的锁机制,包括表级锁、行级锁以及元数据锁,通过实例详细解释了各种锁的工作原理及其应用场景。同时,文章还介绍了如何通过锁来优化数据库性能,避免常见的并发问题。 ... [详细]
  • 本文总结了MySQL的一些实用技巧,包括查询版本、修改字段属性、添加自动增长字段、备份与恢复数据库等操作,并提供了一些常见的SQL语句示例。 ... [详细]
  • sqlserver动态分区方案例子
    sqlserver动态分区方案例子当我们存储的数据量比较大时,比如超过千万,上亿级别时单纯的使用索引可能效果不明显了,此时我们可以考虑采 ... [详细]
  • 深入解析MySQL中的七种JOIN查询
    本文详细介绍了MySQL中常用的七种JOIN查询方法,包括内连接、左外连接、右外连接、全外连接以及排除连接等,并通过实例进行说明。 ... [详细]
  • 优化SQL Server批量数据插入存储过程的实现
    本文介绍了一种改进的SQL Server存储过程,用于生成批量插入语句。该方法不仅提高了性能,还支持单行和多行模式,适用于SQL Server 2005及以上版本。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 在尝试从数据库获取设置的过程中,遇到了一个致命错误:Fatal error: Call to a member function bind_param() on boolean。本文将详细分析该错误的原因,并提供解决方案。 ... [详细]
  • 如何处理MySQL命令行中文乱码问题
    本文详细探讨了MySQL命令行中出现中文乱码的原因及解决方案,通过调整配置文件和执行特定SQL命令来确保字符集正确设置,为用户提供了一个有效的解决路径。 ... [详细]
  • 深入解析Android中的SQLite数据库使用
    本文详细介绍了如何在Android应用中使用SQLite数据库进行数据存储。通过自定义类继承SQLiteOpenHelper,实现数据库的创建与版本管理,并提供了具体的学生信息管理示例代码。 ... [详细]
  • 本文介绍如何在MySQL中创建一个自定义函数,用于将包含多个班级编号的字符串拆分为对应的班级名称。通过详细解释代码逻辑和功能,帮助读者理解并应用这一技术。 ... [详细]
  • 本文详细介绍了 phpMyAdmin 的安装与配置方法,适用于多个版本的 phpMyAdmin。通过本教程,您将掌握从下载到部署的完整流程,并了解如何根据不同的环境进行必要的配置调整。 ... [详细]
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • 软件工程课堂测试2
    要做一个简单的保存网页界面,首先用jsp写出保存界面,本次界面比较简单,首先是三个提示语,后面是三个输入框,然 ... [详细]
  • 解决Hive操作无响应问题:drop table和create table的处理方法
    本文详细介绍了在Hive中执行drop table和create table命令时遇到无响应的情况,并提供了完整的解决方案。通过调整MySQL字符集编码,确保Hive数据库与MySQL之间的兼容性,从而有效解决问题。 ... [详细]
  • 本文详细介绍了MySQL中的存储过程,包括其定义、优势与劣势,并提供了创建、调用及删除存储过程的具体示例,旨在帮助开发者更好地利用这一数据库特性。 ... [详细]
author-avatar
银仔-zxy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有