1. 程式人生 > 其它 >1.MySQL基礎學習

1.MySQL基礎學習

技術標籤:sql學習mysql

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
 * */