mysql day 01
什麼是資料庫
儲存資料的倉庫
MySQL特點
1、關係型資料庫
1、資料以 行和列(表) 的形式去儲存的
2、表中行:一條記錄 列:一個欄位
3、表和表之間的邏輯關聯叫關係
2、示例
1、關係型資料庫儲存
表1、學生資訊表
姓名 年齡 班級
星矢 25 三班
水冰月 23 六班
2、非關係型資料庫儲存
{"姓名":"星矢","年齡":25,"班級":"三班","班主任":"大空翼"}
{"姓名":"水冰月","年齡":23,"班級":"六班","班主任":"鬆人"}
2、MySQL安裝
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
作用 :修復依賴關係
4、更改庫的預設字符集
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
預設初始賬戶root,密碼為空
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 庫名;
3、練習
1、建立庫 testdb,指定字符集為 utf8
create database testdb character set utf8;
7、檢視庫 testdb2 中的所有表
show tables;
8、刪除庫 testdb
drop database testdb;
9、刪除庫 testdb2
drop database testdb2;
3、表的管理
1、表的基本操作
1、建立表(別忘了選擇庫,指定字符集)
create table 表名(
欄位名 資料型別 default,
欄位名 資料型別,
欄位名 資料型別
)character set utf8;
2、檢視建立表的語句(字符集、儲存引擎)
show create table 表名;
3、查看錶結構
desc 表名;
4、刪除表
drop table 表名;
4、注意
???所有資料都是以檔案形式儲存在資料庫目錄下/var/lib/mysql
5、表記錄管理
1、插入(insert)
1、insert into 表名 values(值1),(值2);
2、insert into 表名(欄位1,欄位2)
values(值1),(值2);此方式可以對部分欄位插入而無需對一個值的所有欄位進行賦值(使用方法1的時候,遇到沒有值的可以使用null)(值1*2代表輸出值1的2倍值,可修改輸出引數值)
2、查詢(select)
select 欄位1,欄位2(若填*,則代表對所有欄位顯示) from 表名 where 條件;
where 條件計算:
數值型別: >,>=,<,<=,=,!=
字元型別: =,!=
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個位元組
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,...)
插入的時候是"值1"
2、多選set
likes set(值1,值2,...)
## 插入記錄時 "值1,值2......"
簡述客戶端把資料儲存到資料庫伺服器上的過程???