当前位置: 首页 > news >正文

计算机基础·MySQL

表格和键

  • 键:基本单位
  • 主键:唯一且不重复,注意可以由多个键来组成主键 下图橙色
  • 外键:只能由主键组成 下图绿色
    在这里插入图片描述

常用命令

  • CREATE DATABASE name:创建资料库,使用``可以防止与关键字冲突
  • SHOW DATABASES:展示资料库,注意DATABASES
    在这里插入图片描述
  • DROP DATABASE name:删除资料库
  • USE mysql_practise:使用资料库
  • CREATE TABLE student( stu_idINT PRIMARY KEY, nameVARCHAR(10), major VARCHAR(20) );创建表格,需要说明列名和类型,包括数据类型键的类型(是否是主键)
  • PRIMARY KEY():设置主键
  • DESCRIBE student`` 描述表格。
  • ALTER TABLE studentADDGPA DECIMAL(3,2) 增加表格列
  • alter table studentdrop columnGPA;删除表格列
  • INSERT INTO student VALUES(1,'AAA','MATH');插入行字符串用引号,但是键名称要用``符号!!!
  • INSERT INTO student (stu_id,major) VALUES(4,'CS');插入行,指定列内容
  • SELECT * FROM student;:查询表格内所有内容。

限制

对表格中的数据类型进行限制,例如限制unique不重复,限制非空,设置默认值等。

  • ``name VARCHAR(10) NOT NULL,:限制非空
  • ``major VARCHAR(20) DEFAULT 'MATH',:设置默认值为MATH
  • ``name VARCHAR(10) UNIQUE:限制不重复
  • ``stu_id INT AUTO_INCREMENT,:自动加1

修改和删除资料

删除和修改资料对象不一样,区分好针对每一行还是每一列

  • DELETE FROM studentWHEREname= 'AAA' AND major='Chinese';:删除某一行,配合WHERE使用
  • SET SQL_SAFE_UPDATES=0; UPDATE studentSETname='Johnson' WHERE major='ART';:修改某一列的内容,不加限制WHERE默认修改这一列

查询资料

  • SELECT * FROM student``:查询所有的资料(理解为所有列)
  • SELECT * FROM student``:查询某一列的资料
  • WHERE major='Chinese':条件判断语句
  • ORDER BY stu_id DESC:按照某一列的内容排序,DESC代表降序,ASC代表升序
  • LIMIT 1:限制显示多少条数据
  • select * from clientwhereclient_name IN('阿狗','阿猫');查找某一个子集的元素。

创建复杂数据库

  • FOREIGN KEY(emp_id) REFERENCES employee(emp_id)外键依赖目标数据,必须存在才能添加数据,否则只能添加NULL
  • 注意:employee这个表格创建时暂时不能定义外键。
    在这里插入图片描述
SHOW DATABASES;
# 创建employee表格
CREATE TABLE `employee`(`emp_id` INT PRIMARY KEY,`name` VARCHAR(20),`birth_date` DATE,`sex` VARCHAR(1),`salary` INT,`branch_id` INT,`sup_id` INT
);# branch
CREATE TABLE `branch`(
`branch_id` INT PRIMARY KEY,
`branch_name` VARCHAR(20),
`manager_id` INT,
FOREIGN KEY (`manager_id`) REFERENCES `employee`(`emp_id`) ON DELETE SET NULL
);
DESCRIBE `branch`;# 增加employee的外键
ALTER TABLE `employee`
ADD foreign key(`branch_id`) 
REFERENCES `branch`(`branch_id`) 
ON DELETE SET NULL;ALTER TABLE `employee`
ADD FOREIGN KEY(`sup_id`)
references `employee`(`emp_id`)
ON DELETE SET NULL;
DESCRIBE `employee`;# client
CREATE TABLE `client`(
`client_id` INT PRIMARY KEY,
`client_name` VARCHAR(20),
`phone` VARCHAR(20)
);
DESCRIBE `client`;# works_with
CREATE TABLE `works_with`(
`emp_id` INT,
`client_id` INT,
`total_sales` INT,
PRIMARY KEY(`emp_id`,`client_id`),
FOREIGN KEY(`emp_id`) 
REFERENCES `employee`(`emp_id`)
ON DELETE CASCADE,FOREIGN KEY(`client_id`)
REFERENCES `client`(`client_id`)
ON DELETE CASCADE
);
DESCRIBE `works_with`;# 外键相互依赖的情况下,一般先设置其中一个为NULL
INSERT INTO `branch` VALUES(1,'研发',NULL);
INSERT INTO `branch` VALUES(2,'行政',NULL);
INSERT INTO `branch` VALUES(3,'资讯',NULL);
SELECT * FROM `branch`;# 补全employee表格
DESCRIBE `employee`;
INSERT INTO `employee` VALUES(206,'小黄','1998-10-08','F',50000,1,null);
INSERT INTO `employee` VALUES(207,'小绿','1985-09-16','M',29000,2,206);
INSERT INTO `employee` VALUES(208,'小黑','2000-12-19','M',35000,3,206);
INSERT INTO `employee` VALUES(209,'小白','1997-01-22','F',39000,3,207);
INSERT INTO `employee` VALUES(210,'小兰','1925-11-10','F',84000,1,207);
select * from `employee`;# 更新manager_id
UPDATE `branch`
SET `manager_id`=206 
where `branch_id`=1;
UPDATE `branch`
SET `manager_id`=207
where `branch_id`=2;
UPDATE `branch`
SET `manager_id`=208 
where `branch_id`=3;
select * from `branch`;# 增加数据 client
select * from `client`;
INSERT INTO `client` VALUES(400,'阿狗',254354335);
INSERT INTO `client` VALUES(401,'阿猫',23789);
INSERT INTO `client` VALUES(402,'旺来',3264782);
INSERT INTO `client` VALUES(403,'露西',6728631);
INSERT INTO `client` VALUES(404,'艾瑞克',187832);# 增加数据 works_with
select * from `works_with`;
INSERT INTO `works_with` VALUES(206,400,70000);
INSERT INTO `works_with` VALUES(207,401,24000);
INSERT INTO `works_with` VALUES(208,400,9800);
INSERT INTO `works_with` VALUES(208,403,24000);
INSERT INTO `works_with` VALUES(210,404,87940);

基本函数

COUNT、SUM、MAX、MIN、AVG:聚合函数,一般和SELECT FROM搭配使用

SQL语言的通配符

  • %多个字符_单个字符
select * from `client` where `phone` like '%783%';
select * from `client` where `client_name` like '艾%';
select * from `employee` where `birth_date` like '_____12%';

UNION和JOIN

UNION

  • UNION 简单纵向的拼接查询结果,理解为stack
  • 两个表格拼接的数据和类型必须完全一致
  • SELECT FROM搭配使用
select `name` from `employee`
UNION
select `client_name` from `client`;select `emp_id`,`name` from `employee`
UNION
select `client_id`,`client_name` from `client`;select `salary` from `employee`
UNION
select `total_sales` from `works_with`;

JOIN

  • 类似pandasmerge函数,就是将两个表格合并为同一张表格,而不是简单的纵向拼接。
  • LEFT就是强制保留“左侧”表格,RIGHT就是强制保留右侧表格。
  • 左右的划分是根据JOIN决定的。
  • 注意:使用表格名.列名来代表合并的元素
select `employee`.`emp_id`,`employee`.`name`,`branch`.`branch_name` from `employee`
JOIN `branch` on `employee`.`emp_id`=`branch`.`manager_id`;

基本界面

执行单行命令:全选然后点击闪电

在这里插入图片描述执行光标所在处的语句,不需要选中在这里插入图片描述

http://www.dtcms.com/a/390092.html

相关文章:

  • 22-29、深度学习知识手册:从全连接到生成模型的融会贯通指南
  • 【FastCAEFlow案例分享】软件在汽车场景中的应用
  • Python二进制数据读取与可变缓冲区操作详解:从基础到高阶应用
  • 面向对象编程(OOP):Java 的核心思想(详细笔记)
  • I2C 通信、AT24C02 EEPROM及LM75温度传感器的配置
  • Halcon中的并行编程(二)
  • Gin框架参数绑定完全指南:从基础到实战最佳实践
  • TF 坐标旋转的方向如何确定
  • C++基础(16)——用红黑树封装出map和set
  • 前端编程工具有哪些?常用前端编程工具推荐、前端编程工具对比与最佳实践分享
  • 换网络这事, Comcast 销户了
  • Day26_【深度学习(6)—神经网络NN(1.2)前向传播的搭建案例】
  • 河南省 ERA5 气象数据处理教程(2020–2025 每月均值)
  • IIS短文件漏洞修复全攻略
  • jdk-7u25-linux-x64.tar.gz 安装教程(Linux下JDK 7 64位解压配置详细步骤附安装包)
  • 边界值分析法的测试用例数量:一般边界值分析(4n+1)和健壮性测试(6n+1)计算依据
  • 基于飞算AI的图书管理系统设计与实现
  • Day26_【深度学习(6)—神经网络NN(1)重点概念浓缩、前向传播】
  • 软考 系统架构设计师系列知识点之杂项集萃(151)
  • Python基础 2》运算符
  • docker 部署 sftp
  • 数字ic笔试
  • 武汉火影数字|数字展厅设计制作:多媒体数字内容打造
  • LLM模型的参数量估计
  • STM32H743-学习HAL库
  • 一键防范假票入账-发票识别接口-发票查验接口-信息提取
  • RTEMS 控制台驱动
  • flutter在列表页面中通过监听列表滑动偏移量控制页面中某个控件的透明度
  • linux上升级nginx版本
  • WINCC结构变量/公共弹窗