zoukankan      html  css  js  c++  java
  • 数据库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,往表内插入任何数据,都相当于丢入黑洞,表内永远不存记录
     
  • 相关阅读:
    51 Nod 1068 Bash游戏v3
    51 Nod Bash 游戏v2
    51 Nod 1073 约瑟夫环
    UVA 12063 Zeros and ones 一道需要好好体会的好题
    51 Nod 1161 Partial sums
    2018中国大学生程序设计竞赛
    UVA 11971 Polygon
    UVA 10900 So do you want to be a 2^n-aire?
    UVA 11346 Possibility
    python with as 的用法
  • 原文地址:https://www.cnblogs.com/mengqingjian/p/7475127.html
Copyright © 2011-2022 走看看