鱼C论坛

 找回密码
 立即注册
查看: 2251|回复: 10

[技术交流] [复习笔记]---mysql数据库的使用

[复制链接]
发表于 2019-10-15 01:02:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
mysql基本命令介绍

采集的数据量小的时候,你可以用文档的形式来存储,一旦数据量大了,就需要利用到一些数据库进行存储。所以掌握一种数据库是必须的,学习目前比较主流的 MongoDB,Redis 就OK(MySql可以了解)。

1,启动服务:
    已管理员身份运行cmd
    格式:net start 服务名称
    示例:net start mysql
2,停止服务:
    已管理员身份运行cmd
    格式:stop start 服务名称
    示例:NET NETstop mysql
3,链接数据库:
    格式:mysql -u 用户名 -p
    示例:mysql -u root -p
    输入密码:
    提示:Welcome to the MySQL monitor即成功
4,断开链接:
    示例:quit或者exit
5,查看版本号:
    示例:select version();
6,显示当前时间:
    示例:select now();
7,远程链接
    格式:mysql -h ip地址 -u 用户名 -p
    输入对方的myslq
二,数据库操作
1,创建数据库
    格式:create database 数据库名 charset=utf8;
    示例:create database stubbron charset=utf8;
2,删除数据库
    格式:drop database 数据库名;
    示例:drop database stubbron;
3,切换数据库
    格式:use 数据库名;
    示例:use stubbron;
4,查看当前选择的数据库
     格式:select database();
5,查看当前数据库:
    格式:show database

三,表操作
1,查看当前数据库中所有表
    show tables;
2,创建表
    格式:create table 表名(列及类型);
    说明:auto_increment   表示自增长
          primary key      表示主键
          not null         表示不为空
    示例:create table student(id int auto_increment primary key,name varchar(20) not null,age int not null,gender bit default 1,address varchar(20),isDelete bit default 0);
3,删除表(数据不存在)
    格式:drop table 表名;
    示例:drop table student;
4,查看表结构:
    格式:desc 表名
    示例:desc student
5,查看建表语句:
    格式:show create table 表名;
    格式:show create table student;
6,重命名表
    格式:rename table 原表名 to 新表名;
    示例:rename table student to newCar;
7,修改表
    格式:alter table 表名 add|change|drop 列名 类型
    示例:alter table car add isDelete bit defaul 0;

四,数据操作
1,增
    a,全列插入:插入一条数据
        格式:insert into 表名 values(...)
        说明:主键列是自动增长,但是在全列插入时,需要占位,通常使用0,插入成功后以实际数据为准
        示例:insert into newcar values(0,"tom",19,1,"北京",0);
    b,缺省插入
        格式:insert into 表名(列1,列2,..) values(值1,值二,...)
        示例:insert into newcar(name,age,address) values("Ein",19,"上海");
    c,同时插入多条数据
        格式:insert into 表名 values(..),(...)
        示例:insert into newcar values(0,"西大大",19,1,"北京",0),(0,"西大",19,1,"北京",0),(0,"西大e",19,1,"北京",0);
2,删
    格式:delete from 表名 where 表达式
    示例:delete from newcar where id=1;
    #没有条件会全部删除,慎用,删除建议逻辑删除,即修改
3,改表数据
    格式:update 表名 set 字段=新值,… where 条件
    示例:update newcar set name='Mary' where id=1;
    #没有条件会全部全段修改,慎用
4,查
    说明:查询表中的全部数据
    格式:select * from 表名
    示例:select * from newcar;
五,查
    1,基本语法
        格式:select * from 表名
        说明:from关键字,后面是表名,标示数据来源于这张表
            select后面写表中的列名,如果是*号,表示在结果集中现实和列表中的所有列
            在select后面的列名部分,可以使用as为列名起别名,这个别名显示在结果集中
            如果要查询多个列,之间使用逗号分隔
        示例: select name,age from newcar;   表示结果集中只有name,age两列
                select * from newcar;         表示所有列
                select name as a,age from newcar;  as表示列的别名
    2,消除重复行
        在select后面列前使用distinct可以消除重复行
        示例:select 列名 form 表名
            select distinct address from newcar;
    3,条件查询
        a,语法
            select * from 表名 where 条件
        b,比较运行符【=,>,<,<=,>=,!=或者<>】
            查询ID值大于2的数据:
            示例:select * from newcar where id>2;
        c,逻辑运算符【and,or,not】
            需求:查询ID值不为2的数据
            select * from newcar where not id=2;
        d,模糊查询
            like
            %表示任意多个任意字符
            _表示一个任意字符
            需求:查询姓习的同学(即name列)
            示例:select * from newcar where name like "西%";  #匹配西开头的数据
                select * from newcar where name like "西_";   #匹配西后面一个,多加一个下滑线可以比配多一个字
        e,范围查询
            in 表示在一个非连续的范围内
            between...and... 表示在以以连续的范围内
            需求:查询ID为3,5,7的数据
            实例:select * from newcar where id in (3,5,7);
            需求:查询ID为3-7的数据
            实例:select * from newcar where id between 3 and 7;
        f,空判断
            注意:null与""是不一样的
            判断空:is null
            判断非空:is not null
            需求:判断某列关键字段不是空
             实例:select * from newcar where address is not null;
        g,优先级
            小括号,not,比较运算符,逻辑运算符
            and>or  同时出现,希望先选or,需要用括号
    4,聚合
        为了快速得到统计的数据,提供了5个集合函数
        a,count(*) 表示计算总行数,括号中的*可以写列名
        b,max(字段)   表示求此列的最大值
        c,min(字段)   表示求此列的最小值
        d,sun(字段) 表示求此列的和
        e,avg(字段)  表示求此列的平均值
        需求:求数据有多少条
        实例:select count(*) from newcar;
        查询:字段gender=0的id最大值
        示例:select max(id) from newcar where gender=0;
        查询:字段gender=0的id最小值
        示例:select min(id) from newcar where gender=0;
        查询:字段gender=0的age的和
        示例:select sum(age) from newcar where gender=0;
        查询:字段gender=0的age的平均值
        示例:select avg(age) from newcar where gender=0;
    5,分组
        按照字段分组,表示此字段i相同的数据会被放到一个集合中。
        分组后,只能查询出相同的数据列,队友有差异的数据列,无法显示在集合中
        可以对分组 后的数据进行统计,进行聚合运算
        语法:select 字段1,字段2,...聚合.... from 表名 group by 字段1,字段2;
        查询:字段的两种数据的总数(比如把表里面男女进行分组)
        示例:select address,count(*) from newcar group by address;
        分组后的数据筛选:select 字段1,字段2,...聚合.... from 表名 group by 字段1,字段2, having 字段1,字段2,...聚合....
        示例:select address,count(*) from newcar group by address having address=0;

        where与having的区别
        where是对from后面指定的表进行筛选,属于对原始数据的筛选
        having是对group by 的结果进行筛选,属于对结果集的数据筛选
    6,排序
        语法:select * from 表名 order by 字段1 asc|desc,字段2 asc|desc,....
        说明:
            a,将数据按照字段1进行排序,如果某些字段1的值相同,就按照字段2排序,,,
            b,默认从小到大排序
            c,asc降序
            d,desc升序
        需求:将isdelete为0的数据按照age排序(降序)
        示例:select * from newcar where isDelete=0 order by age sac;
        将isdelete为0的数据按照age排序(降序)age相同按照id排序
        示例:select * from newcar where isDelete=0 order by age asc,id asc;
    7,分页
        语法:select * from 表名 limit 开始位置,分页条数;
        示例:select * from newcar limit 0,3;
        需求查看字段某个数据的条数分页
             select * from newcar where gender = 1 limit 0,3;
六,关联
    比如一个班级有多个学生
    现在有两个表:班级表(甲乙丙)--以及班级每个学生表()
    建表语句:1创建班级表
    1,create table class(id int auto_increment primary key,name varchar(20) not null,stuNUM int not null);
    1,create table student(id int auto_increment primary key,name varchar(20) not null,gender bit default 1,classid int not null,foreign key(classid) references class(id) );

    插入一些数据:
    insert into class values(0,"python01",55),(0,"python02",45),(0,"python03",50),(0,"python04",66),(0,"python05",75);
    insert into student values(0,"tom",1,1);   #末尾的一是关联的外键

    关联查询:
    select student.name,class.name from class inner join student on class.id=student.classid;
    分类:
    1,表A inner join 表B
        表A 与 表B匹配的行会出现在结果集中
    2,表A left join 表B
        表A 与 表B匹配的行会出现在结果集中,外加表A独有的数据,未对用的数据使用null填充
    3,表A left join 表B
    表A 与 表B匹配的行会出现在结果集中,外加表B独有的数据,未对用的数据使用null填充

对pysql的简单封装复用


游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
温木zou + 5 + 5 + 3 感谢整理

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-21 06:21:33 | 显示全部楼层
学习中...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-11 17:32:58 | 显示全部楼层
2,表A left join 表B
        表A 与 表B匹配的行会出现在结果集中,外加表A独有的数据,未对用的数据使用null填充
3,表A left join 表B
    表A 与 表B匹配的行会出现在结果集中,外加表B独有的数据,未对用的数据使用null填充

这两句是一样的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-12 00:01:56 | 显示全部楼层
Yuy_zhang 发表于 2019-11-11 17:32
2,表A left join 表B
        表A 与 表B匹配的行会出现在结果集中,外加表A独有的数据,未对用的数据使 ...

一样的,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-12 11:59:27 | 显示全部楼层

那显示哪个表的独有数据?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-12 13:19:19 | 显示全部楼层
学习ing
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-27 00:09:21 | 显示全部楼层
学习中...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-28 14:40:02 | 显示全部楼层
过来学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-5 14:56:41 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-15 16:13:10 | 显示全部楼层
学习MYSQL有用的知识
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-9 14:22:52 | 显示全部楼层
不下心点到踩了 ,抱歉,已评分
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-29 07:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表