09-07:SQLServer与MySQL基础操作

  • MySQL的安装要修改字符集,并且打开允许远程连接,如果忘记:
    忘记修改字符集,创建数据库时要选择字符集。忘记开远程连接要开一条授权命令:GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY "123456";

  • 数据库
    数据的仓库,低冗余,能够高效存取数据的数据集合,低冗余指的是重复的数据少
    高效,数据是有序的
    数据库系统DBS= 数据库管理系统DBMS + 数据DB+ 数据库管理员DBA + 硬件HARDWARD

    数据库管理系统的作用:
    1.数据操作管理命令与操作系统交互的转换2.权限管理(数据安全,人员更迭 权限会变化)

    数据库执行语句是SQL结构化的查询语言
    结构(组成部分的顺序 比例 数量)

    关系型数据库: 二维表,用行和列管理数据,同一行表示一个个体,同一列表示相同含义 体现位置关系

    SQL语言分为:DQL: select 数据查询; DML: insert,delete,update 数据管理,数据操作; DCL: grant,revoke 数据控制; DDL: create,alter,drop 数据定义;

    数据:能够被计算机识别的信号数据(声音,图像,动画,文字)

    SQL语句:
  • 对列的筛选并取别名:
    select sno as '学号',name as '姓名' from student

  • 函数 = 过程 = 方法 = 功能(输入参数 得到结果的 过程)

  • 数学函数:
    绝对值:select abs(-1)
    取整:selec ceil(2.0000001) -->3
    select floor(2.9999) -->2
    select round(3.14,1) -->3.1
    对成绩进行取整:select name as '姓名',round(avgscore,0) as '处理后成绩',avgscore as '实际成绩' form student;

  • 字符函数:
    字符串拼接:select concat(1,'-',2) -->1-2
    截取字符串:select substr('abcd',1,2) -->'ab' 参数2表示从第几个开始取,参数3表示取多长

  • 日期函数;
    取当前日期 select now()
    取日期部分 select date format('2018-11-11','%Y') -->Y,M,d,h,s,...
    取两个日期之差 select timestampdiff(YEAR,'2018-09-07','2018-01-01') -->MONTH,DAY

  • 聚合函数:sum count max min avg
    select count(*) from student;
    select max(high) from student;

  • 自定义函数:

  • 分组语句:select后出现的字段,必须出现在group后 聚合函数除外
    统计各班成绩:select cno,round(avg(avgscore),2) as '平均成绩',round(max(avgscore),2) as '最好成绩' from student group by cno;(没有小数就不用套round)
    统计各分数段人数; -->(count(*)会统计null,count具体字段不统计null)
    select avgscore,concat(floor(avgscore / 10)*10,'-',floor(avgscore / 10)*10+9) as '分数段' form student;

SELECT CONCAT(FLOOR(avgscore / 10)*10,'-',FLOOR(avgscore / 10)*10+9) AS '分数段',COUNT(*) AS '人数' FROM student GROUP BY FLOOR(avgscore /10) *10
统计各身高段:SELECT CONCAT(FLOOR(high / 10)*10,'-',FLOOR(high / 10)*10+9) AS '身高段(cm)',COUNT(*) AS '人数' FROM student GROUP BY FLOOR(high /10) *10
统计各年级人数:select substr(sno,1,2),count(*) from student group by substr(sno,1,2)
统计各月份过生日人数:select substr(birtday,6,2),count(*) from student group by substr(birthday,6,2)
统计各位同学的周岁和虚岁:select floor(timestampdiff(DAY,birthday,now())/365),timestampdiff(YEAR,birthday,now()) from student
统计各年龄段:SELECT CONCAT(FLOOR((FLOOR(TIMESTAMPDIFF(DAY,birthday,NOW())/365))/10)*10,'-', FLOOR(((FLOOR(TIMESTAMPDIFF(DAY,birthday,NOW())/365))/10)*10+9)) AS '年龄段',COUNT(*) AS '人数' FROM student GROUP BY FLOOR(TIMESTAMPDIFF(DAY,birthday,NOW())/365)

你可能感兴趣的:(09-07:SQLServer与MySQL基础操作)