• 数据库Mysql的安装及操作---数据引擎


    一、1、什么是数据

                    描述事物的符号记录称为数据。 

          2、什么是数据库

                     存放数据的仓库,只不过这个仓库在计算机上存储设备上。

    二、Mysql的介绍

           Mysql 就是一个socket的服务端

    三、客户端软件
       mysql自带
       python模块

    四、Mysql 的下载安装

    1、Linux版本

    #二进制rpm包安装
    yum -y install mysql-server mysql
    1.解压tar包
    cd /software
    tar -xzvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz
    mv mysql-5.6.21-linux-glibc2.5-x86_64 mysql-5.6.21
    
    2.添加用户与组
    groupadd mysql
    useradd -r -g mysql mysql
    chown -R mysql:mysql mysql-5.6.21
    
    3.安装数据库
    su mysql
    cd mysql-5.6.21/scripts
    ./mysql_install_db --user=mysql --basedir=/software/mysql-5.6.21 --datadir=/software/mysql-5.6.21/data
    
    4.配置文件
    cd /software/mysql-5.6.21/support-files
    cp my-default.cnf /etc/my.cnf
    cp mysql.server /etc/init.d/mysql
    vim /etc/init.d/mysql   #若mysql的安装目录是/usr/local/mysql,则可省略此步
    修改文件中的两个变更值
    basedir=/software/mysql-5.6.21
    datadir=/software/mysql-5.6.21/data
    
    5.配置环境变量
    vim /etc/profile
    export MYSQL_HOME="/software/mysql-5.6.21"
    export PATH="$PATH:$MYSQL_HOME/bin"
    source /etc/profile
    
    6.添加自启动服务
    chkconfig --add mysql
    chkconfig mysql on
    
    7.启动mysql
    service mysql start
    
    8.登录mysql及改密码与配置远程访问
    mysqladmin -u root password 'your_password'     #修改root用户密码
    mysql -u root -p     #登录mysql,需要输入密码
    mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;     #允许root用户远程访问
    mysql>FLUSH PRIVILEGES;     #刷新权限
    源码安装Mysql
    1. 解压
    tar zxvf  mariadb-5.5.31-linux-x86_64.tar.gz   
    mv mariadb-5.5.31-linux-x86_64 /usr/local/mysql //必需这样,很多脚本或可执行程序都会直接访问这个目录
    
    2. 权限
    groupadd mysql             //增加 mysql 属组 
    useradd -g mysql mysql     //增加 mysql 用户 并归于mysql 属组 
    chown mysql:mysql -Rf  /usr/local/mysql    // 设置 mysql 目录的用户及用户组归属。 
    chmod +x -Rf /usr/local/mysql    //赐予可执行权限 
    
    3. 拷贝配置文件
    cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf     //复制默认mysql配置 文件到/etc目录 
    
    4. 初始化
    /usr/local/mysql/scripts/mysql_install_db --user=mysql          //初始化数据库 
    cp  /usr/local/mysql/support-files/mysql.server    /etc/init.d/mysql    //复制mysql服务程序 到系统目录 
    chkconfig  mysql on     //添加mysql 至系统服务并设置为开机启动 
    service  mysql  start  //启动mysql
    
    5. 环境变量配置
    vim /etc/profile   //编辑profile,将mysql的可执行路径加入系统PATH
    export PATH=/usr/local/mysql/bin:$PATH 
    source /etc/profile  //使PATH生效。
    
    6. 账号密码
    mysqladmin -u root password 'yourpassword' //设定root账号及密码
    mysql -u root -p  //使用root用户登录mysql
    use mysql  //切换至mysql数据库。
    select user,host,password from user; //查看系统权限
    drop user ''@'localhost'; //删除不安全的账户
    drop user root@'::1';
    drop user root@127.0.0.1;
    select user,host,password from user; //再次查看系统权限,确保不安全的账户均被删除。
    flush privileges;  //刷新权限
    
    7. 一些必要的初始配置
    1)修改字符集为UTF8
    vi /etc/my.cnf
    在[client]下面添加 default-character-set = utf8
    在[mysqld]下面添加 character_set_server = utf8
    2)增加错误日志
    vi /etc/my.cnf
    在[mysqld]下面添加:
    log-error = /usr/local/mysql/log/error.log
    general-log-file = /usr/local/mysql/log/mysql.log
    3) 设置为不区分大小写,linux下默认会区分大小写。
    vi /etc/my.cnf
    在[mysqld]下面添加:
    lower_case_table_name=1
    
    修改完重启:#service  mysql  restart
    源码安装mariadb

    2、window版本

    1.下载

      MySQL Community Server 5.7.16   ----   版本

      http://dev.mysql.com/downloads/mysql/  ----  下载地址
    2、解压
         如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:C:mysql-5.7.16-winx64
    3、初始化
      cd c:mysql-5.7.16-winx64bin   ----  存放mysql的地方
     
         mysqld --inisialize-insecure
    下图:

    4、启动

          mysqld

    如图:

    5、启动MySQL客户端并连接MySQL服务

         由于初始化时使用的【mysqld --initialize-insecure】命令,其默认未给root账户设置密码

    看到下面这个界面就安装成功

     查看是否mysql启动 :

        tasklist |findstr mysql   

    注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:

    1 # 启动MySQL服务
    2 net start mysql
    3  
    4 # 关闭MySQL服务
    5 net stop mysql

    在windows下,为mysql服务指定配置文件

    复制代码
    #在mysql的解压目录下,新建my.ini,然后配置
    [mysqld]
    ;skip-grant-tables
    port=3306
    character_set_server=utf8
    #解压的目录
    basedir=E:mysql-5.7.19-winx64
    #data目录
    datadir=E:my_data #在mysqld --initialize时,就会将初始数据存入此处指定的目录,在初始化之后,启动mysql时,就会去这个目录里找数据
    
    [client]
    port=3306
    default-character-set=utf8

    mysqld --inisialize-insecure                                                         初始化以没有密码的形式进入

    mysqld                                                                                           启动mysqld

    tasklist |findstr mysql                                                                   查看是否mysql启动

    mysql -uroot -p                                                                             链接

    quit                                                                                                 退出

    tskill mysqld                                                                                   干掉mysql

    mysqld --install                                                                              在winds 中安装mysqld

    mysqladmin -uroot password 123                                                设置密码

    mysqld --skip-grant-tables                                                            跳过受限直接启动mysqld

    update mysql.user set authentication_string=
    password(456) where user='root'and host='localhost';(5.7版本)    修改密码成功

    update mysql.user set password=password(5.6版本)

    flush privileges;                                                                                刷新权限

    五、(1)数据库操作及引擎

    create database db1;                                                    增加db1文件夹

    show databases ;                                                          查看所有数据库

    show create database db1;                                          查看db1文件夹

    drop database db1;                                                      删除db1文件夹

    alter database db1 charset utf8                                  修改db1编码

    use db2                                                                         切换文件夹

    select database()                                                         查看当前在那个文件夹下 

    create table t1(id int,name char);                              创建表

    show create table t1;                                                  查看表

    show tables;                                                                查看当前文件下的所有表

    drop table t1;                                                              删除表

    insert into t1(id) values(1)                                         插数据的方式

    select * from t1;                                                          查看插入数据的内容

    mysqld --inisialize-insecure                                  初始化以没有密码的形式进入
    
    mysqld                                                        启动mysqld
    
    tasklist |findstr mysqld                                       查看是否mysql启动 
     
    mysql -uroot -p                                               链接
    
    quit                                                          退出
    
    tskill mysql                                                  干掉mysql
    
    mysqld --install                                              在winds 中安装mysqld
    
    mysqladmin -uroot password 123                                设置密码
                                              
    mysqld --skip-grant-tables                                    跳过受限直接启动mysqld
    
    update mysql.user set authentication_string=
    password(456) where user='root'and host='localhost';(5.7版本) 修改密码成功
    
    update mysql.user set password=password(5.6版本)
    
    flush privileges;                                             刷新权限
    
    select user();                                                查看当前用户
    
    create user 'mqj'@'localhost' identfied by '123';             创建本机账号
    
    create user 'egon'@'%' identfied by '123'                     创建远程账号
    
    create user 'wupeiqi'@'192.168.20.%' identified by '123'      创建远程网端账号
    
    mysql -h192.168.20.99 -ualex -p123                            远程链接
    
    
    数据库文件夹的的操作
    
    create database db1 charset utf8;                             增加db1文件夹
    
    show databases ;                                              查看所有数据库
    
    show create database db1;                                     查看db1文件夹
    
    drop database db1;                                            删除db1文件夹
    
    alter database db1 charset gbk;                               修改db1编码
    
    操作文件(表)
    切换到文件下:
    use db2                                                       切换文件夹
    
    c                                                            取消命令
    
    create table t1(id int,name char(10));                        创建表
    
    
    
    show  tables;                                                 查看当前文件下的所有表
    
    
    show create table t1;                                         查看表
    
    alter table t1 add age int;                                   增加字段
    
    alter table t1 modify name char(12);                          改表中的名字字符
     
    desc t1;                                                      查看表结构
    
    drop table t1;                                                 删除表
    
    操作文件的一行行内容(记录)
    
    insert into db1.t1 values(1,'egon1'),(2,'egon2'),(3,'egon3');   增加记录
    
    select * from t1;                                                查看所有字段对应的值
    
    select  * from t1 where id>2;                                   查看id大于2的字段
    
    select name from t1;                                             查看单个字段
    
    update t1 set name='SB' where id=3;                              改里面的记录
    
    delete from t1 where id=3;                                       删除一条记录
    
    对于清空表的记录有两种方式,但是推荐使用后者
    delete from t1;
    truncate t1; #当数据量大的时候下,删除速度快                     整体删除
    
    
    自增id
    create table t2(id int primary key,name char(10)); 
    create table t3(id int not null unique,name char(10)); 
    create table t2(id int primary key auto_increment,name char(10)); 
    
    
    补充
    create table t6 select * from t5;                                  拷贝表
    
    
    create table t7 select * from t5 where 1=2;                        拷贝表结构
    
    alter tablet7 modify id int primary key auto_increment              改表结构
    
    delete t7 set name='' ;                                             删除记录 
    
    
    
    
    
    select database()                                             查看当前在那个文件夹下
    
    insert into t1(id) values(1)                                   插数据的方式
    
    select * from t1;                                              查看插入数据的内容
      
    select * from t1;
    
    
    数据类型
    1、数字(默认都是有符号,宽度指的是显示宽度,与存储无关)
    (1)tinyint [unsigned][zerofill]  (1个字节存)
            有符号:
                -128~~127
            无符号:
                0~~2552) int [unsigned][zerofill]      (4个字节存)
             有符号:
                 -2147483648~~2147482647
             无符号: 
                 0~~42949672953)bigint[unsigned][zerofill]   (8个字节存)
              有符号:
                 -9223372036854775808~~9223372036854775808
               无符号:
                 0~~494967295
    2、字符(宽度指的是字符个数 与存储有关):
         char   :定长(简单粗暴,不够则凑够固定长度存放起来,浪费空间,存取速度快)
         varchar: 变长(精准,计算除待存放的数据长度,节省空间,存取速度慢)
    3、日期
    #注册时间
         datatime 2017-09-06 10:39:46
    #出生年月日 ,开学时间
         data:2017-09-06
    #聊天记录,上课时间
         time:10:39:46
    #出生年
         year:2017
    4、枚举与集合
    enum枚举:规定一个范围,可有多个值,但是为该字段船只是,只能去规定范围中的一个
    set集合:规定一个范围,可有多个值,但是为该字段船只是,只能去规定范围中的一个或多个
    
    
    
    
    1:
    整型测试
    create table t1(id tinyint); 
    create table t2(id int); 
    create table t3(id bigint) ;
    
    #测试
    create table t4(salary float(5,2));
    
    insert into t4 values(3.735);
    insert into t4 values(3.735684);
    
    
    
    2、char 与 varcahr测试
    create table t6(name char(4));
    insert into t6 values('alex')
    insert into t6 values('欧德博爱');
    insert into t6 values('艾利克斯');
    
    
    
    
    
    create table t7(x char(5),y varchar(5));
    insert into t7 values('addd','dsds') #char_length:查看字符长度
     insert into t7 values('你好啊''好你妹')#char_length:查看字符长度
    
    了解
     insert into t7 values('你好啊''好你妹')#length:查看字节长度
     select char_length(x),char_length(y) from t7;
    
    
    
    注意两点:
    insert into t7 values('abc','abc');#length:查看字节长度
    select * from t7 where y='abc    '; #去掉末尾的空格然后去比较
    
    3、日期
    create table student(
    id int ,
    name char(5),
    born_date date,
    born_year year,
    reg_time datetime,
    class_time time
    );
    insert into student values(1,'alex',now(),now(),now(),now());
    insert into student values(1,'alex','2017-09-06','2017','2017-09-06 10:09:36','09:06:36');
     
    
    4、枚举与集合
    create table student1(
    id int  primary key auto_increment,
    name char(5),
    sex enum('male','female'),
    hobbies set('music','read','coding')
    );
    
    insert into student1(name,sex,hobbies) values('egon','male','music,read,coding');
    
    
    
    1 简单查询
    select * from employee;
    select name,salary from employee;
    
    2 where条件
    select name,salary from employee where salary > 10000;
    select name,salary from employee where salary > 10000 and salary < 20000;
    select name,salary from employee where salary between 10000 and 20000;
    select name,salary from employee where salary not between 10000 and 20000;
    
    select name,salary from employee where salary = 10000 or salary = 20000 or salary = 30000;
    select name,salary from employee where salary in (10000,20000,30000);
    
    
    select * from employee where salary = 10000 or age = 18 or sex='male';
    
    select * from employee where post_comment is Null;
    select * from employee where post_comment = Null;
    select * from employee where post_comment is not Null;
    
    select * from employee where name like '%n%';
    
    select * from employee where name like 'e__n';
    
    3 group by分组
    mysql> select depart_id,group_concat(name)  from employee group by depart_id;
    +-----------+--------------------------------------------------------------+
    | depart_id | group_concat(name)                                           |
    +-----------+--------------------------------------------------------------+
    |         1 | egon,alex,wupeiqi,yuanhao,liwenzhou,jingliyang,jinxin,成龙   |
    |         2 | 歪歪,丫丫,丁丁,星星,格格                                     |
    |         3 | 张野,程咬金,程咬银,程咬铜,程咬铁                             |
    +-----------+--------------------------------------------------------------+
    3 rows in set (0.00 sec)
    
    mysql> select depart_id,count(id)  from employee group by depart_id;
    +-----------+-----------+
    | depart_id | count(id) |
    +-----------+-----------+
    |         1 |         8 |
    |         2 |         5 |
    |         3 |         5 |
    +-----------+-----------+
    3 rows in set (0.01 sec)
    
    mysql> select depart_id,group_concat(id)  from employee group by depart_id;
    +-----------+------------------+
    | depart_id | group_concat(id) |
    +-----------+------------------+
    |         1 | 1,2,3,4,5,6,7,8  |
    |         2 | 9,10,11,12,13    |
    |         3 | 14,15,16,17,18   |
    +-----------+------------------+
    3 rows in set (0.00 sec)
    
    mysql> select depart_id,count(id)  from employee group by depart_id;
    +-----------+-----------+
    | depart_id | count(id) |
    +-----------+-----------+
    |         1 |         8 |
    |         2 |         5 |
    |         3 |         5 |
    +-----------+-----------+
    3 rows in set (0.00 sec)
    
    mysql> select depart_id,max(salary) from employee group by depart_id;
    +-----------+-------------+
    | depart_id | max(salary) |
    +-----------+-------------+
    |         1 |  1000000.31 |
    |         2 |     4000.33 |
    |         3 |    20000.00 |
    +-----------+-------------+
    3 rows in set (0.00 sec)
    
    mysql> select depart_id,min(salary) from employee group by depart_id;
    +-----------+-------------+
    | depart_id | min(salary) |
    +-----------+-------------+
    |         1 |     2100.00 |
    |         2 |     1000.37 |
    |         3 |    10000.13 |
    +-----------+-------------+
    3 rows in set (0.00 sec)
    
    mysql> select depart_id,sum(salary) from employee group by depart_id;
    +-----------+-------------+
    | depart_id | sum(salary) |
    +-----------+-------------+
    |         1 |  1070200.64 |
    |         2 |    13001.47 |
    |         3 |    84000.13 |
    +-----------+-------------+
    3 rows in set (0.00 sec)
    
    mysql> select depart_id,avg(salary) from employee group by depart_id;
    +-----------+---------------+
    | depart_id | avg(salary)   |
    +-----------+---------------+
    |         1 | 133775.080000 |
    |         2 |   2600.294000 |
    |         3 |  16800.026000 |
    +-----------+---------------+
    3 rows in set (0.00 sec)

     (2)创建四个表,分别使用innodb,myisam,memory,

              blackhole存储引擎,进行插入数据测试

    MariaDB [db1]> create table t1(id int)engine=innodb;
    MariaDB [db1]> create table t2(id int)engine=myisam;
    MariaDB [db1]> create table t3(id int)engine=memory;
    MariaDB [db1]> create table t4(id int)engine=blackhole;
    MariaDB [db1]> quit
    [root@egon db1]# ls /var/lib/mysql/db1/ #发现后两种存储引擎只有表结构,无数据
    db.opt  t1.frm  t1.ibd  t2.MYD  t2.MYI  t2.frm  t3.frm  t4.frm
    
    #memory,在重启mysql或者重启机器后,表内数据清空
    #blackhole,往表内插入任何数据,都相当于丢入黑洞,表内永远不存记录
     
  • 相关阅读:
    更改滚动条样式
    进度条代码
    css实现线条样式(中间高亮,两边透明)
    实现瀑布流布局 https://blog.csdn.net/csdn_zsdf/article/details/69367182
    css实现等高布局
    select多选框默认第一个是---请选择---
    后台返回的数据换行显示
    js实现文字无间断上下滚动
    用swiper实现类似淘抢购的滑动tab效果
    解决iframe高度自适应的问题
  • 原文地址:https://www.cnblogs.com/mengqingjian/p/7475127.html
Copyright © 2020-2023  润新知