準備作業
1.開啟服務器
··windows系統:
方法1.搜索服務,找到mysql并開啟.
方法2.如果安裝的是5.7版本,cmd中輸入:
net start MySQL57
··Mac系統:
系統偏好設定開啟mysql,然后命令列運行以下代碼出現base字樣即可:
source .bash_profile
2.連接服務器:
mysql -uroot -p密碼
3.修改登錄密碼:
set password for root@localhost = password("新密碼"); 比如:set password for root@localhost = password("abcd");
4.查看mysql版本資訊
status
5.離開服務器
exit;
資料庫的基礎操作
注意:mysql陳述句在命令列操作一定要加分號,在navicat軟體中可以不加分號,在mycli中也可不加,
1.查看所有資料庫:
show databases;
2.新建資料庫:
(注意不能重名,由字母 數字 下劃線 @ #$組成,首字母不能是下劃線和$ ,不能有空格和其他特殊字符,并且最好指明資料庫的編碼格式,以下為5.7版本通用格式,以免后期維護;
utf8mb4比utf8字符集多了emoji編碼支持;
簡單的理解 utf8mb4 是目前最大的一個字符編碼,支持任意文字;
utf8_unicode_ci比較準確,utf8_general_ci速度比較快,
通常情況下 utf8_general_ci的準確性就夠我們用的了,在我看過很多程式原始碼后,發現它們大多數也用的是utf8_general_ci,所以新建資料 庫時一般選用utf8_general_ci就可以了,如果是utf8mb4那么對應的就是 utf8mb4_general_ci 、utf8mb4_unicode_ci,
create database 庫名;
create database 庫名 charset utf8mb4 collate utf8mb4_general_ci;
3.查看資料庫陳述句:
show create database 庫名;
4.進入資料庫:
use 庫名;
5.刪庫(要謹慎):
drop database 庫名;
表操作
1.查看所有表
show tables;
2.建表
create table 表名字(列名 資料型別, ... ) charset=utf8;
3.查看建表陳述句
show create table 表名;
4.以表格方式查看表
describe 表名; 或 desc 表名;
5.刪表
drop table 表名;
Mysql資料型別
mysql提供了整數型別、浮點數型別、日期和時間型別、字串型別等
1. 整數型別
int unisgned指明無符號
TINYINT(1個位元組)SMALLINT(2個位元組)MEDIUMINT(3個位元組)INT和INTEGER(4個位元組)BIGINT(8個位元組)
2. 浮點數
FLOAT(4位元組 適合小于10位)
DOUBLE(8位元組 適合大于10位)
3. 日期時間型別
DATE (4位元組 如表示年月日)
DATETIME (8位元組 如表示年月日時分秒)
TIMESTAMP (如果經常插入或者更新日期為當前系統日期,或者全球化系統 ,最小值時間戳為19700101000001)
TIME (3位元組 如只需時分秒)
YEAR (1位元組)
4. 字串型別
CHAR(M) :M位元組數為最大位元組數 0~255之間
VARCHAR(M):字串長度經常變化用varchar 0~65535之間
3. text系列字串,不指定長度
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
比較char , varchar , text:
檢索效率:char>varchar>text
char:存盤定長資料很方便,CHAR欄位上的索引效率級高,必須在括號里定義長度,可以有默認值,比如定義char(10),那么不論你存盤的資料是否達到了10個位元組,都要占去10個位元組的空間(自動用空格填充).
varchar:存盤變長資料,但存盤效率沒有CHAR高,必須在括號里定義長度,可以有默認值,保存資料的時候,不進行空格自動填充,而且如果資料存在空格時,當值保存和檢索時尾部的空格仍會保留,另外,varchar型別的實際長度是它的值的實際長度+1,這一個位元組用于保存實際使用了多大的長度,
text:存盤可變長度的非Unicode資料,最大長度為2^31‐1個字符,text列不能有默認值,存盤或檢索程序中,不存在大小寫轉換,后面如果指定長度,不會報錯誤,但是這個長度是不起作用的,意思就是你插入資料的時候,超過你指定的長度還是可以正常插入,
結論:
·經常變化的欄位用varchar
·知道固定長度的用char, 如身份證
·能用varchar的地方不用text
·能用數字型別欄位的盡量用數字型別而不是字符型,因為字符型每次都逐個比較,數值型只比較一次就夠了
列屬性
有:NULL / NOT NULL ,default , primary key , unique key , atuo_increment , comment
1. NULL:空屬性很重要,空資料沒有意義
2. default:默認值
3. primary key:主鍵,一張表只能有1個主鍵,不能重復,唯一,可以是復合主鍵
··添加主鍵:
create table 表名(id int primary key comment "用戶id",..); create table 表名(... ,primary key(user_id,article_id));
··追加主鍵:
alter table 表名 add primary key(user_id,article_id);
··洗掉主鍵:
alter table 表名 drop primary key;
4. unique key:唯一值允許自動為空,添加跟追加用法與主鍵一樣
5. atuo_increment :自增長,前提自身是一個索引,一張表只能有一個自增長:
create table 表名(id int primary key auto_increment comment "用戶id",..);
6. comment:列描述沒有實際含義,只是方便了解,
基于python的工具mycli
pip install mycli mycli -uroot -p密碼
后面操作跟mysql是一樣,優點在于mycli使用時有提示,相對方便,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/37882.html
標籤:MySQL
