天天看點

mysql【1】. 資料庫服務概述 、 建構MySQL伺服器 、 資料庫基本管理 、 MySQL資料類型 、 表結構的調整

01 day

一常識了解:

資料庫:DB:DataBase

資料庫管理系統:DBMS:DataBaseMange System

資料庫系統 DBS DataBase System

資料模型 : E-R :Entity-Relationship Mode

LAMP    LNMP

選擇作業系統: Linux   UNIX   windows    RHEL7      RHEL6

安裝提供資料庫服務的軟體。

資料庫服務軟體有哪些?

Oracle(甲骨文):Oracle database  ; MySQL/MariaDB

Microsoft(微軟):SQL Server  ;Access;  

IBM :DB2

Sybase :Sybase

PostgreSQL :加州大學伯克利分校

關系型資料庫軟體:

Oracle   DB2 \ SQL SERVER \ MySQL  Saybases postgrepsql  

非關系型資料庫軟體:

mongodb    redis

名=值

key=values

哪些是商業軟體?

哪些是開源軟體?

是否跨平台?

軟體包的來源?軟體官網下載下傳,

MySQL的特點?

在主機192.168.4.10運作MYSQL資料庫服務。

++++++++++++++++++++++

克隆一台RHEL7虛拟機,配置要求如下:

配置固定ip 192.168.4.10

配置YUM源

關閉firewalld服務

禁用selinux

二.MySQL環境準備:

關閉iptables 關閉selinux

1.安裝MYSQL

rm  -rf   mysql-community-server-min*

rpm -Uvh mysql-community-*.rpm

安裝軟體包

# yum -y remove mariadb-server mariadb

# rpm -qf /etc/my.cnf

# mv /etc/my.cnf /etc/my.cnf.old

#yum -y install perl-Data-Dumper perl-JSON    #安裝依賴包

#tar -xf mysql-5.7.17-1.el7.x86_64.rpm-bundle.tar  #釋放bundle整合包

·  mysql-community-client-5.7.17-1.el7.x86_64.rpm       //MySQL 資料庫用戶端應用程式和工具

·  mysql-community-common-5.7.17-1.el7.x86_64.rpm   //MySQL 資料庫和用戶端庫共享檔案

·  mysql-community-devel-5.7.17-1.el7.x86_64.rpm       //MySQL 資料庫用戶端應用程式的庫和頭檔案

·  mysql-community-embedded-5.7.17-1.el7.x86_64.rpm        //MySQL嵌入式函數庫

·  mysql-community-embedded-compat-5.7.17-1.el7.x86_64.rpm    //MySQL嵌入式相容函數庫

·  mysql-community-embedded-devel-5.7.17-1.el7.x86_64.rpm      //頭檔案和庫檔案作為Mysql的嵌入式庫檔案

·  mysql-community-libs-5.7.17-1.el7.x86_64.rpm           //MySQL 資料庫用戶端應用程式的共享庫

·  mysql-community-libs-compat-5.7.17-1.el7.x86_64.rpm       //MySQL 5.6.31 資料庫用戶端應用程式的共享相容庫

·  mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64.rpm        //mysql最小安裝包的調試資訊

·  mysql-community-server-5.7.17-1.el7.x86_64.rpm            //非常快速和可靠的 SQL 資料庫伺服器

·  mysql-community-server-minimal-5.7.17-1.el7.x86_64.rpm     //非常快速和可靠的 SQL 資料庫伺服器(最小化安裝)

·  mysql-community-test-5.7.17-1.el7.x86_64.rpm                    //MySQL 資料庫伺服器的測試套件

#rm -rf  mysql-community-server-minimal-5.7.17-1.el7.x86_64.rpm  #删除沖突包

#rpm -Uvh mysql-community-*.rpm   #更新安裝

# rpm  -qa  | grep  -i mysql     #檢視安裝是否成功

2.啟動服務

     systemctl status mysqld

     netstat -utnalp  | grep  :3306

     ps -C mysqld

     systemctl start mysqld

     ls /var/lib/mysql   #資料庫預設存放位置

     systemctl enable mysqld

3.連接配接資料庫伺服器之初始化設定

   #mysql   -hip位址   -u使用者名  -p密碼

   #grep password /var/log/mysqld.log 

  #mysql -hlocalhost -uroot -p"fj.9xp8trudF"

   mysql> set global validate_password_policy=0;

   mysql> set global validate_password_length=6;

   mysql> alter user root@"localhost" identified by "abc123";   #第一種方法

   mysql> SET PASSWORD FOR 'root'@'localhost'=PASSWORD('1234567');   #第二種方法

   mysql> show databases;

   mysql> quit

 #mysql -hlocalhost -uroot -pabc123

  mysql>

三.MYSQL指令:

SQL 結構化查詢語言

SQL指令使用規則?

SQL指令的分類?

資料庫名的命名規則?

注意事項:

不區分大小寫(密碼,變量除外)

每條指令以;結束

不支援TAB自動補齊

\c可廢棄目前操作指令

show  databases;         #檢視所有資料庫

create   database  庫名   #建立庫;

drop   database  庫名;   #删除庫名

use   庫名;               #切換到某庫

select database();         #檢視目前所在庫

show   tables;            #顯示庫裡的表

create  database studb;   #建立studb庫(student資料庫)

use  studb;                #切換到studbs

·    create table studb

    `學号` 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   #存儲引擎和使其支援中文

show  tables;              #顯示庫的所有表

desc   studb.stu;           #顯示studb庫stu表結構

Desc檢視表結構有什麼?

字段名|字段類型|是否為空|是否為主鍵|預設值|描述資訊

insert   into   studb.stu  values("jim",20,"boy"),("tom",19,"boy"),("lucy",16,"girl"),("jack",15,"boy");   #添加stu表資料

select  *  from  studb.stu;    #顯示stu表内容

delete  from 庫名.表名;         #删除庫名

drop   table   庫名.表名;        #删除指定的資料庫中的表  

drop   database 資料庫名       #删除指定的資料庫

操作思路:

存儲資料

1  連接配接資料庫伺服器  

#mysql   -hlocalhost  -uroot  -pabc123

mysql>

2  建立資料庫 create  database  庫名;

3  建表

use 庫名;

create  table  表名(

字段名  類型(寬度),

字段名  類型(寬度),

字段名  類型(寬度),

.....

);

4  插入表記錄

insert  into   庫名.表  values(字段值清單),(字段值清單);

5 檢視記錄  select   *  from  庫名.表;

6  斷開連接配接  quit

四.mysql 資料類型:

 數值類型 :整數和浮點 例如:體重,身高,成績,工資

 字元類型 :           例如:姓名、工作機關、通信位址

 日期時間類型          例如;出生日期,注冊時間

 枚舉類型              例如:興趣愛好,性别

1.數值類型:

Unsigned 使字段儲存整數

數值不夠寬度,左邊填空格補位

關鍵字zerofill填0代替空格補位

數值超出範圍報錯

mysql> create  table t1 ( id  tinyint);

mysql> create  table t2 ( id  tinyint  unsigned);

mysql> create  table t3 ( id  int unsigned);

mysql> dest  t1  ;  desc  t2  ; desc  t3;

浮點型    2.78   23.66  定義格式:float(總寬度,小數位數)

單精度  4個位元組   float

雙精度  8個位元組   double

整數.小數

字段名   類型(m,n)

m  總位數

n   小數位數

pay    float(5,2)

xxx.xx

999.99

-999.99

mysql>create table t4(

age tinyint  unsigned, 

pay   float(5,2) 

);

mysql> desc  t4;

2.字元類型:

普通文本  abc

char  255   定長

varchar  65532  變長

                              xxx.mp3

大檔案類型: 視訊 音頻  圖檔

text

blob

c:\lxgq/music1/xxx.mp3

create table t7( 

name  char(5), 

email  varchar(10), 

age tinyint 

); 

 t1          t2

name        name

varchar(4)     char(4)

    jerry           jerry

     lucy     lucy

      jim          jim 

      ab          ab  

      a               a

cpu

3.日期時間類型 

year  年   YYYY         例如:2017   出生年份

date 日期 YYYYMMDD    例如:20171017 生日

time 時間  HHMMSS     例如:171848  上班時間

日期時間類型  約會時間   注冊時間

YYYYMMDDHHMMSS

datetime

timestamp

當未給TIMESTAMP字段指派時,自動以目前系統時間指派,而DATETIME字段預設指派為 NULL(空)

mysql> create table  t16( 

meetting datetime, 

party  timestamp 

);

insert into t16 values(19901218214558,20191224183000);

insert into t16(meetting) values(20191224183000);

select  * from t16;

mysql> create table  t15( 

name char(10),

age  tinyint unsigned, 

pay  float(7,2), 

s_year   year, 

birthday  date, 

up_time  time, 

party   datetime 

);

 insert  into   studb.t15  values( "tom",21,18800,1990,20171120,083000,20171024183000  );

select  *  from  studb.t15

擷取時間的函數: now()  year() date() time()  day()

select  year(now());

select  month(now());

select  day(now());

select  time(now());

select  date(now());

insert into t16  values (now(),now());

mysql> insert into  t15(name,s_year)

    -> values( "jerry" , year( now() )  );

mysql>  select  name,s_year from t15;

insert into  t16  values(now(),now());

++++++++++++++++++++++++++

在主機192.168.4.20上部署Mysql資料庫伺服器,設定資料庫管理者root使用者本機登入密碼是123456;

建立學生庫studb  使用stutab存儲學生資訊。

++++++++++++++++++

枚舉類型

從給定值集合中選擇單個值,enum

格式:enum(值1,值2,值N)

從給定值集合中選擇一個或多個值,set

定義格式:set(值1,值2,值3)

create  table   studb.t21(

name  char(10),

sex   enum("boy","girl"),

likes   set("film","game","music","it")  

);

insert  into   studb.t21  values("jim","boy","film,game");

insert  into   studb.t21  values ("lucy",2,"it,game");

4.限制條件:

Null 允許為空

Not null 不允許為空

Key     索引類型

Default  設定預設值,卻省為null

·  mysql> CREATE TABLE family(

·      -> name varchar(16) NOT NULL,

·      -> gender enum('male','femal') DEFAULT 'male',

·      -> birth date NOT NULL,

·      -> job varchar(16) DEFAULT '',

·      -> relation varchar(24) NOT NULL,

·      -> PRIMARY KEY(name)

·      -> );

mysql> DESC family;

create  table   studb.t22(

name  char(10)   not null   ,

sex   enum("boy","girl")  not null,

likes   set("film","game","music","it")  

);

insert  into   studb.t22  values(null,null,null);

insert  into   studb.t22  values("null",null,null);

not  null 

create  table   studb.t23(

name  char(10)   not null  ,

age  tinyint   unsigned  default 21,

sex   enum("boy","girl")  not null  default   "girl",

likes   set("film","game","music","it")  default   "film,game"

);

insert  into   t23(name)values("tom");

select  * from  t23;

五.修改表結構

mysql>  alter  table   庫.表   執行動作;

1.add添加新字段

add  字段名   類型(寬度)  限制條件;

add  字段名   類型(寬度)  限制條件  after  字段名,

add  字段名   類型(寬度)  限制條件  first;

alter  table    studb.t23  add  email  varchar(30)  not  null   default  "[email protected]"  ;

alter  table    studb.t23  

add  stu_id  char(7)   first;

alter  table    studb.t23  

add  birthday  date   after  age , 

add  s_year   year  after  name;

2.删除已有字段:

drop   字段;

drop   字段,drop   字段;

alter  table  studb.t23  drop  email;

3.修改字段類型

modify  字段    類型(寬度)  限制條件;

alter table   studb.t23

modify

sex  enum("boy","girl","no") not null  default "no";

alter table  t22  modify likes set('film','game','music','it') after name;

4.修改字段名

change   源字段名  新字段名  類型(寬度)  限制條件;

alter table  studb.t22  change   likes   love   set('film','game','music','it');

5.修改表名

alter  table    源表名  rename   新表名;