狂神说sqlyog命令行连接数据库

本文介绍了如何以管理员模式在CMD中通过MySQL命令行进行数据库操作,包括连接、创建数据库、查看表结构,以及涉及的关键SQL概念如DML、DQL和DCL。详细讲解了列类型、数据库字段属性和表设计规范。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,以管理员模式运行CMD连接数据库  sql的注释--

 C:\Windows\System32>mysql -u root -ppassword --连接数据库

2、查看全部的数据库 show databases

3、创建数据库 creat database westos;

4、exit退出  单行注释--  多行注释/**/

5、DDL 数据库定义语言 DML数据库操作语言  DQL数据库查询语言  DCL数据库控制语言

二 操作数据库

mysql 关键字不区分大小写

2.1操作数据库

      -- 创建数据库     CREATE DATABASE IF NOT EXISTS westos; 

      --删除数据库      DROP DATABASE IF EXISTS westos;

      --使用数据库      use school && USE `school`

      --查看数据库      SHOW DATABASES;

对应SQLYOG的可视化 查看sql

固定的语法,关键字必须记住 CREATE DROP

2.2操作数据库中的表

数据库的列类型,按照java 

数值, tinyint 十分小的数据 一个字节   ,,smallint 较小的数据   2个字节

int 类型 标准的整数 4个字节               mediumint 中等大小的数据 3个字节

bigint 类型 较大的数据 8个字节         

float  单精度浮点数 4个字节

double  浮点型       8个字节

decimal  字符串形式浮点数  金融计算

字符串

char     固定长度字符串 0-255

 varchar  可变长度的字符串 0-65535

tinytext 微型文本

TEXT 文本串 保存大文本

时间日期

date YYYY-MM-DD 日期格式

time HH:MM:SS 时间格式

datetime YYYY-MM-DD HH:MM:SS 最常用的时间格式

timestamp 时间戳 1970.1.1到现在的毫秒数 比较常用

year 年份表示

null

没有值 未知

不要使用null 进行运算

2.3操作数据库表中的数据

重点:数据库的字段属性

unsigned 无符号的整数 不能声明负数

0填充 zerofill

自增 通常理解为为自增 ,自动在上一条的基础上+1

通常用来设计唯一的主键 index 

非空 not null

默认 设置默认值

/*每个表必须存在以下五个字段

1、id 主键 

·version· 乐观锁

is_delete 伪删除

qmt_create  创建时间

qmt_update 修改时间

*/

### SQL 自连接用法 SQL 的自连接是一种特殊的连接形式,它允许一张表与其自身进行连接。这种技术通常用于处理具有层次结构的数据,例如员工管理中的上下级关系或产品分类树形结构。 #### 自连接的基本概念 自连接通过给同一张表起两个不同的别名来实现。这样可以将该表视为两张独立的表来进行操作。常见的应用场景包括: - **获取上级和下级的关系**:在一个员工表中,可能有一列表示某位员工的直属经理ID(即外键)。通过自连接,我们可以轻松找到每位员工及其对应的经理。 - **父子节点关系**:在某些情况下,数据存储为父节点和子节点的形式,可以通过自连接查询整个层级结构。 以下是基于引用内容[^1]的一个具体例子,展示如何使用自连接来查询学生与教师之间的关联关系。 --- #### 示例场景:学生与教师的关系 假设我们有如下的一张 `student` 表,其中每一行记录了一个学生的 ID 和其所属教师的 ID(`tid` 列)。 ```sql CREATE TABLE IF NOT EXISTS student ( id INT(4) NOT NULL AUTO_INCREMENT COMMENT '学生ID', name VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '学生姓名', tid INT(4) COMMENT '教师ID', PRIMARY KEY (id), FOREIGN KEY (tid) REFERENCES teacher(id) ); ``` 同时还有一个 `teacher` 表,定义如下: ```sql CREATE TABLE IF NOT EXISTS teacher ( id INT(4) NOT NULL AUTO_INCREMENT COMMENT '教师ID', name VARCHAR(30) NOT NULL DEFAULT '未知' COMMENT '教师姓名', PRIMARY KEY (id) ); ``` 如果我们想查询每一位学生以及他们的指导老师的名字,则可以利用自连接完成此需求。 --- #### 查询语句示例 下面是一个典型的自连接查询语句,展示了如何从单个表中提取多个维度的信息。 ```sql SELECT s.id AS sid, s.name AS sname, t.name AS tname FROM student AS s JOIN teacher AS t ON s.tid = t.id; ``` 在此查询中: - 我们为 `student` 表指定了别名为 `s`,并为 `teacher` 表指定别名为 `t`。 - 使用 `ON` 子句建立两者的联系条件,即将 `student` 中的 `tid` 字段映射到 `teacher` 表中的 `id` 字段。 最终的结果集将会包含三列:学号(`sid`)、学生名字(`sname`) 及 教师名字(`tname`)。 --- #### 扩展应用:递归层级结构 对于更复杂的层级结构(如部门间的隶属关系),可以采用递归CTE(Common Table Expressions)的方式进一步扩展自连接的功能。虽然 MySQL 8.0 开始支持 CTE 功能[^5],但在早期版本中仍需依赖多次嵌套查询或其他方法模拟递归行为。 以下是一段简单的递归 CTE 实现案例: ```sql WITH RECURSIVE department_hierarchy AS ( SELECT id, parent_id, dept_name, 1 AS level FROM departments WHERE parent_id IS NULL UNION ALL SELECT d.id, d.parent_id, d.dept_name, dh.level + 1 FROM departments d INNER JOIN department_hierarchy dh ON d.parent_id = dh.id ) SELECT * FROM department_hierarchy ORDER BY level ASC; ``` 这段代码构建了一棵完整的部门树,并按级别排序显示出来。 --- ### 结论 综上所述,SQL 自连接提供了一种强大而灵活的方式来探索单一表格内部不同实体间的关系。无论是简单的学生导师配对还是复杂的企业组织架构分析,都可以借助这种方法得到清晰直观的答案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值