-- create table sheet1(id int ,name varchar(50));
-- 指定行插入
-- insert into sheet1 (name,id,age) values('吴二',4,11);
-- 多行插入
-- insert into sheet1 values (5,'王五',1),(6,7,'赵六');
-- 全列查询 最基础的操作,但在实际开发中也很危险,如果数据量较大,进行全列查询将会大量消---耗系统资源,有可能导致宕机。
-- select *from sheet1
-- 指定列查询
-- select name,age,password from `user.class`
-- 查询字段为表达式
-- select name,age+20,password from `user.class`
-- 列表相加查询
-- select name,age+password from `user.class`
-- 指定别名查询
-- select name,age+password as total from `user.class`
-- 针对查询结果去重 如果是针对多个列进行去重,只有这多个列的值都相同时才会被视为重复
-- select distinct password,age from `user.class`;
-- 升序降序
-- select 列名..... from 表明 order by 列名 asc/desc;
-- select age from `user.class` order by age asc
-- 条件查询
-- select name,age from sheet1 where age>2;
比较运算符:
运算符 说明
>, >=, <, <= 大于,大于等于,小于,小于等于
= 等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=> 等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=, <> 不等于
BETWEEN a0 AND a1 范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)
IN (option, …) 如果是 option 中的任意一个,返回 TRUE(1)
IS NULL 是 NULL
IS NOT NULL 不是 NULL
LIKE 模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符
逻辑运算符:
运算符 说明
AND 多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR 任意一个条件为 TRUE(1), 结果为 TRUE(1)
NOT 条件为 TRUE(1),结果为 FALSE(0)
查询
-- 查询学生表中的所有字段。;表语句结束, --表注释
select * from student;
-- 查询学生表中的姓名和密码
select name, password from student;
-- 查询ID为1的学生信息
SELECT * from student where id=1;
-- 查询名字叫张三的学生
select *from student where name="张三";
-- 查询年龄大于17岁的学生
select * from student WHERE age>17;
-- 查询你年龄大于等于17,并且年级是二年级的同学
SELECT * from student WHERE age>=17 and grade='二年级';
-- 查询姓李的同学
SELECT * from student where name like '李%';
-- 查询名字中包含同字的学生
SELECT *from student WHERE name like '%同%';
-- 查询ID为3,4,5的学生信息
select *
from student
where ID in(3,4,5)
-- 查询tea_ID为Null与不为Null的学生信息
SELECT*from student where teacher_ID IS Null;
SELECT*from student where teacher_ID IS NOT Null;
增
-- 向学生表中添加数据
INSERT INTO student values(6,'赵同学','213','蓝桥班',23);
-- 向学生表中添加数据,只添加用户名和密码
insert into student(NAME, password) values('李老师','123');
删
-- 删除ID为7的学生
delete from student where ID=7;
改
-- 修改学生信息,ID为8的学生密码改为123456
update student set password='123456' where ID=8;
-- 修改学生信息,把ID为6的学生年级修改为大三,年龄修改为21
update student set grade='大三',age=21 where ID=6;
单行函数
-- 最大年龄
select name, grade,max(age)
from student;
-- 最小年龄
SELECT name, grade, min(age)
from student;
-- 平均年龄
SELECT name, grade, avg(age)
from student;
-- 年龄和
SELECT sum(age)
from student;
查询所有信息
Select *
from student s, teacher t where s.teacher_ID_ID = t.ID
-- 给表或字段起别名
SELECT s.name stu_name, t.name tea_name
from teacher t, student s where s.teacher_ID = t.ID;
-- 查询老师所教的学生
SELECT t.name tea_name, s.name stu_name
from teacher t, student s
where s.teacher_ID = t.ID
and t.ID=1;
-- 查询李老师所教的学生 并按学生年龄排序
-- 排序语法 order by [asc|desc] asc:正序,默认可省略 desc:倒叙,不可省略
SELECT *
from teacher t, student s
where s.teacher_ID = t.ID
and t.ID=1
order by s.age; -- desc 倒叙
-- 查询所有学生的信息,以及关联老师信息。如果还没有选课,老师信息为空
-- 左连接 左表信息全量查询,右表与坐标匹配,没有就为NULL
select *
from student s -- 以学生表为主
left join teacher t on s.teacher_ID=t.ID;
-- 右外连 右表信息全量显示,左表与右表匹配
select *
from student s
RIGHT JOIN teacher t ON s.teacher_ID = t.ID;
-- 查询比平均年龄大的学生信息
SELECT *
from student
where age>(SELECT avg(age)from student);