• mysql(二)


    一.重要函数总结

    1.数组函数的概述

     Array_reverse($arr); 翻转数组的值,其索引不翻转

     Array_reverse($arr,true);翻转数组的值,其索引也发生了翻转

     Array_push($arr,'');  作用是往数组的尾部压入单元。返回值是压入单元成功后,数组的单元个数。/在数组的末尾添加一个值

     Array _pop($arr); 弹出并返回数组的最后一个单元,并且数组的长度减一  /在数组的末尾移除一个值

     Array_shift($arr); 将数组开头的单元移除数组

     Array_unshift($arr,’bei’); 在数组的开头插入一个或多个单元

     Array_merge($arr1,$arr2);合并一个或多个数组

     Array_unique($arr);移除数组中重复值

     Array_count_values($arr);统计数组中所有值出现的次数

     Array_sum($arr);计算数组中所有值得和

     Array_diff($arr1,$arr2);计算数组的差集

     Array_diff_assoc($arr1,$arr2);根据索引来计算数组的差集

     Array_intersect($arr1,$arr2);计算数组的交集

     Array_intersect_assoc($arr1,$arr2);根据索引来计算数组的交集

     Array_key_exists(‘键’,$arr);检查给定的键名和索引是否在数组中/key_exists();

     List();给多个变量赋值,即把数组的多个单元分别赋给多个值

     Array_filter(‘输入的数组’,’自定义的函数名’)用回调函数过滤数组中的元素

     list($arr[0],$arr[1],$arr[2]) = array(3=>'赵',1=>'钱',5=>'孙',2=>'李',0=>'燕');

    2.字符串函数

    addslashes();函数在指定的预定义字符前添加反斜杠预定义字符是:单引号/双引号/反斜杠/null ;//防止sql注入

    Stripslashes();函数删除由addslashes()函数添加的反斜杠;

    Htmlspecialchars();将字符串中一些字符转换为HTML实体;//防止XSS攻击

    Htmlspecialchars_decode();HTML实体转换为字符

    Implode(‘-’,$arr) 将数组以特定的分隔符转变为字符串;

    Explode() 将字符串用分割符转变成一个数组;

    Str_replace(‘要替换的字符’,’替换字符’,’包含要替换的字符’); 匹配和替换字符串;

    Trim();去除字符串两边的空白字符或者指定的字符;

    Ucfirst();把字符串中的首字符转换为大写

    Ucwords();把字符串中每个单词的首字符转换为大写

    Str_repeat(‘字符串’, 5);把字符串重复指定的次数

    Strtoupper();把字符串转换为大写

    Strtolower();把字符串转换为小写

    Strrev();字符串翻转

    Mb_substr(‘字符串’,’开始位置’,’截取的长度’,’utf-8’);截取中文字符无乱码

    Substr(‘字符串’,’开始位置’,’截取的长度’);截取字符串

    Str_split($str,2);将字符串分割成数组;其中最后一个参数代表分割数组中值得个数

    strrchr() 函数查找字符在指定字符串中从正面开始的最后一次出现的位置

    is_readable() 函数判断指定文件名是否可读

    Str_pad(‘要填充的字符串’,’填充的长度’,’填充的位置(STR_PAD_RIGHT/STR_PAD_LEFT/STR_PAD_BOTH)’)函数 把字符串填充为新的长度 

    二.mysql数据库的操作

    1.数据库cmd的常用命令

    a.配置计算机的环境变量path中变量值添加:D:wampinmysqlmysql5.5.8in;

    B.登录mysql命令:mysql -hlocalhost -uroot -p 123

    C.显示数据库:show databases

    D.创建数据库:create database  shujuku

      删除数据库:drop database shujuku

    F.选择数据库:use shujuku 

      设置cmd的显示编码:set names gbk;

    G.查看表:show tables;

    H.查看表结构:desc aa(表名);

    I.创建表:create table if not exists `aa`(id int auto_increment primary key, user_name varchar(20) not null default ‘’ comment”用户名”);

    J.查看创建的表:show create table aa;

    K.修改表名:alter table aa rename aa1;

    L.修改字段的数据类型:alter table aa modify  id  bigint; idint类型改为bigint

    M.修改字段名:alter table aa change id iid bigint ;id这个字段更名为iid

    N.添加字段:alter table aa add name1 varchar(20) not null;

    O.删除字段:alter table aa drop name1;

    P.删除外键约束:alter table aa drop foreign key;

     删除主键约束:alter table aa drop primary key;

    Q. ---MyISAM引擎

      CREATE TABLE TEST

      (

        ID int unsigned not null auto_increment,

        name varchar(10) not null,

        key(name,id)

       )engine=MYISAM auto_increment=100;

      ---innodb引擎

      CREATE TABLE TESTIdentity

       (

         ID int unsigned   not null auto_increment,

         NID INT UNSIGNED ,

         name varchar(10) not null,

         key(id)

       )engine=INNODB auto_increment=100;

    MyISAMinnodb的区别:

    1.Innodb不支持全文索引 MyISAM支持全文索引

    2.Innodb支持事务和外键

    3.MyISAM是表锁 innodb是行锁

    4.执行大量的select 时用MyISAM 执行大量的insertupdate时用innodb

    2.数据类型

    Mysql中的数据类型可以指定显示宽度

    Tinyint:-128-----127

            0------255

    Smallint:-32768----32767

             0---------65535

    Mediumint:0-----16777215

    Int:  0-----4294967295

    Bigint:最大值

    Float:单精度浮点型数据

    double:双精度浮点型数据

    Decimal:自定义精度浮点型数据 decimal(10,2);

    Char();固定长度的字符串  最大255字符

    Varchar();可变长度的字符串  255

    Test     最大长度限制的可变长度

    Date  yyyy-mm-dd格式的日期

    Time  hh:mm:ss格式的时间

    Datetime yyyy-mm-dd hh:mm:ss格式的日期 时间

    Timestamp yyyy-mm-dd hh:mm:ss格式的日期 时间

    Enum  一个数组,用户可从中选择其中一个

    3.数据库查询

    Select 属性列表 from 表名 [where 条件表达式] [group by 属性名 [having 条件表达式]]  [order by 属性名 [asc|desc]] [limit(0,2)];

    1.常用查询:

      Select * from 表名;

      Select name from 表名 where name=’张三’;

      Select name from 表名 where name=”” AND id=””;

      Select name form 表名 where name=”” OR id=””;

      Select id,name from 表名 where id  IN(101,102);

      Select id,name from 表名 where id NOT IN (101,102);

      Select id,name from 表名 where price (not)BETWEEN 2 AND 20;

      Select * from 表名 where city IS (NOT) NULL

      select *,IF(sva=1,’男’,’女’) as 别名 from 表名 where id=1;

        SELECT * FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;

    2.like的字符匹配查询

      Select id,name from 表名 where name like ‘s%’;

    3.distinct去除数据库重复的

      Select distinct name from 表名;

    4.group by分组

      Select id,count(1)  AS 别名 from 表名 group by  id;

    5.过滤分组

     Select id, group_concat(name) AS 别名 from 表名 group by  id having count(name)>2; 

    6.limit 限制查询结果数量

     Select * from 表名 limit 0,3;

    7.order by 排序查询

     Select * from 表名 order by 字段名 desc(asc);

    8.正则表达式查询

     Select * from 表名 where name REGEXP ‘^b’;

      拓展:字符“^”匹配以特定字符或者字符串开头的文本

             字符“$”匹配以特定字符或者字符串结束的文本

             字符“.”匹配任意一个字符

             星号“*”匹配前面的字符任意多次,包括0次。加号“+”匹配前面的字符至少一次

             方括号“[]”指定一个字符集合,只匹配其中任何一个字符,即为所查找的文本

            “[^字符集合]”匹配不在指定集合中的任何字符

            “字符串{n,}”,表示至少匹配n次前面的字符;“字符串{n,m}”表示匹配前面的字符串不少于n次,不多于m次。

     9.GROUP_CONCAT 将某一字段的值按指定的字符进行累加,separator是分割符

     select  group_concat(f_a  separator  '_') from 表名 group by f_b;
      separator  是一个关键字,后面跟着要进行分隔的字符

    4.数据库的添加,更新和删除

       添加:INSERT INTO 表名(id,NAME,age,info) VALUES (NULL,'feicy',33,'student');

    更新:UPDATE 表名 SET name ='police' WHERE id=17;

    删除: DELETE FROM  表名 WHERE id=17;

    索引

      索引的优点:

    1、通过创建唯一索引,保证数据库表每行数据的唯一性

    2、大大加快数据查询速度

    3、在使用分组和排序进行数据查询时,可以显著减少查询中分组和排序的时间

     

    索引的缺点:

    1、维护索引需要耗费数据库资源

    2、索引需要占用磁盘空间,索引文件可能比数据文件更快达到最大文件尺寸

    3、当对表的数据进行增删改的时候,因为要维护索引,速度会受到影响

     

    索引的分类

    1、普通索引和唯一索引

    主键索引是一种特殊的唯一索引,不允许有空值

    2、单列索引和复合索引

    单列索引只包含单个列

    复合索引指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用复合索引时遵循最左前缀集合

    3、全文索引

    全文索引类型为FULLTEXT,在定义索引的列上支持值的全文查找,允许在这些索引列中插入重复值和空值。全文索引可以在

    CHAR、VARCHAR、TEXT类型列上创建。MYSQL只有MYISAM存储引擎支持全文索引

    4、空间索引

    空间索引是对空间数据类型的字段建立的索引,MYSQL中的空间数据类型有4种,

    分别是GEOMETRY、POINT、LINESTRING、POLYGON。

    MYSQL使用SPATIAL关键字进行扩展,使得能够用于创建正规索引类型的语法创建空间索引。创建空间索引的列,必须

    将其声明为NOT NULL,空间索引只能在存储引擎为MYISAM的表中创建

    普通索引

     CREATE TABLE `book` (

      `bookid` INT(11) NOT NULL,

      `bookname` VARCHAR(255) NOT NULL,

      `authors` VARCHAR(255) NOT NULL,

      `info` VARCHAR(255) DEFAULT NULL,

      `comment` VARCHAR(255) DEFAULT NULL,

      `year_publication` YEAR(4) NOT NULL,

      KEY `year_publication` (`year_publication`)

    ) ENGINE=MYISAM DEFAULT CHARSET=latin1

    唯一索引

     CREATE TABLE `t1` (                                                                                                                        

              `id` int(11) NOT NULL,                                                                                                                   

              `name` char(30) NOT NULL,                                                                                                                

              UNIQUE KEY `UniqIdx` (`id`)                                                                                                              

      ) ENGINE=MyISAM DEFAULT CHARSET=utf8 

    复合索引

    CREATE TABLE `t3` (                                                                                                                                                                                             

              `id` int(11) NOT NULL,                                                                                                                                                                                        

              `NAME` char(30) NOT NULL,                                                                                                                                                                                     

              `age` int(11) NOT NULL,                                                                                                                                                                                       

              `info` varchar(255) DEFAULT NULL,                                                                                                                                                                             

              KEY `MultiIdx` (`id`,`NAME`,`age`)                                                                                                                                                                            

     ) ENGINE=MyISAM DEFAULT CHARSET=utf8  

    全文索引

     CREATE TABLE `t4` (                                                                                                                                                                                             

              `id` int(11) NOT NULL,                                                                                                                                                                                        

              `name` char(30) NOT NULL,                                                                                                                                                                                     

              `age` int(11) NOT NULL,                                                                                                                                                                                       

              `info` varchar(255) DEFAULT NULL,                                                                                                                                                                             

              FULLTEXT KEY `FulltxtIdx` (`info`)                                                                                                                                                                            

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 

    空间索引

    CREATE TABLE `t5` (                                                                                            

              `g` GEOMETRY NOT NULL,                                                                                       

              SPATIAL KEY `spatIdx` (`g`)                                                                                  

    ) ENGINE=MYISAM DEFAULT CHARSET=utf8

    数据库的备份

      数据库导出

     Mysqldump -hlocalhost -uroot -p 数据库名称 [表名称] > C:/filename.sql;

     数据库的导入

     Mysqldump -hlocalhost -uroot -p 数据库名 <C:/filename.sql;

     登录mysql后导入sql的命令

     Source:”路径名”/filename.sql;

    utf8mb4字符集

    utf8mb4 字符集:支持 emoji 表情符号

    限制:需要 >= MySQL 5.5.3版本、从库也必须是5.5的了、低版本不支持这个字符集、复制报错

    php中的文件上传处理

    Form表单中的enctype 属性

    要完成文件上传处理首先要在html的表单中的enctype属性改为multipart/form-data

    upload_tmp_dir:当进行文件上传时,临时文件存放的目录,对于 Linux/UNIX 用户来说,要特别注意,当前 PHP 用户必须拥有这个目录的写权限。 upload_max_filesize:这个配置项指定了允许上传文件大小的最大值, php.ini 默认值是 2M

    全局变量$_FILES

    $_FILES[‘input里面的name’][‘name’];表示客户端文件的原始名称

    $_FILES[‘input里面的name’][‘type’];表示上传的文件类型

    $_FILES[‘input里面的name’][‘size’];表示已上传的文件的大小

    $_FILES[‘input里面的name’][‘tmp_name’];表示文件上传后,在服务器端存储的临时文件

    $_FILES[‘input里面的name’][‘error’];表示文件上传的相关错误信息

    Move_uploaded_file(filename,destination);

    Move_uploaded_file()函数 将上传的文件移动到指定的目录下

     Filename:合法的上传文件

    Destination:移动后的目标文件

    PHP中强制类型转换

    (int)--转换为整型

    (bool)--转换为bool型

    (float)--转换为浮点型

    (string)--转换为字符串型

    (array)--转换为数组

    (object)--转换为对象

    PHP中三目运算

    条件运算符( ? :)的用法是:expr1 ? expr2 : expr2可以看出,条件运算符有 个操作数,所以它是三目运算符。它的计算规则是:如果表达式 expr1的值为 TRUE,那么整个表达式的值就取 expr2 的值,否则,就取 expr3 的值。

    下面的代码使用条件运·86·算符来获取两个数中最大的那个数。

    $max = ($a>=$b) ? $a : $b当表达式$a>=$b 为 TRUE,那么整个表达式的值就是变量$a 的值,这意味着,会将$a 的值赋给变量$max,从而取得$a $b 之间较大的那个数

    break 和 continue 语句

    continue 语句和 break 语句的区别是, continue 语句只是结束本次循环,而 break 语句是终止整个循环的执行,不再做条件的判断。

    代码break 语句的使用

    <?php

             define(PI,3.14);

             for($r=1;$r<=10;$r++){

             $area = PI * $r * $r;

             if($area>100)

               break;

           echo "r=$r, area=$area";

            echo "<br/>";

           echo "<br/>";

         }

    ?>

    上述程序计算半径 到 10 的圆的面积,直到面积大于 100 时为止。当面积 area>100 时,执行 break语句,中断循环,不再执行剩余的几次循环。程序的执行结果如图 2.25 所示。从程序的执行结果可以看出, for 循环只执行了 次就因 break 语句而退出,剩下的 次循环没有执行。

    代码continue 语句的使用

    <?php

         for($a=100;$a<=200;$a++){

             if($a%3==0)

               continue;

             echo $a;

             echo "<br/>";

         }

    ?>

    上述程序将 100 到 2000 之间不能被 整除对数输出。当$a 能被 整除时,执行 continue 语句,结束本次循环,继续执行 for 循环语句。只有$a 不能被 整除时,才使用 echo 语句将该数字输出。

    PHP 函数的传值与传址

    传址方式传递函数参数

    <?php

             $i = 100;

             function func(&$n){

                 $n = $n+100; //因为传址传入变量$i,所以这里的变量$n 引用的就是$i 本身,此句等价于$i = $i+100

                }

            echo "调用函数 func 前: $i=$i";

            echo "<br/>";

            echo "<br/>";

            func($i); //$i 传入函数 func,因为是传址方式,所以此时函数内的变量$n 就是变量$i

            echo “调用函数 func 后: $i=$i";

      ?>

     传值方式传递函数参数

    <?php

    $i = 100;

    function func($n){

    $n = $n+100;

    }

    echo "调用函数 func 前: $i=$i";

    echo "<br/>";

    echo "<br/>";

    func($i);

    echo "调用函数 func 后: $i=$i.<br/>";

    ?>

    函数和变量作用域

    变量作用域演示程序

    <?php

        $var = "some text";

    function test(){

       $var = "some text in function";

        echo '这是局部变量$var: '.$var;

    }

    echo '这是全局变量$var: '.$var;

    echo '<br/>';echo '<br/>';

    test();

    ?>

    在函数内部使用 global 关键字

    <?php

          $a = 1997;

          $b = 1998;

          function sum(){

            global $a,$b;//声明全局变量

            $b = $a + $b;  //3995

       }

       echo '$a='.$a;  //1997

       echo '<br/>';

       echo '$b='.$b;  //1998

       echo '<br/>';

       echo '<br/>';

       sum();

       echo '$a + $b = '.$b; //1998

    ?>

    PHP 的预定义变量

    $GLOBALS:包含指向当前程序中全局范围内有效的变量,它是一个数组,该数组的索引(或键名)就是全局变量的名称。

    $SERVER:该全局变量是一个包含诸如头信息、路径和脚本位置的数组。

    常见的$_SERVER 的元素包括 PHP_SELF(当前正在执行的脚本的文件名)、 

                              SERVER_ADD(当前执行脚本所在服务器的 IP 地址)、

                              SERVER_NAME (当前执行脚本所在服务器主机的名称)、

                              DOCUMENT_ROOT(当前脚本所在文档的根目录)、 

                              SCRIPT_FILENAME(当前执行脚本的绝对路径)、

                              SCRIPT_NAME(当前脚本的路径)、 

                              HTTP_REFERER(链接到当前页面的前一页面的 URL)、

                              REQUEST_URI(访问此页面所需的 URI)等。

    $_GET:通过 HTTP 的 GET 方法提交至脚本的表单变量。

    $_POST:通过 HTTP 的 POST 方法提交至脚本的表单变量。

    $_FILE:通过 HTTP 的 POST 文件上传提交至脚本的变量。

    $_COOKIE:通过 HTTP 的 Cookies 方法提交至脚本的变量。

    变量的类型

    判断变量的类型

    is_integer 判断变量是否为整数

    is_string 判断变量是否为字符串。

    is_double 判断变量是否为浮点数。

    is_array 判断一个变量是否为数组。

    设置变量的类型

    Settype 设置一个变量的类型

    $a=100; 

    Settype($a,’string’);//此时变量a被设置为字符串类型

    获取变量的类型

    Gettype()取得一个变量的类型

    $a=100;

    Gettype($a);//获取变量a的类型

    escape() 函数可对字符串进行编码

    Document.cookie;//js中获取cookie

    Sprintf()printf()函数区别

    sprintf的作用是将一个格式化的字符串输出到一个目的字符串中,

    <?php

    $number = 2;

    $str = "Shanghai";

    $txt = sprintf("There are %u million cars in %s.",$number,$str);

    echo $txt;

    //There are 2 million cars in Shanghai.

    ?>

    printf是将一个格式化的字符串输出到屏幕。

    <?php

       $number = 9;

       $str = "北京";

       printf("在%s有 %u 百万辆自行车。",$str,$number);

    //在北京有 百万辆自行车。

    ?>

    获取url地址后面的后缀名

    <?php 

    $url = "http://www.abc.com/abc/de/fg.php?id=1";

    //这个是自己写的

    function getUrl($url) {

        $date = explode('?', $url);

        $date = basename($date[0]);

        $date = explode('.', $date);

        return $date[1];

    }

    echo getUrl($url);//php

    <?php

     $file=”www.baidu.com”;

     PHP.ini中的有关配置

       Register_globals=off 如果设置为on,表单,url会话和cookie变量会成为全局变量

       Magic_quotes_gpc=off 这个设置会自动转义提交的数据,其在开发代码应根据需求对数据经行转义,而不能依赖于这个设置,因此要将其禁用

    自动打印

    function window.onload() {

            factory.printing.header = "" //页眉

            factory.printing.footer = "" //页脚

            factory.printing.portrait = false //true为纵向打印,flase为横向打印

            factory.printing.leftMargin = 0 //左页边距

            factory.printing.topMargin = 0 //上页边距

            factory.printing.rightMargin = 0 //右页边距

            factory.printing.bottomMargin = 0 //下页边距

    }

  • 相关阅读:
    JDK的KeyTool和KeyStore等加密相关
    关于分布式事务的随笔[待续]
    Netty实例几则
    Disruptor快速入门
    Java获取系统环境信息
    JDK的BIO, NIO, AIO
    四种常用IO模型
    JDK的多线程与并发库
    递归转换为迭代的一种通用方式
    二叉树的java实现
  • 原文地址:https://www.cnblogs.com/chenchenphp/p/5271004.html
Copyright © 2020-2023  润新知