数据库
安装配置
见运维篇
启动服务
windows系统
net stop 服务名
net start 服务名
打开服务面板
运行 -> services.msc 打开服务设置面板 -> 找到mysql打开80
可视化工具
navicat 客户端
DataGrip 2023.3.4
注释方式
# 来注释
-- 来注释
/* 来注释 */
导出和导入
导出的时候选择,同时勾选表结构和表数据。
创建表方式
1️⃣ 使用图形化界面创建表
- 连接数据库
- 打开 DataGrip → 在 Database 面板点击 + → Data Source → MySQL(或其他数据库类型)
- 填写连接信息(主机、端口、用户名、密码)
- 测试连接成功后点击 OK
- 选择数据库
- 展开连接 → 找到你要创建表的数据库 → 右键点击 Tables → New → Table
- 填写表名和字段
- 在弹出的窗口中:
- Table name:输入表名
- Columns:
- 点击 + 添加字段
- 输入字段名
- 选择类型(如
INT
,VARCHAR(255)
,DATETIME
等) - 可勾选 Primary Key、Not Null、Auto Increment 等选项
- 在弹出的窗口中:
- 保存表
- 确认无误后点击 OK 或 Apply
- 表会出现在数据库列表中
💡 Tip:可以在界面下方切换到 DDL 标签页,DataGrip 会自动生成对应的 SQL 语句。
2️⃣ 使用 SQL 语句创建表
- 打开 SQL Console
右键点击数据库 → New → Console
- 编写 SQL
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
- 执行 SQL
3️⃣ 查看和修改表
- 查看表结构:右键表 → Jump to DDL 或 Modify Table
- 修改表结构:
- 图形化修改 → Modify Table
- 或直接写
ALTER TABLE
SQL:
ALTER TABLE users ADD COLUMN last_login DATETIME;
Schema
在 MySQL 里,Schema 基本上就是 数据库(Database) 的另一种叫法
基本概念
- Schema = Database
- 在 MySQL 中,创建一个 schema 就相当于创建一个数据库
- Schema 用来组织和存储表、视图、存储过程、函数等对象
- 语法:
-- 创建 schema(数据库)
CREATE SCHEMA my_schema;
-- 等价于
CREATE DATABASE my_database;
注意:在 MySQL 中,
CREATE SCHEMA
和CREATE DATABASE
完全等价,功能一样。
使用 Schema
- 切换当前 Schema / 数据库:
USE my_schema;
- 查看所有 Schema:
SHOW SCHEMAS;
-- 或
SHOW DATABASES;
- 删除 Schema:
DROP SCHEMA my_schema;
-- 等价于 DROP DATABASE my_schema;
SQL语句分类
分类 | 作用 |
---|---|
DDL语句 | 数据定义语句(Data Define Language),例如:创建(create),修改(alter),删除(drop)等 |
DML语句 | 数据操作语句,例如:增(insert),删(delete),改(update),查(select) |
DCL语句 | 数据控制语句,例如:grant,commit,rollback等 |
DQL | 数据查询语句 select |
常用语句
数据库操作
-- 查看所有数据库
SHOW DATABASES;
-- 创建数据库
CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 使用数据库
USE dbname;
-- 删除数据库
DROP DATABASE IF EXISTS dbname;
-- 修改数据库字符集
ALTER DATABASE dbname CHARACTER SET utf8mb4;
-- 查看数据库创建语句(字符集等)
SHOW CREATE DATABASE dbname;
表操作
-- 查看所有表
SHOW TABLES;
-- 查看表结构
DESC 表名;
-- 查看表的建表语句
SHOW CREATE TABLE 表名;
-- 创建表
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 删除表
DROP TABLE IF EXISTS 表名;
-- 修改表名
RENAME TABLE old_name TO new_name;
-- 添加列
ALTER TABLE users ADD COLUMN email VARCHAR(100);
-- 修改列类型
ALTER TABLE users MODIFY COLUMN age SMALLINT;
-- 删除列
ALTER TABLE users DROP COLUMN email;
-- 修改表字符集
ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4;
数据操作
-- 查询所有
SELECT * FROM users;
-- 条件查询
SELECT * FROM users WHERE age > 18;
-- 插入数据
INSERT INTO users (name, age) VALUES ('Alice', 25);
-- 更新数据
UPDATE users SET age = 30 WHERE name = 'Alice';
-- 删除数据
DELETE FROM users WHERE id = 1;
-- 计数
SELECT COUNT(*) FROM users;
-- 排序
SELECT * FROM users ORDER BY age DESC;
-- 分页
SELECT * FROM users LIMIT 10 OFFSET 20; -- 从第21条开始,取10条
索引与主键
-- 创建普通索引
CREATE INDEX idx_name ON users(name);
-- 创建唯一索引
CREATE UNIQUE INDEX idx_email ON users(email);
-- 删除索引
DROP INDEX idx_name ON users;
-- 添加主键
ALTER TABLE users ADD PRIMARY KEY (id);
-- 删除主键
ALTER TABLE users DROP PRIMARY KEY;
用户与权限
-- 查看用户
SELECT user, host FROM mysql.user;
-- 创建用户
CREATE USER 'testuser'@'%' IDENTIFIED BY 'password';
-- 授权
GRANT ALL PRIVILEGES ON dbname.* TO 'testuser'@'%';
-- 撤销权限
REVOKE ALL PRIVILEGES ON dbname.* FROM 'testuser'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
-- 删除用户
DROP USER 'testuser'@'%';
事务与锁
-- 开始事务
START TRANSACTION;
-- 提交事务
COMMIT;
-- 回滚事务
ROLLBACK;
-- 设置事务隔离级别
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
其他常用
-- 当前时间
SELECT NOW();
-- MySQL 版本
SELECT VERSION();
-- 当前数据库
SELECT DATABASE();
-- 当前用户
SELECT USER();
运算符
算术运算符
运算符 | 说明 | 示例 |
---|---|---|
+ | 加法 | SELECT 5 + 3 AS sum; 返回 8 |
- | 减法 | SELECT 5 - 3 AS diff; 返回 2 |
* | 乘法 | SELECT 5 * 3 AS product; 返回 15 |
/ | 除法 | SELECT 5 / 2 AS quotient; 返回 2.5 |
DIV | 整数除法 | SELECT 5 DIV 2 AS int_div; 返回 2 |
% / MOD | 取模 | SELECT 5 % 2 AS remainder; 返回 1 |
示例说明