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、