数据库 2025 4、10

ER图

语句顺序:SELECT FROM WHERE GROUP BY HAVING ORDER BY

注释:-- 建表语句

语句大小写不敏感,分号;表示一条语句的结束

属性的数据类型: 整型:int()

浮点型:float,double

字符串:char,varchar()

日期:date:年月日,time:时分秒

约束条件: is/not null  — 指示某字段是/不是空值

primary key 主键,有唯一标识

comment  添加备注   comment"备注"

创建库/表

建表顺序:create database 库名;

use 库名;

create table 表名(

字段名 字段数据类型, [primary key comment"备注"]

);

注意:在建好库之后要使用库了才能建表

查询语句

通配符*:表示全部属性

别名:as 别名

select  */(字段名 as 别名) from 表名;

条件查询:where条件语句   条件:>  >=  <  <=  !=  =

例:查询t_student表中成绩不等于100的同学

select s_name,s_score from t_student where s_score != 100;

模糊查询like/not like

通配符:%:1~多个字符

_:只能表示一个字符

例:查询t_student表中姓名为王的同学

select * from t_student where s_name like '王%';

查询t_student表中姓名两个字的同学

select * from t_student where s_name like '__';

and:表示两边结果都为True才输出

or:两个条件满足一个为True即可

例:查询名字姓张和黄的成绩不及格的同学

select s_name,s_score from t_student where s_score < 70 and (s_name like '张%' or s_name like '黄%' ); —>要考虑题目的优先级

去重关键字distinct

例:对表中学院去重

select distinct s_college from t_student;

Between  And语句

例:查询范围在[80~90]之间的学生

select * from t_student where s_score BETWEEN 80 AND 90;

order by 排序

关键字:ASC:升序(默认),DESC:降序

例:查询学生的成绩,并把t_student表中的成绩按降序排序

select s_name as “姓名”,s_no as “学号”,s_score as “成绩” from t_student order by s_score desc;

group by 排序

count():对非空属性进行判断计数

例:查询每个性别有多少人

select s_sex,count(*) as '个数' from t_student group by s_sex;

注意:语句中select后面有几个字段名,group by后面也要保持一致

having语句

例:显示名字计数小于 2 的所有记录

select * from t_student group by name having count(name) < 2;

Having和where的区别:

用的地方不一样: where可以用于select、update、delete和insert...into语句中

having只能用于select语句中

执行的顺序不一样: where不能放在 GROUP BY 子句之后

having不能放在 GROUP BY 子句之前

条件子句不一样: where子句中的条件表达式having都可以写,而having子句中 的有些表达式where不可以写

having子句可以用聚合函数而where子句不可以

聚合函数

  1. 求和:sum()函数

select sum(s_score) from t_student;  对成绩进行求和

  1. 最大值:max()最大值

select max(s_score) from t_student;  求成绩的最大值

  1. 最小值:min()最小值

select min(s_score) from t_student;  求成绩的最小值

  1. 平均值:avg()函数

round(a,b):四舍五入,保留小数位

select round(avg(s_score),1) from t_student; 求成绩的平均值并保留一位小数

Limit[1,2]关键字

例:对成绩排序并从第二条开始取4条数据

select * from t_student order by s_score limit 1,4;

插入语句:insert into语句

书写格式:insert into 表名(字段名1,字段名2...)  values  (属性值1,属性值2...);

例:

insert into T_Class_one(id,name,s_no,s_instructor)  values  (1,"温福泉",002,"雷老板");

注意:如果表名后面的(字段名...)省略,则values后面的()里面的值要与表里面的字段顺序相同

删除语句:delete语句

书写格式:delete from 表名 where 条件语句;

例:

delete from t_student where t_name = “陈旺”;

注意:如果不写where条件语句,则是删除全部数据

drop语句:drop table 表名;

修改语句:update语句

书写格式:update 表名 set 字段名 = “  ” where 条件语句;

例:

update T_Class_one set id = 1,name = “陈旺”,s_no = 001,s_instructor = "雷老板" where s_no = 002;

注意:如果不写where条件语句,则是修改所有的数据

了解:alter语句

  1. 增加列

alter table [表名] add [列名] [字段类型];

  1. 修改列名/列名及字段类型

alter table [表名]change [列名] [新列名] [字段类型];

  1. 修改列字段类型

alter table [表名]modify [列名] [新字段类型][是否允许非空];

  1. 修改列字段默认值

alter table [表名] alter column [列名] set default [默认值];

  1. 查询表的字段信息

desc [表名];

多表联查:inner jion on语句

例:求所有同学三次成绩的平均分(表1:t_java和表2:t_mysql有相同字段属性student_id,表2:t_mysql和表3:t_web有相同字段属性student_id)并把平均分从高到低排序,用inner jion句

select 

    t1.student_id,t1.student_name,

    AVG(t1.score + t2.score + t3.score) / 3 as average_score

from 

    t_java t1

Inner jion 

    t_mysql t2 on t1.student_id = t2.student_id

Inner jion 

    t_web t3 on t2.student_id = t3.student_id

group by 

    t1.student_id,t2.student_name

order by  

    average_score desc;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值