1.MySQL基礎學習
阿新 • • 發佈:2021-01-06
1.MySQL基礎學習
<?php /** * Created by PhpStorm. * User: laotianwy */ /* * 1.連結本地 * 1. mysql -uroot -proot * 2. mysql -uroot -p * * 2,展示所有資料庫 * 1.show create databases; * * 3.建立資料庫 * 1.create database name;(name是資料庫名字) * * 4.建立表 * mysql> create table school ( -> id int primary key auto_increment, -> name varchar(10) not null -> )engine=innodb; * 5.連結資料庫報錯 ERROR 2013 (HY000): Lost connection to MySQL server during query * 解決:set GLOBAL interactive_timeout=2880000; set GLOBAL wait_timeout=2880000; 兩者都要設定 * * 6.建立一個負責表 * mysql> create table stu ( -> id int auto_increment primary key comment 'primary key', -> name varchar(20) not null comment '姓名', -> `add` varchar(50) not null default '地址不詳' comment '地址', -> score int comment '成績,可以為空' -> )engine=myisam; Query OK, 0 rows affected (0.02 sec) * * 7.mysql 資料庫引擎分為:myisam和innodb * myisam:查詢速度快 容易產生碎片 不能約束資料 對應三個檔案 frm儲存的是表結構, myd 儲存的是表資料 myi儲存的是表資料的索引 * innodb:以前沒有myisam快,現在好多了,推薦innodb,不產生碎片,可以約束資料 對應一個檔案, 資料存放在ibd中,結構存放在frm中,如果資料過大ibd會是ibd1,ibd2 * 推薦使用:innodb * * 8.顯示建立庫的語句 * 1. show create database name(名字); * * 9.修改資料庫,(只能修改資料庫選項,也就是字元編碼)注意:在MySQL中utf字元編碼中沒有橫崗- 就是utf8 * 1.alter database name(名字) charset=utf8; * * 10.建立表 create table name ( * `欄位名` 資料型別 [null | not null] [default] [auto_increment] [primary key] [comment] * `欄位名` 資料型別 ... * )[engine=儲存型別] [charset=字元編碼]; * 1. null not null 是否為空 * 2. default 預設值 * 3. auto_increment 是否自動增長 * 4. primary key 是否是主鍵 (一個表只能有一個主鍵,主鍵可以是一個或者是組合鍵) * 5. comment 描述 * 6. 注意帶[]都是可有可無 * * 11.顯示所有的表 show tables; * * 12.查看錶結構 desc[ribe] name; (name是表名) * * 13.顯示建立表的語句 * 1.show create table school; * 2.show create table school \G; // 規格化,個人認為不好看 * * 14.複製表 * 1.create table newname select * from oldname; // 不能複製表的鍵,只能賦值表的資料(不能複製表的主鍵) * 2.create table newname like oldname // 只能複製表結構,不能複製表資料 * * 15.刪除表 * 1.drop table name; * 2.如果存在就刪除 drop table if exists name; * 3.一次性刪除多個表 drop table name,nam1,name2,name3 * * 16.修改表 * 增加欄位 * 1.新增欄位 alter table name(表的名字) add sex char(1); * 2.新增欄位在name欄位前新增 alter table name(表的名字) add sex char(1) after name; * 2.在前面新增 alter table school add age int first; * 刪除欄位 * 1. alter table name(表名字) drop name(欄位名字); * 修改欄位(改名) * 1.alter table name(表名字) change name(原欄位名) name(新欄位名) 資料型別 * 修改欄位(不改名,改屬性) * 1.alter table name(表名) modify sex varchar(5) default '地址不詳'; * 2.alter table userinfo modify id int primary key auto_increment; * 修改表的屬性 * 1.alter table school engine=myisam; // 修改引擎 引擎分為 innodb和myisam * 修改表的名字 * 1.alter table school rename to school1; * 將表移動到其他資料庫 * 1.alter table name rename to test(資料庫名字).stu; (移動之後那麼原資料庫會刪除== 移動不能複製)(注意:主鍵不能複製,有資料) * * 17.表增加資料 * 1.insert into name(表名)values('aa'); * 2.insert into userinfo (name) values('田田'); * 插入多條資料 * 1.insert into name(表名) values(null,'aa'),(null,'bb'); * 注意:null是插入null default是插入預設值 * * 18.更新資料 * 1.update name(表名) set name(欄位名)=value [where 條件]; // 更新一條 * 2.update userinfo set name='dd',sex='男' where id= 20; // 更新多條 * * 19.查詢表資料 * 1.select * from name(表名); 查詢所有欄位 * 2.select id from userinfo; * * 20.刪除資料(把當前一行的資料給刪除了) * 1.delete from name(表名) where 條件 // delete from userinfo sex='男'; * 2.刪除表所有資料 * * 21.顯示客戶端返回和提交的資料 * 1.show variables like '%chara%'; * * 22.更改客戶端指令的編碼 * 1.set character_set_client=gbk; * 2.可以通過set names一次性設定 * 3.儲存長度不一樣, GB系統一個漢字佔位2個位元組, utf-8佔位3個位元組,推薦使用utf-8 * */