mysql入門
一、mysql基礎
1. 什麼是數據庫
1.存儲數據的文件
2、sql語句
//增加
insert into 表名(字段1。。。。字段n) values(值1....值n);
//刪
delete from 表名 where 字段=值;
//修改
update 表 set 修改的字段 =修改的值 where 選擇的字段=選擇的值;
//查
select * from 表名 where 條件;
3、建立一個數據庫
--mysql建庫語句對應的mysql版本5.5.29;
--建立數據庫
CREATE DATABASE HF190503CTS DEFAULT CHARACTER SET 'UTF-8' COLLATE 'UTF8_general_ci';
--刪除數據庫
DROP DATABASE IF EXISTS HF190503CTS;
--使用數據庫
USE HF190503CTS;
--常用約束
NOT NULL 表示字段不能爲空
UNIQUE 表示字段唯一
default 默認值
--外鍵的約束
FOREIGN KEY(字段) REFERENCES 父表名(父表字段),
--設置數據庫引擎
create table 表名()ENGINE=INNODB;
注意:timestamp時間戳 一張表只能有一個字段是timestamp;
數據類型
枚舉數據類型:enum
二、數據庫進階
1、數據庫查詢
1、基本查詢語句
select * from 表名
2、條件查詢語句
select * from 表名 where 條件
--模糊查詢:
like "9500_" 只能匹配一位;
like '9500%' 匹配尾部任意位;
--查詢語句中in的使用
select * from 表名 where 查詢字段 in ('查詢的值1','查詢的值2');
--注:in裏面可以嵌套sql查詢語句;
3、邏輯sql
and :且 ;
or :或;
!= <> not 字段=值 :非;
in :多個;
4、通配符
liek "%偶" %表示省略n位 _表示省略1位
REGEXP '9500[1-5]' 表示匹配 後一位爲1到5的所有
REGEXP '9500[1,5]' 表示匹配 後一位爲1或5的
5、函數
//--count 計算總數;
select count(*) as "total" from t_student ;
--distinct 去重
select distinct(去重的字段) from t_student;
--avg 平均分
select avg(grade) from t_sc where courseid=1;
--min 最小值 max 最大值
select min(grade),max(grade) from t_sc;
--/group by having 分組
select avg(grade) from t_sc c group by c.courseid;
select avg(grade) from t_sc c group by c.courseid having courseid=1;
--limit 分頁;
語法:linmit 起始位置,偏移量;
linmit 偏移量 offset 起始位置;
--order by 根據某個字段進行排序,默認升序,降序desc;
--升序
select * from t_sc order by grade;
--降序
select * from t_sc order by grade desc ;
6、笛卡爾積
行:兩張錶行乘積, 列:兩張表列的和;
inner join 和 on 配合連表
逗號和where 配合連表;
7、左位連接
主表 left join 副表 左連接
主表 right jion 副表 右連接
三、mysql與php連接
1、面向過程連接mysql
1、數據庫的連接
1、通過php代碼,連接數據庫
$link=@mysqli_connect(ip地址,用戶名,密碼,庫名,端口號) or die("數據庫連接失敗");
//提示錯誤編碼
mysqli.connect.errno();
//提示錯誤信息
mysqli.connect.error();
2、執行mysql語句;
//執行mysql設置編碼;
mysqli_query($link,'set names utf8');
//執行sql語句
$result=mysqli_query($link,$sql);
//將結果轉換爲數組
mysqli_fetch_assoc($result) //關聯數組;
mysqli_fetch_array($result) //關聯數組和下標數組;
mysqli_fetch_row($result) //下表數組;
mysqli_fetch_object($result) //對象
//關閉資源
mysqli_close($link);
2、面向對象:mysql與php的連接類;
3、數據庫分頁
mysql 索引 事務
批量插入數據: insert into 表名(字段1,,,,字段n) select 字段1 from test;
無符號約束:unsigned 用於int型
索引:
創建索引 create index 索引名 on 表名(字段名(length));==
查看索引 show index from 表名;==
刪除索引 alter table 表名 drop index 索引名;
優點:可以增加經常查詢的字符的查詢效率
缺點:在建立表格的時候,效率降低
事務:
開啓事務:begin;
mysqli_query('begin');
提交事務:commit;
mysqli_query('commit');
事務回滾:rollback;
mysqli_query('rollback');
事務結束:end
mysqli_query('end');
分頁:
起始位置:
nowPage 當前頁 everyRow 每頁的條數
startRow=(nowPage-1)*everyRow
步驟:
1、從select * from 表名 limit 起始位置,每頁的條數
2、獲得數據:
1. 在action裏面設置每一頁顯示幾條;
2、當前頁get請求獲得;
3、起始位置=(當前頁-1)*每頁的條數;
4、獲得分頁的信息
上一頁 當前頁-1 當前頁=1時,上一頁等於1;
下一頁:當前頁+1;當前頁=總頁數時,下一頁爲當前頁
總頁數 ceil(總條數/每頁條數)
總條數:通過sql語句從數據庫獲得
3、