1. 程式人生 > >mysql基礎一

mysql基礎一

批量操作 非負數 超出 arc sql基礎 情況 數字 數值 val

環境信息

  • 數據庫: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基礎一