zoukankan      html  css  js  c++  java
  • python3笔记二十四:Mysql数据库操作命令

    一:学习内容

    • Mysql操作命令:启动服务、停止服务、连接数据库、退出数据库、查看版本、显示当前时间、远程连接
    • 数据库操作命令:创建数据库、删除数据库、切换数据库、查看当前选择的数据库
    • 表操作命令:查看当前数据库中所有表、创建表、删除表、查看表结构、查看建表语句、重命名表名、修改表结构
    • 数据操作命令:增加数据(全列插入、缺省插入、同时插入多条数据)、删除数据、修改数据
    • 数据操作命令查:查询数据、消除重复行查询、条件查询、聚合查询、分组查询、排序查询、分页查询
    • 数据关联命令:内连接、左连接、右连接

    二:Mysql操作命令

    • 启动服务

    1.说明:以管理员身份运行cmd
    2.格式:net start 服务名称
    3.示例:net start mysql
    4.示例:net start mysql57

    • 停止服务

    1.说明:以管理员身份运行cmd
    2.格式:net stop 服务名称
    3.示例:net stop mysql
    4.示例:net stop mysql57

    • 连接数据库

    1.说明:可以使用管理员,也可以不使用管理员身份
    2.格式:mysql -u 用户名 -p
    3.示例:mysql -u root -p
    输入密码(安装时设置的)
    4.注意:如果连接不成功提示无权限,则可执行如下命令:
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
    flush privileges;

    • 退出数据库

    1.示例:exit或quit

    • 查看版本

    1.说明:在连接数据库后执行
    2.示例:select version();

    • 显示当前时间

    1.说明:在连接数据库后执行
    2.示例:select now();

    • 远程连接

    1.说明:连接别人的数据库,非本地的
    2.格式:mysql -h ip地址 -u root -p
    输入对方的mysql密码

    三:数据库操作命令

    • 创建数据库

    1.说明:执行示例后,出现OK,说明创建库成功
    2.格式:create database 数据库名 charset=utf8;
    3.示例:create database test charset=utf8;

    • 删除数据库

    1.说明:执行示例后,出现OK,说明删除库成功
    2.格式:drop database 数据库名;
    3.示例:drop database test;

    • 切换数据库

    1.说明:执行示例后,出现Database changed,说明切换库成功
    2.格式:use 数据库名;
    3.示例:use test;

    • 查看当前选择的数据库

    1.说明:执行示例后,出现当前选择的数据库名称
    2.示例:select database();

    四:表操作命令

    • 查看当前数据库中所有表

    1.说明:执行该命令必须要先在一个数据库中
    2.示例:show tables;

    • 创建表

    1.说明:在已有的test数据库下创建表,auto_increment表明自增长,primary key表明主键,not null不为空,执行示例后,出现OK,说明创建表成功
    2.格式:create table 表名(列及类型);
    3.示例:
    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
    );

    • 删除表

    1.说明:执行示例后,出现OK,说明删除表成功
    2.格式:drop table 表名;
    3.示例:drop table student;

    • 查看表结构

    1.说明:执行示例后,出现表字段结构
    2.格式:desc 表名;
    3.示例:desc student;

    • 查看建表语句

    1.说明:执行示例后,出现创建表的语句
    2.格式:show create table 表名;
    3.示例:show create table student;

    • 重命名表名

    1.说明:执行示例后,出现OK,说明表改名成功
    2.格式:rename table 原表名 to 新表名;
    3.示例:rename table car to newCar;

    • 修改表结构--不建议操作

    1.说明:执行示例后,出现OK,说明修改表结构成功,建议不要随意修改表结构。
    2.格式:alter table 表名 add|change|drop 列名 类型;
    3.示例:alter table newCar add isDelete bit default 0;

    五:数据操作命令

    • 增加数据-全列插入

    1.说明:主键列是自动增长的,但是在全列插入时需要占位,通常使用0,插入成功以后以实际数据为准,执行示例后,出现OK,说明插入数据成功
    2.格式:insert into 表名 values(...);
    3.示例:insert into student values(0,"tom",19,1,"北京",0);

    • 增加数据-缺省插入

    1.说明:执行示例后,出现OK,说明插入数据成功
    2.格式:insert into 表名(列1,列2,...) values(值1,值2,...);
    3.示例:insert into student(name,age,address) values("lilei",19,"上海");

    • 增加数据-同时插入多条数据

    1.说明:执行示例后,出现OK,说明插入数据成功
    2.格式:insert into 表名 values(...),(...),...;
    3.示例:insert into student values(0,"test01",18,0,"北京",0),(0,"test02",22,1,"海南",0),(0,"test03",20,0,"石家庄",0);

    • 删除数据

    1.说明:执行示例后,出现OK,说明删除数据成功
    2.格式:delete from 表名 where 条件;
    3.示例:delete from student where id = 5;
    4.注意:没有条件是全部删除,慎用

    • 修改数据

    1.说明:执行示例后,出现OK,说明修改数据成功
    2.格式:update 表名 set 列1=值1.列2=值2,... where 条件;
    3.示例:update student set age=16 where id = 2;
    4.注意:没有条件是全部列都修改,慎用


    数据操作命令查

    • 查询数据-基本语法

    1.说明:查询表中的全部数据;
      from关键字后面是表名,表示数据来源于这张表;
      select后面写表中的列名,如果是*表示在结果集中显示表中所有列;
      在select后面的列名部分,可以使用as为列名起别名,这个别名显示在结果集中;
      如果要查询多个列,之间使用逗号分隔
    2.格式:select * from 表名;
    3.示例:select * from student;
    4.示例:select name,age from student;
    5.示例:select name as n from student;

    • 查询数据-消除重复行

    1.说明:在select后面列的前面使用distinct可以消除重复的行
    2.格式:select distinct 列名 from 表名;
    3.示例:select distinct gender from student;

    • 查询数据-条件查询

    1.说明:查询表中的全部数据
    2.格式:select * from 表名 where 条件;
    3.比较运算符示例
      等于:select * from student where id=1;
      大于:select * from student where id>2;
      小于:select * from student where id<4;
      大于等于:select * from student where id>=2;
      小于等于:select * from student where id<=4;
      不等于:select * from student where id != 1;
      不等于:select * from student where id <> 1;
    4.逻辑运算符示例
      and:select * from student where id>1 and gender=0;
      or:select * from student where id>2 or id<6;
      not:select * from student where not id=4;
    5.模糊匹配示例
      like:select * from student where name like 'test%';
        select * from student where name like 'test_';
      or:select * from student where id>2 or id<6;
      not:select * from student where not id=4;
    6.范围查询
      in:表示在一个非连续的范围内,select * from student where id in (1,2,4);
      between...and...:表示在一个非连续的范围内,select * from student where id between 2 and 4;
    7.空判断
      注意:null与""是不同
      判断空:is null,select * from student where address is null;
      判断非空:is not null,select * from student where address is not null;
    8.优先级
      由大到小:小括号,not,比较运算符,逻辑运算符
      and比or优先级高,如果同时出现并希望先算or,需要结合括号()来使用

    • 查询数据-聚合

    1.说明:为了快速得到统计数据,提供了5个聚合函数

    2.格式:select 聚合函数 from 表名 where 条件;

    3.count(*),表示计算总行数,括号中可以写*和列名,select count(*) from student;

    4.max(列),表示求此列的最大值,select max(id) from student where gender=0;

    5.min(列),表示求此列的最小值,select min(id) from student where gender=0;

    6.sum(列),表示求此列的和,select sum(age) from student where gender=0;

    7.avg(列),表示求此列的平均值,select avg(age) from student where gender=0;

    • 查询数据-分组

    1.说明:按照字段分组,表示此字段相同的数据会被放到一个集合中。
        分组后只能查询出相同的数据列,对于有差异的数据列无法显示在结果集中
        可以对分组后的数据进行统计,做聚合运算

    2.格式:select 列1,列2,聚合函数 from 表名 group by 列1,列2,列3,...;

    3.示例:select gender,count(*) from student group by gender;

    4.格式:select 列1,列2,聚合函数 from 表名 group by 列1,列2,列3,... having 列1,列2,...聚合函数;

    5.示例:select gender,count(*) from student group by gender having gender=1;

    6.where与having的区别:
      where是对from后面指定的表进行筛选,属于对原始数据的筛选
      having是对group by的结果进行筛选

    • 查询数据-排序

    1.说明:将数据按照列1进行排序,如果某些列1的值相同,则按照列2进行排序,以此类推
        默认按照从小到大的顺序排序,asc升序,desc降序
    2.格式:select * from 表名 order by 列1 asc|desc,列2 asc|desc,...;
    3.示例:select * from student where isDelete=0 order by age desc;
    4.示例:select * from student where isDelete=0 order by age asc,id desc;

    • 查询数据-分页

    1.说明:start索引从0开始,gender=1为男生0为女生
    2.格式:select * from 表名 limit start,count;
    3.示例:select * from student limit 1,3;   #从第2条开始查询3条出来
    3.示例:select * from student where gender=1 limit 1,3;   #从第2条开始查询3条出来

    七:数据关联命令

    • 表关联

    1.建表语句 1:n
    --班级表 1
    create table class(
    id int auto_increment primary key,
    name varchar(20) not null,
    strNum int not null
    );

    --学生表 n
    create table students(
    id int auto_increment primary key,
    name varchar(20) not null,
    gender int default 1,
    classid int not null,
    foreign key(classid) references class(id)
    );

    2.插入数据

    班级数据:insert into class values(0,"python01",55),(0,"python02",50),(0,"python03",60),(0,"python04",80);
    学生数据:insert into students values(0,"tom",1,1);
                 insert into students values(0,"lilei",1,2);

    3.查询分类
    第一种:内连接:表A inner join 表B  --说明:表A与表B匹配的行会出现在结果集中
    示例:select students.name,class.name from class inner join students on class.id = students.classid;

    第二种:左连接:表A left join 表B   --说明:表A与表B匹配的行会出现在结果集中,外加表A中独有的数据,未对应的数据使用null填充
    示例:select students.name,class.name from class left join students on class.id = students.classid;

    第三种:右连接:表A right join 表B   --说明:表A与表B匹配的行会出现在结果集中,外加表B中独有的数据,未对应的数据使用null填充
    示例:select students.name,class.name from class right join students on class.id = students.classid;

    4.内连接、左连接、右连接区别

    内连接:
    表A inner join 表B on,组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分
    左连接:
    表A left join 表B on,是left outer join的简写,它的全称是左外连接,是外连接中的一种
    左(外)连接,左表(表A)的记录将会全部表示出来,而右表(表B)只会显示符合搜索条件的记录。右表(表B)记录不足的地方均为NULL

    右连接

    表A right join 表B on,是right outer join的简写,它的全称是右外连接,是外连接中的一种
    右(外)连接,右表(表B)的记录将会全部表示出来,而左表(表A)只会显示符合搜索条件的记录。左表(表A)记录不足的地方均为NULL
  • 相关阅读:
    单位根反演学习笔记
    省选模拟测试17
    省选模拟测试16
    省选模拟测试15
    省选模拟测试14
    省选模拟测试13
    P4491 [HAOI2018]染色
    省选模拟测试12
    P4389 付公主的背包
    洛谷P3403
  • 原文地址:https://www.cnblogs.com/miaomiaokaixin/p/11512002.html
Copyright © 2011-2022 走看看