关系型数据库mysql 基础知识

关系型数据库
    SQL:
        mysql
        oracle
        db2
        sysbaes
        access
        vfor

非关系型数据库
    NoSQL
        memorycache
        redis
        mongodb
mysql:
    mysql是一个开源的关系型数据库
    
1.安装mysql
    软件分类
        服务端:mysql-server x86,x86_64
        客户端:mysql-client x86,x86_64

2.安装方式:
    rpm:
    源码
    二进制包
3.mysql下载地址
    http://dev.mysql.com/downloads/mysql/

4.系统原生的mysql
    rhel6及rhel6以下的版本都叫mysql
    rhel7里面mysql叫做mariadb
    安装原生mysql:
        yum install mysql mysql-server
        使用的是光盘镜像中的mysql
5.使用源码安装mysql
    准备cmake软件包
    准备mysql源码包
    准备一台虚拟机,添加一块20G的硬盘

    源码安装mysql需要cmake的支持
    所以需要先安装cmake

    还需要检测系统是否支持编译安装
    yum groupinstall “Development tools”
    
    还需要一些特殊依赖关系
    yum install openssl openssl-devel zlib zlib-devel ncurses-devel ncurses readline readline-devel
    
    安装之前还需要把硬盘做成lvm进行管理以方便后期进行磁盘扩容
    pvcreate /dev/sdb1
    vgcreate myvg /dev/sdb1
    lvcreate -L 10G -n mydata myvg
    mke2fs -j /dev/myvg/mydata
    mkdir /mydata
    vim /etc/fstab
    /dev/myvg/mydtata /mydata  ext4 defaults 0 0 

    准备用户:
        groupadd -r mysql
        useradd -r  -g mysql -s /sbin/nologin mysql
        mkdir /mydata/data保存mysql数据的目录
        chown mysql.mysql /mydata/data -R修改权限让mysql用户和mysql组对其拥有相应权限
       cd mysql-5.6.20
       cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mydata/data -DSYSCONFDIR=/etc  -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1  -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
        make
        make install
        cd /usr/local/mysql
        scripts/mysql_install_db –user=mysql –datadir=/mydata/data/
        vim /etc/profile.d/mysql.sh
        export PATH=$PATH:/usr/local/mysql/bin
        cp support-files/mysql.server /etc/init.d/mysqld56
        cp support-files/my-default.cnf /etc/my.cnf记住备份以下my.cnf
        需要对/etc/my.cnf进行配置添加
        [client]
        port        = 3306
        socket      = /tmp/mysql.sock
        [mysqld]
        port        = 3306
        socket      = /tmp/mysql.sock
        skip-external-locking
        key_buffer_size = 256M
        max_allowed_packe = 1M
        table_open_cache = 256
        sort_buffer_size = 1M
        read_buffer_size = 1M
        read_rnd_buffer_size = 4M
        myisam_sort_buffer_size = 64M
        thread_cache_size = 8
        query_cache_size = 16M
        thread_concurrency = 4
        datadir = /mydata/data

        sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

    /etc/ini.d/mysql56 restart
     为root用户设置密码
     mysqladmin -uroot password ‘new_pass’

    链接mysql服务器
    本机:
        mysql -uroot -p
        输入密码:
        推荐使用上面的方式
        mysql -uroot -p123456

    rpm:
        rpm -Uvh MySQL-shared-*
        rpm -Uvh MySQL-devel-5.6.21-1.el6.x86_64.rpm
        rpm -Uvh MySQL-client-5.6.21-1.el6.x86_64.rpm
        yum localinstall MySQL-server-5.6.21-1.el6.x86_64.rpm

    mysql基础操作指令
        1.mysqladmin -uroot password ‘new_pass’为root用户设置密码
        2.进入mysql交互式环境
        mysql>update user set Password=password(‘new_pass’) where User=’root’
        也是为root用户设置密码
        3.例外也可以使用mysql_secure_installation指令去初始化数据库并设置root密码

        4.链接mysql
            mysql指令
                mysql
                mysql -uusername -ppassword
                mysql -uusername -ppassword -h host
                另外对于设置了密码的又不想登录的时候输入密码可以在用户家目录下编写.my.cnf
                [client]
                user=root
                password=123456
                host=127.0.0.1
                mysql mysql -uusername -ppassword -h host -P port -D db_name
                
        5.mysql交互式基本指令
            ;mysql交互式默认的语句结束符,
            如果没有结束会出现‘->’这个符号来告知你语句没有结束
            show databases;查看有那些数据库存在
            use db_name;选择使用那个数据库
            show tables;查看db_name下的表有那些
            ?,\?,help:查看帮助信息
            \q,quit推出mysql交换环境
            \c;提前结束语句,如果前面有分号的将提前结束失败
            \d,设置语句结束符
            \G,显示方式设置
            \.,source 执行sql脚本
            \s,查看mysql系统相关信息

            存储引擎:
                非事务:
                    MyISAM
                    对于读性能有要求,中小型企业使用
                事务:
                    innodb
                    默认所有表共享一个表空间
                    innodb_file_per_table| ON 最好把新建一个表就分配一个表空间的功能打开
                    事务提交:
                        commit
                    事务回滚:
                        rollback
                具体选择需要根据业务情况决定
                存储引擎是针对于表来说的

                mysql> show variables like ‘%eng%’;查看系统默认存储引擎
                mysql> show variables like ‘%innodb%’;查看innodb参数
                mysql> show table status like ‘user’\G;查看表的属性
                mysql> desc user;查看表结构
                mysql> set global innodb_file_per_table=1 设置变量的开启或关闭情况

                DBA:
                    开发DBA:
                        数据库设计,sql语句,存储过程,触发器
                    管理DBA:
                        安装,升级,备份,恢复,用户管理,权限管理,监控,性能分析,基准测试

                    数据类型:
                        数值型:
                            int
                            decimal
                            float,double,real
                        字符型:
                            char
                            varchar
                            text
                            blob
                        时间类型:
                            date
                            time
                            datetime
                    字符集:
                            utf8国际标准,对于有国外信息的存储的时候可以使用
                            gbk中国标准

                            mysql> show character set;查看mysql支持的字符集和排序规则
                            mysql> show collation;查看排序规则

                    查看当前选择了什么数据库
                        mysql> select database();
                        +————+
                        | database() |
                        +————+
                        | uplooking  |
                        +————+
                        1 row in set (0.00 sec)
                    查看最后一条insert语句的id
                    mysql> select last_insert_id();
                    +——————+
                    | last_insert_id() |
                    +——————+
                    |                0 |
                    +——————+
                    1 row in set (0.00 sec)

                SQL:
                    DML:数据修改语句
                        update
                        insert
                        delete
                        select
                    DDL:数据定义语句
                        create:
                            创建数据库
                            CREATE DATABASE db_name;
                            CREATE DATABASE db_name CHARACTER SET [=] charset_name COLLATE [=] collation_name; 
                            创建表
                            CREATE TABLE up01(id int not null  primary key,name varchar(20));创建表并自定义表的字段(结构)
                            CREATE TABLE up02 select * from up01;创建表,并把up01的数据也一并复制到新表当中,但是表的属性复制可能会有遗漏
                            CREATE TABLE up03 like up01;创建新表,并把up01的表的属性也一并复制过来,但是数据不会进行复制
                            engine = Myisam|innodb 创建表的时候可以选择存储引擎
                            auto_increment创建字段的时候可以使用自动增长规则(字段必须primary key(非空唯一字段))
                            SHOW CREATE DATABASESHOW db_name打印创建数据库的指令
                            SHOW CREATE TABLE table_name 打印创建表的指令
                        alter:修改表属性
                            alter database db_name character set gbk collate gbk_chinese_ci;修改数据库的字符集和排序规则
                            alter table up06 add(age int);给表添加一个字段
                            alter table up06 change age age2 varchar(20);修改表字段的名字和属性
                            alter table up06 modify age int(16);修改表字段的属性
                            alter table up06 drop age;删除表的字段
                            alter table up06 rename up111;给表重命名
                        drop:删除
                            drop database db_name删除数据库
                            drop table table_name删除表

    原文作者:数据库基础
    原文地址: https://my.oschina.net/wangzilong/blog/783437
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞