mysql基礎一
環境信息
數據庫:mysql-5.7.20
操作系統:Ubuntu-16.04.3
mysql的啟動、退出、重啟
# 啟動
$ sudo service mysql start
# 停止
$ sudo service mysql stop
# 重啟
$ sudo service mysql restart
# 查看進程
ps ajx|grep mysql
登陸和退出
# username代表用戶名;可以先不輸入密碼,回車後再輸入,方式密碼出現明文
mysql -u username -p password
# 退出
quit;
exit;
遠程連接
前提是遠程數據庫配置了允許遠程連接;
# mysql -h ip地址 -u root -p -h後面寫要連接的主機ip地址 -u後面寫連接的用戶名 -p回車後寫密碼
數據庫基本操作
# 創建數據庫,dbname為數據庫名,charset指定編碼
create database dbname charset=utf8;
# 刪除數據庫
drop database 數據庫名;
# 切換數據庫
use 數據庫名;
# 查看當前選擇數據庫
select database();
# 查看所有的數據庫
show databases;
表的基本操作
# 查看當前數據庫的所有表 show tables; # 查看表的結構 desc 表的名字 # 查看某個表的創建語句 show create table 表名; # 更改表的名字 rename table 原表名 to 新表名; # 創建一個表 create table 表名(定義字段) # 刪除一個表 drop table 表名; # 有時出現刪除失敗的情況,一般是表進行了相互關聯的情況,使用set foreign_key_checks = 0;關閉外鍵約束,刪除成功後啟動外鍵約束set foreign_key_checks = 1; # 增加字段 alter table 表名 add 列名 類型; # 對字段重命名 alter table 表名 change 原名 新名 類型及約束; # 修改字段的類型和約束 alter table 表名 modify 列名 類型及約束; # 刪除字段 alter table 表名 drop 字段
數據類型及約束
create table person(
-> id int unsigned primary key auto_increment not null,
-> name varchar(20) default ‘‘,
-> age tinyint unsigned default 0,
-> gender enum(‘男‘,‘女‘,‘保密‘),
-> isdelete bit default 0
-> );
表的字段的定義格式為:
字段名 類型 約束
字段名:任意名,一般為字符變量;
mysql常用類型:
數值類型:
tinyint:-128~128 1個字節
samllint:-32768 ~ 32767 2個字節
int:-2147483648 ~2147483647 4個字節字符串類型
char: 可定義0~255個字節,如char(5),定義後不可變;每個值一定占5個字節;
varchar: 可定義0~255個字節,如varchar(5),定義後可變;每個值存儲可小於5個字節;
text:可定義0~65535個字節,用來傳送大文本;
- bit
bit保存位字段值,bit(m),m的範圍1~64,默認為1;
- 枚舉類型:
enum:enum("1","2"),非法插入時會插入空字符串,其值為0;如果聲明不允許為空,則默認值為允許值得第一個元素;索引規則從第一個開始;最大可以有65535
- 定點數
decimal:如decimal(M,D),M表示數值的總的位數,D表示小數部分的位數;不指定默認取值decimal(10,0),一個參數則D取值0;M取值範圍為1~65,超出報錯,D取值0~30,超出報錯;
numeric:和decimal是相同的類型;
- 浮點數
float : float(M,D),M取值範圍為0~255,當M小於6位數字的時候是準確的,超出範圍報錯;D取值範圍0~30,。
real : real(M,D),
double : double(M,D),M,D範圍和float一樣,M<=16時,數字是準確的。
- 註意
在FLOAT和DOUBLE中,若M的定義分別超出7和17,則多出的有效數字部分,取值是不定的,通常數值上會發生錯誤。
- 時間類型
| 類型 | 字節 | 舉例 |
| DATE | 4 | ‘2020-01-01‘ |
| TIME | 3 |‘12:29:59‘ |
| DATETIME | 8 |‘2020-01-01 12:29:59‘ |
| YEAR | 1 |‘2017‘
- 約束
# 一個字段可以有多個約束,在定義的時候依次寫在後面
primary key : 主鍵,物理上存儲的順序;
auto_increment:自增長,一般配合主鍵使用;
not null:非空,字段不允許填寫空值;
default:默認值;
foreign key:外鍵;
unique:字段不允許重復;
unsigned:無符號,針對的是數值類型;指的是非負數;
signed:有符號,值有理數;
數據庫備份及批量操作
備份與恢復
# 將數據導出
mysqldump –u uesrname –p 數據庫名 > mysql.sql;
# 將數據導入新的數據庫
mysql -u username -p 數據庫名 < mysql.sql
腳本操作數據庫
# 將所有的相關mysql操作寫入一個sql文件
# 登陸數據庫選擇要執行的數據庫
source ***.sql
基本的增刪改查
查:
# 查詢所有的列的列的所有的字段
select * from 表名
# 查詢所有的列的部分字段
select id,name from 表名
# 查詢部分列的部分字段
select id,name from 表名 where id=8;
增:
# 標準插入多行
insert into 表名 values(...),(...);
# 插入部分列
insert into 表名(id,name) values(...),(...);
# 主鍵自動增長,但是需要占位,一般使用0;
改
update 表名 set 列1=值1,列2=值2... where 條件
刪
# 刪除指定的列
delete from 表名 where 條件
mysql基礎一