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 新表名;