zoukankan      html  css  js  c++  java
  • Section_1.Mysql基础

    一、MySQL客户端命令介绍

    1、mysql命令的作用

    1.1、用于连接数据库

    1.2、用于管理数据库

    • 通过命令接口自带命令
    • """
      1、h 或 help 或 ?
      2、G 可以把查询出来的表格式化
      3、T 或 tee 记录一下日志 tee /tmp/a.log sql语句执行后记录在a.log
      4、c 或 CTRL+c  当前sql输错了结束掉
      5、s 或 status  数据库的一些负载情况 版本等 线程状态信息
      6、. 或 source  用来导入一个sql脚本
      7、u 或use
      """
    • 接收用户SQL语句
      • DDL:数据定义语言
      • DCL:数据控制语言
      • DML:数据操作语言

    2、mysqladmin命令

    免交互的命令

    一般都是写sql脚本时会用到

    """
    “强制回应 (Ping)”服务器。
    关闭服务器。
    创建和删除数据库。
    显示服务器和版本信息。
    显示或重置服务器状态变量。
    设置口令。
    重新刷新授权表。
    刷新日志文件和高速缓存。
    启动和停止复制。
    显示客户机信息。
    """
    # mysqladmin -uroot -p1 ping # 看下数据库是否在启动
    # mysqladmin -uroot -p1 status
    # mysqladmin -uroot -p1 variables|grep server_id # 查看当前数据库的参数
    # mysqladmin -uroot -p1 password 1
    # mysqladmin -uroot -p1 shutdown

    二、SQL ( Structure query language ) 结构化查询语言

    # SQL语言分为4个部分:DDL(定义)、DML(操作)、DQL(查询)、DCL(控制)
    """
    1、DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
    
    2、DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
    
    3、DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE
    
    4、DQL语句 数据库操纵语言:查询数据SELECT
    
    """

    1、关系型与非关系型数据库

    """
    mysql数据库管理软件,记录事物一些数据特征:
    由库,表,记录组成.
    库相当于一个文件夹
    表相当于一个文件
    记录就是文件里面一条一条的内容
    表中的成员属性就是一个一个字段
    可以为每个项目建立一个数据库
    
    关系型数据库:表与表之间有联系
    比如:mysql,oracle,db2,sqlserver
    
    非关系型数据库: key-value 键值对形式 没有表的概念
    比如:redis,mongodb,memcache
    """

    2、SQL语句中的快捷键

    """
    G 格式化输出(文本式,竖立显示)
    
    s 查看服务器端信息
    
    c 结束命令输入操作
    
    q 退出当前sql命令行模式
    
    h 查看帮助
    """

    三、Linux与windows的Mysql服务启停

    # windows
    """
    net start mysql
    net stop mysql
    """
    # Linux
    """
    service mysql start
    service mysql stop
    
    service mysql restart
    """

    四、通过命令行连接MySQL

    1、连接数据库

    """
    登录mysql的完整语法
        mysql -u用户名 -p密码  -h地址ip
    """

    例:

    # (1) 登录mysql语法 默认root账户 是系统最高权限用户
    mysql -uroot -p 
    127.0.0.1 =>localhost 本地ip地址
    # (2) 退出mysql
    exit 或者 q
    # (3) 远程连接mysql服务器
    mysql -uroot -p -h192.168.65.135

    2、查看登录用户、设置密码

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

    3、为某个IP设置账号密码

    # 给具体某个ip设置账号密码,用来访问数据库(公网ip)
    create user 'ceshi100'@'192.168.65.1' identified by '333';
    # 给具体某个网段下的所有ip设置共同的账号密码,用来访问数据库(公网ip) %代表任意的ip 0~255
    create user 'ceshi101'@'192.168.65.%'  identified by '444';
    # 所有的ip都可以登录到服务器数据库中
    create user 'ceshi102'@'%' identified by '555';

    3.1、为某个用户增加权限

    3.1.1、查看权限

    show grants for 'ceshi102'@'%';
    # USAGE 没有任何权限
    """
    +--------------------------------------+
    | Grants for ceshi102@%                |
    +--------------------------------------+
    | GRANT USAGE ON *.* TO 'ceshi102'@'%' |
    +--------------------------------------+
    """

    3.1.2、增加权限

    grant 权限 on 数据库.表名 to '用户名'%'ip地址' identified by '密码'
    """
    # 主要权限
    select 查看数据表的权限
    insert 插入数据表的权限
    update 更新数据表的权限
    delete 删除数据表的权限
    drop   删除数据库的权限
    *      代表所有
    """

    例:

    grant select,drop on *.* to 'ceshi102'@'%' identified by "333"
    # all 代表所有权限
    grant all on *.* to 'ceshi102'@'%' identified by "333"
    # 移除权限
    # 单个
    revoke drop on  *.* from 'ceshi102'@'%'
    # 所有
    revoke all on  *.* from 'ceshi102'@'%'
    # 删除用户
    drop user 'ceshi102'@'%'
    
    # 刷新权限,立刻生效
    flush privileges

    五、操作数据库

    --
        -- 创建一个数据库, 如果存在s3会报错
        create database db0824 charset utf8;
        -- 不会报错 1个warring
        create database if not exists s3
        --  更改编码方式utf8
        create database if not exists s4 character set utf8
    --
        --  查看所有数据库
        show databases
        --  查看建立数据库的语句
        show create database db0824 #  CREATE DATABASE `db0824` /*!40100 DEFAULT CHARACTER SET utf8 */ 
    --
        alter database db0824_1 charset gbk
    
    --
        drop database db0824_1;

    六、操作数据表 (文件)

    # 先选择数据库
    # use 数据库名
    # 退回到上一层
    # use mysql
    --
        -- 字段名1 类型1 ,字段名2 类型2 , ... ... 
        create table t1(id int , name char);
    
    --
        -- 查看所有表 
        show tables;
        -- 查看建表语句 配合G 可以垂直显示
        show create table t1;
        """
        Create Table: CREATE TABLE `t1_1` (
          `id` int(11) DEFAULT NULL,
          `name` char(1) DEFAULT NULL
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8
        """
        
        -- 查看表结构
        desc t1
    
    --
        -- modify 只能改变数据类型
        alter table t1 modify name char(5)
        -- change  连字段名 + 类型一起改变
        alter table t1 change name newname char(4)
        -- add 添加字段
        alter table t1 add age int;
            -- 指定位置进行添加列
                --表中的首列添加一列
                alter table t1 add age int FIRST;
                --在age列后面添加一个telnum列
                alter table t1 add telnum int AFTER age;
                --在name列前面添加一个birthday列
                alter table t1 add birthday varchar(30) after id
        -- drop 删除字段 column列
        alter table t1 drop column age
        -- rename 更改表名
        alter table t1 rename t1_2
        
    --
        drop table t1_2;

    七、操作记录 (文件中的数据)

    --
        -- 一次插入一条数据
        -- insert into 表名(字段1,字段2,...) values(值1,值2, .... )
        insert into t1_1(id,name) values(1,"xboy1");
        -- 一次插入多条数据
        insert into t1_1(id,name) values(2,"xboy2"),(3,"xboy3"),(4,"xboy4");
        -- 不指定具体字段插入(默认把所有字段对应的值插一遍)
        insert into t1_1 values(5,'xboy5');
        -- 指定单个字段插入数据
        insert into t1_1(name) values('xboy6');    
    
    --
        --  * 代表所有
        select * from t1_1;
        -- 指定字段进行查询
        select id,name from t1_1;
        
    --
        -- update 表名 set 字段=值  where 条件
        update t1_1 set name="kxq" where id = 1
        -- 切记更改时,加上条件,否则全都改掉了
        update t1_1 set name="kxq" 
    
    --
        -- 指定id=2的这条数据删除
        delete from t1_1 where id = 1
        -- 如果不加条件,删除所有数据
        delete from t1_1 
        
        -- 重置数据表 (删除数据 + 重置id)
        truncate table t1_1;

    八、数据类型

    8.1、整形与浮点型

    8.1.1、整形

    -- tinyint 1个字节 有符号(-128 ~ 127) 无符号(unsigned) (0 ~ 255) 小整型值
    -- int     4个字节 有符号(-21亿 ~ 21亿 左右) 无符号(unsigned) (0 ~ 42亿) 大整型值
    
        create table t1(id int , age tinyint );
        insert into t1 values(2200000000,1) error
        insert into t1 values(2100000000,1) 
        insert into t1 values(2100000000,128)  error
        insert into t1 values(2100000000,127)

    8.1.2、浮点型

    float(255,30)    -- 单精度
    double(255,30)   -- 双精度
    decimal(65,30)  -- 金钱类型,使用字符串的形式保存小数
    
        -- 默认存在四舍五入
        create table t2(f1 float(5,2) , f2 double(5,2) , f3 decimal(5,2));
        insert into t2 values(1.77777777777777777777777777,1.77777777777777777777777777,1.77777777777777777777777777);
    
        --float 默认小数保留5位,double小数位截取16位,decimal(10,0) 默认保留整数,存在四舍五入
        create table t3(f1 float,f2 double ,f3 decimal); 
        insert into t3 values(1.77777777777777777777777777,1.77777777777777777777777777,1.77777777777777777777777777);
    
        create table t4(f1 float(5,2));
        insert into t4 values(12.34567889) # 12.35
        insert into t4 values(123.34567889) # 123.35
        insert into t4 values(1234.34567889) error 

    8.2、字符串

    char    -- 字符长度 255个
    varchar  -- 字符长度 21845个 (注意:总字节数不超过65535)
    
    char(11)      -- 定长 : 固定开辟11个字符长度的空间(手机号,身份证号,银行卡), 开辟空间速度上char速度更快
    varchar(11)   -- 变长 : 最多开辟11个字符长度的空间(评论,消息留言,地址), 开辟速度相较于char慢一点.
    text          -- 文本类型,存论文,小说,文章..
    
        create table t5(c char(11), v varchar(11) , t text);
        insert into t5 values('1111',"酸辣粉加上队列副经理开","sdfsdf234");
        insert into t5 values('1111',"酸辣粉加上队列副经理2开","sdfsdf234"); error
        -- concat 拼接任意长度的字符串
        select concat(c,":",v,":",t) from t5;

    8.3、时间类型

    -- date  YYYY-MM-DD 年月日 (结婚纪念日,节假日)
    -- time  HH:MM:SS   时分秒 (体育竞赛)
    -- year  YYYY       年份值 (历史,酒的年份)
    -- datetime YYYY-MM-DD HH:MM:SS 年月日 时分秒 (用户登录时间,下单时间)
    
        create table t1(d date , t time , y year , dt datetime);
        insert into t1 values("2020-08-25","08:25:30","2020","2020-08-25 08:25:30")
        insert into t1 values(now(),now(),now(),now())
        
    -- select now() 获取当前时间
    
    --timestamp YYYYMMDDHHMMSS(时间戳) 自动更新时间(不需要手动,系统自动更新时间) 
    --数据上一次的修改时间
        create table t2(dt datetime , ts timestamp);
        insert into t2 values(null,null);
        insert into t2 values(20200825082530,20200825082530);
        insert into t2 values(20200825082530,20380825082530); -- error 不能超过2038年的某一年
        

    九、 mysql中常用函数

    select user()
    select concat()
    select concat(参数1,参数2,参数3 , ... ) 把所有的参数拼接在一起

    十、枚举 和 集合

    -- enum 枚举 : 从列出来的数据当中选一个(性别)
    -- set  集合 : 从列出来的数据当中选多个(自动去重) 爱好
    create table t6(
    id int,
    name varchar(10),
    money float(6,3),
    sex enum("男性","女性","禽兽","人妖","雌雄同体","半兽人","阿凡达"),
    hobby set("吃肉","抽烟","喝酒","喝假酒")
    );
    
    
    -- 正常
    insert into t6(id , name ,money , sex , hobby) values(1,"克拉伊买买提",56.7891,"半兽人","喝假酒,抽烟");
    -- 自动去重
    insert into t6(id , name ,money , sex , hobby) values(1,"克拉伊买买提",56.7891,"半兽人","喝假酒,抽烟,抽烟,抽烟,抽烟");
  • 相关阅读:
    优秀个人博客
    redis 3.0 集群__监控警报工具(sentinel)
    redis 3.0 集群__hashTag
    shell__常用命令__sed
    shell__常用命令__grep
    shell__常用命令__awk
    shell 常用命令集合
    redis 3.0 集群__配置文件详解(常用配置)
    redis 3.0 集群__故障测评
    tcp 建立连接的三次握手,以及关闭连接的4次挥手
  • 原文地址:https://www.cnblogs.com/kongxiangqun/p/13580141.html
Copyright © 2011-2022 走看看