MySQL數據庫基礎(一)

什麼是數據庫?

數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,
每一個數據庫都有一個或多個不一樣的API用於建立,訪問,管理,搜索和複製所保存的數據。
咱們也能夠將數據存儲在文件中,可是在文件中讀寫數據速度相對較慢。
因此,如今咱們使用關係型數據庫管理系統(RDBMS)來存儲和管理的大數據量。所謂的關係型數據庫,是創建在關係模型基礎上的數據庫,藉助於集合代數等數學概念和方法來處理數據庫中的數據。
RDBMS即關係數據庫管理系統(Relational Database Management System)的特色:
1.數據以表格的形式出現
2.每行爲各類記錄名稱
3.每列爲記錄名稱所對應的數據域
4.許多的行和列組成一張表單
5.若干的表單組成databasemysql

關於MySQL數據庫

MySQL 是最流行的關係型數據庫管理系統,在WEB應用方面 MySQL 是最好的RDBMS(Relational Database Management System:關係數據庫管理系統)應用軟件之一。
MySQL 是一個關係型數據庫管理系統,由瑞典 MySQL AB 公司開發,目前屬於 Oracle 公司。MySQL 是一種關聯數據庫管理系統,關聯數據庫將數據保存在不一樣的表中,而不是將全部數據放在一個大倉庫內,這樣就增長了速度並提升了靈活性。linux

MySQL 是開源的,因此你不須要支付額外的費用。。
MySQL 使用標準的SQL數據語言形式。
MySQL 能夠運行於多個系統上,而且支持多種語言。這些編程語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
MySQL 對PHP有很好的支持,PHP是目前最流行的Web開發語言。
MySQL 支持大型數據庫,支持5000萬條記錄的數據倉庫,32位系統表文件最大可支持4GB,64位系統支持最大的表文件爲8TB。
如今的MariaDb和MySQL是同一我的寫的。二者語法並無太多的出入。sql

MySQL的安裝

方法一:yum直接安裝數據庫

[root@centos6 ~]# yum install mysql mysql-server -y

方法二:編譯安裝編程

  • 從downloads.mariadb.org下載所需版本的mariadb的二進制包 mariadb-10.3.9-linux-x86_64.tar.gz
  • 建立所需用戶及組
    [root@centos6 ~]# groupadd -g 36 -r mysql
    [root@centos6 ~]# useradd -u 36 -r -g mysql -m -d /app/dbdata -s /sbin/nologin mysql
  • 準備dbdata 建議作到lvm上(方便後期數據庫的移植)選做
    [root@centos6(nanyibo) ~]# pvcreate /dev/sda6
    [root@centos6(nanyibo) ~]# vgcreate vgmysql /dev/sda6
    [root@centos6(nanyibo) ~]# lvcreate -l +100%FREE -n lvmysql vgmysql
    [root@centos6(nanyibo) ~]# mkfs.ext4 /dev/vgmysql/lvmysql
    [root@centos6(nanyibo) ~]# vim /etc/fstab 
    /dev/vgmysql/lvmysql    /app/dbdata             ext4    defaults        0 0
    [root@centos6(nanyibo) ~]# mount -a
    [root@centos6(nanyibo) ~]# chown mysql.mysql /app/dbdata
    [root@centos6(nanyibo) ~]# chmod 700 /app/dbdata
  • 解壓二進制目錄,作一個連接文件(選做)
    [root@centos6 ~]# tar -xvf mariadb-10.2.14-linux-x86_64.tar.gz -C /usr/local/
    [root@centos6 ~]# cd /usr/local/
    [root@centos6 local]# ln -sv mariadb-10.2.14-linux-x86_64 mysql
  • 建立配置文件
    [root@centos6 mysql]# vim /etc/mysql/my.cnf
    [mysqld] 
    datadir         = /app/dbdata  #
    innodb_file_per_table   = on  #每個數據和表都會生成一個文件
    skip_name_resolve = on   #這個參數是禁止域名解析,默認off
  • 建立數據庫
    [root@centos6 mysql]# scripts/mysql_install_db --datadir=/app/dbdata --user=mysql
  • 配置啓動腳本
    [root@centos6 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
    [root@centos6 mysql]# chkconfig --add mysqld
    [root@centos6 mysql]# chkconfig mysqld on
    [root@centos6 mysql]# service mysqld restart
  • 配置環境變量PATH
    [root@centos6 ~]# vim /etc/profile.d/mage.sh
    export PATH=/usr/local/mysql/bin:$PATH
    [root@centos6 ~]# source /etc/profile.d/mage.sh
  • 初始化mysql,設置密碼
    [root@centos6 ~]# mysql_secure_installation

MySQL庫操做

  1. 建立數據庫
    CREATE DATABASE 數據庫名;#不區分大小寫
    create database test;
  2. 刪除數據庫
    drop database <數據庫名>;
    drop database test;
  3. 選擇數據庫
    MariaDB [(none)]> use test;
    Database changed
  4. 查看數據庫vim

    MariaDB [none]> show databases;

    MySQL表操做

    1. 建立數據表centos

      create table table_name (column_name column_type);
      MariaDB [test]> create table student (id tinyint unsigned primary key, name varchar(20) not null, age tinyint unsigned,sex char(1) default "m" );
      Query OK, 0 rows affected (0.05 sec)
      MariaDB [test]> desc student;

      設置主鍵的方法:
      a. 直接設置數據結構

      CREATE TABLE student(
          sid INT PRIMARY KEY,
          sname VARCHAR(30)
          );

    b. constraint 約束app

    CREATE TABLE test(
    id INT,
     NAME  VARCHAR(20),
    CONSTRAINT pk_id PRIMARY KEY(id));

    c. 添加主鍵約束編程語言

    CREATE TABLE teacher(
    tid INT,
    tname VARCHAR(50)
    );
    ALTER TABLE teacher ADD CONSTRAINT pk_tid PRIMARY KEY(tid);

    d. 聯合主鍵 把兩列設置成一個主鍵

    CREATE TABLE book(
    bid INT,
    bname VARCHAR(100),
    author VARCHAR(30),
    CONSTRAINT pk_bid_bname PRIMARY KEY(bid,bname)
    );
    1. 刪除數據表
      drop table tablename;
      MariaDB [test]> drop table student;
    2. 插入數據
      INSERT INTO table_name ( field1, field2,...fieldN )
      VALUES
      ( value1, value2,...valueN );
      MariaDB [test]> insert into student values (1,'liumou','18768896428',22,default);
    3. 查詢數據
      SELECT column_name,column_name
      FROM table_name
      [WHERE Clause]
      [LIMIT N]
      MariaDB [test]> select name,age from student where sex='m' limit 5;
    4. WHERE 子句
      查詢語句中你可使用一個或者多個表,表之間使用逗號, 分割,並使用WHERE語句來設定查詢條件。
      你能夠在 WHERE 子句中指定任何條件。
      你可使用 AND 或者 OR 指定一個或多個條件。
      WHERE 子句也能夠運用於 SQL 的 DELETE 或者 UPDATE 命令。
      WHERE 子句相似於程序語言中的 if 條件,根據 MySQL 表中的字段值來讀取指定的數據。
    5. UPDATE 查詢
      UPDATE table_name SET field1=new-value1, field2=new-value2
      [WHERE Clause]
      MariaDB [test]> update student set phone='18438613802' where id=2;

      能夠同時更新一個或多個字段。
      能夠在 WHERE 子句中指定任何條件。
      能夠在一個單獨表中同時更新數據。

    6. DELETE 語句
      DELETE FROM table_name [WHERE Clause]
      MariaDB [test]> delete from student where id=1;

      若是沒有指定 WHERE 子句,MySQL 表中的全部記錄將被刪除。
      你能夠在 WHERE 子句中指定任何條件
      您能夠在單個表中一次性刪除記錄。

    7. LIKE 子句
      SELECT field1, field2,...fieldN 
      FROM table_name
      WHERE field1 LIKE condition1 [AND [OR]] filed2 = '%char%'
      MariaDB [hellodb]> select * from students where name like 'L%';

      能夠在 WHERE 子句中指定任何條件。能夠在 WHERE 子句中使用LIKE子句。可使用LIKE子句代替等號 =。LIKE 一般與 % 一同使用,相似於一個元字符的搜索。可使用 AND 或者 OR 指定一個或多個條件。能夠在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句來指定條件。

相關文章
相關標籤/搜索