經常使用的Mysql語句你知道多少?

1.數據庫存儲引擎

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中,指令不分大小寫,可是庫名,表名之類的不屬於與指令的是區分大小寫的。

2.增刪改查

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 庫名;

3.約束

常見的約束條件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 類型
-> );

4.表操做

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 表名;

5.權限管理

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;

大家的評論和點贊是我寫文章的最大動力,蟹蟹。數據庫

相關文章
相關標籤/搜索