DDL 数据定义语言
1
|
CREATE、DROP、ALTER、TRUNCATE
|
用来定义数据库、表、列等等
DML 数据操作语言
1
|
INSERT、UPDATE、DELETE、CALL
|
用来新增插入、修改、删除
DQL 数据查询语言
用来查询数据库中的记录
DCL 数据控制语言
用来定义数据库权限、安全管理、创建用户等
mysql常用命令
查看全部数据库
使用数据库
创建数据库
删除数据库
查看全部表
选择表
创建表
1
2
3
4
5
6
|
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
email VARCHAR(50) UNIQUE,
age INT
);
|
users: 表名
id:字段名,通常作为主键。
INT:数据类型为整数(范围:-2147483648 到 2147483647)。
PRIMARY KEY:将该字段设为主键(唯一标识每条记录,自动创建索引)。
AUTO_INCREMENT:自增属性,插入新记录时自动生成唯一 ID(从 1 开始,每次递增 1)
name:字段名,存储用户姓名。
VARCHAR(50):可变长度字符串,最多存储 50 个字符(节省空间)。
UNIQUE:唯一约束,确保每个邮箱地址在表中不重复。允许NULL
mysql常用数据类型
1
2
3
4
5
6
7
8
9
10
11
12
|
#数据类型分五大类
数值类型:
整数类型:TINYINT SMALLINT INT BIGINT 分别对应1-8字节存储空间
浮点数类型:Float Double 分别对饮4字节跟8字节存储空间
日期类型+时间类型:日期DATE 时间ITME 日期时间DATETIME 时间戳TIMESTAMP
字符串类型:定长字符串CHAR 变成字符串VARCHAR 文本TEXT 二进制数据BLOB
json类型 新型
空间类型 新型
|
查看表结构
修改表结构
1
2
3
4
5
6
7
8
9
10
|
# 修改列 将name列数值类型修改为VARCHAR(200),字符串200个字节
ALTER TABLE users MODIFY COLUMN name VARCHAR(200);
# 修改字段名称,将name字改成username
ALTER TABLE users RENAME COLUMN name to username;
# 修改username字段数据类型为字符串50字节,且默认值为1
ALTER TABLE users MODIFY COLUMN username varchar(50) DEFAULT 1;
# 添加列 列名为name,值类型为字符串100字符
ALTER TABLE users ADD COLUMN name VARCHAR(100);
# 删除字段
ALTER TABLE users DROP COLUMN name;
|
注:列名就是字段名
修改表名
1
|
RENAME TABLE 旧表名 TO 新表名;
|
删除表
插入数据
1
2
3
4
5
6
7
|
# 插入单条记录
INSERT INTO users (name, email, age) VALUES ('张三', '[email protected]', 25);
# 批量插入
INSERT INTO users (name, email, age) VALUES
('李四', '[email protected]', 30),
('王五', '[email protected]', 28);
|
查询数据
1
2
3
4
5
6
7
8
|
# 查询users表所有记录
SELECT * FROM users;
# 查询特定字段
SELECT name, email FROM users;
# 条件查询
SELECT * FROM users WHERE age > 25 AND name LIKE '李%';
# 排序与分页
SELECT * FROM users ORDER BY age DESC LIMIT 10 OFFSET 5;
|
> 25: 大于25岁
LIKE: 模糊查询。以李开头
%: 通配符,匹配任意数量任意字符与shell的*一样,单字符用_匹配,如’李_’
WHERE: 条件查询
ORDER BY: 排序分页,ORDER BY + LIMIT + OFFSET 实现结果排序和分页。
例: ORDER BY age DESC:按 age 字段降序排列(从大到小)。
LIMIT 10 OFFSET 5: 取第 6 到第 15 条记录(跳过前 5 条,取 10 条)。
更新数据
1
2
3
4
5
|
# 更新单条记录
UPDATE users SET age = 31 WHERE name = '李四';
# 批量更新
UPDATE users SET age = age + 1 WHERE age < 30;
|
删除数据
1
2
3
4
5
|
# 删除单条记录
DELETE FROM users WHERE email = '[email protected]';
# 清空表(保留表结构)
DELETE FROM users;
|
备份数据库
1
2
3
4
5
6
7
8
9
10
11
|
# 备份单个数据库
mysqldump -u 用户名 -p 数据库名 > 备份文件名.sql
# 示例:备份名为 `mydb` 的数据库
mysqldump -u root -p mydb > mydb_backup.sql
# 备份多个数据库
mysqldump -u 用户名 -p --databases 数据库1 数据库2 > 备份文件名.sql
# 备份所有数据库
mysqldump -u 用户名 -p --all-databases > 备份文件名.sql
|
还原数据库
1
2
3
4
5
6
7
8
9
10
|
# 方法一:使用 mysql 命令
mysql -u 用户名 -p 数据库名 < 备份文件名.sql
# 示例:还原 `mydb` 数据库
mysql -u root -p mydb < mydb_backup.sql
# 方法二:登录 MySQL 后执行 source 命令
mysql -u 用户名 -p
mysql> USE 数据库名;
mysql> SOURCE 备份文件路径.sql;
|
远程备份还原数据库
1
2
3
4
5
|
# 备份远程数据库
mysqldump -h 远程主机IP -u 用户名 -p 数据库名 > 本地备份文件.sql
# 还原到远程数据库
mysql -h 远程主机IP -u 用户名 -p 数据库名 < 本地备份文件.sql
|
设置root密码
1
|
alter user 'root'@'%' identified with mysql_native_password by '密码';
|
刷新权限
查看监听端口
1
|
show variables like '%port%';
|
port既为监听的端口
查看是否可以远程访问
1
|
select user, host from user where user='root';
|
如果root的host为localhost则为本地访问
如果root的host有%则表示可远程访问
达梦常用命令
进入sql终端
1
|
/opt/dmdbas/bin/disql /nolog
|
连接登录用户
或者 connect 用户名/密码@IP:PORT
或者 login
检查数据库版本及服务状态
查看数据库运行状态
1
|
SELECT status$ as 状态 FROM v$instance;
|
输出结果:
查看达梦数据库版本
1
|
SELECT banner as 版本信息 FROM v$version;
|
输出结果:
|
版本信息 |
| 1 |
DM Database Server 64 V8 |
| 2 |
8.1 |
| 3 |
企业版 |
| 4 |
DB Version: 0x7000c |
| 5 |
03134284058-20230713-195546-20046 |
创建用户并授权
创建用户
使用 CREATE USER 语句创建 DM 用户,登录密码为 “dameng123”。
1
|
CREATE USER DM IDENTIFIED BY "dameng123";
|
授予用户基本权限
使用 GRANT 语句给 DM 用户授予 RESOURCE 角色;
给 DM 用户授予 dmhr 用户下 employee 表的 select 权限;
1
|
GRANT SELECT ON dmhr.employee TO DM;
|
给 DM 用户授予 dmhr 用户下 department 表的 select 权限;
1
|
GRANT SELECT ON dmhr.department TO DM;
|
查看用户信息
通过字典表 dba_users 查看基本信息。
1
|
SELECT username,account_status,created FROM dba_users WHERE username='DM';
|
输出结果:
|
username |
account_status |
created |
| 1 |
DM |
OPEN |
2025-05-13 15:17:43 |
从输出结果看出,用户状态 account_status 为 open,输出的时间为用户的创建时间。
切换用户
切换到DM用户
使用 conn 命令切换用户。
输出结果:
服务器处于普通打开状态
查看当前登录用户
输出结果: