Fork me on GitHub

mysql安装及基本操作

安装MySQL

  • 安装命令: sudo apt install mysql-server-5.7
    • 注意:
      • 安装过程中,会提示输入root用户的密码,输入结束后回车;会再次提示一个确认密码,输入后回车,等待安装。
      • mysql-server-5.7表示指定mysql版本为5.7,可自己选定版本
  • 安装结束后进入mysql的指令:
    • mysql -u root -p
      • 会提示输入密码(输入root用户的密码,成功后进入mysql)
      • 当出现 mysql> 代表成功进入mysql服务器
      • 在mysql下所有的语句与在windows下写过的语句完全一致。

mysql服务基本命令

  • A、启动服务(Windiws环境)
    • 说明:以管理员身份运行cmd
  • B、格式:net start 服务名称
    • 示例:net start mysql57
  • C、停止服务
    • 说明:以管理员身份运行cmd
    • 格式:net stop 服务名称
    • 示例:net stop mysql57
  • D、登录MySQL
    • 格式:mysql -u 用户名 -p
    • 示例:mysql -u root -p
    • 输入密码(安装时设置的)
  • E、退出登录(断开连接)
    • quit或exit
  • F、查看版本(连接后可以执行)
    • 格式:select version();
  • G、显示当前时间(连接后可以执行)
    • 格式:select now();
  • H、远程连接
    • 格式:mysql -h ip地址 -u 用户名 -p
    • 输入对方mysql密码

MySQL数据库常用操作

  • A、查看数据库
    • show databases;
  • B、创建数据库
    • 格式:create database 数据库名 charset=utf8;
      • 示例:create database school charset=utf8;
      • 注意编码
      • charset=utf8;
  • C、删除数据库
    • 格式:drop database 数据库名;
      • 示例:drop database school;
  • D、切换数据库
    • 格式:use 数据库名;
    • 示例:use school;
  • E、查看当前选择的数据库
    • 格式:select database();

MySQL数据库表常用操作

  • A、查看当前数据库中所有表
    • show tables;
  • B、创建表
    • 格式:create table 表名(列及类型);
    • 示例
      • 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);
    • 限制
      • auto_increment表示自增长
      • primary key表示主键
        • not null表示不为空
      • default 表示 默认值
  • C、查看当前数据库下面的表
    • show tables;
  • D、查看表结构
    • 格式:desc 表名;
    • 示例:desc student;
  • E、查看建表语句
    • 格式:show create table 表名;
    • 示例:show create table
  • F、删除表
    • 格式:drop table 表名;
    • 示例:drop table students;
  • G、重命名表名
    • 格式:rename table 原表名 to 新表名;
    • 示例:rename table student to students;
  • H、修改表结构
    • 格式:alter table 表名 add change drop 列名 类型;
      • 添加字段
        • 格式:alter table 表名 add 字段名 字段描述;
        • 示例:alter table students add phonenumber varchar(20);
      • 修改字段:
        • 格式:alter table 表名 change 旧字段名 新字段名 类型;
        • 示例:alter table students change phonenumber phonenum varchar(20);
      • 删除字段
        • 格式:alter table 表名 drop 字段名;
        • 示例:alter table students drop phonenum;
      • 开发中尽量避免修改已有数据的字段,可以预留一些空的字段,后期添加功能时使用

创建表表的字段类型及约束条件介绍:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
* 字段类型
	* 在mysql中包含的数据类型很多,这里主要列出常用的几种
	* 类型
		* 数字:int,decimal
			*decimal(5,2) 表示一共五位数,小数包含2位
		* 字符串: char,varchar,text
		* 日期: datetime
		* 布尔: bit
* 约束
	* 主健:	primary  key
		* 主健只能有一个
	* 非空 not null
	* 唯一 unique
		* 可以有多个,物理上存储的结构是由主健维护的
	* 默认  default
	* 外键  foreign  key
	* auto_increment 自增长

MySQL数据库表数据常用操作–增、删、改

  • A、增
    • 全列插入
      • 说明:主键列是自动增长,但是在全列插入时需要占位,通常使用0,插入成功以后以实际数据为准
      • 格式:insert into 表名 values(值1,值2,值3,…)值和表结构中参数对应
      • 示例:insert into students values(0,”东方不败”,18,0,”不详”);
    • 缺省插入
      • 格式:insert into 表名(字段1,字段2,……) values(值1,值2,…);
      • 示例:insert into students(name,age,sex) values(“令狐冲”,16,1);
    • 同时插入多条数据
      • 格式:insert into 表名 values(值1,值2,…),(值1,值2,…),…;
      • 示例:insert into students values(0,”岳不群”,36,1,”华山”),values(0,”任盈盈”,16,0,”.月 神教总部”);
  • B、删
    • 格式:delete from 表名 where 条件;
    • 示例:delete from students where id=2;
    • 注意:没有条件是全部删除,慎用
  • C、改
    • 格式:update 表名 set 列1=值1,列2=值2,…… where 条件;
    • 示例:update students set age=16 where id=7;
    • 注意:没有条件是全部列都修改,慎用

MySQL数据库表数据常用操作–查

  • 简单查询:
    • 说明:查询表中的全部数据
    • 格式:select * from 表名;
    • 示例:select * from students;
  • A、基本语法
    • 格式:select 字段1,字段2… from 表名 where 查询条件;
    • 说明:
      • a、from关键字后面是表名,表示数据来源于这张表
      • b、select后面写表中的列名,如果是 (*) 表示在结果集中显示表中的所有列
      • c、在select后面的列名部分,可以使用as为烈面起别名,这个别名显示在结果集中
      • d、如果要查询多个列,之间使用逗号分隔
      • e、查询条件where可以不写,表示查询表中所有符合条件的内容
    • 示例:
      • select * from students;
      • select name, age from students id=1;
      • select name as names, age from students;
    • 消除重复行
      • 在select后面列前面使用distinct可以消除重复的行\
      • 示例:
        • select distinct gender from students;
        • select gender from students;
  • B、条件查询
    • a、语法
      • select * from 表名 where 条件
    • b、比较运算符
      • 等于 =
      • 小于 <
      • 大于 >
      • 大于等于 >=
      • 小于等于 <=
      • 不等于 !=或<>
      • 需求:查询id值大于8的所有数据
      • 示例:select * from students where age>18;
    • c、逻辑运算符 ​ * and 并且 ​ * or 或者 ​ * not 非 ​ * 需求:查询id值大于7的女同学 ​ * 示例:select * from students where age>17 and age<20;
    • d、模糊查询
      • like
        • %表示任意多个任意字符
        • _表示一个任意字符
      • 需求:查询地址在日月神教总部的同学
      • 示例:
        • select * from students where address like “日%””;
        • select * from students where address like “日_”;
        • select * from students where address like “%月%”;
    • e、范围查询
      • in 表示在一个非连续的范围内
      • between…and… 表示在一个连续的范围内
      • 需求:查询编号为1、3的学生
      • 示例:select * from students where id in(1,3);
      • 需求:查询编号为1到3的学生
      • 示例:select * from students where id between 1 and 5;
    • f、空判断
      • 注意:null与”“是不同
      • 判断空:is null
      • 判断非空: is not null
      • 需求:查询没有地址的同学
      • 示例:select * from students where address is null;
      • 需求:查询有地址的同学
      • 示例:select * from students where address is not null;
  • C、优先级
    • 小括号,not 比较运算符,逻辑运算符
    • and比or优先级高,如果同时出现并希望先选or,需要结合()来使用
  • D、聚合
    • 为了快速等到统计数据,提供了5个聚合函数
    • a、count( * ) 表示计算总行数,括号中可以写*和列名
    • b、max(列) 表示求此列的最大值
    • c、min(列) 表示求此列的最小值
    • d、sum(列) 表示求此列的和
    • e、avg(列) 表示求此列的平均值
    • 示例:查询学生总数 * select count(*) from students;
    • 示例:查询女生的编号最大值 * select max(id) from students where gender=0;
    • 示例:查询女生的编号最小值 * select min(id) from students where gender=0;
    • 示例:查询所有学生的年龄和 * select sum(age) from students;
    • 示例:查询所有学生的年龄平均值 * select avg(age) from students;
  • E、分组
    • 语法:select 列1,列2,聚合…… from 表名 group by 列1,列2,列3…;
    • 按照字段分组,表示此字段相同的数据会被放到一个集合中。
    • 分组后,只能查询出相同的数据列,对于有差异的数据列无法显示在结果集中
    • 可以对分组后的数据进行统计,做聚合运算
    • 需求:查询某一地址学生总数
    • 示例:
      • select address,count(*) from students group by address;
    • 分组后的数据筛选:
      • select 列,聚合…… from 表名 group by 列 having 列=值; * 示例: * select address,count(*) from students group by address having address=”日月神教总部”;
    • where与having的区别:
      • where是对from后面指定的表进行筛选,属于对原始数据的筛选
      • having是对group by的结果进行筛选
  • F、排序
    • 语法:select * from 表名 order by 列1 asc desc,列2 asc desc…;
    • 说明:
      • a、将数据按照列1进行排序,如果某些列1的值相同,则按照列2进行排序
      • b、默认按照从小到大的顺序排序
      • c、asc升序
      • d、desc降序
    • 示例:所有学生按年龄顺序排序/倒序
      • select * from students order by age asc;
      • select * from students order by age desc;
    • 示例:所有学生按年龄顺序排序,年龄相同按照id倒序排序
      • select * from students order by age asc,id desc;
  • G、分页
    • 语法:select * from 表名 limit start,count;
      • 说明:
        • start:索引从start的值位置开始
        • count:获取数据数量为count条
      • 示例:
        • select * from students limit 0,3;
        • select * from students limit 3,3;
        • select * from students where gender=1 limit 0,3;
        • 每页m条数据,获取第n页的数据
        • select * from students limit m(n-1), m