Mysql5.7安裝及服務
雄關漫道真如鐵,而今邁步從頭越。
day22 mysql
1. 簡介
關係型資料庫
- 永久儲存資料
- 提供資料的安全
- 提供資料的併發訪問
- 提供了多種資料型別
- 提供事務支援
- 提供了SQL語言操作資料
著名的資料庫
- Oracle 甲骨文
- MySQL 甲骨文
- Sql Server 微軟 (主要用在windows環境)
- DB2 IBM公司
- SQLlite 用在移動端開發
2.安裝
解壓後
bin/mysql.exe 客戶端程式
bin/mysqld.exe 伺服器端程式
bin/mysqldump.exe 資料備份程式
- 初始化(只需要執行一次)
bin/mysqld --initialize --console
初始化結束會生成data的資料夾,其中儲存系統和使用者的資料
注意記錄臨時密碼
-
啟動資料庫服務(跳過就可以)
bin/mysqld --console
埠用的是3306
可以使用Ctrl+C 停止服務程式,或者直接關閉視窗 -
使用客戶端連線
bin/mysql -u 使用者名稱 -p
初始化時mysql有一個 root (資料庫管理員使用者)
bin\mysql -uroot -p
正確登入後會出現 mysql> 提示符,要退出用quit命令
- 修改密碼(只需要執行一次)
alter user 'root'@'localhost' identified by 'root';
-
配置mysql的bin目錄至環境變數(只需要執行一次)
-
將mysql安裝為系統服務(只需要執行一次)
bin\mysqld install 服務名
如果服務名沒有提供,預設為MySQL
如果要解除安裝服務:sc delete 服務名
如果安裝服務或刪除時出現許可權不足,用管理員身份執行cmd(黑視窗)
- 建庫
設定預設的字元編碼
一種是在建庫語句上帶上字元編碼
另一種是在啟動服務時新增配置檔案
建庫SQL語句(在mysql提示符下執行)
create database 資料庫名 character set utf8mb4;
mysql中的utf8字元不夠完整,utf8mb4是完整版本的
刪除資料庫
drop database 資料庫名;
檢視建庫資訊
show create database 資料庫名;
要修改全域性的設定,在mysql解壓目錄新增 my.ini 配置檔案,在其中輸入(推薦)
[mysqld]
character-set-server=utf8mb4
停止舊服務,刪除舊服務,安裝新服務,啟動新服務
net stop mysql
sc delete mysql
mysqld install
net start mysql
3. 基本操作
建表(table)
一個庫中有多張表,每張表裡有多條資料
表分成行(row 橫向)與列(column 縱向)
學號 姓名 性別
1 張三 男
2 李四 女
…
- 選庫
use 庫名; - 建表
create table 表名(
列1名 型別,
列2名 型別,
...
);
create table student(
id int,
name varchar(10),
sex char(1)
);
整數型別: tinyint(1個位元組), smallint(2個位元組), int(4個位元組), bigint(8個位元組)
無符號數字 tinyint unsigned (0~255)
浮點型別: float, double
定點小數: decimal(總位數, 小數位數)
decimal(10, 2) 小數部分兩位,整數部分最大8位
字元型別
char(長度) char(10) 表示最多存10個字元, 定長,效率高
varchar(長度) varchar(10) 表示最多儲存10個字元,變長
“abc” "abc " 儲存時,長度不足,用空格補齊
“abc” “abc” 儲存時,根據實際長度儲存,可以節省空間
日期型別
datetime
timestamp
- 插入資料
insert into 表名(列1, 列2, ... 列n) values (值1, 值2, ... 值n);
注意:值個數要與列個數一致
insert into student(id,name,sex) values(1, '張三', '男');
- 查詢資料
語法:
select 列1, 列2, ... from 表名;
select id, name, sex from student;
- 檢視所有庫
show databases;
- 檢視所有表
show tables;
- 唯一主鍵
每張表只能有一個主鍵
主鍵的值必須是唯一,且非空的
create table 表名(
列1名 型別 primary key,
列2名 型別,
...
);
刪表語法:drop table 表名;
create table student(
id int primary key,
name varchar(10),
sex char(1)
);
insert into student(id,name,sex) values(null, ‘李四’, ‘男’);
自增列,用來解決主鍵衝突問題
在主鍵列後加入:auto_increment
1 2 3 4 …
因為id列由資料庫維護,所以有了自增列後就不需要給id列賦值了
create table student(
id int primary key auto_increment,
name varchar(10),
sex char(1)
);
一次插入多條記錄(mysql獨有)
insert into student(name,sex) values(‘李四’, ‘男’),(‘王五’, ‘男’),(‘趙柳’, ‘男’);
-
查詢所有列
select * from student;
mysql會把*翻譯成:id,name,sex -
刪除記錄(只刪除資料,不刪表)
delete from 表 where 條件;
刪除表(連表和資料一塊刪除)
drop table 表;
只刪除id=6的記錄
delete from student where id=6;
create table a ( birthday datetime );
insert into a (birthday) values (‘1988-5-4’);
insert into a (birthday) values (‘1988-5-4 16:39:00’);
// 1.
create table b (
id int primary key auto_increment,
name varchar(20)
) auto_increment=1001;
insert into b (name) values(‘aaa’),(‘bbb’),(‘ccc’);
// 2.
create table b (
id int primary key auto_increment,
name varchar(20)
);
alter table b auto_increment=1001;