MySql(数据的增删改查与基本函数)

外键(一般不会在数据库层面添加,了解)

alter table student
add constraint `FK_gradeid`
foreign key(`gradeid`) references `grade`(`id`);

表操作

  数据添加

insert into grade(`gradename`) values ('一班'), ('二班');

  数据修改

update `grade` set `gradename`='五班', `gradeid`=5 where `gradeid`=2;

  不加条件会修改整个表

  数据删除

delete from `grade` where `gradeid`=5;

  清空数据库表

表的结构和索引约束不会变

用delete删除表不会影响自增,还会继续累积

用truncate删除表会重置自增,不会影响事务

truncate `student`

查询数据

-- 查询全部学生
SELECT * FROM `student`

-- 查询指定字段
SELECT `studentname`,`studentno` FROM `student`

-- 别名
SELECT `studentname` AS 学生姓名,`studentno` AS 学号 FROM `student` AS s

-- 函数 concat拼接字符串
SELECT CONCAT('姓名:', `studentname`) AS 新名字 FROM `student`

-- 去重查询,重复结果只显示一条
SELECT DISTINCT `studentno` FROM result

-- 让所有学生成绩加一分
SELECT `studentno`, `studentresult`+1 FROM `result`

条件查询

-- AND && 和 
SELECT `studentno` AS 学生编号,`studentresult` AS 学生成绩 FROM `result`
WHERE `studentresult`<100 AND `studentresult`>60;

-- OR || 或
SELECT `studentno` AS 学生编号,`studentresult` AS 学生成绩 FROM `result`
WHERE `studentresult`=98 OR `studentresult`=70

-- NOT != 非
SELECT `studentno` AS 学生编号,`studentresult` AS 学生成绩 FROM `result`
WHERE NOT `studentresult`=98

-- 模糊区间查询
SELECT `studentno` AS 学生编号,`studentresult` AS 学生成绩 FROM `result`
WHERE `studentresult` BETWEEN 60 AND 80;

模糊查询

-- like 通配符 %(无数量限制个字符) _(一个字符)
-- 所有带张字的学生
SELECT `studentno`, `studentname` FROM `student`
WHERE `studentname` LIKE '%张%';

-- in 不能使用通配符,只能在一个或多个数据中查询具体的
SELECT `studentno` AS 学生编号, `studentname` AS 学生姓名 FROM `student`
WHERE `studentname` IN ('张伟', '赵强');

-- 查询为空(null)的数据
SELECT `studentno` AS 学生编号, `studentname` AS 学生姓名 FROM `student`
WHERE `borndate` IS NULL;

-- 查询不为空的数据
SELECT `studentno` AS 学生编号, `studentname` AS 学生姓名 FROM `student`
WHERE `borndate` IS NOT NULL;

联表查询

-- 内连接[inner]join, 必须满足所有条件才会显示
SELECT s.studentno, `studentname`, r.studentno, `studentresult` 
FROM `student` AS s
INNER JOIN `result` AS r
ON s.`studentno`=r.`studentno`

-- 左连接left join, 展示所有左边资源,用右边做添加
SELECT s.studentno, `studentname`, r.studentno, `studentresult`
FROM `student` AS s
LEFT JOIN `result` AS r
ON s.`studentno`=r.`studentno`

-- 右连接right join, 展示所有右边资源,用左边添加
SELECT s.studentno, `studentname`, r.studentno, `studentresult`
FROM `student` AS s
RIGHT JOIN `result` AS r
ON s.`studentno`=r.`studentno`

自连接(了解)

-- 将一张表拆分为两张表查询, 有所属关系
SELECT f.`categoryName`, z.`categoryName` 
FROM `category` AS f, `category` AS z
WHERE z.pid = f.`categoryid`;

分页与排序

排序(order by升序asc, 降序desc)和分页(limit)

-- 成绩排序(升序),和分页
SELECT r.`studentno`, `studentname`, `subjectname`,`studentresult`
FROM `result` AS r
LEFT JOIN `student` AS s
ON r.`studentno`=s.`studentno`
INNER JOIN `subject` AS sb
ON r.`subjectno`=sb.`subjectno`
WHERE `subjectname`='高等数学-1'
ORDER BY `studentresult` ASC
LIMIT 0,3
-- 0,3参数分别表示
-- 0: 从第几个数据开始查
-- 3: 每次查询及个元素

子查询

-- 在一个语句中嵌套一个语句
SELECT * FROM `employees`
WHERE `ID` IN (SELECT `ID` FROM `employees` 
WHERE `SALARY` > 4500)

 MySQL函数

基础函数

了解

-- 向上取整
SELECT CEILING(9.4)
-- 向下取整
SELECT FLOOR(9.4)
-- 得到一个(0-1)随机数
SELECT RAND();
-- 判断一个数的符号
SELECT SIGN(-10)

-- 返回一个字符串长度
SELECT CHAR_LENGTH('hello world')
-- 字符串拼接
SELECT CONCAT('1', '2', '3')
-- 替换字符串
SELECT INSERT ('1234567', m, n, '1234')-- 从第m个元素,将后面元素替换n长度的字符串
-- m=1, n=2 ----> 123434567

-- 第一次出现元素的位置
SELECT INSTR('1234567', '7') -- ----------> 7
-- 替换指定的字符串
SELECT REPLACE('123456', '123', '789'); -- ------>789456
-- 反转字符串
SELECT REVERSE('123'); -- ---->321
-- 获取指定长度字符串
SELECT SUBSTR('123456', 2, 3) -- ---> 234

2.日期函数(记住)

-- 获取当前时间
SELECT NOW();
-- 获取年份,其他类似
SELECT YEAR(NOW());

聚合函数

-- 求平均值
SELECT AVG();
-- 求最大值
SELECT MAX();
-- 求最小值
SELECT MIN();
-- 返回总数
SELECT SUM();

  • 18
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值