• MysQL基础


    MysQL基础

    基本知识:

    1、数据库:是对数据的管理;

    2、数据库中的表:是对发生业务的分类管理;

    3、MysQl:是数据管理系统;

    一些常用的mysql命令

    1、登录mysql;

       运行cmd —>d:—> cd D:servermysql-5.7.17-winx64in —>mysql -u root -p —>输入密码:root。

    2、显示服务器上所有已有的数据库;

    show databases;

    3、在服务器中创建自己的数据库;

    create database 数据名字 character set utf8;

    4、切换到指定的数据库中;

    use 数据库的名字;

    5、删除已有的数据库;

      Drop database 数据库名字:db_name;

    在数据库中建立数据表格;

    数据表示一个二维的表格(行、列)

    一行代表一条数据;

    每一列代表是当前一条数据的字段;

    1、先指定一个数据库的名字;

    Use 数据库名字;

    1、建立数据库中的表格;

    Create table 表格的名字:tb_name(

    —>字段1,

    —>字段2,

    —>字段3

    —> );

    2、显示表格;

    Show tables;

    3、删除表格;

    Drop table 表格的名字;

    知识点:

    1)、主键:唯一识别一条记录的字段;

    2)、自增:某个字段不需要手动填写数据;而是通过系统分配的整数,每一条数据分配的值都是前一条数据的增量。

    3)、非空:字段设置为非空时,填写数据时要求该字段为必填项;

    4)、默认值:向表中填写数据时,字段不写入数据时,会默认填充值。

    代码单词:

    默认值:default (value)值;

    自增:auto_increment;

    主键:primary key; 注意:字段指定了主键之后,unique将不再使用;

    唯一:unique;

    说明:comment ‘填写说明的内容’;

    引用:reference_definition;

    非空:not null;

    数据类型:

    Double:小数;(length:数的总长度,docimals:小数占据几位)

    Float:

    Numeric:(length;数的总长度,decimals:小数占据几位)

    Datetime:日期,时分秒;

    Int:默认长度整数数字;

    Varchar():不固定字符,需要手动填写字符长度;

    Char():字符固定,定长字符;

    Text():存在无限多个字符;

    插入数据insert

    Insert 表的名字 values();

    适用于全记录插入;按照字段的顺序插入数据;

    语法:insert 表的名字(字段1,字段2,......) values(‘字段1的值’,’字段2的值’,’字段3的值’;

    对于指定的字段进行数据的插入操作,如果是字符类型的数据要用单引号’’,包含要插入的数据;

    提示:主键、自增、默认可以不进行定义;

    修改、删除

    1、修改表中的数据;

    语法:update 表的名字 set 字段1=值,字段2=值,where 条件;

    语句中如果不加where,则会将所有个性字段对应的记录修改掉;

    Update 表的名字 set nickname=’tom’

    数据筛选:where id=1;

    2、删除表中的指定记录。

    Delete from tb_name where 删除条件;

    查询

    显示所有信息:

    例:SELECT * FROM ming.adress_list;

    投影字段:

    ;SELECT name,position FROM ming.adress_list;

    将字段别名:

    例:SELECT name '名字', tel '电话' FROM ming.adress_list;

    筛选条件查询:

    例:SELECT * FROM ming.adress_list where name='梁朝伟';

    %通配符的模糊查询:

    例:SELECT * FROM ming.adress_list where tel like '136%';

        SELECT * FROM ming.adress_list where tel like '%234';

     

    And的用法:

    例:SELECT * FROM ming.adress_list where tel like '136%' and name like '梁%';

    Or的用法:

    例:SELECT * FROM ming.adress_list where tel like '136%' or name like '张%';

    Not的用法:

    例:SELECT * FROM ming.adress_list where tel not like '136%';

    聚合函数:

    统计个数总数:

    例:SELECT count(*) FROM ming.adress_list;

    求和函数:

    例:SELECT sum(age) FROM ming.adress_list;

    求平均值函数;

    例:SELECT avg(age) FROM ming.adress_list;

    求最大值:

    例:SELECT max(age) FROM ming.adress_list;

    求最小值:

    例:SELECT min(age) FROM ming.adress_list;

    注:聚合函数不能与投影一起使用;

    排序order by;

    例:SELECT * FROM ming.adress_list order by id asc;

     

    SELECT * FROM ming.adress_list order by id desc;

    SELECT * FROM ming.adress_list order by age id desc;

    Asc:升序;desc:降序;

    分组: group by;distinct(去掉重复)

    例:SELECT position from tb_name group by position;

     :(1)、分组将相同的字段分为一组;

     2)、投影的字段就是分组的字段;

     3)、分组可以与聚合函数一起使用;

    例如:select position, count(*)’总数’,avg(age)‘平均数’ from tb_name group by position having avg(age)>?;

    Where是在未分组时候使用;Having是在分组后使用;

     

    主从表的查询;

    在主表当中建立关联所用的字段;两表关联,一定有主从表之分,从主表建立一个新字段以便关联到从表,主表中新建的这个用于关联的字段成为外键;

    如何建立外键:

    (1)、在主表中新建一个字段;

    (2)、新建的这个字段应于从表的主键类型相同并关联到从表主键;

    1、检验用户输入的用户名与密码是否在系统中存在;

    例:select * from users where username = ‘?’and password = ‘?’;

    2、用户登录系统后,查看用户真实的信息;一次查询涉及到的数据来自多个表。

    3、使用join on 的多表联合查询方法;

    Join on 的语法:select * from 主表 inner join 从表 on 主表.外键=从表.主键;

    例句:select users.*,adress_list.* from users inner join adress_list on users.waijian=adress_list.id;

    注意:where 所带有的条件一定要放在查询的最后;

    子查询:一个查询中出现两次查询;

    例:select * from adress_list where 主键 = 或者inselect  waijian from users where 条件);

    子查询:一个查询中出现两次查询;

    例M:select * from adress_list where 主键 = 或者inselect  waijian from users where 条件);

    Limit限制查询数;

    语法:Select * from tb_name limit 数值;

    例如:select * from tb_name limit 5,2;表示从第5行开始显示2条数据;

    注意:如果子查询中使用limit时,不能使用not in,in可以用<>不等于;

    例题:查询score中选学一门以上课程的同学中分数为非最高分成绩的记录。

    select sno,count(*) from score where sno <>(select sno from score order by degree desc limit 1) group by sno having count(*)>1;

    注意:mysql语句中两个日期的相减等于年数,也就是整个生日-另外一个生日=年数;

    例:2017-12-27 —— 2016-1-23 = 1;

    例题:查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。

    Select sno,sname,sbirthday from student where sbirthday-(select sbirthday from student where sno='108')=0;

    用子查询作为投影使用;

    例题:现查询所有同学的Sno、Cno和rank列。Between …. And …  在某个范围区间内。

    select sno,cno,(select rank from grade where score.DEGREE between low and upp) '等级' from score;

    Union使用:将两个结构相同的查询结果进行合并;

    例题:查询所有教师和同学的name、sex和birthday.

    select sname,ssex,sbirthday from student union select tname,tsex,tbirthday from teacher;

    注意:inner join on的链接方式的运行高与子查询的运行。

  • 相关阅读:
    Spring MVC入门——day01
    Spring5学习笔记——day05
    [BJDCTF2020]The mystery of ip
    [网鼎杯 2020 青龙组]AreUSerialz
    [网鼎杯 2018]Fakebook
    文件上传绕过学习
    [极客大挑战 2019]PHP
    无参数RCE总结及文件读取学习
    java中多线程执行时,为何调用的是start()方法而不是run()方法
    minconda安装配置
  • 原文地址:https://www.cnblogs.com/liming027/p/6386914.html
Copyright © 2020-2023  润新知