mysql数据库(2)

修改内容

#将李文才的email 修改成liwencai@126.com

update student set email='liwencai@126.com' where studentName='李文才'

#由于考试题偏难,每个学生提2分
update result set studentResult=studentResult+2
#更新test和王宝宝的email为1234@qq.com'
update student set email='1234@qq.com' where studentName='test' or studentName='王宝宝';
还可以写成

update student set email='1234@qq.com' where studentName in (test' ,'王宝宝')

数据删除

delete删除满足条件才可以删除,否则全部删除

delete from student where studentname='test';删除后自增列不会重新排列,可以把这张表导入到另一张表编号就会自增了
truncate table 表名;删除后重置自增列,执行速度比delete快但是有条件必须用delete
mysql中将查询结果集插入新表的两种方式:

1.insert into
2.create table
查询:
分一张表的查询多张表的查询
客户端程序 查询请求发送组服务器 服务器返回一个查询集是虚拟的
select 字段名
from 表名
where条件

order by排序

select * from student order by bornDate DESC; 默认正序 倒序加DESC 正序 ASC

查询全部的行和列

注:写表字段时,不要写关键字

select * from 'student'

<> 不等于符号
as 查询结果起别名
select studentName+"."+sex from student;-----mysql msql中不能这样写,别的数据库可以使用
is null 和 is not null条件
select * from student where email is not null 或 is null

常量列

select studentno AS 学生编号,studentname As 学生姓名;‘’北京信息中心‘’ AS '学校名称' from Student

聚合函数:
select AVG( studentresult) as 平均成绩,max(studentresult) as 最高成绩,min(studentresult) as最低成绩,sum(studentresult) as 总和,count(studentresult) as 计数 from result
字符串函数
concat-------字符串连接 
select concat('my','s',"ql"); f8执行
数据库索引从1开始,不区分大小写
select insert(3,10,'my sql'); -----插入 3 坐标,10 长度
lower 小写
upeeer(str) 大写
substring---字符串截取

时间和日期函数

curdate-----获取当前日期select curdate();返加年月日

curtime()---获取当前时间  select curtime(); 返回当前时间

now()----获取当前日期和时间 select now(); 

weeek()---返加日期DATE为一年中的第几周 select week(now());

hour(time)---返加时间time的小时值 select hour(now());

minute((time)------返回时间time的分钟值 select minuet(now());

datediff(date1,date2)  返回日期参数date1,和date2之间相隔的天数 select datediff(now(), '2018-8-8')

adddate(date,n)计算日期参数date 加上n天后的日期 select adddate(now(),5)

常用数学函数
ceil(x)--- 向上取整
floor(x)---向下取整
rand()----随机 select rand() 取1-10的随机数 ceil(rand()*10) 取3-15的随机数 FLOOR(RAND()*13)+3;
ORDER BY 
LIMIT-----用来分页,因为数据记录太多不可能显示在一页上
limit 4, 4只显示前四条
limit7,4;7--从第几条开始+1,4----显示几条
select
'studentNo','studentName','phone','address','bornDate'
from 'student'
where 'gradeld=1'
order by studentNO
limit 4,4;


根据条件复制其它表内容创建新表
CREATE TABLE stu
SELECT s.studentName,s.sex,s.bornDate,s.phone FROM student AS s
WHERE gradeld='1';


SELECT <字段名列表>FROM <表名或视图>[WHERE <查询条件>][GROUP BY <分组的字段名>][ORDER BY <排序的列名>[ASC 或 DESC]][LIMIT [位置偏移量,]行数];


#查询2016年2月17日考试前5名的学员的学号和分数
SELECT student,studentresuld FROM result WHERE examDate='2016-02-17'
ORDER BY studenresultDESC LIMIT 5


#将所有女学生按年龄从大到小排序,从第二条记录开始显示6名女学生的姓名,年龄
SELECT studentName,FLOOR(DATEDIFF(NOW(),bornDate)/365) FROM student 
WHERE sex='女'
ORDER BY bornDate DESC LIMIT 1,7;
#按出生年份分别统计学生人数,将各组中人数达到2人的年份和人数显示出来,使用order by 后条件用having
SELECT COUNT(*),borndate FROM student GROUP BY YEAR(BORNDATE)
HAVING COUNT(*)>=2
#查询参加2016年2月17日考试的所有学员的最高分,最低分,平均分
SELECT MAX(studentresult),MIN(studentresult),MAX(studentresult)
FROM result WHERE examDate='2016-02-17';



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值