MySQL总结

Wesley13
• 阅读 492

mysql数据库

字段类型

  • 在mysql中包含的数据类型很多,这里主要列出来常用的几种

  • 数字:int(整数),decimal(浮点数)

  • 字符串:char(不可改变字符数),varchar(有限长度,可变字符       数),text(大文本)

  • 约束

    • 主键primary key(only 1)

    • 非空not null

    • 惟一unique

    • 默认default

    • 外键foreign key

    • 使用命令连接

      • 命令操作方式,在工作中使用的更多一些,所以要达到熟练的程度
      • 打开终端,运行命令

      mysql -uroot -p

      回车后输入密码,当前设置的密码为mysql

      • 连接成功后如下图
      • 退出登录

      quit或exit

      • 登录成功后,输入如下命令查看效果

      查看版本:select version();

      显示当前时间:select now();

      • 注意:在语句结尾要使用分号;

      • 远程连接

        • 一般在公司开发中,可能会将数据库统一搭建在一台服务器上,所有开发人员共用一个数据库,而不是在自己的电脑中配置一个数据库
        • 运行命令

        mysql -hip地址 -uroot -p

        • -h后面写要连接的主机ip地址
        • -u后面写连接的用户名
        • -p回车后写密码

        数据库操作

        • 查看当前所有数据库

        show databases;

        • 创建数据库

        create database 数据库名 charset=utf8;

        • 删除数据库

        drop database 数据库名;

        • 切换数据库

        use 数据库名;

        • 查看当前选择的数据库

        select database();

        表操作

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

        show tables;

        • 创建表
        • auto_increment表示自动增长
        • create table 表名(列及类型); 如: create table students( id int auto_increment primary key, sname varchar(10) not null );

        create table 表名(键 类型 自增 主键 非空)

        create table students(

        id int auto_increment primary key not null, #主键形式一致

        name varchar(10) not null,

        birthiday datetime,

        gender bit default 1,

        isDelet bit default 0

        );

        • 修改表

        alter table 表名 add|change|drop 列名 类型;

        如:

        alter table students add birthday datetime;

        • 删除表

        drop table 表名;

        • 查看表结构

        desc 表名;

        • 更改表名称

        rename table 原表名 to 新表名;

        • 查看表的创建语句

        show create table '表名';

        数据操作

        • 查询

        select * from 表名;

        • 增加

        全列插入:insert into 表名 values(...)

        缺省插入:insert into 表名(列1,...) values(值1,...)

        同时插入多条数据:insert into 表名 values(...),(...)...;

        或insert into 表名(列1,...) values(值1,...),(值1,...)...;

        • 主键列是自动增长,但是在全列插入时需要占位,通常使用0,插入成功后以实际数据为准
        • 修改

        update 表名 set 列1=值1,... where 条件

        • 删除

        delete from 表名 where 条件

        • 逻辑删除,本质就是修改操作update

        alter table students add isdelete bit default 0;

        如果需要删除则

        update students isdelete=1 where ...;

        总结

        • 完整的select语句

        select distinct *

        from 表名

        where ....

        group by ... having ...

        order by ...

        limit star,count

        • 执行顺序为:
          • from 表名
          • where ....
          • group by ...
          • select distinct *
          • having ...
          • order by ...
          • limit star,count
        • 实际使用中,只是语句中某些部分的组合,而不是全部

        备份与恢复

        数据备份

        • 进入超级管理员

        sudo -s

        • 进入mysql库目录

        cd /var/lib/mysql

        • 运行mysqldump命令

        mysqldump –uroot –p 数据库名 > ~/Desktop/备份文件.sql;

        按提示输入mysql的密码

        数据恢复

        • 连接mysqk,创建数据库
        • 退出连接,执行如下命令

        mysql -uroot –p 数据库名 < ~/Desktop/备份文件.sql

        根据提示输入mysql密码

        创建数据库:create database 数据库名 charset=utf8;

        创建表:create table 表名 (字段 类型 约束);

        id int auto_increment primary key not null,

        插入数据:insert into 表名 (...) vakues(...);

        修改数据:update 表名 set 字段名=值 , .....

        删除数据:delete from 表名;

        逻辑删除: 添加isDelete 字段,然后作修改

        查询表:select*from 表名

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
2年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这