linux環境下安裝mysql服務器、客戶端
mysql簡單的終端操作指令(使用數據庫、簡單的增刪改查和備份恢復)
1 SQL:
Structured Query Language
結構化查詢語言。
運用sql語句,可以對關系型數據庫進行操作。
目前常見的關系型數據庫有:
MySQL
oracle
SQL Server
sqlite
2 sql語句主要分為:
DQL:數據查詢語言 select
DML:數據操作語言(增刪改) insert、update、delete
TPL:事物處理語言 begin、transaction、commit、rollback
DCL: 數據控制語言 grant、revoke
DDL: 數據定義語言 create、drop
CCL: 指針控制語言 declare、cursor
3 在linux系統中安裝MySQL
3.1 安裝服務器端:
服務器用於接收客戶端的請求,執行sql語句和管理數據庫
終端執行命令來安裝mysql的服務器:
sudo apt-get install mysql-server
終端開啟mysql服務器的服務:
sudo service mysql start
停止服務:
sudo service mysql stop
重啟服務:
sudo service mysql restart
3.2 安裝客戶端:
終端命令:
sudo apt-get install mysql-client
查看幫助文檔:
mysql --help
客戶端連接mysql服務器:
mysql -u 用戶名 -p 密碼
或者: mysql -u 用戶名 -p 等待提示密碼
連接成功后退出連接:
quit;
或者 exit;
4 linux下mysql命令行基本操作:
4.1 登錄:
登錄mysql: mysql -u 用戶名 -p 密碼
退出登錄: quit; 或者 exit;
登陸后:
查看版本: select version();
查看當前sql服務器時間: select now();
修改輸入提示符:
默認的輸入提示符為 mysql>
prompt \D 修改為當前完整時間
prompt \d 修改為當前數據庫名稱
prompt \u 使用用戶名
prompt \h 使用主機名稱
也可以自己指定:
prompt python> 將輸入提示符修改為 python>
4.2 數據庫層次操作(確保登錄客戶端):
查看所有數據庫:
show databases;
使用數據庫:
use 數據庫名;
查看當前使用數據庫:
select database();
創建數據庫:
create database 數據庫名;
刪除數據庫:
drop database 數據庫名;
查看當前已有數據庫的創建語句:
show create database 數據庫名;
4.3 數據表層次操作(確保使用數據庫):
查看當前庫中所有表:
show tables;
查看表結構:
desc 表名;
創建表:[]內的內容可以沒有 也可以有
create table 表名(
字段1 類型 [約束],
字段2 類型 [約束],
字段3 類型 [約束],
字段4 類型,
字段5 類型
[, 主鍵或外鍵約束 ]
);
例如: 創建一個表students,里面包括id,name,gender
create table students(
id int unsigned primary key auto_increment,
-- id 無符號整數 主鍵 自動增長
name varchar(20) not null default "",
-- name 可變長度字符串 非空 默認""
gender enum("男", "女","女博士","保密") default "保密"
-- gender 枚舉類型 只能是這幾個值 默認保密
);
查看已有表的創建語句:
show create table 表名;
修改表:
添加字段:
alter table 表名 add 字段名 類型;
修改字段名:
alter table 表名 change 原字段 新字段名 約束;
修改字段類型和約束:
alter table 表名 modify 字段名 類型 約束;
刪除字段:
alter table 表名 delete 字段名;
刪除表:
drop table 表名;
4.4 表的簡單增刪改查語句:
增加數據:[] 內的內容可以省略
全插入:
insert [into] 表名 values( 值1, 值2 ,值3.... ,值n );
-- 要求值和字段一一對應,所有字段都被賦值
也可以插入多條數據,values之間用,隔開:
insert [into] 表名 values( 值1, 值2 ,值3.... ,值n ),( 值1, 值2 ,值3.... ,值n );
部分插入:
insert [into] 表名 (列1,列2) values( 值1,值2 );
-- 給指定的字段添加值,值和字段一一對應
也可以插入多條數據:
insert [into] 表名 (列1,列2) values( 值1,值2 ),( 值1,值2 ),( 值1,值2 );
查詢數據:
查詢所有列:
select * from 表名;
查詢指定列:
select 列1,列2,列3 from 表名;
按條件查詢:
select 列1,列2 from 表名 where 條件;
比如:
select * from students where id = 1;
-- 查詢students表中id是1的數據
修改數據:
修改表中所有數據:
update 表名 set 列1 = 值1 , 列2 = 值2 ... ;
指定修改數據:
update 表名 set 列1 = 值1 , 列2 = 值2 ... where 條件 ;
例如:
update students set name = "哈哈" where id = 1;
修改students表中id是1 的 數據 name改為哈哈
刪除數據:
清空表內數據:
delete from 表名;
刪除部分數據:
delete from 表名 where 條件;
例如:
delete from students where id = 1;
刪除students表中 id 為1 的數據
邏輯刪除(本質是修改):
update 表名 set isdelete = 1 where 條件
4.5 數據庫備份和恢復:
備份:
mysqldump -u root -p 數據庫名 > 備份文件名稱.sql;
恢復:
連接mysql,創建一個新的數據庫后退出連接執行如下命令:
mysql -u root -p 新數據庫名 < 備份文件名.sql
5 mysql中的數據類型和約束
數據類型:
整數: int 、 bit
小數: decimal(5,2) 共存5位,小數占2位
字符串: varchar(20) 可變長度字符串,最多能存20位
char(5) 固定長度字符串,不足5位自動補空格
text 大文本 字符大於4000時推薦使用
日期時間:date、time、datetime
枚舉類型(enum)
對於圖片 音頻 視頻等文件 不存處在數據庫中,而是上傳到某個服務器,然后在標中存這個文件的保存路徑
數值類型(常用):
類型 字節大小 有符號范圍(Signed) 無符號范圍(Unsigned)
TINYINT 1 -128 ~ 127 0 ~ 255
SAMLLINT 2 -32768 ~ 32767 0 ~ 65535
MEDIUMINT 3 -8388608 ~ 8388607 0 ~ 16777215
INT/INTEGER 4 -2147483648 ~2147483647 0 ~ 4294967295
BIGINT 8 -9223372036854775808 ~ 9223372036854775807 0 ~ 18446744073709551615
字符串:
類型 字節大小 示例
CHAR 0-255 類型:char(3) 輸入 'ab', 實際存儲為'ab ', 輸入'abcd' 會報長度過長的錯誤
VARCHAR 0-255 類型:varchar(3) 輸 'ab',實際存儲為'ab', 輸入'abcd',會報長度過長的錯誤
TEXT 0-65535 大文本
日期時間類型:
類型 字節大小 示例
DATE 4 '2020-01-01'
TIME 3 '12:29:59'
DATETIME 8 '2020-01-01 12:29:59'
YEAR 1 '2017'
TIMESTAMP 4 '1970-01-01 00:00:01' UTC ~ '2038-01-01 00:00:01' UTC
約束:
主鍵: primary key
非空: not null
唯一: unique
默認: default
外鍵: foreign key