数据库sql基础语句总结
1.select (查询)from(来自哪) where (条件 ) like (像) not like(不像)
使用例:select * from name_1 where name="张三" ##查找中name是张三
select * from name_1 where name like"张%" ##查找张开头的name
select * from name_1 where name like"%张%" ##查找包含张的name
select * from name_1 where name like"_" ##查找一个字的name
select * from name_1 where name not like"%三" ##查找非三结尾的name
2. <(小于) >(大于) =(等于) !=(不等于) <=(小于等于) >=(大于等于) <>(不等于) and(且) or(或)
使用例: select * from name_1 where name="张三" and id<15 and age>18
select * from name_1 where name!="张三" or id<=15 or age>=18
3.distinct (去重) in (在...) between (范围) order by (排序) asc (正序) desc (倒序) group by (分组) having(group by使用后续条件) limit(取值范围)
使用例:select distinct(name) from name_1 ##去重为张三的name
select * from name_1 where name_id in(1,5,8) ##取为1,5,8的id
select * from name_1 where name_id not in(1,5,8) ##取非1,5,8的id
select * from name_1 where name_id between 1 and 10 ##取为1~10的id
select * from name_1 order by name_id ##排序id为正序
select * from name_1 order by name_id desc ##排序id为倒序
select * from name_1 group by name_id hacing age<50 ##对年龄小于50进行分组
select * from name_1 limit 1 ##取值一行
select * from name_1 limit 3,10 ##从第3行取值到第10行
4.sum(求和) max(最大) min(最小) count(统计) avg(平均)
使用例:select sum(age) from name_1 ##求和年龄
select avg(age) from name_1 ##平均年龄
select max(age),min(age) from name_1 ##同时查找最大和最小年龄
select count(age) from name_1 ##统计平均年龄
5.left(左连接)right(右连接) join(连接) inner(用什么连接)full(满)innerjoin (内连接) fulljoin(全连接)as(重命名,可用于表或表字段)
使用例:select * from name_1 as a join home_2 as b on a.id=b.id
-##表name_1和home_2两表连接查询
select * from name_1 as a left join home_2 as b on a.id=b.id
-##表name_1和home_2左表为中心连接查询
select * from name_1 as a right join home_2 as b on a.id=b.id
-##表name_1和home_2右表为中心连接查询
##三表合并,可根据 on a=b on b=c 进行连接
学生表:(学生id,姓名,性别,分数)student (s_id,name,sex,score)
学生班级表 : (班级id,学生id)student_class (s_id,c_id)
班级表:(班级id,班级名称) class (c_id,c_name)
查询所有班级的名称,和所有班中女生人数和女生的平均分
select c.c_name,count(a.sex),avg(a.score) FROM student a ##查看表字段前要带上表别名
join student_class b on a.s_id=b.cid ##ab表合并项 on a.s_id=b.cid
join class c on b.s_id=c.cid WHERE a.sex="女" ##bc表合并项 on b.s_id=c.cid
6.insert into(插入) values(值) update(修改)set(设置值)delete(删除)drop(删除)
使用例:insert into name_1 (name_id,name,age,code) values (10,李四,28,上海市) ##插入
updata name_1 set name="李四" where name_id=1 ##修改所有id=1的name为李四
delete from name_1 where name_id=1 ##删除id=1的所有行
drop table name_1 ##删除表-警告慎用。
7.嵌套查询
select home from home_2 where name=(select name form name_1 where name="张三") ##(将表字段进行嵌套)
-##查询name_1表内姓名为张三的家庭地址。
select * from (select * form name_1 where sex="男")a where name="张三" ##(将表进行嵌套)
8.截取字段substring 例:substring(2021-10-11 20:10:59,1,10) 注:截取前10个字符
表:user 表字段:id activityid mobile time 统计每天每个活动有多少人参加
SELECT substring(time,1,10) as days, ##截取时间前10位,并days取为时间别名
activityid, count( id ) as userAmt ##userAmt取为统计别名
FROM user GROUP BY activityid, substring(time,1,10) ##截取时间前10位,进行分组
9.union all 合并表字段函数,注:对两个结果集进行并集操作, 不管是不是重复,可多表字段合并,可增加表字段
SELECT 学号,姓名,年龄,课程号,Null as 备注 FROM Student ##Null新增表字段
UNION ALL
SELECT 课程号,课程名称,类别,学分,备注 FROM Course; ##合并项要跟上表字段数量一致
##合并结果为:学号,姓名,年龄,课程号,备注(表字段与第一表一致,但内容为两表字段合并后的结果)