mysql知识点回顾(一)
生活随笔
收集整理的這篇文章主要介紹了
mysql知识点回顾(一)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
回顧mysql中的常用知識點(diǎn)
?
上圖為win版本啟動關(guān)閉服務(wù)方式。 連接mysql命令:mysql -u alex -p 查看所有數(shù)據(jù)庫:show databases; use db_name ;切換數(shù)據(jù)庫 show tables; 顯示所有表 select * from 表名; select name,age,id from 表名; 連接: 默認(rèn):用戶root 創(chuàng)建用戶: create user 'alex'@'192.168.1.1' identified by '123123'; ?identified 設(shè)置密碼 create user 'alex'@'192.168.1.%' identified by '123123'; ?%代表任意 create user 'alex'@'%' identified by '123123'; ?所有ip 用戶管理 創(chuàng)建用戶 create user '用戶名'@'IP地址' identified by '密碼'; 刪除用戶 drop user '用戶名'@'IP地址'; 修改用戶 rename user '用戶名'@'IP地址'; to '新用戶名'@'IP地址';; 修改密碼 set password for '用戶名'@'IP地址' = Password('新密碼') PS:用戶權(quán)限相關(guān)數(shù)據(jù)保存在mysql數(shù)據(jù)庫的user表中,所以也可以直接對其進(jìn)行操作(不建議) 授權(quán) 權(quán)限? ? 人 grant 權(quán)限 grant select,insert on db1.t1 to 'alex'@'%' ; 設(shè)置alex只能查看db1數(shù)據(jù)庫的t1表 ? grant all privileges on db1.t1 to 'alex'@'%' ; alex除了grant以外的所有權(quán)限都可以 revoke?all privileges from db1.t1 to 'alex'@'%' ; 取消這條權(quán)限 show grants for '用戶'@'IP地址'????????????????? -- 查看權(quán)限 grant? 權(quán)限 on 數(shù)據(jù)庫.表 to?? '用戶'@'IP地址'????? -- 授權(quán) revoke 權(quán)限 on 數(shù)據(jù)庫.表 from '用戶'@'IP地址'????? -- 取消權(quán)限 SQL語句規(guī)則 操作文件夾(操作數(shù)據(jù)庫) create database db2; create database db2 default charset utf8; 數(shù)據(jù)庫默認(rèn)utf8 show databases; drop database db2; 操作文件(操作表) show tables; create table t1(id int,name char(10)); 創(chuàng)建表,id,name字段,name限制10 個字符,超出取前十個。 create table t1(id int,name char(10)) default charset=utf8; 表默認(rèn)是utf8 create table t1( ? ? #列名,類型,null, ?? ?#列名,類型,not null,不可以為空 ? ? #列名,類型,not null,default 1, ?? ?#列名,類型,not null,auto_increment,自增 ?? ?id int, ?? ?name char(10) ) engine=innodb default charset=utf8; 表默認(rèn)是utf8,引擎默認(rèn)是innodb select * from t1; innodb 支持事務(wù),可以回滾,原子性操作。 myisam 不支持事務(wù) auto_increment 表示:自增 primary key:表示,約束(不能重復(fù),且不能為空);加速查找, 一個表里只能有一個自增列,只能有一個主鍵。但是主鍵不一定是一行。 清空表: delete from t1; 清空表,新增數(shù)據(jù)的自增id從之前的接著。 truncate table t1;清空表,自增id從頭開始。 刪除表: drop table t1; 查看表結(jié)構(gòu)以及類型: desc tabename; 查看表是如何創(chuàng)建的: show create table? tablename; show create table? tablename \G;?加一個\G?可以去掉空格 自增: 通過命令?更改下次插入數(shù)據(jù)時,自增ID的值: alter table tablename AUTO_INCREMENT=13;更改下次插進(jìn)來數(shù)字,自增主鍵為13 mysql中自增的步長?
操作文件內(nèi)容(操作內(nèi)容) 插入數(shù)據(jù): insert into t1(id,name) values(1,'egon'); 刪除數(shù)據(jù): delete from t1 where id<6 修改: update t1 set age=18;?將age列全部修改為18 update t1 set age=18 where age=17;?將age為17的改為18 查看數(shù)據(jù): select * from t1; create table t3(id int auto_increment primary key,name char(10)) default charset=utf8; ?設(shè)置id為主鍵 并自增。 insert into t3(name) values('abcdef'); ?所以插入數(shù)據(jù)的時候只需要插入name字段即可。 數(shù)據(jù)類型 數(shù)字 tinyint? int unsigned 表示創(chuàng)建表的時候字段屬性沒有符號(比如負(fù)號) signed 表示有符號的 bigint 以上三種就是長度的區(qū)別 FLOAT 只能表示不太精準(zhǔn)的小數(shù),如果長度不大,可以使用 DOUBLE 只能表示不太精準(zhǔn)的小數(shù),如果長度不大,可以使用 decimal 該類型小數(shù)非常精準(zhǔn),因為內(nèi)部原理是將長的小數(shù)按字符串存儲的。 decimal(10,5) ?10代表總位數(shù),5代表小數(shù)點(diǎn)后幾位 bigint支持的數(shù)字的大小范圍為: 19位,存電話號碼等。 有符號范圍:-9223372036854775808 到 9223372036854775807 int支持的數(shù)字范圍為: 10位, 有符號范圍:-2147483648 到 2147483647??? 無符號范圍:0-4294967295 字符串 char(10) ? ? 如果字符沒有占滿,則會自動填充至10個字符,比如填充空格 varchar(10) ? ? 如果沒有填滿,在硬盤中只會占用實際字符長度,節(jié)省空間,查找速度沒有char快11 char和varchar最高只能存儲255個字符 text可以存儲65535個字符 如果更多的內(nèi)容,需要寫到文件中,將路徑寫到數(shù)據(jù)庫。 優(yōu)化建議:創(chuàng)建表時,將定長的數(shù)據(jù)往前放,變長的往后放。 時間類型 DATETIME 枚舉 enum?
相當(dāng)于給插入數(shù)據(jù)的時候規(guī)定了一個選項 單選字符串?dāng)?shù)據(jù)類型,適合存儲表單界面中的“單選值”。 設(shè)定enum的時候,需要給定“固定的幾個選項”;存儲的時候就只存儲其中的一個值。 設(shè)定enum的格式: enum("選項1","選項2","選項3",...); 實際上,enum的選項都會對應(yīng)一個數(shù)字,依次是1,2,3,4,5...,最多有65535個選項 使用的時候,可以使用選項的字符串格式,也可以使用對應(yīng)的數(shù)字。?
SET規(guī)定,只能插入a,b,c,d的任意組合 多選字符串?dāng)?shù)據(jù)類型,適合存儲表單界面的“多選值”。 設(shè)定set的時候,同樣需要給定“固定的幾個選項”;存儲的時候,可以存儲其中的若干個值。 設(shè)定set的格式: set("選項1","選項2","選項3",...) 同樣的,set的每個選項值也對應(yīng)一個數(shù)字,依次是1,2,4,8,16...,最多有64個選項 使用的時候,可以使用set選項的字符串本身(多個選項用逗號分隔),也可以使用多個選項的數(shù)字之和(比如:1+2+4=7) ===================================================================================== 外鍵 create table userinfo( uid bigint auto_increment primary key, name varchar(32), department_id int, constraint fk_user_depart foreign key ("department_id",) references department('id')? ?#外鍵約束 )engine=innodb default charset=utf8; create table department( id?bigint auto_increment primary key, ? ? title char(15) )engine=innodb default charset=utf8; 外鍵的名字,上面標(biāo)紅處不能與別的外鍵重名,建議用表_表這種起名 主鍵:?
上圖為主鍵的兩種寫法。 一個表只能有一個主鍵,主鍵可以由多列組成。轉(zhuǎn)載于:https://www.cnblogs.com/ArmoredTitan/p/8492159.html
總結(jié)
以上是生活随笔為你收集整理的mysql知识点回顾(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos 上 crontab 计划任
- 下一篇: ORACLE设置用户密码不过期