打印

关于mysql的学习笔记

[复制链接]
161|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kaloulin|  楼主 | 2018-10-6 18:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
由于工作的需要,最近不得不广泛学习一些前端、后台的知识,为了以后复习整理方便,也希望能给一些需要对这方面有所了解的朋友们一点点帮助,特将最近的学习笔记上传,小白上路,请各路大仙支持,如有不妥请指正!(学习内容来源于CCtalk云和数据 H5191201ZK(下午)课程,张老师讲得非常详细!)

    用到的软件是MySQL和Navicat,编译器能用都行,我目前使用的是Visual Studio Code



#2020-04-09 23:14

<-- MySQL 基本操作 -->



//重点说明

/*对表名的操作均需要对其使用反引号``*/



<-- 数据库操作 -->



    使用数据库

        use masql;



    创建数据库

        create database 数据库名;

        例如:创建auto数据库

            create database auto;



    显示所有数据库

        show databases;



    删除数据库

        drop database 数据库名;

        例如:删除auto数据库

            drop database auto;



    使用数据库

        use 数据库名;



    查询当前连接数据库

        select database();



    显示当前连接数据库所有表

        show tables;





<-- 数据库表操作 -->



    创建表

        创建单个数据

            create table 表名(字段名 类型(长度));

                例如:创建auto数据库  

                    create table class(id int(20));



        创建多个数据

            create table 表名(字段名 类型(长度) ,字段名 类型(长度),......)



    (增)表内数据插入 //插入现有字段下单独的一行数据,不能对没有的字段进行设置

        insert into 表名(字段名1,字段名2,...,字段名n)values(值1,值2,...,值n),(值1,值2,...,值n);



        //在已有字段名下添加

        insert into 表名 value(值1,值2,...,值n),(值1,值2,...,值n);



        /*decimal(n,m)表示数值中共有n位数,其中整数n-m位,小数m位*/



    (删)删除表

        drop table 表名;



        删除当前表中指定数据

            delete from 表名 where 表达式;

            例如:删除当前表中id为3的数据

                delete from `neo-7n-0-002-gps` where id=3;



    (改)更改表中数据

        opdate 表名 set 字段=新值1,...新值n where 条件;

        例如:更改id为1的longitude值为104.564234

            update `neo-7n-0-002-gps` set longitude=104.564234 where id=1;



        在已有的数据库表中添加表中字段

            alter table 表名 add 字段名 类型(长度);



        修改字段(修改字段名、字段类型、长度)

            修改字段名:

                alter table 表名 change 旧字段名  新字段名



            修改字段类型

                alter table 表名 modify 字段名 字段类型(字段长度)



        删除字段

            alter table 表名 drop 字段名   



    (查)显示表信息

        desc 表名   /*或者*/    show cowlmns from 表名



        查询所有数据(基本语句格式(列))

            select 字段1,字段2,...,字段n from 表名;

            例如:查询id列

                select id from `neo-7n-0-002-gps`;



            如果查询当前表中所有数据(使用通配符*表示所有)

                select * from 表名;



        查询前几行数据

            select * from 表名 order by 字段名 limit 限制条件;

            例如:按照id查询neo-7n-0-002-gps表中前四个数据

                select * from `neo-7n-0-002-gps` order by id limit 0,4;   //0代表起始行但不包含起始行,4代表结束行,包含当前行



        /*增加说明*/

            where 用来筛选数据(条件查询)

                select * from 表名 where 表达式;

            where语句后面可以跟多个条件,从而显示查询的数据,多个条件之间使用and或者or连接

                select * from 表名 where 表达式1 and (表达式2 or 表达式3);



            group by 用来分类汇总

                后面跟着要汇总的字段,可以跟多个字段,中间以逗号分隔

                例如:

                    group by id表示按照id进行数据分类汇总



                //常用的汇总

                    count(*或者字段) 按照记录或者字段统计记录数   //count(*)包含所有的数据  count(字段)会忽略null的字段

                    例如:统计id的记录数

                        select id,count(*) as num from `neo-7n-0-002-gps` group by id;   //以指定别名num查询,通过id进行分组



                    sum(字段) 对字段进行求和



                    avg(字段) 对字段求均值



                    max(字段) 求字段中的最大值



                    min(字段) 求字段中的最小值



            having 用来筛选分类汇总结果 /*只能以指定别名操作*/

                一般和group by配合使用,表示在得到分类汇总的基础上,进一步筛选记录

                having后面只能是汇总的字段或者聚合的函数



                例如:通过id进行分组,对latitude指定别名lat,并在分类基础上筛选latitude大于30.124536的数据

                    select id,count(*),max(latitude) as lat from `neo-7n-0-002-gps` group by id having lat>30.124536;



            order by 用来排序(有升序和降序两种排列方式)

                desc 表示降序  asc表示升序(可省略,默认升序)

                    例如:按照id进行降序排列

                    select * from `neo-7n-0-002-gps` order by id desc;



                    //如果数据类型是int类型排序直接比较大小,如果是字符串,里面有数字或者字母,会按照字符串的顺序进行排序



                    order by需要在where后面,limit前面

                        如果后台指定多个排序字段,中间可以逗号分隔

                            select * from `neo-7n-0-002-gps` order by id desc,longitude desc;



            limit 用来取出指定的记录数

                取得一定范围的记录集,此函数通常用分页

                用法:

                    select * from 表名 limit 起始位置,长度;

                    //如果起始位置为0,那么第二个参数可以作为行或者长度

                    //如果第一个参数为非0,那么第二个参数代表长度



                    所以第二个参数综合可以作为长度



                    eg: select * from `neo-7n-0-002-gps` limit 2;   //如果只有一个数字,那么该数字表示长度



                    /*limit写在查询语句的最后*/



    /*指定别名查询*/

        select 字段名1 as "新的字段名1",字段名2 as "新的字段名2",...,字段名n as "新的字段名n" from 表名;

        //指定别名只是为了显示更加直观,并不改变标的字段名





<-- like及in关键字 -->



like 表示相似(类似于contain查询,即模糊查询)  //多用于search搜索框



    语法:

        select * from 表名 where 字段 like "字符及通配符";  



            例如:

            select * from `neo-7n-0-002-gps` where id like "1"   //不加%:查询id为1的数据,等价于where id=1

            select * from `neo-7n-0-002-gps` where id like "1%"   //字符后加%:检索以1开头的数据

            select * from `neo-7n-0-002-gps` where id like "%1%"   //字符前后均加%:完全模糊检索,不管1的位置,标准模糊检索格式



in 表示列表中是否包含此类信息 in() 此信息指in括号中的内容



    语法:

        select * from 表名 where 字段 in(字段值1,字段值2,...,字段值n);   //括号中若是字符串,应使用单引号括起来



        例如:

            select * from `neo-7n-0-002-gps` where id in(1,5,7);

        等价于

            select * from `neo-7n-0-002-gps` where id=1 or id=5 or id=7;





<-- 多表查询及子查询 -->



查询表中某一列



    select 字段1,字段2,...,字段n from 表名;

        完整语法:

            select 表名.列名1,表名.列名2,...,表名.列名n from 数据库名.表名;



    字段的别名,表也可以指定别名



        select 别名.列名 from 表名 别名;

        select * from 表名;

        等效于

        ==> select 表名.* from 表名;

        ==> select 别名.* from 表名 别名;

        ==> select 别名.列名1,别名.列名2,...,别名.列名n from 表名 别名;



多表查询

    当当前表满足不了当前的需求,此时就需要进行多表查询



    语法:

        select 字段1,字段2,...,字段n from 表1,表2,...,表n where 表达式;

        例如:

        select 字段1,字段2 from 表1,表2 where 表1.字段n=表2.字段n;

        等效于:

        select 别名1.字段1,别名2.字段2 from 表名1 别名1,表名2 别名2 where 别名1.字段n=别名2.字段n;

        //select 别名1.*,别名2.* from 表名1 别名1,表名2 别名2 where 别名1.字段n=别名2.字段n;



        select 别名1.字段1,别名2.字段2 from 表名1 别名1 join 表名2 别名2 on 别名1.字段n=别名2.字段n;

        //select 别名1.*,别名2.* from 表名1 别名1 join 表名2 别名2 on 别名1.字段n=别名2.字段n;







#2020-04-10 10:11

<-- MySQL字段(数据)类型 -->



大致分为三类

    数值

    日期/时间

    字符串



数值类型



    integer  smallint  decimal  numeric

    //近似数值的数据类型  

    float real double precision

    关键字 int dec



日期类型

    为表示时间和日期的数据类型



    dete  日期值  年-月-日

    time  时间值或持续时间  时:分:秒

    detetime  混合日期和时间值  年-月-日 时:分:秒

    year  年份值  年(2020)

    timestamp  混合日期或时间值、时间戳  年-月-日 时:分:秒  /*基本用于js中时间计算,例如博文发表于xxx前*/



字符串类型



    char  定长字符串  0-255

    varchar  变长字符串  0-65535

    text  长文本数据  0-65535

    longtext  极大文本数据  0-4294967295

    blob  二进制长文本数据  0-255

    longblob  二进制极大长文本数据  0-4294967295



    //其他类型

    binary  varbinary  set  eunm

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

439

主题

448

帖子

0

粉丝