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