MySQL数据库-DAY02

修改数据库中某列某个字段的值

update

update表名

set列名1=值1,列名2=值2,...,列名n=值n

where条件;

 

【注意】update语句如果不写where 条件语句,将会把表中所有的行中的值改变

【注意】MySQL5.7中不是别百分号,用小数表示

 

Delete

deletefrom 表名

where条件;

注意】delete 语句如果没有where条件,将会把表中所有数据删除

 

count(*)表示当前表中一共有多少条记录

 

like

通配符%: 0,1,或更多

通配符_: 单一数字或字符

 

【注意】浮点数100.00 匹配用?___.__

 

select* from 表名

where列名 like 'XXXX%';

 

select* from 表名

where列名 like '_X_X';

 

limit

限制

select* from 表名 limit n;

其中,n指返回表中前n条记录

 

 

select* from 表名 limit m,n;

从第m+1条记录开始,返回n条

【注意】表中第一行的索引是1

【注意】limit语句永远放在sql语言的最后

 

 

order by 排序

ASC升序

DESC降序

 

select列名 from 表名

where条件

orderby 列名 ASC;

【注意】order by语句后面出现的列名,可以不在select语句中

 

练习题:

把customers中,城市为北京的顾客,按照年纪的升序排序,并且按照工资的降序排列,只返回结果中的第一条记录

select* from customers

whereaddress = 'Beijing'

orderby age ASC, salary DESC

limit1;

 

 

选中排列在第N位的数据

思考题:

选出customers表中,工资排在第5位的顾客的信息

select* from customers

orderby salary desc

limit4,1;

 

随机选择表中数据

select* from 表名

orderby rand()

limitN;

 

group by分组

常与聚合函数一起用

 

常用的聚合函数:

count()总数

sum()求和

avg()平均值

min()最小值

max()最大值

 

select列名1,...,列名n,聚合函数(表达式) from 表名

where条件

groupby 列名1,...,列名n

orderby ...;

【注意】

1.group by语句必须放在where语句之后,order by语句之前

2.group by之后的列,必须出现在select语句之中或者聚合函数表达式中。

  select语句中的列,如果不出现在聚合函数表达式中,则必须出现在group by语句中

 

练习题:

列出各个城市的平均工资,按照平均工资由小到大排序

 

selectaddress, avg(salary) from customers

groupby address

orderby avg(salary);

 

having语句:对group by产生的分组进行筛选

 

例子:

selectaddress,avg(salary) from customers

groupby address

havingavg(salary) > 4000;

 

注意】

1.having 语句通常与group by联合使用,用来过滤由groupby语句返回的记录集合

2.having 语句的存在弥补了where语句不能与聚合函数联合使用的不足

 

select列名1,...,列名n,聚合函数(表达式) from 表名

where条件

groupby 列名1,...,列名n

having条件1,...,条件n;

 

练习题:

列出各个城市中,年龄不大于25岁的顾客里面的最高收入,并且该最高收入不得低于3000元,

将这些记录按照最高收入由小到大排列

提示:max(),where,group by,having,order by...

selectaddress,max(salary) from customers

whereage <= 25

groupby address

havingmax(salary) >= 3000

orderby max(salary) asc;

 

 

列出非北京的各个城市的平均工资,按照平均工资由小到大排序,并且只列出前两名的城市信息

方法一:

selectaddress,avg(salary) from customers

wherenot (address = 'beijing')

groupby address

orderby avg(salary) ASC

limit2;

 

方法二:

selectaddress,avg(salary) from customers

groupby address

havingaddress != 'beijing'

orderby avg(salary) ASC

limit2;

 

 

distinct 去除重复值,提取唯一的记录,与select语句一起用

selectdistinct 列名1 from 表名

where条件;

 

 

列出customers表中,分别列出不同城市的顾客的人数

selectcount(distinct address) from customers;

 

selectaddress,count(address) from customers group by address;

***多表查询

Alias:给表或者列临时起个别名

select列名 from 表名 as 新的表名;

 

select列名 as 新的列名 from 表名;

 

 

joins 连接,作用是:多表查询

利用两个表中共同含有的列的相同值来连接

 

select列名 from 第一个表,第二个表

where第一个表.列名 = 第二个表.列名;

 

例子:

selectid, name, salary, o_name, amount

fromcustomers,orders

wherecustomers.id = orders.c_id;

 

练习题:

打印出顾客消费额度amount超过其工资salary的人员名单,工资,消费额度

selectname, salary, amount

fromcustomers,orders

wherecustomers.id = orders.c_id and amount > salary;

 

 

union: 综合多个select语句,且返回不重复的行

select列名1,..,列名n from 表1

where条件

union

select列名1,..,列名n from 表2

where条件;

 

例子:

选中customers表中,年龄小于25岁和大于27岁的人的姓名和年龄

方法1:or

selectname, age from customers

whereage < 25 or age > 27;

 

方法2: union

selectname, age from customers

whereage < 25

union

selectname, age from customers

whereage > 27;

【注意】

1.每个select语句中必须选中相同数目的列

2.列的数据类型要一致

3.列的顺序要一致


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值