DDL 数据定义语言
CREATE、DROP、ALTER、TRUNCATE
用来定义数据库、表、列等等
DML 数据操作语言
INSERT、UPDATE、DELETE、CALL
用来新增插入、修改、删除
DQL 数据查询语言
SELECT、WHERE
用来查询数据库中的记录
DCL 数据控制语言
GRANT、REMOKE
用来定义数据库权限、安全管理、创建用户等
mysql常用命令
查看全部数据库
show databases;
使用数据库
USE test.db;
创建数据库
CREATE DATABASE xxx;
删除数据库
DROP DATABASE xxx;
查看全部表
SHOW TABLES;
选择表
SELECT table_name;
创建表
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常用数据类型
#数据类型分五大类
数值类型:
整数类型:TINYINT SMALLINT INT BIGINT 分别对应1-8字节存储空间
浮点数类型:Float Double 分别对饮4字节跟8字节存储空间
日期类型+时间类型:日期DATE 时间ITME 日期时间DATETIME 时间戳TIMESTAMP
字符串类型:定长字符串CHAR 变成字符串VARCHAR 文本TEXT 二进制数据BLOB
json类型 新型
空间类型 新型
查看表结构
DESP users;
修改表结构
# 修改列 将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;
注:列名就是字段名
修改表名
RENAME TABLE 旧表名 TO 新表名;
删除表
DROP TABLE users;
插入数据
# 插入单条记录
INSERT INTO users (name, email, age) VALUES ('张三', '[email protected]', 25);
# 批量插入
INSERT INTO users (name, email, age) VALUES
('李四', '[email protected]', 30),
('王五', '[email protected]', 28);
查询数据
# 查询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 条)。
更新数据
# 更新单条记录
UPDATE users SET age = 31 WHERE name = '李四';
# 批量更新
UPDATE users SET age = age + 1 WHERE age < 30;
删除数据
# 删除单条记录
DELETE FROM users WHERE email = '[email protected]';
# 清空表(保留表结构)
DELETE FROM users;
备份数据库
# 备份单个数据库
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
还原数据库
# 方法一:使用 mysql 命令
mysql -u 用户名 -p 数据库名 < 备份文件名.sql
# 示例:还原 `mydb` 数据库
mysql -u root -p mydb < mydb_backup.sql
# 方法二:登录 MySQL 后执行 source 命令
mysql -u 用户名 -p
mysql> USE 数据库名;
mysql> SOURCE 备份文件路径.sql;
远程备份还原数据库
# 备份远程数据库
mysqldump -h 远程主机IP -u 用户名 -p 数据库名 > 本地备份文件.sql
# 还原到远程数据库
mysql -h 远程主机IP -u 用户名 -p 数据库名 < 本地备份文件.sql
设置root密码
alter user 'root'@'%' identified with mysql_native_password by '密码';
刷新权限
flush privileges;
查看监听端口
show variables like '%port%';
port既为监听的端口
查看是否可以远程访问
select user, host from user where user='root';
如果root的host为localhost则为本地访问
如果root的host有%则表示可远程访问
达梦常用命令
进入sql终端
/opt/dmdbas/bin/disql /nolog
连接登录用户
conn 用户名/密码@IP:PORT
或者 connect 用户名/密码@IP:PORT
或者 login
检查数据库版本及服务状态
查看数据库运行状态
SELECT status$ as 状态 FROM v$instance;
输出结果:
状态 | |
---|---|
1 | OPEN |
查看达梦数据库版本
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"。
CREATE USER DM IDENTIFIED BY "dameng123";
授予用户基本权限
使用 GRANT 语句给 DM 用户授予 RESOURCE 角色;
GRANT RESOURCE TO DM;
给 DM 用户授予 dmhr 用户下 employee 表的 select 权限;
GRANT SELECT ON dmhr.employee TO DM;
给 DM 用户授予 dmhr 用户下 department 表的 select 权限;
GRANT SELECT ON dmhr.department TO DM;
查看用户信息
通过字典表 dba_users 查看基本信息。
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 命令切换用户。
conn DM/dameng123;
输出结果:
服务器处于普通打开状态
查看当前登录用户
SELECT user FROM DUAL;
输出结果:
USER() | |
---|---|
1 | DM |
评论区