My SQL高级查询

一、高级查询

1.修改表名

ALTER TABLE demo RENAME TO `demo1`;

2.添加字段

ALTER TABLE demo1 ADD `password` VARCHAR(30) NOT NULL;

3.修改字段

ALTER TABLE demo1 CHANGE `name` `username` VARCHAR(30) NOT NULL;

4.删除字段

ALTER TABLE demo1 DROP `password`;

5.添加外键
1.外键在从表上创建
2.创建外键时表不可以有数据
3.两张表关联的列所有特性必须完全一致,列明可以不相同
4.创建外键后,两张表的增删改功能会被关联
5.删除主表数据,必须先删除从表相关的数据grade

ALTER TABLE student ADD CONSTRAINT fk_grade_student FOREIGN KEY `gradeid` REFERENCES grade(`gradeid`);

6.清空表
1.delete:自增长列已经使用过的数据会永久丢失 1-100
2.truncate:自增长的列会重新从1开始排序

DELETE FROM student;
TRUNCATE TABLE student;
SELECT * FROM student;

7.DQL:数据查询语言
1.select 查询内容 from 表名
2.where 查询条件
3.group by 分组依据
4.order by 排序依据 desc/asc
5.limit 起始行下标 返回的行数
8.聚合函数

函数名作用
avg返回某字段的平均数
sum返回某字段的和
count返回某字段的数量
min返回某字段的最小值
max返回某字段的最大值

9.连接查询
1.内连接:inner join
2.外连接:
左外连接:left join 以左表为主表向右表的数据进行逐次匹配
右外连接:right join 以右表为主表向左表的数据进行逐次匹配
3.查询学生的姓名、学号、成绩

SELECT s.`studentName`,s.`studentNo`,r.`studentResult` FROM student s 
INNER JOIN result r ON s.`studentNo`=r.`studentNo`;

4.查询及格的学生姓名、学号、成绩

SELECT s.`studentName`,s.`studentNo`,r.`studentResult` FROM student s 
INNER JOIN result r ON s.`studentNo`=r.`studentNo` 
WHERE r.`studentResult`>=60;

10.日期函数
获取年月日信息
SELECT CURDATE();
获取时分秒信息
SELECT CURTIME();
获取详细的时间和日期信息
SELECT NOW();
获取某个时间是一年中的第几周
SELECT WEEK(NOW());
计算两个时间之间间隔的天数
SELECT DATEDIFF(NOW(),‘2002-7-10’);
推算日期
SELECT ADDDATE(NOW(),1000);
11.数学函数
向上取整
SELECT CEIL(34.4);
向下取整
SELECT FLOOR(35.9);
随即小数 0-1
SELECT RAND();

二、子查询

=:只能和单个数据进行等值比较
in:可以和多个数据进行等值比较
not in:除此以外
1.exists:判断是否存在/是否有结果

CREATE DATABASE IF NOT EXISTS testinfo;
DROP DATABASE IF EXISTS student;

2.EXISTS:只关心子查询语句是否有数据返回,如果有则执行前面的sql语句 否则不执行

SELECT * FROM student WHERE  EXISTS
(SELECT studentno FROM result WHERE 1=2);

3.子查询:在增删改查语句中嵌套使用select语句

SELECT * FROM student WHERE bornDate>
(SELECT bornDate FROM student WHERE studentName = '肖梅');

4.删除比肖梅小的学生

DELETE FROM student WHERE bornDate>
(SELECT bornDate FROM student WHERE studentName = '肖梅');
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值