zoukankan      html  css  js  c++  java
  • mysql1_增删改查操作

    # ### mysql
    ctrl + l 清屏 linux里可以用
    ctrl + c 终止
    shift+ins 粘贴
    ctrl+ins 复制

    Navicat中 F5 刷新数据库

    [linux] 终端
    service mysql start 启动mysql
    service mysql stop 停止mysql
    service mysql restart 重启mysql

    [windows] 在超级管理员权限下才能使用 wind+r -> cmd
    net start mysql 启动mysql
    net stop mysql 停止mysql

    # ### part1
    mysql -u用户名 -p密码 -hip地址
    #登录mysql,如果是用root中户登录本地mysql,可以不加-hip 直接 mysql -uroot -p

    # (1) 登录到本地mysql 默认root 是最高权限账户
    mysql -uroot -p123456 #这种直接加上密码的写法也可以
    localhost => 127.0.0.1 本地IP地址
    # (2) 退出mysql
    exit 或者 q 退出
    # (3) root账户远程连接linux中的mysql 服务器
    mysql -uroot -p -h192.168.40.128

    # ### part2
    # 查询当前登录用户是谁
    select user()
    # 设置密码
    set password = password("123456");
    # 去除密码
    set password = password("");

    # ### part3
    # mysql 创建新用户
    create user "ceshi01"@"192.168.111.222" identified by "111"; # 给具体某个ip设置账户(一般是公网ip)
    create user "ceshi02"@"192.168.111.%" identified by "222"; # 给具体某个网段下的所有ip设置一个账户
    create user "ceshi03"@"%"; # 所有ip都能登录,不需要密码

    # 通过windows链接linux的mysql:
    # 1 在虚拟机->设置->硬件->网络适配器->查看是不是NAT模式(N),是NAT模式的ip创建用户才可使用
    # 2 这个ip在windows用ipconfig查看,找到VMnet8下的ip为 192.168.40.1
    # 3 在linux的mysql中创建用户 create user"test02"@"192.168.40.1" identified by "111"
    # 最后一个"111"代表test02用户的登录密码
    # 另外:VMnet1 中的ip 是仅主机模式的ip(这里我们不用)

    # 然后用windows连接linux中的数据库并用test02用户登录时,用 mysql -utest02 -p -h192.168.40.128
    # 注意这个登录ip是linux中利用ifconfig查看到的ip
    create user"test02"@"192.168.40.1" identified by "111" #在root账户中创建用户
    mysql -utest02 -p -h192.168.40.128 # 在windows里用test02登录

    # 查看用户权限(用root账户查看,别的账户可能没权限)
    show grants for "test02"@"192.168.40.1"
    # GRANT USAGE ON *.* TO 'test02'@'192.168.40.1' 可以看到USAGE没有任何权限

    """
    # 权限:
    select 查询数据库的权限
    insert 插入数据库的权限
    update 更新数据库的权限
    delete 删除数据库的权限
    * 代表所有
    G 代表垂直分布查看
    """
    # 给test02账户授予查询权限, .左边是所有库, .右边是所有表,即所有库所有表
    """授予权限之后刷新一下权限,然后test02用户退出重登一下"""
    grant select on *.* to "test02"@"192.168.40.1" identified by "111"
    # all代表所有权限
    grant all on *.* to "test02"@"192.168.40.1" identified by "111"
    # 查看所有数据库
    show databases
    # 删除账户
    drop user "test01"@"192.168.40.1"
    # 刷新权限
    flush privileges

    # ### part4
    """
    在linux里搜索新建的数据库db1在哪儿
    sudo find / -name db1
    先切换到root用户中 sudo su root,因为chenjiaqi用户权限不够,所以切到root用户进入mysql
    cd /var/lib/mysql
    能看到对应的数据库
    """
    # (1) 操作[数据库] (文件夹)

    # 创建数据库
    create database db1 charset utf8 #这里db1是库名,charset指定数据库所用的编码集

    # 查看数据库列表
    show databases
    # 查看数据库的建库语句
    show create database db1
    #看到了创建库的语句 CREATE DATABASE `db1` 即可以用相同的语句创建数据库db2
    # ` 这个符号是~这个键

    # alter 更改数据库的字符集
    alter database db1 charset gbk

    # 删除数据库db1
    drop database db1;


    # (2) 操作[表结构] (文件)
    # 一般在表结构下操作需要带table并且写表名;在记录下操作不用带table,只用写表名
    """进入数据库 use 库名;"""
    """mysql里面str字符串型用char表示"""


    # int 整型 char字符
    # 表名(字段名1 类型1,字段名2 类型2...)
    create table t1(id int , name char) #这里t1是表名

    # 从建表语句中可以看到CREATE TABLE `t1`可创建类似的t2表

    # 查询所有数据表
    show tables
    # 查看建表语句
    show create table t1;
    # 查看表结构
    desc t1 #describe描述 -> 查看表结构
    """
    CREATE TABLE `t2` (
    `id` int(11) DEFAULT NULL,
    `name` char(1) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    """

    # modify 只能改变数据类型和是否可以为null 即null(yes/no)
    alter table t1 modify name char(5)
    # change 连带字段名和数据类型一起改变
    alter table t1 change name NAME char(4)
    alter table t1 change NAME name char(5)
    # add 添加字段
    alter table t1 add age int;
    # drop 删除字段 column 列
    alter table t1 drop column age;
    # rename 更改表名
    alter table t1 rename t1_1;


    # 删除表t1_1
    drop table t1_1


    # (3) 操作记录 (文件内容 也就是表内容)
    """mysql null 相当于 python None"""
    增:
    # 一次插入一条数据
    insert into t1(id,name) values(1,"xboy1")
    # 一次插入多条数据
    insert into t1(id,name) values(2,"xboy2"),(3,"xboy3"),(4,"xboy4")
    # 不指定具体字段,默认把所有字段值插入一遍
    insert into t1 values(5,"xboy5")
    # 可以具体指定某个字段进行插入
    insert into t1(name) values("xboy6")

    查:
    # * 代表所有
    select * from t1;
    select id,name from t1;

    改:
    # update 表名 set 字段=值 where 条件
    update t1 set name = "王文" where id = 1
    # 如果不加条件,所有数据都改了
    update t1 set name = "王文"

    删: """好像除了删除记录用delete其他都用drop"""
    # 删除id为1的这条数据
    delete from t1 where id = 2
    delete from t1
    # 重置数据表 (包括重置id)
    truncate table t1;


    # ### part5 mysql常用数据类型

    # 整型
    tinyint 1个字节(8位,0000 0000-1111 1111即0-255) 有符号(符号位占一位)(-128到127)
    无符号(unsigned) (0到255) 小整型值
    int 4个字节,有符号(-21亿 ~ 21亿 左右 ),无符号(0 ~ 42亿 左右),大整型值,精度范围更广
    # 超过设定值存入没事,超过大小存入直接报错
    create table t1(id int , sex tinyint);
    insert into t1 values(2200000000,128);
    insert into t1 values(2100000000,127);

    # 浮点型
    float(255位,30位) 单精度(长度最长255位,小数部分最长30位 -> 整数部分最长225位)
    double(255位,30位) 双精度(长度最长255位,小数部分最长30位)
    decimal(65位,30位) 金钱类型,使用字符串的形式保存小数(和上面一样)

    create table t2( f1 float(5,2) , f2 double(5,2) , f3 decimal(5,2) );
    """其中float(5,2)代表总长度最长5位,小数部分最长2位"""
    insert into t2 values(1.55555555,1.55555555,1.55555555) # 长度超过设定值,四舍五入存入

    """float,double和decimal不加括号,分别默认保留5位小数,16位小数,整数部分,存在四舍五入"""
    create table t3( f1 float , f2 double , f3 decimal )
    insert into t3 values(1.8288888888888888888888888888888888,1.8288888888888888888888888888888888,1.8288888888888888888888888888888888)

    create table t3_3(f1 float(5,2));
    """首先定义了float(5,2),如果插入的值的整数部分就超过了3位(5-2),会报错,小数部分超过2位,四舍五入"""
    insert into t3_3 values(12.5678); # 12.57

    # 字符串 char(255) varchar(21845) -> 最大长度255位,最大长度21845位
    char(11) 定长: 固定开辟11个长度的空间(手机号,身份证),速度比较快
    varchar(11) 变长: 最大开启字符长度为11的空间(文章评论,0~255字符,短信), 相比较于char类型,速度稍慢,但节省内存空间
    text 文本类型,针对于 文章,论文,小说
    create table t4( c char(11) ,v varchar(11) , t text );
    insert into t4 values("1111","地方","sldfjsdkfjlskdfjksdfksdjklfsjklf");
    select concat(c,":",v,":",t) from t4; #效果如下
    +----------------------------------------------+
    | concat(c,":",v,":",t) |
    +----------------------------------------------+
    | 1111:地方:sldfjsdkfjlskdfjksdfksdjklfsjklf |
    +----------------------------------------------+

    # 原本效果: select * from t4;
    +------+--------+----------------------------------+
    | c | v | t |
    +------+--------+----------------------------------+
    | 1111 | 地方 | sldfjsdkfjlskdfjksdfksdjklfsjklf |
    +------+--------+----------------------------------+


    # mysql
    # ### concat 拼接 concat(参数1,参数2,参数3 ... ) 把所有参数按需求拼接在一起

    # 枚举 和 集合
    enum 枚举: 从一组数据中选一个(性别)
    set 集合: 从一组数据中选多个(自动去重)

    create table t5(
    id int,name char(10),
    money float(6,2),
    sex enum("man","woman"),
    hobby set("eat","drink","piao","du","chou")
    )

    # 正常写法
    insert into t5(id,name,money,sex,hobby) values(1,"zhangsan",9.9,"woman","piao,du,chou")
    # 自动去重
    insert into t5(id,name,money,sex,hobby) values(1,"zhangsan",9.9,"woman","chou,drink,drink,drink,drink,drink")


    # ### 配置linux 中 utf8编码集
    # (1) find / -name my.cnf
    # (2) 找到之后,发现是链接,打开mysql.cnf 找到其中真正引入的路径
    !includedir /etc/mysql/conf.d/ (客户端配置)
    !includedir /etc/mysql/mysql.conf.d/ (服务端配置)
    # (3) nano /etc/mysql/conf.d/mysql.cnf default-character-set=utf8 添加到文件中
    # nano /etc/mysql/mysql.conf.d/mysqld.cnf character-set-server=utf8添加到文件中

    # (4) 重启 service mysql restart

  • 相关阅读:
    JS实例
    第一章 机器学习基础
    事件与信号
    微信公众号开发实例
    php学记笔记之函数用途
    php漏洞修复 禁用函数
    删除MYSQL账号多于的空用户
    MySql 建表、添加字段、修改字段、添加索引SQL语句写法
    php对二维数据进行排序
    iis支持IPA和APK文件下载
  • 原文地址:https://www.cnblogs.com/banbosuiyue/p/11966833.html
Copyright © 2011-2022 走看看