zoukankan      html  css  js  c++  java
  • mysql之基本数据库操作(二)

    环境信息

    • 数据库:mysql-5.7.20

    • 操作系统:Ubuntu-16.04.3

    mysql的启动、退出、重启

    # 启动
    $ sudo service mysqld start
    # 停止
    $ sudo service mysqld stop
    # 重启
    $ sudo service mysqld restart
    # 查看进程
    ps ajx|grep mysql
    
    • 但有时候mysql并没有注册成service的服务,如mysql-5.7.20,使用mysql-server服务;
    # 将mysql-server添加到环境变量
    ln -s /usr/local/mysql/support-files/mysql-server /usr/bin/mysql-server
    
    mysql-server start:启动mysql
    mysql-server stop :停止mysql
    mysql-server restart :重启mysql
    mysql-server reload :修改了配置文件后,重新载入mysql
    mysql-server status :查看mysql的状态
    

    登陆和退出

    # username代表用户名;可以先不输入密码,回车后再输入,方式密码出现明文
    mysql -u username -p password
    
    # 退出
    quit;
    exit;
    

    远程连接

    前提是远程数据库配置了允许远程连接;

    # mysql -h ip地址 -P 端口  -u root -p
    -h后面写要连接的主机ip地址
    -P 写数据库的端口,不写默认端口为3306
    -u后面写连接的用户名
    -p回车后写密码
    

    数据库基本操作

    # 创建数据库,dbname为数据库名,charset指定编码
    create database dbname charset=utf8;
    
    # 删除数据库
    drop database 数据库名;
    
    # 切换数据库
    use 数据库名;
    
    # 查看当前选择数据库
    select database();
    
    # 查看所有的数据库
    show databases;
    

    表的基本操作

    # 查看当前数据库的所有表
    show tables;
    
    # 查看表的结构
    desc 表的名字
    
    # 查看某个表的创建语句
    show create table 表名;
    
    # 更改表的名字
    rename table 原表名 to 新表名;
    
    # 创建一个表
    create table 表名(定义字段)
    
    # 删除一个表
    drop table 表名;
    # 有时出现删除失败的情况,一般是表进行了相互关联的情况,使用set foreign_key_checks = 0;关闭外键约束,删除成功后启动外键约束set foreign_key_checks = 1;
    
    # 增加字段
    alter table 表名 add 列名 类型;
    
    # 对字段重命名
    alter table 表名 change 原名 新名 类型及约束;
    
    # 修改字段的类型和约束
    alter table 表名 modify 列名 类型及约束;
    
    # 删除字段
    alter table 表名 drop 字段
    

    数据类型及约束

    create table person(
        -> id int unsigned primary key auto_increment not null,
        -> name varchar(20) default '',
        -> age tinyint unsigned default 0,
        -> gender enum('男','女','保密'),
        -> isdelete bit default 0
        -> );
    

    表的字段的定义格式为:

    字段名  类型  约束
    
    • 字段名:任意名,一般为字符变量;

    • mysql常用类型:

    • 数值类型:
      tinyint:-128~128 1个字节
      samllint:-32768 ~ 32767 2个字节
      int:-2147483648 ~2147483647 4个字节

    • 字符串类型

    char: 可定义0~255个字节,如char(5),定义后不可变;每个值一定占5个字节;
    varchar: 可定义0~255个字节,如varchar(5),定义后可变;每个值存储可小于5个字节;
    text:可定义0~65535个字节,用来传送大文本;

    • bit

    bit保存位字段值,bit(m),m的范围1~64,默认为1;

    • 枚举类型:

    enum:enum("1","2"),非法插入时会插入空字符串,其值为0;如果声明不允许为空,则默认值为允许值得第一个元素;索引规则从第一个开始;最大可以有65535

    • 定点数

    decimal:如decimal(M,D),M表示数值的总的位数,D表示小数部分的位数;不指定默认取值decimal(10,0),一个参数则D取值0;M取值范围为165,超出报错,D取值030,超出报错;
    numeric:和decimal是相同的类型;

    • 浮点数

    float : float(M,D),M取值范围为0255,当M小于6位数字的时候是准确的,超出范围报错;D取值范围030,。
    real : real(M,D),
    double : double(M,D),M,D范围和float一样,M<=16时,数字是准确的。

    • 注意

    在FLOAT和DOUBLE中,若M的定义分别超出7和17,则多出的有效数字部分,取值是不定的,通常数值上会发生错误。

    • 时间类型

    | 类型 | 字节 | 举例 |

    | DATE | 4 | '2020-01-01' |

    | TIME | 3 |'12:29:59' |

    | DATETIME | 8 |'2020-01-01 12:29:59' |

    | YEAR | 1 |'2017'

    • 约束
    # 一个字段可以有多个约束,在定义的时候依次写在后面
    primary key : 主键,物理上存储的顺序;
    auto_increment:自增长,一般配合主键使用;
    not null:非空,字段不允许填写空值;
    default:默认值;
    foreign key:外键;
    unique:字段不允许重复;
    unsigned:无符号,针对的是数值类型;指的是非负数;
    signed:有符号,值有理数;
    

    典型的建表语句

    drop table if exists 'users'; # 首先验证表是否存在,存在则删除
    set FOREIGN_KEY_CHECKS=0; # 设置是否外键检查,0否,1是
    create table 'users' (
        'id' int, PRIMARY KEY autoincrement, # 主键,自动增长
        'username' varchar(20) UNIQUE not null, # 不可重复,不能为空
        'age' int default 20, # 默认为20
        'status' enum('A', 'B', 'C') default A, # 枚举选择
        index 'users_username' ('username' ASC), # 创建一个普通索引
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8; # 设置引擎和编码
    
    create table 'address' (
        'id' int, PRIMARY KEY autoincrement, # 主键,自动增长
        'name' varchar(20) UNIQUE not null,
        FOREIGN KEY (`name`) REFERENCES `users` (`username`) on delete cascade, # 创建关联user表的外键并且设置联级删除
    )ENGINE=InnoDB DEFAULT CHARSET=utf8; # 设置引擎和编码
    

    数据库备份及批量操作

    备份与恢复

    # 将数据导出
    mysqldump –u uesrname –p 数据库名 > mysql.sql;
    
    # 将数据导入新的数据库
    mysql -u username -p 数据库名 < mysql.sql
    

    脚本操作数据库

    # 将所有的相关mysql操作写入一个sql文件
    # 登陆数据库选择要执行的数据库
    source ***.sql
    

    基本的增删改查

    查:

    # 查询所有的列的列的所有的字段
    select * from 表名
    # 查询所有的列的部分字段
    select id,name from 表名
    # 查询部分列的部分字段
    select id,name from 表名 where id=8;
    

    增:

    # 标准插入多行
    insert into 表名 values(...),(...);
    # 插入部分列
    insert into 表名(id,name) values(...),(...);
    # 主键自动增长,但是需要占位,一般使用0;
    

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

    # 删除指定的列
    delete from 表名 where 条件 
    
  • 相关阅读:
    javascript之void0
    Sublime之OS X Command Line
    iOS之Monkey
    iOS之在成员函数中使用Block
    mac之javascriptcore
    国内成功码农的发展轨迹
    HTML之表格初步
    ClientSide JavaScript Timeline
    javascript正则表达式
    同源策略
  • 原文地址:https://www.cnblogs.com/cwp-bg/p/8320197.html
Copyright © 2011-2022 走看看