数据库的操作及表结构相关语句(命令行)

数据库的操作及表结构相关语句

1、登录数据库,紧接着输入密码即可

mysql -uroot -p

在这里插入图片描述
2、创建数据库,.MySQL数据库的SQL语句不区分大小写,建议使用大写!

CREATE DATABASE day24_1;

在这里插入图片描述
3、展示存在的数据库, 记得添加复数形式

show databases;

在这里插入图片描述
4、删除数据库

create database day24_2;
drop database day24_2;

在这里插入图片描述
删除后
在这里插入图片描述
5、切换数据库,使用别的数据库,前提是已经创建好了

use day24_3;

在这里插入图片描述
6、查看正在使用的数据库

select database();

在这里插入图片描述
表结构的相关语句
1、创建表
格式:

create table 表名(
字段名 类型(长度) 约束,
字段名 类型(长度) 约束
);
创建分类表

CREATE TABLE sort (
  sid INT, #分类ID
  sname VARCHAR(100) #分类名称
);
 

在这里插入图片描述
到内存中的理解:创建了数据库就相当于创建了一块逻辑空间,实际在磁盘上创建了一个文件夹,创建了一个表,实际磁盘生成了一个.ibd
文件。
在这里插入图片描述
2、查看表

show tables;

在这里插入图片描述
上图显示的就是sort是day24_3数据库当中的表。
3、查看表结构
desc + 表的结构

desc sort;

在这里插入图片描述
4、删除表
drop table + 表名;

drop table sort;

在这里插入图片描述
5、修改表结构格式(实际开发中最常用的*)**
5.1 alter table 表名 add 列名 类型(长度) 约束;
作用:修改表添加列。

举例:
#1:为分类表添加一个新的字段为分类描述varchar(20)

ALTER TABLE sort ADD sdesc VARCHAR(20);

在这里插入图片描述
当然在实际的开发当中也可以直接添加多个字段分类

/*添加多个列方法一*/
ALTER TABLE student
ADD address VARCHAR(200) NOT NULL,
ADD home_tel CHAR(11) NOT NULL;
/*add语句之间用逗号分隔,最后用分号结束*/
 
/*添加多个列方法二*/
ALTER TABLE student
ADD (address VARCHAR(200) NOT NULL,home_tel CHAR(11) NOT NULL);

用上面两种方法都行,都可以得到相应的结果。
在这里插入图片描述在这里插入图片描述
上面添加字段的位置有时候会出现报错的情况:
在这里插入图片描述
5.2 alter table 表名 modify 列名 类型(长度) 约束;
作用:修改表修改列的类型长度及约束
例如:
#2, 为分类表的分类名称字段进行修改,类型varchar(50) 添加约束 not null
在这里插入图片描述
和add类似,需要修改多个列的类型长度及约束,那么modify语句之间用逗号分隔,最后一句的末尾使用分号结束即可。

5.3 alter table 表名 change 旧列名 新列名 类型(长度) 约束;
作用:修改表修改列名
例如:
#3, 为分类表的分类名称字段进行更换 更换为 snamesname varchar(30)
在这里插入图片描述
和add类似,需要修改多个列的类型长度及约束,那么change语句之间用逗号分隔,最后一句的末尾使用分号结束即可。

关键字change和modify区别:modify可以修改字段类型、字段属性,而change可修改字段名称,并且change需要旧列名和新列名。

5.4 alter table 表名 drop 列名;
作用:修改表删除列
例子:
#4, 删除分类表中snamename这列
在这里插入图片描述
删除多列情况同上述所示。
!!!
在删除的时候可以直接写明列明,也可以在列明前面加上 column
在这里插入图片描述
5.5 rename table 表名 to 新表名;
作用:修改表名
例子:
#5, 为分类表sort 改名成 category

RENAME TABLE sort TO category;

在这里插入图片描述
**5.6 alter table 表名 character set 字符集;
作用:修改表的字符集
例如:
#6, 为分类表 category 的编码表进行修改,修改成 gbk

ALTER TABLE category CHARACTER SET gbk;

在这里插入图片描述

<think>我们参考用户提供的引用[^1]和[^4],其中提到达梦数据库命令行操作。用户希望了解如何通过命令行连接达梦数据库服务,并查看数据库中的表及执行SQL语句。根据引用[^1]中“1.2 连接数据库”和“1.3 使用DISQL直接执行命令”以及引用[^4]中命令行操作的内容,我们可以总结如下: ### 连接达梦数据库命令行方式) #### 1. **使用 DISQL 工具连接** DISQL 是达梦数据库自带的命令行交互工具,类似于 Oracle 的 SQL*Plus。 ```bash # 进入达梦安装目录的 bin 文件夹 cd /opt/dmdbms/bin # 使用 DISQL 连接(按提示输入密码) ./disql SYSDBA/SYSDBA@localhost:5236 ``` 参数说明: - `SYSDBA`:用户名 - `SYSDBA`:密码(默认安装时 SYSDBA 的默认密码为 SYSDBA) - `localhost:5236`:数据库服务器地址和端口(默认端口为 5236) #### 2. **使用 dmctl 工具连接(管理工具)** 引用[^3]提到 `dmctl` 工具,但注意该工具通常用于控制台操作(如启动停止服务),执行 SQL 建议用 DISQL。 ```bash # 连接本地数据库(示例) ./dmctl -h localhost -u SYSDBA -p SYSDBA ``` > ⚠️ 注意:实际执行 SQL 语句建议使用 DISQL,dmctl 更适用于服务控制。 --- ### 查看数据库表结构 #### 方法1:使用 `DESC` 命令(类似 Oracle) ```sql -- 查看指定表的列信息 DESC 模式名.表名; ``` 示例: ```sql DESC SYSDBA.EMPLOYEE; ``` #### 方法2:调用系统过程 `SP_TABLEDEF`(引用[^2]) ```sql -- 生成表定义语句(包含列、约束等) CALL SP_TABLEDEF('模式名', '表名'); ``` 示例: ```sql CALL SP_TABLEDEF('SYSDBA', 'EMPLOYEE'); ``` #### 方法3:使用元数据函数(引用[^2]) ```sql -- 获取表的 DDL 语句 SELECT DBMS_METADATA.GET_DDL('TABLE', '表名', '模式名'); ``` 示例: ```sql SELECT DBMS_METADATA.GET_DDL('TABLE', 'EMPLOYEE', 'SYSDBA'); ``` --- ### 执行 SQL 语句 在 DISQL 环境中直接输入 SQL 即可: ```sql -- 查询数据 SELECT * FROM SYSDBA.EMPLOYEE; -- 插入数据(引用[^3]示例) INSERT INTO SYSDBA.EMPLOYEE (ID, NAME) VALUES (1, '张三'); -- 提交事务 COMMIT; ``` --- ### 常用 DISQL 命令 | 命令 | 作用 | |---------------------|--------------------------| | `SHOW TABLES;` | 显示当前用户所有表 | | `SELECT * FROM V$VERSION;` | 查看数据库版本 | | `EXEC SP_OPEN_DB_LOG();` | 打开数据库日志(需权限) | | `SP_HELP_TABLE('表名');` | 查看表详细信息 | | `QUIT;` | 退出 DISQL | > 💡 提示:在 DISQL 中按 `↑`/`↓` 键可翻看历史命令,输入 `/` 可重新执行上一条命令。 --- ### 常见问题解决 1. **连接失败:`Network is unreachable`** 检查防火墙是否开放 5236 端口: ```bash firewall-cmd --add-port=5236/tcp --permanent firewall-cmd --reload ``` 2. **执行 SQL 报错:`表或视图不存在`** 确认表名前是否添加了模式名(默认模式为 `SYSDBA`): ```sql -- 错误写法 SELECT * FROM EMPLOYEE; -- 正确写法 SELECT * FROM SYSDBA.EMPLOYEE; ``` 3. **中文乱码问题** 设置 DISQL 环境变量: ```bash export LANG=zh_CN.UTF-8 ./disql ... ``` --- ### 自动化脚本示例 通过 Shell 脚本执行 SQL 文件: ```bash #!/bin/bash /opt/dmdbms/bin/disql SYSDBA/SYSDBA@localhost:5236 \`/home/user/script.sql ``` 其中 `script.sql` 内容: ```sql -- 查询当前时间 SELECT SYSDATE FROM DUAL; EXIT; ``` > ⚠️ 注意:脚本末尾需加 `EXIT;` 否则会停留在 DISQL 交互界面。 --- §§相关问题§§ 1. 达梦数据库如何导出整个数据库结构(不含数据)? 2. DISQL 工具中有哪些提高效率的快捷命令? 3. 达梦数据库如何实现定时自动备份? 4. 如何查看达梦数据库当前运行的 SQL 语句? 5. 达梦数据库的存储过程和函数如何编写及调用?</think>### 达梦数据库命令行操作指南 #### 一、连接达梦数据库服务 通过 DISQL 工具连接(达梦自带的命令行客户端): ```bash # 进入达梦安装目录的bin文件夹 cd /opt/dmdbms/bin # 连接本地数据库(默认端口5236) ./disql SYSDBA/SYSDBA@localhost:5236 # 连接远程数据库 ./disql SYSDBA/密码@192.168.1.100:5236 ``` 参数说明: - `SYSDBA`:默认管理员账号 - 第二个`SYSDBA`:密码(安装时设置的) - `localhost:5236`:服务器地址和端口 #### 二、查看数据库表结构 1. **查看所有表** ```sql SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER='SYSDBA'; ``` 2. **查看单表结构** ```sql -- 方法1:使用DESC命令 DESC 模式名.表名; -- 方法2:调用系统过程(推荐) CALL SP_TABLEDEF('SYSDBA', 'EMPLOYEE'); ``` 3. **导出表结构DDL** ```sql -- 生成建表语句 SELECT DBMS_METADATA.GET_DDL('TABLE', 'EMPLOYEE', 'SYSDBA'); ``` #### 三、执行SQL语句 1. **基本查询** ```sql SELECT * FROM SYSDBA.EMPLOYEE WHERE DEPT_NO = 'D001'; ``` 2. **数据操作** ```sql -- 插入数据(引用[^3]) INSERT INTO SYSDBA.EMPLOYEE (EMP_ID, EMP_NAME) VALUES (1001, '张三'); -- 更新数据 UPDATE SYSDBA.EMPLOYEE SET SALARY = 8000 WHERE EMP_ID = 1001; -- 删除数据 DELETE FROM SYSDBA.EMPLOYEE WHERE EMP_ID = 1001; ``` 3. **事务控制** ```sql COMMIT; -- 提交事务 ROLLBACK; -- 回滚事务 ``` #### 四、实用命令 | 命令 | 功能 | 示例 | |------|------|------| | `SHOW TABLES;` | 显示当前用户表 | - | | `SP_HELP_TABLE('表名');` | 查看表详细信息 | `SP_HELP_TABLE('EMPLOYEE');` | | `EXPLAIN SQL语句;` | 查看执行计划 | `EXPLAIN SELECT * FROM EMPLOYEE;` | | `SELECT * FROM V$VERSION;` | 查看数据库版本 | - | #### 五、常见问题解决 1. **连接失败** ```bash # 检查服务状态 systemctl status DmServiceDMSERVER # 手动启动服务 cd /opt/dmdbms/bin ./DmServiceDMSERVER start ``` 2. **中文乱码问题** ```sql -- 设置客户端编码 SET NLS_LANG='SIMPLIFIED CHINESE_CHINA.AL32UTF8'; ``` 3. **权限不足** ```sql -- 授予权限(需SYSDBA执行) GRANT SELECT ON SYSDBA.EMPLOYEE TO USER1; ``` > 💡 提示:所有SQL语句必须以分号`;`结尾才能执行 #### 六、退出DISQL ```sql EXIT; -- 或 QUIT; ``` --- ### 配置优化建议 1. **内存参数调整**(解决启动问题) ```ini # dm.ini 修改后需重启 BUFFER = 18000 -- 缓冲区大小(MB) MEMORY_POOL = 2000 -- 内存池大小(MB) ``` 需满足:$总内存 \geq (BUFFER \times 1.2 + MEMORY\_POOL + 500)$ ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值