淺談資料庫(一)
阿新 • • 發佈:2018-11-10
**
1、MySQL概述
a、什麼是資料庫
儲存資料的倉庫
b、哪些公司在用資料庫
金融機構、遊戲網站、購物網站、論壇網站 ... ...
c、資料庫服務軟體
***1、軟體分類*** MySQL、Oracle、SQL_Server、MongoDB、DB2、Maraidb 2、生產環境中如何選擇使用哪個資料庫軟體 1、是否開源 1、開源軟體 :MySQL、Mariadb、MongoDB 2、商業軟體 :Oracle、DB2、SQL_Server 2、是否跨平臺 1、不跨平臺 :SQL_Server 2、跨平臺 :... 3、公司的型別 1、商業軟體 :政府部門、金融機構 2、開源軟體 :遊戲網站、購物網站、論壇網站 ...
2、MySQL特點
1、關係型資料庫
1、資料以 行和列(表) 的形式去儲存的
2、表中行:一條記錄 列:一個欄位
3、表和表之間的邏輯關聯叫關係
2、示例
1、關係型資料庫儲存
表1、學生資訊表
姓名 年齡 班級
星矢 25 三班
水冰月 23 六班
表2、班級資訊表
班級 班主任
三班 大空翼
六班 鬆人
2、非關係型資料庫儲存
{"姓名":"星矢" ,"年齡":25,"班級":"三班","班主任":"大空翼"}
{"姓名":"水冰月","年齡":23,"班級":"六班","班主任":"鬆人"}
2、跨平臺
在Windows、Linux、Unix執行資料庫服務
3、支援多種程式語言
python、java、php ... ...
4、資料庫軟體、
1、資料庫軟體 看的見、可操作,實現資料庫的邏輯功能 2、資料庫 邏輯概念,儲存資料,側重於儲存 3、資料倉庫 資料量特別龐大,主要用於資料分析、資料探勘 資料庫 :user表 資料倉庫 :哪個時間段使用者登入最多,哪個使用者購物最多
1、Ubuntu安裝MySQL服務
1、安裝服務端
sudo apt-get install mysql-server
2、安裝客戶端
sudo apt-get install mysql-client
3、Ubuntu安裝軟體
1、sudo apt-get install update
2、sudo apt-get -f install
作用 :修復依賴關係
2、Windows安裝MySQL服務
1、下載安裝包(windows)
mysql-installer***5.7***.msi
2、雙擊安裝
3、Mac安裝MySQL
1、下載安裝包
2、設定環境變數
1、vi .bash_profile
2、新增如下內容儲存退出
export PATH=${PATH}:/usr/local/mysql/bin
3、終端 :source .bash_profile
4、驗證 :mysql -uroot -p密碼
3、啟動和連線MySQL服務
1、服務端啟動
1、檢視服務狀態
sudo /etc/init.d/mysql status
sudo /etc/init.d/mysql start
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql restart
sudo /etc/init.d/mysql reload
2、客戶端連線
1、命令格式
mysql -h主機地址 -u使用者名稱 -p密碼
mysql -hlocalhost -uroot -p123456
# 本地登入可省略 -h 選項
mysql -uroot -p
4、基本SQL命令
1、SQL命令的使用規則
1、每條命令必須以 ; 結尾
2、SQL命令不區分字母大小寫
3、使用 \c 終止當前命令的執行
2、庫的管理
1、庫基本操作
1、檢視所有庫
show databases;
2、建立庫(指定字符集)
create database 庫名 character set utf8;
3、檢視建立庫的語句(檢視字符集)
show create database 庫名;
4、檢視當前所在庫
select database();
5、切換庫
use 庫名;
6、檢視庫中的表
show tables;
7、刪除庫
drop database 庫名;
2、庫的命名規則
1、數字、字母、_,但是不能是純數字
2、庫名區分字母大小寫
3、不能使用特殊字元 和 MySQL關鍵字3、練習
1、建立庫 testdb,指定字符集為 utf8
create database testdb character set utf8;
2、進入庫 testdb
use testdb;
3、檢視當前所在庫
select database();
4、建立庫 testdb2,字符集為 latin1
create database testdb2 character set latin1;
5、進入到庫 testdb2
use testdb2;
6、檢視庫 testdb2 的字符集是什麼
show create database testdb2;
7、檢視庫 testdb2 中的所有表
show tables;
8、刪除庫 testdb
drop database testdb;
9、刪除庫 testdb2
drop database testdb2;
3、表的管理
1、表的基本操作
1、建立表(別忘了選擇庫,指定字符集)
create table 表名(
欄位名 資料型別,
欄位名 資料型別,
欄位名 資料型別
)character set utf8;
2、檢視建立表的語句(字符集、儲存引擎)
show create table 表名;
3、查看錶結構
desc 表名;
4、刪除表
drop table 表名;
2、練習
1、建立庫 python1
create database python1;
2、在python1庫中建立表 pymysql,指定字符集為utf8,欄位有3個:
id int, name char(15) ,age int
use python1;
create table pymysql(
id int,
name char(15),
age int
)character set utf8;
3、查看錶 pymysql 的字符集和儲存引擎
show create table pymysql;
4、查看錶 pymysql 的表結構
desc pymysql;
5、刪除表 pymysql
drop table pymysql;
6、建立庫 python2
create database python2;
7、在庫 python2 中建立表t1並指定字符集utf8,欄位有 username char(20),password char(20)
use python2;
select database();
create table t1(
username char(20),
password char(20)
)character set utf8;
show tables;
8、檢視t1的表結構
desc t1;
9、刪除表 t1
drop table t1;
10、刪除庫 python2
drop database python2;
4、注意
1、所有資料都是以檔案形式儲存在資料庫目錄下/var/lib/mysql
5、表記錄管理
1、插入(insert)
1、insert into 表名 values(值1),(值2);
2、insert into 表名(欄位1,欄位2)
values(值1),(值2);
2、查詢(select)
1、select * from 表名 where 條件;
2、select 欄位1,欄位2 from 表名 where 條件;
3、練習
1、檢視所有庫
show databases;
2、建立新庫 studb
3、在庫studb中建立表 tab1,指定字符集utf8
欄位(4個): id、name、age、score
use studb;
create table tab1(
id int,
name char(20),
age int,
score int
)character set utf8;
4、檢視tab1的表結構
desc tab1;
5、在tab1中任意插入2條記錄
insert into tab1 values
(1,"唐伯虎",23,88),
(2,"祝枝山",22,60);
6、查詢所有表記錄
select * from tab1;
7、在tab1中name、score兩個欄位插入2條記錄
insert into tab1(name,score) values
("文徵明",55),
("秋香",99);
8、查看錶tab1中所有人的姓名和年齡
select name,age from tab1;
9、查看錶tab1中成績及格的學生資訊(高於60分)
select * from tab1 where score>60;
5、如何更改庫的預設字符集
1、方法 :更改配置檔案
2、步驟
1、獲取root許可權
sudo -i
2、cd /etc/mysql/mysql.conf.d
3、cp mysqld.cnf mysqld.cnf.bak
4、subl mysqld.cnf
5、在[mysqld]下的tmpdir = /tmp新增
character_set_server = utf8
6、/etc/init.d/mysql restart
3、Mac本
vi /etc/my.cnf
寫入:
[mysqld]
character_set_server = utf8
6、客戶端把資料儲存到資料庫伺服器上的過程
1、連線到資料伺服器 :mysql -u使用者名稱 -p
2、選擇庫 :use 庫名
3、建立/修改表 :update 表名
4、斷開與資料庫連線 :exit; | quit; | \q;
7、資料型別
1、數值型別
1、整型
1、int 大整型(4個位元組)
取值範圍 :0 ~ (2**32 - 1) 42億多
2、tinyint 微小整型(1個位元組)
1、有符號(signed預設) : -128~127
2、無符號(unsigned) : 0~255
age tinyint unsigned,
3、smallint 小整型(2個位元組)
4、bigint 極大整型(8個位元組)
2、浮點型
1、float(4個位元組,最多顯示7個有效位)
欄位名 float(m,n) m->總位數 n->小數位位數
float(5,2) 取值範圍:-999.99 ~ 999.99
## m的值最大為7
2、double
欄位名 double(m,n)
3、decimal(m,n)
1、儲存空間(整數部分、小數部分分開儲存)
規則:將9的倍數包裝成4個位元組
餘數 位元組
0 0
1-2 1
3-4 2
5-6 3
7-8 4
例:decimal(19,9)
整數部分:10/9=1餘1 4位元組+1位元組=5
小數部分:9/9=1餘0 4位元組+0位元組=4
總共 :9個位元組
3、練習
1、新建庫studb2,並在庫中建立表stuinfo,要求:
id : 大整型
name : 字元型別,寬度為15
age : 微小整型,不能為負數
height : 浮點型,小數位為2位(float)
money : 浮點型,小數位為4位(decimal)
create database studb2;
use studb2;
create table stuinfo(
id int,
name char(15),
age tinyint unsigned,
height float(5,2),
money decimal(20,4));
2、查看錶結構
desc stuinfo;
3、查看錶字符集和儲存引擎
show create table stuinfo;
4、在表中插入1條完整記錄
insert into stuinfo values
(1,"小昭",26,165,8888.88);
5、查詢所有表記錄
select * from stuinfo;
6、在表中id、name和money三個欄位插入2條記錄
insert into stuinfo(id,name,money) values
(2,"趙敏",200000),(3,"周芷若",18000.23);
7、查詢所有學生的 編號、姓名和money
select id,name,money from stuinfo;
2、字元型別
1、char :定長
char(寬度) 寬度取值範圍:1 - 255
2、varchar :變長
varchar(寬度) 寬度取值範圍 :1 - 65535
3、text / longtext(4G) /blob / longblob
4、char 和 varchar的特點
1、char :浪費儲存空間,效能高
2、varchar :節省儲存空間,效能低
5、字元型別的寬度和數值型別寬度的區別
1、數值型別寬度為顯示寬度,只用於select查詢時顯示,和佔用儲存無關,可用zerofill檢視效果
2、字元型別的寬度超過後無法儲存
3、列舉型別
1、單選enum
sex enum(值1,值2,...)
2、多選set
likes set(值1,值2,...)
## 插入記錄時 "study,python,mysql"
作業:
1、MySQL中資料型別有:___、___、___、___
2、關係型資料庫的核心內容是 關係 即 二維表
3、簡述客戶端把資料儲存到資料庫伺服器上的過程
4、char和varchar的區別,各自的特點
5、操作
1、建立一個學校的庫 school
2、在庫school中建立表students,字符集utf8
欄位如下:
id int 顯示寬度為3,位數不夠用0填充
姓名、年齡(不能為負數)、性別(單選)、成績(浮點)、愛好(多選)
3、查看錶結構
4、在表中任意插入3條完整記錄,並查詢顯示
5、在表中id、姓名、成績三個欄位插入3條記錄,並查詢顯示
6、檢視所有學生的姓名和成績
7、檢視成績及格的學生的姓名和成績
8、更改配置檔案,把預設字符集改為 utf8
9、重啟MySQL服務,並建庫驗證