mysql> show variables like '%storage_engine%'; #查看mysql當前默認的存儲引擎 mysql> show engines; #查看存儲引擎
InnoDB存儲引擎:默認引擎,最經常使用的。
InnoDB是事務型數據庫的首選引擎,支持事務安全表(ACID),支持行鎖定和外鍵;InnoDB是默認的
MySQL引擎 InnoDB特色: 支持事務處理,支持外鍵,支持崩潰修復和併發控制。若是須要對事務的完整性要求比較高(好比銀行),要求實現併發控制(好比售票),那選擇InnoDB有很大的優點。若是須要頻繁的更新、刪除操做的數據庫,也能夠選擇InnoDB,由於支持事務的提交(commit)和回滾(rollback)。mysql
默認的是InnoDB,但有時候咱們須要使用其它引擎該怎麼辦? mysql> create table t1(字段名,類型) engine=引擎; #建立的時候指定你想要的引擎 #若是你建立表的時候忘了指定引擎了,那它使用的就是默認的InnoDB,固然咱們也能夠修改引擎 mysql> ALTER TABLE 表名 ENGINE=引擎; #將該表修改指定爲你想要使用的引擎 注意:在Mysql中,指令不分大小寫,可是庫名,表名之類的不屬於與指令的是區分大小寫的。
1.建立庫 mysql> create database 庫名; 2.查看數據庫中的全部庫 mysql> show databases; 3.進入數據庫 mysql> use 庫名; 4.查看當前所在的庫 mysql> select database();
建立表
必須先使用mysql> use 庫名;
語句進入某個庫中,才能建立表web
語法: create table 表名( 字段名1 類型[(寬度) 約束條件], 字段名2 類型[(寬度) 約束條件], 字段名3 類型[(寬度) 約束條件] )[存儲引擎 字符集]; ==在同一張表中,字段名是不能相同 ==寬度和約束條件可選 ==字段名和類型是必須的 ========================================================= 1.建立表: mysql> create table t1(id int, name varchar(20), age int); 字段 類型 字段 類型(長度), 字段 類型 2.查看有哪些表 mysql> show tables; 3.查看錶結構: mysql> desc 表名; 4.查看錶裏面的全部記錄: 語法: select 內容 from 表名; mysql> select * from t1; *:表明全部內容 5.查看錶裏面的指定字段: 語法:select 字段,字段 from 表名;(能夠查一個字段,也能夠是多個,中間用逗號隔開) mysql> select name,age from t1; 6.查看錶的狀態 mysql> show table status like '表名'\G #\G表示查看的內容會一條記錄一條記錄顯示。用的\G就不用添加分號了 7.修改表名稱 方式1、語法:rename table 舊錶名 to 新表名; mysql> rename table t1 to t2; Query OK, 0 rows affected (0.00 sec) 方式2、語法:alter table 舊錶名 rename 新表名; mysql> alter table t2 rename t3; 8.使用edit(\e)編輯------瞭解 mysql> \e #能夠寫新的語句,調用的vim編輯器,在裏面結尾的時候不加分號,保存退出以後在加「;」 -> ; 9.刪除表 mysql> drop table 表名; 10.刪除庫 mysql> drop database 庫名;
常見的約束條件sql
不分大小寫: PRIMARY KEY (PK) 標識該字段爲該表的主鍵,能夠惟一的標識記錄,不能夠爲空 UNIQUE + NOT NULL FOREIGN KEY (FK) 標識該字段爲該表的外鍵,實現表與表(父表主鍵/子表1外鍵/子表2外鍵)之間的關聯 NULL 標識是否容許爲空,默認爲NULL。 NOT NULL 標識該字段不能爲空,能夠修改。 UNIQUE KEY (UK) 標識該字段的值是惟一的,能夠爲空,一個表中能夠有多個UNIQUE KEY AUTO_INCREMENT 標識該字段的值自動增加(整數類型,並且爲主鍵) DEFAULT 爲該字段設置默認值 UNSIGNED 無符號,正數
1.主鍵 每張表裏只能有一個主鍵,不能爲空,並且惟一。 定義兩種方式: mysql> create table 表名(字段1 類型 primary key,字段2 類型); #在字段1的類型後面定義 mysql> create table 表名(字段1 類型,字段2 類型,primary key(字段1));# 在最後定義,並指定哪一個字段 刪除主鍵 mysql> alter table 表名 drop primary key;
2.索引 索引:當查詢速度過慢能夠經過創建優化查詢速度,能夠看成調優 index(key)每張表能夠有不少列作index 建立索引:兩種 mysql> create table 表名(字段1 類型 primary key,字段2 類型,index (字段2)); mysql> create table 表名(字段1 類型 primary key,字段2 類型,index 別名(字段2)); #給字段2作的索引並起別名
3.自增 auto_increment--------自增 (每張表只能有一個字段爲自曾) (成了key才能夠自動增加) mysql> CREATE TABLE 表名 ( -> 字段1 類型 PRIMARY KEY AUTO_INCREMENT, -> 字段2 類型, -> 字段3 類型 -> );
1.添加新字段 alter table 表名 add 字段 修飾符; mysql> alter table 表名 add 字段名 類型;#添加的字段 mysql> alter table 表名 add (字段1 類型,字段2 類型);#添加多個字段,中間用逗號隔開。 alter table 表名 add 添加的字段(和修飾) after name; #把添加的字段放到name後面 alter table 表名 add 添加的字段(和修飾) first; #把添加的字段放在第一個
2.修更名稱、數據類型、修飾符 alter table 表名 change 舊字段 新字段 修飾符; #change修改字段名稱,類型,約束,順序 mysql> alter table 表名 change 舊字段 新字段 類型 after 字段1; #修改字段名稱與修飾並放在字段1後面 3.修改字段類型,約束,順序 alter table 表名 modify 字段 類型 修飾符; #modify 不能修改字段名稱 mysql> alter table 表名 modify 字段 類型 after 字段名; #修改修飾並更換位置 4.刪除字段 mysql> alter table 表名 drop 字段名; #drop 丟棄的字段。
插入數據shell
字符串必須引號引發來 記錄與表頭相對應,表頭與字段用逗號隔開。 1.添加一條記錄 insert into 表名(字段1,字段2,字段3,字段4) values(1,"yjssjm","man",90); 注:添加的記錄與表頭要對應, 2.添加多條記錄 mysql> insert into 表名(字段1,字段2,字段3,字段4) values(2,"yjssjm","woman",19), (3,"xiaoming","man",20); 3.用set添加記錄 mysql> insert into 表名 set 字段1=值1,字段2=值2,字段3=值3,字段4=值4; 4.更新記錄 update 表名 set 修改的字段 where 給誰修改; mysql> update 表名 set 字段1=值 where 字段2=值; 5.刪除記錄 1.刪除單條記錄 mysql> delete from 表名 where 字段1=值; #刪除那個記錄,等於幾會刪除那個整條記錄 2.刪除全部記錄 mysql> delete from 表名;
1. 登陸和退出MySQL 遠程登錄: 客戶端語法:mysql -u 用戶名 -p 密碼 -h ip地址 -P端口號:若是沒有改端口號就不用-P指 定端口 # mysql -hip地址 -P 3306 -uroot -p'密碼' # mysql -hip地址 -P 3306 -uroot -p'密碼' -e 'show databases;' -h 指定主機名 【默認爲localhost】 -P MySQL服務器端口 【默認3306】 -u 指定用戶名 【默認root】 -p 指定登陸密碼 【默認爲空密碼】 -e 接SQL語句,能夠寫多條拿;隔開 # mysql -hip地址 -P 3306 -uroot -p'密碼' -D mysql -e 'show databases;' 此處 -D mysql爲指定登陸的數據庫
2.建立表 mysql> create user tom@'localhost' identified by '密碼'; #建立用戶爲tom,並設置密碼。 mysql> FLUSH PRIVILEGES; #更新受權表 注: identified by :設置密碼 在用戶tom@' ' 這裏 選擇: %:容許遠程登錄。也能夠指定某個ip,容許某個ip登錄。也能夠是一個網段。 %:包括全部的主機,不包括本機(127.0.0.1),可是不包括(localhost) ==客戶端主機 % 全部主機 192.168.13.% 192.168.13.0網段的全部主機 192.168.13.252 指定主機 192.168.13.252 localhost 指定主機本機
3.使用命令受權:grant 也可建立新帳戶(不事後面的版本會移除這個功能,建議使用create user) 語法格式: grant 權限列表 on 庫名.表名 to '用戶名'@'客戶端主機' IDENTIFIED BY 'Qf@123'; ==權限列表 all 全部權限(不包括受權權限) select,update select, insert ==數據庫.表名 *.* 全部庫下的全部表 Global level web.* web庫下的全部表 Database level web.stu_info web庫下的stu_info表 Table level 給剛纔建立的用戶tom受權: mysql> grant select,insert on *.* to 'tom'@'localhost'; mysql> FLUSH PRIVILEGES;
4.刪除用戶 方法一:DROP USER語句刪除 DROP USER '用戶名'@'localhost'; 方法二:DELETE語句刪除 DELETE FROM mysql.user WHERE user='tom' AND host='localhost'; 更新受權表: FLUSH PRIVILEGES;
大家的評論和點贊是我寫文章的最大動力,蟹蟹。數據庫