mysql自学

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、
            
      
发布了6 篇原创文章 · 获赞 1 · 访问量 133

猜你喜欢

转载自blog.csdn.net/weixin_43081250/article/details/102246365