美文网首页
PHP -- 数据库2

PHP -- 数据库2

作者: 潘肚饿兵哥哥 | 来源:发表于2019-08-13 17:04 被阅读0次
<?php
//header("Content-type:text/html;charset=utf-8");


    库的增删查
        create database 名字 [charset utf8];  增
        drop database 名字  删
        show databases  查
    
    表的增删改查
        结构
            create table 名字(
            列名 列类型 [列参数 not null default 默认值 列注释],
            ...
            
            )[engine=innodb/myisam charset=utf8 comment='注释']
            
            列类型
                数值型
                整型有无符号和有符号之分,但是浮点数没有
                    整型 tinyint(6) unsigned zerofill  
                    0填充:
                    这里的6不代表他的范围占6位
                    6仅代表显示宽度是6位,不是真实范围
                    如真实数是1,tinyint(6)显示为 000001
                    如真实数是123456 他就直接显示真实的数,
                    
                    浮点型:float: float(8, 2) 
                        8表示这个浮点数共8位,2是小数点后有2位(小数点不算一位,小数点前有6位,后有两位)
                        
                    定点型: decimal(m, n)和上面浮点型一样,m是位数,这个数的长度,n是小数点的位数
                    浮点型和定点型的区别就是,浮点型的精度会发生变化,定点型不会发生变化
                    例如:123465798.23  浮点型存进去小数点后的最后一位,就可能不是3了,可能是别的,但是定点型存什么就是什么,不会发生改变
                    浮点型的处理速度快,定点型的处理速度慢
                        
                    
                    
                字符串型: 常用的是下面这三个
                    char(n) n代表一个数字 n=[1-255]代表最大存255个字符(存汉字就没有这么多了,utf8就只能存255/3个字)
                    varchar(n) n代表一个数字 n=[1-65535]个字符,可以存20000多中文字
                    特点:
                    char是定长字符串,varchar是可变长的字符串
                    char(8)这样写的话,系统会自动分配8位的长度,无论实际参数是几位,这个8位的位置都存在
                    用carchar(8)的话,实参给几个,他就占几位
                    
                    还有,如果字符串的前年后面都有空格的话
前面的空格都会保存,但是char后面的空格会丢失,而varchar后面的空格会保存

                    因为char保存字符是写几位就给几位的空位,所以有可能会有空着没用的位置,所以,在取数的时候

是从第一位开始取,一直取到出现空位为止,所以一旦出现空格或后面还有字符串的情况,他就会丢失掉

                    如果给定的位数是8位,实际给的也是8位,这样全部占满的情况下

char实际就是8位,但是varchar会超出8位
因为,varchar存的字符串不会忽略空格
所以,就需要多用一两个字节来做一个标记,标记这个varchar存的字符到底有多长
                    
                    
                    text    n 系统给定65535  text无默认值
                    除非不得已,一般不用text定义一个字符串,一般用前两个,因为在mysql在低版本的时候,varchr范围也是255,所以才要text的大范围
                    
                
                日期时间 项目中时间多用整数代替,因为用整数好计算
                时间戳: 设定好一个时间,例如1998.08.23 00.00 
到现在这个之间的秒数就是时间戳  用整数记时间直接做减法就可以了
                其他
        数据
              增:
                      一次插入一条信息:
                          insert into 表名(列1, 列2...)values(值1, 值2...)前后要一一对应

                      一次插入多条信息:
                          insert into 表名(列1, 列2...)values(值1, 值2...),(值1, 值2...),(值1, 值2...);
        

    PHP使用 mysqli的函数库来操作mysql数据库
        步骤
            1.连接数据库
            2.选择库
            3.设置编码 mysqli_set_charset($link, 'utf8');
            4.执行SQL语句(指令)   返回值是对象
            5.处理上一步的结果




$link = @mysqli_connect('localhost', 'root', 'root', students_info) or die(mysqli_connect_error());
//students就是要操作的库名
//mysqli_connect_error() 显示数据库连接错误信息
//不写这个的话,如果其中某项写错了,只会显示连接失败,不会显示是什么原因导致失败

mysqli_query($link, "select * form t1") or die (mysql_error($link));//操作表或返回错误信息

?>
        

\color{rgba(254, 67, 101, .8)}{char 和 varchar的区别:}

create table t4(c char(8), v carchar(8));
insert into t4(c, v) values ('abc', 'abc');
select * from t4;
//这里c列和v列显示的值都是abc
//但是,因为给定的是8位,所以char虽然给的值是abc,但是他在内存里占的依然是8位,而varchar就只占3位

create table t4(c char(8), v carchar(8));
insert into t4(c, v) values (' 123 ', ' 123 ');
select * from t4;
//这里存的值是5位,前后都有空格
//在保存的信息中,前面的空格都保留了,但是char后面的空格丢失了,因为它是以空格判定保存的字符串长度
//varchar后面的空格保留了,因为varchar不是定长的,所以会自动使用一到两个字节标记要保存的字符串长度,所以前后的空格不会丢失
建立学生档案:
有如下信息:
学号
姓名
年龄
性别
email
手机号
简介
薪水
入学日期
/*
create table 名字(
            列名 列类型 [列参数 not null default 默认值 列注释],
            ...
            
            )[engine=innodb/myisam charset=utf8 comment='注释']
*/

create table student(
number char(6) not null default '' unique comment='学号',
name varchar(30) not null default '',
age tinyint unsigned not null default 0,--tintint 范围256够用了 unsigned无符号
sex tinyint not null default 0 comment='这是性别1男2女0是未知',
...
)engine=myisam charset=utf8 

----------------------------------------------------------

--上面的例子有学号,所以给学生设置unique 唯一,能做保持唯一
--但是如果没有这一列,就要设置主key

create table student(
id smallint unsigned primary key auto_increment,
--id是新建一列 名字是id smallint是数值范围 
--primary key是主键,auto_increment是(让主键)自增长,从1开始自动累加

 comment='学号',
name varchar(30) not null default '',
age tinyint unsigned not null default 0,--tintint 范围256够用了 unsigned无符号
sex tinyint not null default 0 comment='这是性别1男2女0是未知',
...
)engine=myisam charset=utf8 

----------------------------------------------------------



学号中的unique表示唯一,  not null表示值不能是null
因为如果值是 null 的话,查询的时候 ,查 name=null显示空
查询name != null 值也是空,要用 name is null才能查出来,所以他很特殊
不能用等于号查出来,查起来不方便,所以项目中不用null
给了not null就要给default,否则会报错

not null default:
该字段不能为null,并且插入数据时不设置
该字段的值的时候使用默认值。
如果不给default就表示字段不能是null,又没有给值,就会报错
null不是空字符串,不等于 ''

相关文章

  • PHP扩展

    1、PHP扩展简介 2、PHP常用扩展 MySQL-提供PHP操作MySQL数据库的功能 gd2-动态撞见图片 x...

  • PHP笔记6用户登陆与分页原理

    PHP操作MySQL (1)PHP连接数据库 (2)选择要操作的数据库名称 (3)设置字符集 (4)执行各种SQL...

  • 03.MySQL 创建数据库

    //1.在phpMyAdmin创建数据库CREATE DATABASE `数据库名`;//2.使用 PHP脚本 创...

  • 【TP5-04】数据库

    1、连接数据库(appliation/database.php) 2、操作数据库(CURD) 2.1、创建// 插...

  • php数据库使用

    1、php数据库编程 三种方式操作mysql数据库: 1、mysql扩展库2、mysqli 扩展库3、pdo 2、...

  • laravel ajax分页

    php部分 //1、查询数据库总条数 $count = $this->custom->count(); //2、设...

  • PHP与数据库

    PHP与数据库PHP有三种方式操作MySQL数据库1.PHP有三种方式操作MySQL数据库(1)MySQL扩展库(...

  • php常用mysql函数

    一、使用数据库 1、连接数据库: 注:其他参数详见php用户手册 2、选择数据库: 3、 设置数据库字符集: 4、...

  • PHP -- 数据库2

  • 2018-09-13

    php和数据库的连接 php链接mysql必备条件: 已安装mysql数据库; 检查php环境是否已开启mysql...

网友评论

      本文标题:PHP -- 数据库2

      本文链接:https://www.haomeiwen.com/subject/oknkjctx.html