首页 > 数据库 >Mysql 学习记录 #01

Mysql 学习记录 #01

时间:2024-03-08 22:13:24浏览次数:35  
标签:01 记录 -- studentno result student Mysql NULL SELECT

Mysql 学习记录 #01

表的基本操作

-- 创建表
CREATE TABLE IF NOT EXISTS `student`(
	`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '编号',
	`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
	`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
	`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
	`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
	`adress` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
	`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
	PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

-- 修改表名字
ALTER TABLE teacher RENAME teachers
-- 增加表的字段
ALTER TABLE teachers ADD age INT(5)
-- 修改表的字段
ALTER TABLE teachers MODIFY age VARCHAR(5) -- 修改约束
ALTER TABLE teachers CHANGE age ages INT(4)  -- 重命名
 
 -- 删除表字段
 ALTER TABLE teachers DROP ages
 
 -- 删除表
 DROP TABLE IF EXISTS teachers
 

表的查询

-- 指定查询所有的字段
SELECT * FROM student 

SELECT * FROM result

-- 查询指定字段
SELECT `StudentNo`,`StudentName` FROM student

-- 别名,给结果取一个名字 as 可以给字段起别名也可以给表起别名
SELECT `StudentNo` AS 学号,`StudentName` AS 学生姓名 FROM student AS s

-- 函数 Concat(a,b)
SELECT CONCAT('姓名:',StudentName) AS 新名字 FROM student

-- 去重(查询有哪些同学参加了考试,成绩)
SELECT * FROM result -- 查询全部成绩
SELECT `studentno` FROM result
-- 发现重复
SELECT DISTINCT `studentno` FROM result -- distinct去除重复的数据 

-- 查询系统版本号(函数)
SELECT VERSION()

SELECT 100*3-1 AS 计算结果 -- 表达式

SELECT @@auto_increment_increment -- 查询自增的步长 (变量)

-- 学员考试成绩加1
SELECT `studentno` AS 学号,`studentresult` +1 AS 成绩 FROM result

WHERE的常见用法

-- where用法

SELECT studentno,`studentresult` FROM result

-- 查询成绩在95~100的
SELECT studentno,`studentresult` FROM result WHERE `studentresult` BETWEEN 95 AND 100

-- 模糊查询(区间)
SELECT studentno,`studentresult` FROM result
WHERE `studentresult` BETWEEN 95 AND 100

-- 除了1000号学生之外的同学的成绩

SELECT `studentno`,`studentresult` FROM result
WHERE NOT `studentno`=1000

-- 模糊查询(比较运算符)
-- IS NULL 	IS NOT NULL	BETWEEN
-- LIKE 	IN

-- 查询姓赵的同学 (%代表0到任意字符 	_代表一个字符)
SELECT `studentno`,`studentname` FROM student
WHERE `studentname` LIKE '赵%'

-- IN 的用法 查询1001,1000学生 (具体的一个或多个值)
SELECT `studentno`,`studentname` FROM student
WHERE `studentno` IN(1001,1000)

-- 查询在北京的学生
SELECT `studentno`,`studentname` FROM student
WHERE `address` IN('北京朝阳')

-- NULL		NOT NULL
-- 查询地址为空的学生
SELECT `studentno`,`studentname` FROM student
WHERE `address` IS NULL

联表查询 join

点击查看图片来源

-- 联表查询
-- join on

-- 查询参加了考试的同学(学号,姓名,科目编号,分数)
SELECT s.`studentno`,`studentname`,`subjectno`,`studentresult` 
FROM student AS s
INNER JOIN result AS r
WHERE s.`studentno` = r.`studentno`


-- RIGHT JOIN
SELECT s.`studentno`,`studentname`,`subjectno`,`studentresult` 
FROM student AS s
RIGHT JOIN result AS r
ON s.`studentno` = r.`studentno`

-- LEFT JOIN
SELECT s.`studentno`,`studentname`,`subjectno`,`studentresult` 
FROM student AS s
LEFT JOIN result AS r
ON s.`studentno` = r.`studentno`


-- 连接三张表
SELECT s.`studentno`,`studentname`,sub.`subjectname`,`studentresult` 
FROM student AS s
RIGHT JOIN result AS r
ON s.`studentno`=r.`studentno`
INNER JOIN `subject` AS sub
ON r.`subjectno`=sub.`subjectno`
  1. INNER JOIN 如果表中至少有一个匹配,返回就行
  2. LEFT JOIN 即使右表中没有匹配,也会从左表中返回
  3. RIGHT JOIN 即使左表中没有匹配,也会从右表中返回

标签:01,记录,--,studentno,result,student,Mysql,NULL,SELECT
From: https://www.cnblogs.com/gudazi12138/p/18061949

相关文章

  • 代码随想录 第十五天 | ● 层序遍历 10 ● 226.翻转二叉树 ● 101.对称二叉树 2 感
    leetcode:102.二叉树的层序遍历-力扣(LeetCode)思路:用队列长度控制弹栈的多少,不等于空时获取root,因为传了一个根肯定是1,接下来找左右节点,将根节点弹出,获取下一次的size,一直到空。。。//102.二叉树的层序遍历classSolution{publicList<List<Integer>>resList=newA......
  • 记录一个利用数据库引擎格式化异常sql的思路
    这个思路主要解决MySQL中的科学记数法漏洞使AWSWAF客户端易受SQL注入攻击这篇文章中的问题目前基本上都使用阿里巴巴的druid并开启sql防火墙模式以语义层面拦截sql注入,如果极端情况下对sql解析结果不一致还是会产生sql注入于是尝试了一下mysql自带的功能1)EXPLAIN2)optimi......
  • P4542 [ZJOI2011] 营救皮卡丘
    P4542[ZJOI2011]营救皮卡丘注意到什么叫两面包夹芝士这个是最优解这个是最劣解这究竟是怎么一回事呢?请看下文挺有趣的这道题,我们先来分析一下限制最基础的就是每个点都需要经过这一点,并且要求总路程最小很容易想到的就是路径覆盖问题,进而可以尝试费用......
  • mysqldump+binlog备份脚本
    mysqldump是一种逻辑备份工具,可以对数据库进行全量备份,和binlog增量备份共同使用可以进行数据库备份,基于此写了一个备份的脚本#!/bin/bashall_path="/opt/mysql_bakup/all"#MySQL全量备份目录add_path="/opt/mysql_bakup/add"#MySQL增量备份目录old_all_path="/o......
  • MySQL(六):MySQL之MVCC
    1、事务的引入事务是数据库管理系统(DBMS)执行过程中的一个逻辑单位(不可再进行分割),由一个有限的数据库操作序列构成(多个DML语句),要不全部成功,要不全部不成功。如:A给B划钱,A的账户-100元,B的账户就要+100元,这两个update语句必须作为一个整体来执行,不然A扣钱了,B没有加......
  • [Redis] 01-Redis快速入门
    一、Redis简介Redis属于键值对(key-value)数据库Redis中所有的数据都是以key-value的形式存储在内存中的所以读写Redis非常的快,在高并发的场景下,性能非常的好二、Redis服务端(redis-server)的安装省略。建议使用docker安装。Docker安装redis(保姆级教程&图文并茂)-腾讯......
  • P8630 [蓝桥杯 2015 国 B] 密文搜索
    网站:https://www.luogu.com.cn/problem/P8630代码如下:主要是用了map的思想#include<iostream>#include<vector>#include<algorithm>#include<math.h>#include<string>#include<string.h>#include<iomanip>#include<map>#incl......
  • 2024-03-08 leetcode写题记录
    目录2024-03-08leetcode写题记录27.移除元素题目链接题意解法179.最大数题目链接题意解法75.颜色分类题目链接题意解法2024-03-08leetcode写题记录27.移除元素题目链接27.移除元素题意给你一个数组\(nums\)和一个值\(val\),你需要原地移除所有数值等于\(val\)的元素,并......
  • 如何避免MYSQL主从延迟带来的读写问题?
    在MYSQL部署架构选型上,许多公司都会用到主从读写分离的架构,如下是一个一主一从的架构,主库master负责写入,从库slave进行读取。但是既然是读写分离,必然会面临这样一个问题,当在主库上进行更新后,有可能数据还没来得及同步到从库,但是这个时候又有读数据的需求,为了能正确读取出数据,这......
  • MySQL(四):InnoDB引擎底层解析
    官方文档地址:https://dev.mysql.com/doc/refman/8.3/en/innodb-storage-engine.html。InnoDB存储引擎有三大特性:双写机制、BufferPool、自适应Hash。InnoDB存储引擎架构的内存和磁盘结构如下:上述架构图描述了数据在内存和磁盘上的流转和存储流程,在实际开发......