1. 程式人生 > >【PHP筆記】mysql資料庫設計

【PHP筆記】mysql資料庫設計

資料庫管理系統-dbms-mysql

mysql資料庫: 1.mysql設計部分 2.mysql操作部分

mysql基本指令: 1.登入 mysql -uroot -p123 2.檢視資料庫 show databases; 3.切換資料庫 use test 4.檢視資料庫所有表 show tables; 5.查看錶結構或表字段 desc user 6.查看錶記錄 select * from user; 7.退出mysql終端 exit;

mysql基礎篇: 一、資料庫操作 1.檢視資料庫 show databases; 2.建立資料庫 create database y1 default charset=utf8; 3.切換資料庫 use y1; 4.刪除資料庫 drop database y1;

二、表操作 1.查看錶user show tables; 2.建立表 mysql> create table user( -> id intshow databases;, -> name varchar(30), -> pass varchar(30), -> )default charset=utf8; Query OK, 0 rows affected (0.03 sec) 3.修改表名 rename table user to user1; 4.刪除表 dorp table user1; 5.查看錶欄位 desc user 6.查看錶資料 select * from user

mysql資料庫設計篇: 1.資料表概念 2.資料欄位型別 3.資料欄位屬性 4.資料表物件管理 5.資料表的型別及儲存位置 6.資料表的預設字符集 7.建立索引

表字段型別: 1.數值 int //int(3)與長度無關,不夠3位時前面補0,預設看不見float

2.字串 char(n) //不可變的最大n個位元組 最多255 varchar(n) //可變的佔用n個位元組 最多255 text //位元組最多65535 longtext //42億位元組

3.日期 date time datetime year timestamp //用整型時間來替代日期型別,在php中把time()時間戳存到mysql中的int列

欄位屬性: 1.unsigned //無符號,全是正數 2.zerofill //零填充,int(3),不夠3位補0 3.auto_increment //自動增加 4.null //這一列值允許為null 5.not_null //這一列值不允許為null 6.default //預設值

建表語句: mysql> create table t2( -> id int unsigned auto_increment primary key, -> name varchar(30), -> sex varchar(5) not null default “nv” -> )default charset=utf8;

用\s檢視四種字符集: Server characterset: utf8 //伺服器字符集 Db characterset: latin1 //資料字符集 Client characterset: utf8 //客戶端字符集 Conn. characterset: utf8 //客戶端連線字符集

檢視資料庫字符集: show create database test;

查看錶字符集: show create table user;

[mysql] default-character-set=utf8 //客戶端和連線字符集

[mysqld] character-set-server=utf8 //伺服器、資料庫和表字符集

collation-server = utf8_general_ci //伺服器、資料庫和表校驗字符集

php中設定客戶端和連線字符集: $sql=“set names utf8”;

表字段索引: 1.主鍵索引PRI 2.普通索引MUL

檢測sql語句: desc select * from t1 where id=3\G //加\G把表顛倒一下 //rows 1

//建立帶索引的表 mysql> create table t2( -> id int unsigned auto_increment, -> name varchar(30), -> primary key(id), -> index in_named(name) -> )default charset=utf8;

mysql幫助手段: ? show

查看錶中的所有索引: show index from t2;

後期維護普通索引: 1.新增普通索引 mysql> alter table t2 add index in_name(name);

2.刪除普通索引 mysql> alter table t2 drop index in_named;

後期維護資料表字段: 1.新增欄位 alter table t1 add age int; 2.修改欄位 alter table t1 modify age int not null default 20; 3.刪除欄位 alter table t1 drop age; 4.修改欄位名 alter table t1 change name username varchar(30);

SQL語言: 1.DDL 資料定義語言,create,drop,alter 2.DML 資料操作語言,insert,update,delete 3.DQL 資料查詢語言,select 4.DCL 資料控制語言,grant,commit,rollback

增-insert: insert into t1(username) values(‘f’);

改-update: update t1 set username=‘g’ where id=6;

一次性更改多個值,中間用,隔開: update t1 set id=77,username=‘hh’ where id=7;

刪-delete: delete from t1 where id=6; delete from t1 where id>=3 and id<=5; delete from t1 where id between 3 and 5; delete from t1 where id=1 or id=3 or id=5; delete from t1 where id in(1,3,5);

查-select: 1.選擇特定的欄位 select pass,id from user where id=3;

2.給欄位取別名-as select pass as p,id from user where id=3; select pass p,id from user where id=3;

3.取掉列中的重複值 select distinct name from user;

4.用where條件進行查詢 select * from user where id>=3 and id<=5;

5.查詢空空值null select * from user where age is null; select * from user where age is not null;

6.between and 的使用方法 select * from user where id between 3 and 5;

7.in的使用方法 select * from user where id=1 or id=2 or id=10; select * from user where id in(1,2,10); //建議使用

8.搜尋like關鍵字 select * from user where name like ‘%4%’; select * from user where name regexp ‘.4.’;

select * from user where name like ‘%4%’ or name like ‘%5%’; select * from user where name regexp ‘(.4.)|(.5.)’;

9.使用oeder by 對查詢結果排序 升序排序 select * from user order by id; select * from user order by id asc; 降序排序 select * from user order by id desc;

10.使用limit限制輸出個數 select * from user order by id limit 0,2; select * from user order by id limit 5;//limit 0,5 前五個

11.concat函式-字串連線符 select concat(“a”,"-",“b”);

12.rand函式-隨機排序 select * fron user order by rand() limit 3;

13.count統計 select count(*) tot from user; select count(id) from user; select count(id) from user where name=“user4”; //user4發的帖子數

14.sum求和 select sum(id) from user where name=“user4”; //符合要求的id之和

15.avg平均值 select avg(id) from user;

16.max最大值 select max(id) from user;

17.min最小值 select min(id) from user;

18.分組聚合 select name,count(id) tot from mess group by name order by tot desc; //group by必須寫在order by之前

select name,count(id) tot from mess group by name having tot>=5; //group by必須寫在having之前,having是對分組的結果進行篩選,這不能使用where

19.多表查詢 1.普通查詢-多表(優先選擇) 2.巢狀查詢-多表 3.左連線查詢-多表

需求:論壇使用者和帖子統計 user表 mysql> create table user( -> id int unsigned auto_increment primary key, -> name varchar(30), -> age int)default charset=utf8;

post表 mysql> create table post( -> id int unsigned auto_increment primary key, -> uid int, -> title varchar(200), -> content text)default charset=utf8;

結果1-檢視誰發了什麼帖子 結果2-檢視誰發了多少個帖子

左連線查詢-多表 select user.name,post.title from user left join post on user.id=post.uid;

巢狀查詢 //得到發帖子的人-普通查詢 select distinct user.name from user,post where user.id=post.uid;

//得到發帖子的人-巢狀查詢 select name from user where id in(select uid from post);

php操作資料庫 1.通過PHP連線上mysql資料庫 2.選擇資料庫 3.通過PHP進行insert操作 4.通過PHP進行delete操作 5.通過PHP進行update操作 6.通過PHP進行select操作

通過PHP連線上mysql資料庫: mysql_connect(“localhost”,“root”,“root”);

選擇資料庫: mysql_select_db(“test”);

設定客戶端和連線字符集: mysql_query(“set names utf8”);