天天看點

MySQL基礎day01_MySQL基礎-MySQL 5.6

MySQLday01_MySQL基礎-Redhat Enterprise 6.4

知識重點:

一:資料庫服務概述

二:建構MySQL伺服器

三:建構MySQL伺服器

四:MySQL資料類型

五:擴充

DB: DataBase

資料庫:依照某中資料模型并存放到存儲器(傳說中的硬碟)的資料集合

DBA:DataBaseAdministrator

資料庫管理者:

DBMS: DataBase ManagementSystem

資料庫管理系統:用來操縱和管理資料庫的大型服務軟體

DBS:DataBase System

資料庫系統:即DB+DBMS,指帶有資料庫并整合了資料庫管理軟體的計算機系統

rhel6OS

用ip位址是192.168.1.100主機座資料庫伺服器

1,提供資料庫服務的軟體有哪些?

微軟:

access 不跨平台,商業(不開源)

sql server 不跨平台,商業(不開源)

oracle公司:(sun把mysql收購,oracle把sun收購了!)

mysql 跨平台,開源

oracle 跨平台,商業(不開源)

IBM公司:

DB2      跨平台,商業(不開源)

Sybase公司:

Sybase 跨平台,商業(不開源)

伯克利大學:

PostgreSQL  跨平台,開源

2,mysql主要特點

優點:

-開源

-跨平台

-适用于小規模、關系型資料庫系統

-支援Linux/Uinx、Windwos等多種作業系統

-使用C和C++編寫,可移植性強

-通過API支援Python/Java/Perl/PHP等語言

典型應用環境:

-LAMP平台,與Apache HTTP Server組合

-LNMP平台,與Nginx組合

三:MySQL資料庫基本管理

1,建構MySQL系統

# tar xvf  MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar

MySQL-shared-5.6.15-1.el6.x86_64.rpm        //共享庫

MySQL-devel-5.6.15-1.el6.x86_64.rpm         //庫和頭檔案

MySQL-embedded-5.6.15-1.el6.x86_64.rpm       //嵌入式版本

MySQL-test-5.6.15-1.el6.x86_64.rpm         //測試包

MySQL-server-5.6.15-1.el6.x86_64.rpm         //主程式(伺服器安裝)

MySQL-shared-compat-5.6.15-1.el6.x86_64.rpm         //相容包

MySQL-client-5.6.15-1.el6.x86_64.rpm          //測試包(用戶端安裝)

2,安裝mysql軟體

[root@localhost 桌面]# rpm -Uvh MySQL-*.rpm

3,為伺服器設定固定ip位址

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=none

HWADDR=00:0C:29:BA:CC:2E

IPADDR=192.168.1.100

NETMASK=255.255.255.0

[root@localhost ~]# service network  restart

4,啟動mysql服務

mysql5.6版本的的服務名為mysql,其他低版本的為mysqld

[root@localhost ~]# service mysql start

Starting MySQL..                                   [确定]

[root@localhost ~]# netstat -anptu | grep mysql

tcp        0       0     :::3306        :::*         LISTEN      5034/mysqld

[root@localhost ~]#

5,mysql服務相關資訊

程序名     mysql

監聽端口   3306

傳輸協定   TCP

程序所有者 mysql

資料庫存儲目錄     /var/lib/mysql/

PID檔案     /var/lib/mysql/localhost.localdomain.pid

錯誤日志     /var/log/mysqld.log

/var/lib/mysql/mysql.sock      隻有資料庫啟動了才有,停止就沒了!

如果通路伺服器的時候,找不到mysql.sock,那就說明沒開啟這個服務!

[root@localhost ~]# grep --color mysql /etc/passwd

mysql:x:496:493:MySQL  server:/var/lib/mysql:/bin/bash

6,通路資料庫伺服器

注:預設情況下隻允許資料庫管理者從資料庫伺服器本機登入

格式:mysql -u使用者名 -p密碼 -h伺服器ip位址/或主機名 (注:選項後無空格)

初始狀态下,在安裝mysql軟體的時候,會随機生成密碼,存放在管理者的家目錄下:隐藏檔案.mysql_secret

[root@localhost ~]# cat .mysql_secret

# The random password set for the  root user at Thu Mar 13 10:28:12 2014 (local time): 8INvuloC

[root@localhost ~]# mysql -uroot -hlocalhost -p

Enter password:                        //這裡輸入密碼

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1

Server version: 5.6.15

Copyright (c) 2000, 2013, Oracle  and/or its affiliates. All rights reserved.

Oracle is a registered trademark of  Oracle Corporation and/or its

affiliates. Other names may be  trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type  '\c' to clear the current input statement.

mysql> quit                      //退出

Bye

7,重置資料庫管理者的密碼

注:預設狀态下,使用安裝mysql時自動生成的密碼,但是進去之後是不能進行任何操作的,必須先為資料庫管理者修改密碼。

mysql中不區分大小寫

修改密碼:set password for 'root'@'localhost'=password(‘123456’);

Enter password:

Your MySQL connection id is 2

mysql> select  user();   //直接執行的話,會提示強制管理者修改密碼

ERROR 1820 (HY000): You must SET  PASSWORD before executing this statement

mysql> SET  PASSWORD FOR 'root'@'localhost'=PASSWORD('123456');

Query OK, 0 rows affected (0.08 sec)

mysql> quit

8,登入資料庫,檢視相關資訊

selectuser();              //檢視目前使用者

selectdatabase();         //檢視目前工作的庫

showdatabases;            //檢視有哪些庫

createdatabase xxx;      //建立庫

usexxx;                 //切換資料庫

建庫的規則:

唯一性:不能有同名的資料庫,是以建庫之前需要用show databases檢視;

區分大小寫;

不能純數字;可以以數字開頭,但是不能用純數字

不能用關鍵字;

不能用特殊符号:*、(、)、!、^等

資料庫伺服器的庫和表都是以檔案的方式存放的!

注:删除/var/lib/mysql裡面對應的庫,那麼在mysql裡面使用show databases檢視對應的庫,也就沒有了!

mysql> select  user();            //檢視目前使用者

+----------------+

| user()         |

| root@localhost |

1 row in set (0.02 sec)

mysql> select  database();//檢視目前所在的庫,null表示沒有進入庫

+------------+

| database() |

| NULL       |

1 row in set (0.05 sec)

mysql> show  databases;

+--------------------+

| Database           |

| information_schema |    //存儲資料庫伺服器上已有的庫和表的資訊

| mysql              |  //授權庫(非常重要)使用者,密碼存放在該庫

| performance_schema |    //目前資料庫伺服器運作時的參數資訊

| test               |    //公共庫

4 rows in set (0.08 sec)

mysql> create  database student;     //建立一個庫student

Query OK, 1 row affected (0.05 sec)

mysql> use  student                 //切換庫

Database changed

mysql> select  database();           //檢視目前使用的庫

| student    |

1 row in set (0.00 sec)

mysql> drop  database student;      //删除資料庫student

Query OK, 0 rows affected (0.18 sec)

mysql> select  database();

示例:建立一個清單stu_tab

mysql>create db1;

mysql>use db1;

mysql>create table stu_tab(age int);

mysql>desc stu_tab;     //檢視stu_tab表的表結構

mysql>insert into stu_tab(age)values(19);

mysql>insert into stu_tab(age)values(19),(30),(40);

示例:建立一個清單stu2

mysql> create table stu2(name  char(3),age int);     //建立一個清單

mysql> insert into  stu2(name,age)value("jim",23)("tom",22);

mysql> desc stu2;                   //檢視stu2的表結構

mysql> select * from stu2;             //檢視stu2表的資訊

mysql> show tables;

mysql>

數值類型:體重、身高、成績、工資

字元類型:姓名、工作機關、通訊位址

日期時間類型:出生日期、注冊日期

枚舉類型:興趣愛好、性别

1,數值類型:

整型:小整數、大整數、極大整數

<a href="http://s3.51cto.com/wyfs02/M00/22/A1/wKiom1Mhyr_BEAd7AAD4dUQWfrw623.jpg" target="_blank"></a>

tinyintunsigned:無符号tinyint類型(範圍為0-255)

mysql&gt;create table stu01(name char(3),age tinyint unsigned);

2,字元類型

char   :定長

特點:不夠的話,用空格補起,超過了就存不上

varchar    :變長

特點:更具使用者存儲資料的多少來開辟存儲空間,超過了也存不上!

注:數值類型的寬度,是顯示寬度;

int(3)表示顯示寬度為3,并不是限制存儲的大小。

如果輸入的值為1,那麼将會補兩個空格,如果是11,則補一個空格,如果超過3個寬度,則完全顯示。預設的寬度為11。

3,日期時間類型:生日、注冊時間、入職時間、入學時間

年     year

日期   date

時間   time

日期時間   timestamp/datetime

<a href="http://s3.51cto.com/wyfs02/M00/22/A1/wKiom1MhzBvxn1-GAACfHE3i1Qo661.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/22/A1/wKiom1MhzEyjz8uZAABzomdxoqM008.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/22/A1/wKiom1MhzE3yB9_fAACLoUPp7F8585.jpg" target="_blank"></a>

函數示例:

mysql&gt; select now(),sysdate(),curdate(),curtime();

+---------------------+---------------------+------------+-----------+

| now()               | sysdate()           | curdate()  | curtime() |

| 2014-03-13 16:06:34 |  2014-03-13 16:06:34 | 2014-03-13 | 16:06:34   |

mysql&gt; select year(now()),month(now()),time(now());

+-------------+--------------+-------------+

| year(now()) | month(now())  | time(now()) |

|        2014 |            3 | 16:05:21    |

mysql&gt; select sleep(5);             //五秒後顯示

+----------+

| sleep(5) |

|        0 |

1 row in set (5.06 sec)

year年份的處理:

預設用4位數字表示;

當隻用2位數字指派時,01-69視為2001-2069,70-99視為1970-1999

00視為0000;

datetime和timestamp日期時間:

當未給timestamp字段指派時,自動以目前時間指派,而datetime字段預設指派為0。

4,枚舉類型:用于性别、愛好等

字段的值要在列舉的範圍内選擇

set(值1,值2,...)      多選可以用編号1,2,...

enum(值1,值2,...)     單選不可以用編号

擴充:修改/etc/my.cnf檔案,添加字段

1,調整字元集設定,

重新開機mysql服務,可以使mysql支援utf8字元:

[root@localhost ~]# vim /etc/my.cnf

[root@localhost ~]# cat /etc/my.cnf | grep char

#character_set_server=utf8          //不添加這一行

[root@localhost ~]# service mysql restart

Shutting down MySQL..                                      [确定]

Starting MySQL..                                           [确定]

[root@localhost ~]# mysql -u root -p

Server version: 5.6.15 MySQL  Community Server (GPL)

Oracle is a registered trademark of Oracle  Corporation and/or its

mysql&gt; show  variables like 'character%';

+--------------------------+----------------------------+

| Variable_name            | Value                      |

| character_set_client     | utf8                       |

|  character_set_connection | utf8                       |

|  character_set_database   | latin1                     |

|  character_set_filesystem | binary                     |

|  character_set_results    | utf8                       |

| character_set_server     | latin1                     |

|  character_set_system     | utf8                       |

| character_sets_dir       | /usr/share/mysql/charsets/ |

8 rows in set (0.00 sec)

mysql&gt; exit

character_set_server=utf8

Starting MySQL.                                            [确定]

|  character_set_client    | utf8                       |

|  character_set_connection| utf8                       |

|  character_set_database  | utf8                       |

|  character_set_filesystem| binary                     |

|  character_set_results   | utf8                       |

| character_set_server     | utf8                       |

| character_set_system     | utf8                       |

8 rows in set (0.01 sec)

2,檢視一個table是如何建立的:

showcreate table 表名

mysql&gt; show  create table student;

+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Table   | Create Table                                                                                                                                                                                                                                                              |

| student | CREATE TABLE `student` (

  `學号` char(9) NOT NULL,

  `姓名` varchar(4) NOT NULL,

  `性别` enum('男','女')  NOT NULL,

  `手機号` char(11) DEFAULT '',

  `通訊位址` varchar(64) DEFAULT NULL,

  PRIMARY KEY (`學号`)

) ENGINE=InnoDB DEFAULT  CHARSET=utf8                  |

作業:

create table stu_tab(

學号 char(10) not null,

姓名 char(3) not null,

性别 enum('男','女') notnull,

年齡 tinyint unsigned not null,

出生日期 date not null,

薪資 float(7,2) default '0.00',

手機号 char(11) default '',

家庭住址 char(64) not null

)default charset=utf8;

insert into stu_tabvalues("NSD1312001","zsp",1,23,19910520,15000,13100000001,"河南省南陽市");

insert into stu_tabvalues("NSD1312002","gbw",1,22,19901212,8500,13100002222,"河北省邯鄲市");

insert into stu_tabvalues("NSD1312003","xjx",1,28,19881122,10000,13100005558,"北京市朝陽區");

insert into stu_tabvalues("NSD1312004","jyp",1,24,19900325,18000,13100444444,"河南省許昌市");

示例:

mysql&gt;  create table stu_tab(

   -&gt; 學号 char(10) not null,

   -&gt; 姓名 char(3) not null,

   -&gt; 性别 enum('男','女') not  null,

   -&gt; 年齡 tinyint unsigned not null,

   -&gt; 出生日期 date not null,

   -&gt; 薪資 float(7,2) default '0.00',

   -&gt; 手機号 char(11) default '',

   -&gt; 家庭住址 char(64) not null

   -&gt; )default charset=utf8;

Query OK, 0  rows affected (0.03 sec)

mysql&gt;  insert into stu_tab  values("NSD1312001","zsp",1,23,15000,13100000001,"河南省南陽市");

ERROR 1136  (21S01): Column count doesn't match value count at row 1

mysql&gt;  desc stu_tab;

+--------------+---------------------+------+-----+---------+-------+

| Field        | Type                | Null | Key | Default |  Extra |

| 學号         | char(10)            | NO   |      | NULL    |       |

| 姓名         | char(3)             | NO   |      | NULL    |       |

| 性别         | enum('男','女')      | NO   |     | NULL     |       |

| 年齡         | tinyint(3)  unsigned | NO   |     | NULL     |       |

| 出生日期     | date                | NO   |      | NULL    |       |

| 薪資         | float(7,2)          | YES  |      | 0.00    |       |

| 手機号       | char(11)            | YES  |      |         |       |

| 家庭住址     | char(64)            | NO   |      | NULL    |       |

8 rows in  set (0.00 sec)

mysql&gt;  insert into stu_tab  values("NSD1312001","zsp",1,23,19910520,15000,13100000001,"河南省南陽市");

Query OK, 1  row affected (0.00 sec)

mysql&gt;  insert into stu_tab  values("NSD1312002","gbw",1,22,19901212,8500,13100002222,"河北省邯鄲市");

mysql&gt;  insert into stu_tab values("NSD1312003","xjx",1,28,19881122,10000,13100005558,"北京市朝陽區");

mysql&gt;  insert into stu_tab  values("NSD1312004","jyp",1,24,19900325,18000,13100444444,"河南省許昌市");

mysql&gt;  select * from stu_tab;

+------------+--------+--------+--------+--------------+----------+-------------+--------------------+

| 學号       | 姓名   | 性别   | 年齡   | 出生日期     | 薪資     | 手機号      | 家庭住址           |

| NSD1312001  | zsp    | 男     |     23 | 1991-05-20   | 15000.00 | 13100000001 | 河南省南陽市       |

| NSD1312002  | gbw    | 男     |     22 | 1990-12-12   |   8500.00 | 13100002222 | 河北省邯鄲市       |

| NSD1312003  | xjx    | 男     |     28 | 1988-11-22   | 10000.00 | 13100005558 | 北京市朝陽區       |

| NSD1312004  | jyp    | 男     |     24 | 1990-03-25   | 18000.00 | 13100444444 | 河南省許昌市       |

4 rows in  set (0.00 sec)

本文轉自 murongqingqqq  51CTO部落格,原文連結:http://blog.51cto.com/murongqingqqq/1376190