1000學(xué)習(xí)做網(wǎng)站貴嗎搜索關(guān)鍵詞推薦
一.Mysqld數(shù)據(jù)庫類型
常用的數(shù)據(jù)類型
int | 整型 ? 無符號[0-4294967296(2的32次方)-1],有符號[-2147483648(2的31次方)-2147483647] |
float | 單精度浮點(diǎn)?? ?4字節(jié)32位 |
double | 雙精度浮點(diǎn)?? ?8字節(jié)64位 |
char | 固定長度的字符類型 |
varchar | 可變長度的字符類型 |
text | 文本 |
image | 圖片 |
decimal(5,2) | 5個有效長度數(shù)字,小數(shù)點(diǎn)后面有2位 |
二.查看數(shù)據(jù)表結(jié)構(gòu)的操作
查看當(dāng)前的 MySQL 版本信息及連接用戶名:
SELECT VERSION();
SELECT USER();
1.查看當(dāng)前服務(wù)器中的數(shù)據(jù)庫?
SHOW DATABASES; #大小寫不區(qū)分,分號“;”表示結(jié)束
?MySQL會附帶4個系統(tǒng)數(shù)據(jù)庫:?
- information_schema:主要存儲系統(tǒng)中的一些數(shù)據(jù)庫對象信息,如數(shù)據(jù)庫名,數(shù)據(jù)庫的表,表欄的數(shù)據(jù)類型與訪問權(quán)限等
- mysql:主要存儲系統(tǒng)的用戶權(quán)限信息
- performance_schema:主要存儲數(shù)據(jù)庫服務(wù)器性能參數(shù)信息
- sys:MySQL5.7之后引入的一個新的 sys 數(shù)據(jù)庫,sys 庫里面的表、視圖、函數(shù)以及存儲過程可以讓用戶快速了解MySQL的一些信息,它的數(shù)據(jù)來源于performance_schema
2.查看數(shù)據(jù)庫中包含的表
USE 數(shù)據(jù)庫名;
SHOW TABLES;
#在不切換庫的情況下直接查看表:show tables from 數(shù)據(jù)庫名;
?
3.查看表的結(jié)構(gòu)(字段)?
USE 數(shù)據(jù)庫名;
DESCRIBE [數(shù)據(jù)庫名.]表名;
可縮寫成:DESC 表名;
#在不切換庫下查看某個表的結(jié)構(gòu):desc 庫名.表名;
三.SQL語句?
SQL語句用于維護(hù)管理數(shù)據(jù)庫,包括數(shù)據(jù)查詢、數(shù)據(jù)更新、訪問控制、對象管理等功能。
SQL語言分類:
- DDL:用于管理數(shù)據(jù)庫對象(庫、表、索引 等)
- DML:數(shù)據(jù)操縱語言,用于對表中的數(shù)據(jù)進(jìn)行管理
- DQL:數(shù)據(jù)查詢語言,用于從數(shù)據(jù)表中查找符合條件的數(shù)據(jù)記錄
- DCL:數(shù)據(jù)控制語言,用于設(shè)置或者更改數(shù)據(jù)庫用戶或角色權(quán)限
1.DDL
1)創(chuàng)建新的數(shù)據(jù)庫
CREATE DATABASE 數(shù)據(jù)庫名;
2)創(chuàng)建新的表?
CREATE TABLE 表名 (字段1 數(shù)據(jù)類型,字段2 數(shù)據(jù)類型[,...][,PRIMARY KEY (主鍵名)]);
#主鍵一般選擇能代表唯一性的字段不允許取空值(NULL),一個表只能有一個主鍵。
3)刪除指定的數(shù)據(jù)表
DROP TABLE [數(shù)據(jù)庫名.]表名; #如不用USE進(jìn)入庫中,則需加上數(shù)據(jù)庫名
4)刪除指定的數(shù)據(jù)庫
DROP DATABASE 數(shù)據(jù)庫名;
5)修改表結(jié)構(gòu)?
alter table 舊表名 rename 新表名;
alter table 表名 add 新字段 數(shù)據(jù)類型 [約束屬性];
alter table 表名 change 舊字段 新字段 數(shù)據(jù)類型 [約束屬性];
alter table 表名 drop 字段名;alter table 表名 add primary key(字段名);
alter table 表名 drop primary key;
6)在數(shù)據(jù)表中刪除指定的數(shù)據(jù)記錄?
在數(shù)據(jù)表中刪除指定的數(shù)據(jù)記錄
DELETE FROM 表名 [WHERE 條件表達(dá)式];例:
DELETE FROM qwer123 WHERE id=4;
7)克隆表?
create table 新表名 like 舊表名; #克隆表結(jié)構(gòu)
insert into 新表名 select * from 舊表名; #克隆表數(shù)據(jù) 可實現(xiàn)表結(jié)構(gòu)和表數(shù)據(jù)與舊表都一樣create table 新表名 (select * from 舊表名); #表數(shù)據(jù)和舊表是一樣的,新表的結(jié)構(gòu)和舊表的不一定一樣
8)清空表?
清空表
delete from 表名; #一條一條的刪除記錄,清空表效率較慢;AUTO_INCREMENT自增字段仍保持原有的記錄truncate table 表名; #直接重建表,清空表效率較快;AUTO_INCREMENT自增字段的記錄也會重置
2.DML?用于管理表數(shù)據(jù)
1)向數(shù)據(jù)表中插入新的數(shù)據(jù)記錄
INSERT INTO 表名(字段1,字段2[,...]) VALUES(字段1的值,字段2的值,...);SELECT * FROM xy101; #查詢表的數(shù)據(jù)記錄
2)修改、更新數(shù)據(jù)表中的數(shù)據(jù)記錄
UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 條件表達(dá)式];
3.DQL:用于查詢表數(shù)據(jù)
SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 條件表達(dá)式];
select * from 表名\G #以列表方式豎向顯示
select * from 表名 limit 2; #只顯示頭2行
select * from 表名 limit 2,3; #顯示第2行后的前3行
4.DCL:用于管理用戶和權(quán)限?
create user '用戶名'@'來源地址 identified by '密碼';
來源地址:
localhost ip 網(wǎng)段 %(任意地址) 主機(jī)名 修改用戶名
rename user 'root'@'%' to 'wei'@'%';
修改密碼
set password for '用戶名'@'來源地址' = password('密碼');只可以root用戶
alter user '用戶名'@'來源地址' identified by '密碼'; 修改密碼
用戶權(quán)限管理:
grant 權(quán)限1, 權(quán)限2 ON 庫名.表名 to '主機(jī)名'@'來源地址'identified by 密碼
查看權(quán)限
show grant for '用戶名'@'來源地址';
撤回權(quán)限
revoke 權(quán)限列表 on 數(shù)據(jù)庫名.表名 from '用戶名'@'來源地址'
四.拓展
1.如何找回root密碼
1)修改MySQL配置文件,在 [mysqld] 配置項下面添加配置 skip-grant-tables
2)重啟MySQL服務(wù),使用 mysql 命令即可直接登錄數(shù)據(jù)庫
3)執(zhí)行命令 update mysql.user set authentication_string=password('密碼') where user='root'; 來修改root用戶密碼
4)還原MySQL配置文件,再重啟MySQL服務(wù),即可使用命令 mysql -u root -p密碼 [-h 服務(wù)器地址 -P 端口] 登錄數(shù)據(jù)庫
?2.權(quán)限管理
grant 權(quán)限1,權(quán)限2,.... on 庫名.表名 to '用戶名'@'來源地址' [identified by '密碼']; #在5.7或之前支持 grant 創(chuàng)建新用戶和授予權(quán)限,8.0開始只能用于授予權(quán)限all [privileges] *.*(代表 任意庫.任意表)flush privileges;show grant for '用戶名'@'來源地址';revoke 權(quán)限列表 on 庫名.表名 from '用戶名'@'來源地址';all