mysql中整理设置__MySQL整理
登錄
命令:mysql -h [IP 地址/域名] -P [端口] -u [用戶名] -p[密碼]
端口默認是3306
mysql -hlocalhost -uroot -p
斷開
exit;
\q; 或quit;
創建一個數據庫,就會產生對應存儲數據的的文件夾,每個文件夾下都有opt文件,保存對應的數據庫選項。數據庫選項有字符集和校對集。
顯示數據庫
系統數據庫:information_schema :保存數據庫所有的結構信息。
mysql:保存權限關系
performance_schema:效率庫
顯示部分數據庫:
show databases like "匹配模式"
_:當前位置匹配單個字符
%:匹配多個字符
數據表
表選項:engine:存儲引擎;
charset:字符集
collate:校對集
create database.table(
字段名 字段類型,……
)engine= innodb charset=utf8;
復制一個表結構:create table newtable like database.table1
每創建一個數據表,在數據庫文件夾下會創建一些文件(如.frm)
查看表結構:desc 表名
查看數據表創建語句:show create table 表名;
修改表結構:alter table 表名 add 字段 屬性 first/after 字段;
修改表字段:alter table 表名 change 舊字段名 新字段名 字段類型;
修改字段屬性:alter table 表名 modify 字段名 新類型;
刪除字段:alter table 表名 drop 字段;
刪除表:drop table 表名;
插入數據:
insert into 表名 (字段列表) values (對應字段列表的值); 值列表只需與字段列表對應即可,無需與表結構相同。
查詢數據:
查詢所有數據:select * from 表;
查詢部分數據:select 字段1,字段2,字段3 from 表;
條件查詢: select 字段/* from 表 where 條件;
刪除數據:delete from 表名 [條件];
更新數據:update 表名 set 字段=新值 where 條件;
顯示長度:類型后邊的數字指顯示長度,指最長可以顯示的長度。
zerofill:從左側填充0.
mysql中小數分浮點型(float、double)和定點型(decimal),定點型可以保證整數部分的精確,浮點型只有前7位可能精確。
定點數應用:涉及錢的時候用定點數
時間日期類型:
date:3個字節,格式為YYYY-mm-dd
time:3個字節,格式為HH:ii:ss
datetime:8個字節,格式為date和time的合并
timestamp:時間戳,格式與datetime相同,默認為當前時間,不能為空。timestamp的記錄如果被更改,自己會自動更新。
year:1個字節 范圍為1900-2155年。
通常時間的處理在編程中處理,mysql中只保存時間戳,用整數存儲。
列屬性
NULL,default,comment ,主鍵,自增長,唯一鍵。
增加主鍵:create table 表名(字段 類型 primary key,……) charset utf8;
create table 表名(字段 類型,……,primary key(字段))charset utf8;
alter table 表名 add primary key(字段);
刪除主鍵:alter table 表名 drop primary key;
主鍵約束:當前字段不能為空,字段的數據不能有重復。
唯一鍵,創建方式與主鍵類似。
新增數據:
主鍵沖突解決方案:
主鍵沖突更新:如果插入的過程中主鍵沖突,采用更新方法
insert into 表名 values(值列表) on duplicate key update 字段=新值;
主鍵沖突替換:主鍵沖突后,刪除原來的數據,重新插入新數據。
replace into [字段列表] values(值列表);
蠕蟲復制:從已有的數據中獲取數據,并將獲取到的數據插入到數據表中。
insert into 表名(字段) select */字段 from 表名;
應用:通常復制的是重復數據,可以在短期內快速增加表的數據量,從而測試表的壓力,還可以測試表的索引。
更新數據:
update 表名 set 字段名 = 新值 where 判斷條件
如果沒有條件,是全表更新,可以使用limit 來顯示更新的數量。
update 表名 set 字段名 = 新值 [where 判斷條件] limit 數量;
查詢數據:
select 選項 字段列表 from 數據源 where 條件 group by 條件 having 條件 order by 條件 limit 限制;
選項:all(默認),distinct
別名:字段 [as] 別名
數據源:from 表1,表2……
動態數據:from [子查詢] as 別名;
select * from (select * from table) as alias;
group by : 是為了分組后進行數據統計,將數據按照字段分組后,只會保留每組的第一條記錄。count()統計每組中的數量;avg();group_concat(字段):將指定的字段合并。
group by多分組:group by 字段1,字段2;
group by分組排序:group by 字段1 [asc|desc],字段[asc|desc];
h回溯統計:group by 字段[asc|desc] with rollup;
having:
1.用于篩選條件,與where的區別是,having 用在group by后邊,用于對分組的數據進行條件篩選,可以使用聚合函數,where是從表中取數據,將數據從磁盤裝進內存。
order by:
order by 字段1,字段2……;先按字段1排序,后按字段2排序
limit:
應用:1、用來限制記錄獲取的數量
2、分頁,用來獲取指定區間的數據:limit offset,length;
聯合查詢
union:select 字段 union select 子句;默認去重。
使用order by時,兩個select要括起來。且必須加limit才能生效。
行子查詢:
主查詢 where 條件 (構造行元素)=(行子查詢);在行子查詢中就可以使用聚合函數。
列子查詢:
主查詢 where 條件 字段 in (列子查詢);
行子查詢和列子查詢都屬于where子查詢;
表子查詢:
返回多行多列;用于from數據源,屬于from子查詢。
select 字段表 from (表子查詢) as 別名……;
exists子查詢:
where exists(查詢語句);
整庫數據備份(SQL數據備份)
不只備份數據,還備份sql指令。
產生的備份結構很大,不適合特大型數據備份,也不適合數據變換頻繁型的數據庫備份。
語法:mysqldump -hPup 數據庫名 > 備份地址
整庫備份
單表備份
多表備份
數據還原:
1、使用mysql客戶端:mysql -hPup 數據庫
2、導入sql指令
source SQL文件位置
mysql用戶管理
mysql中所有的用戶信息保存在mysql庫中的user表中
創建用戶:create user '用戶名'@'' identified by '密碼';
刪除用戶:drop user '用戶名'@'IP主機';
更改密碼:set password for 用戶=password();
權限管理:
數據權限:增刪改查
結構管理(create\drop)
管理權限(create user\grant\revoke)
授予權限:
grant 權限列表 on 數據庫.表 to 用戶;
取消權限:
revoke 權限列表 on 數據庫.表 from 用戶;
刷新權限:
flush privileges;
事務
自動事務:
客戶端發送一條sql指令后,服務器不用等待用戶反饋,自動將結果同步到數據表。
系統通過autocommit變量來控制,可通過show variables like "autocommit"查看。
關閉自動事務:set autocommit =off;
自動事務關閉后,使用commit命令提交同步到數據表,使用rollback命令回滾,清空之前的操作。提交命令后,在當前客戶端可以看到提交后的數據。
手動事務:
需要用戶手動發送事務操作指令實現。
對應的命令:
1、start transaction;//這條語句后面的所有語句都不會直接寫入數據表
2、事務處理;
3、事務提交:commit、rollback;
回滾點:savepoint,事務中前面一部分事務執行成功,無需重新執行則在該點設置一個記號,如果后面的事務執行失敗,則回到這個位置。
增加回滾點:savepoint 回滾點名字;
回到回滾點:rollback to 回滾點。
總結
以上是生活随笔為你收集整理的mysql中整理设置__MySQL整理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql子查询是什么_mysql子查询
- 下一篇: asp连接mysql字符串_asp连接数