day37:MySQL基本操作
- 2020 年 8 月 24 日
- 筆記
- PythonS31-筆記, Python全棧31期-筆記
目錄
part1:登錄mysql的完整語法
# (1) 登錄mysql語法 默認root賬戶 是系統最高權限用戶 mysql -uroot -p 127.0.0.1 =>localhost 本地ip地址 # (2) 退出mysql exit 或者 \q # (3) 遠程連接mysql服務器 mysql -uroot -p -h192.168.65.135
part2:查詢用戶/設置密碼/去除密碼
# 查詢當前登錄的用戶是誰 select user() # 設置密碼 set password = password("123456") # 去除密碼 set password = password("")
part3:給ip/網段/所有ip設置賬號密碼
# 給具體某個ip設置賬號密碼,用來訪問數據庫(公網ip) create user 'ceshi100'@'192.168.65.1' identified by '333'; # 給具體某個網段下的所有ip設置共同的賬號密碼,用來訪問數據庫(公網ip) %代表任意的ip 0~255 create user 'ceshi101'@'192.168.174.%' identified by '444'; # 所有的ip都可以登錄到服務器數據庫中 create user 'ceshi102'@'%' identified by '555';
part4:查看權限
# 刷新權限,立刻生效 flush privileges # 查看哪個ip哪個用戶的權限 '''USAGE 沒有任何權限''' show grants for 'ceshi102'@'%'; +--------------------------------------+ | Grants for ceshi102@% | +--------------------------------------+ | GRANT USAGE ON *.* TO 'ceshi102'@'%' | +--------------------------------------+
part5:添加權限/刪除權限/刪除用戶
grant 權限 on 數據庫.表名 to '用戶名'%'ip地址' identified by '密碼' """ # 主要權限 select 查看數據表的權限 insert 插入數據表的權限 update 更新數據表的權限 delete 刪除數據表的權限 drop 刪除數據庫的權限 * 代表所有 """ grant select,drop on *.* to 'ceshi102'@'%' identified by "333" # all 代表所有權限 grant all on *.* to 'ceshi102'@'%' identified by "333" # 移除權限 # 單個 revoke drop on *.* from 'ceshi102'@'%' # 所有 revoke all on *.* from 'ceshi102'@'%' # 刪除用戶 drop user 'ceshi102'@'%'
part6:操作數據庫:database
# (1) 操作[數據庫] (文件夾) '''增''' # 創建一個數據庫 create database db0824 charset utf8; '''查''' # 查看所有數據庫 show databases
# 查看建立數據庫的語句 show create database db0824 # CREATE DATABASE `db0824` /*!40100 DEFAULT CHARACTER SET utf8 */ '''改''' alter database db0824_1 charset gbk '''刪''' drop database db0824_1;
part7:操作表:table
# (2) 操作[數據表] (文件) # 先選擇數據庫 use 數據庫名 '''增''' # 字段名1 類型1 ,字段名2 類型2 , ... ... create table t1(id int , name char); '''查''' # 查看所有表 show tables; # 查看建表語句 配合\G 可以垂直顯示 show create table t1; """ Create Table: CREATE TABLE `t1_1` ( `id` int(11) DEFAULT NULL, `name` char(1) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 """ # 查看錶結構 desc t1 '''改''' # modify 只能改變數據類型 alter table t1 modify name char(5) # change 連字段名 + 類型一起改變 alter table t1 change name newname char(4) # add 添加字段 alter table t1 add age int; # drop 刪除字段 column列 alter table t1 drop column age # rename 更改表名 alter table t1 rename t1_2 '''刪''' drop table t1_2;
part8:操作表中的數據(記錄)
# (3) 操作[記錄] (文件中的數據) '''增''' # 一次插入一條數據 '''insert into 表名(字段1,字段2,...) values(值1,值2, .... )''' insert into t1_1(id,name) values(1,"xboy1"); # 一次插入多條數據 insert into t1_1(id,name) values(2,"xboy2"),(3,"xboy3"),(4,"xboy4"); # 不指定具體字段插入(默認把所有字段對應的值插一遍) insert into t1_1 values(5,'xboy5'); # 指定單個字段插入數據 insert into t1_1(name) values('xboy6'); '''查''' # * 代表所有 select * from t1_1; # 指定字段進行查詢 select id,name from t1_1; '''改''' # update 表名 set 字段=值 where 條件 update t1_1 set name="王聞你真帥" where id = 1 # 切記更改時,加上條件,否則全都改掉了 update t1_1 set name="王聞你真帥" '''刪''' # 指定id=2的這條數據刪除 delete from t1_1 where id = 1 # 如果不加條件,刪除所有數據 delete from t1_1 # 重置數據表 (刪除數據 + 重置id) truncate table t1_1;
part9:MySQL中數據類型
1.整型
tinyint 1個位元組 有符號(-128 ~ 127) 無符號(unsigned) (0 ~ 255) 小整型值
int 4個位元組 有符號(-21億 ~ 21億 左右) 無符號(unsigned) (0 ~ 42億) 大整型值
create table t1(id int , age tinyint ); insert into t1 values(2200000000,1) # error insert into t1 values(2100000000,1) insert into t1 values(2100000000,128) # error insert into t1 values(2100000000,127)
2.浮點型
float(255,30) 單精度,總長度最多255位,小數長度最多30位,整數長度最多225位
double(255,30) 雙精度,總長度最多255位,小數長度最多30位,整數長度最多225位
decimal(65,30) 金錢類型,使用字符串的形式保存小數,總長度最多65位,小數長度最多30位,整數長度最多35位
"""默認存在四捨五入""" create table t2(f1 float(5,2) , f2 double(5,2) , f3 decimal(5,2)); insert into t2 values(1.77777777777777777777777777,1.77777777777777777777777777,1.77777777777777777777777777);
存儲結果如下圖所示
"""float 默認小數保留5位,double小數位截取16位,decimal(10,0) 默認保留整數,存在四捨五入""" create table t3(f1 float,f2 double ,f3 decimal); insert into t3 values(1.77777777777777777777777777,1.77777777777777777777777777,1.77777777777777777777777777);
存儲結果如下圖所示
3.字符串類型
char 字符長度 255個
varchar 字符長度 21845個 (注意:總位元組數不超過65535)
char(11) 定長 : 固定開闢11個字符長度的空間(手機號,身份證號,銀行卡), 開闢空間速度上char速度更快
varchar(11) 變長 : 最多開闢11個字符長度的空間(評論,消息留言,地址), 開闢速度相較於char慢一點.
text 文本類型,存論文,小說,文章..
create table t5(c char(11), v varchar(11) , t text); insert into t5 values('22222',"33333","44444"); insert into t5 values('22222',"33333333333333333333","44444"); # error # concat 拼接任意長度的字符串 select concat(c,":",v,":",t) from t5; # mysql 中函數 select user() select concat() select concat(參數1,參數2,參數3 , ... ) 把所有的參數拼接在一起
concat拼接後的結果如下圖所示
part10:枚舉和集合
enum 枚舉 : 從列出來的數據當中選一個,比如性別
set 集合 : 從列出來的數據當中選多個(自動去重),比如愛好
create table t6( id int, name varchar(10), money float(6,3), sex enum("男性","女性","禽獸","人妖","雌雄同體","半獸人","阿凡達"), hobby set("吃肉","抽煙","喝酒","喝假酒") ); # 正常 insert into t6(id , name ,money , sex , hobby) values(1,"克拉伊買買提",56.7891,"半獸人","喝假酒,抽煙"); # 自動去重 insert into t6(id , name ,money , sex , hobby) values(1,"克拉伊買買提",56.7891,"半獸人","喝假酒,抽煙,抽煙,抽煙,抽煙");
存儲結果如下圖所示