zoukankan      html  css  js  c++  java
  • 数据库有点意思

      hi

    今天没什么想头,直接数据库搞起。看了看课程,入门这个就打算7天搞定好了,毕竟还是在教研室干活的人。。。

    1、MySQL

    ---添加约束---

    --mysql> ALTER TABLE users2 ADD PRIMARY KEY (id);

    --mysql> ALTER TABLE users2 ADD FOREIGN KEY (pid) REFERENCES province (id);

    --设置默认值mysql> ALTER TABLE users2 ALTER age SET DEFAULT 15;

    删除默认值mysql> ALTER TABLE users2 ALTER age DROP DEFAULT;

    --删除主键,由于每张表只有一个主键,所以mysql> ALTER TABLE users2 DROP PRIMARY KEY;

    --删除唯一约束,由于唯一约束在一张表中可能有很多个,所以要先查名字mysql> SHOW INDEXES FROM users2G;即那个Key_name

    mysql> ALTER TABLE users2 DROP INDEX username;

    注意这里删除的是约束

    --删除外键约束,也是要先查看名字

    mysql> SHOW CREATE TABLE users2;
    +--------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table | Create Table |
    +--------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | users2 | CREATE TABLE `users2` (
    `username` varchar(10) NOT NULL,
    `pid` smallint(5) unsigned DEFAULT NULL,
    `id` smallint(5) unsigned NOT NULL DEFAULT '0',
    `age` tinyint(3) unsigned NOT NULL,
    UNIQUE KEY `pid` (`pid`),
    CONSTRAINT `users2_ibfk_1` FOREIGN KEY (`pid`) REFERENCES `province` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
    +--------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)

    这里找到CONSTRAINT后面的名称,然后

    mysql> ALTER TABLE users2 DROP FOREIGN KEY users2_ibfk_1;

    这里删除的是外键约束,但索引还在,要删除索引需要上面的命令DROP INDEX

    ---修改数据表---

    --修改列定义(数据类型,位置等)

    mysql> ALTER TABLE users2 MODIFY id SMALLINT UNSIGNED NOT NULL FIRST;

    注意这里id的定义虽然不变,但是还是要输入一遍;要是要修改定义,也要输入相对应的;而且修改列定义一定要小心,尤其是数据库中数据很多很杂的时候。

    --修改列名称

    mysql> ALTER TABLE users2 CHANGE pid p_id TINYINT UNSIGNED NOT NULL;

    change的能力要大,输入也要多一点

    --修改数据表名字

    mysql> ALTER TABLE users2 RENAME users3;

    mysql> RENAME TABLE users3 TO users2;

    两种方法,其中第二种方法可以对多个表进行修改

    ------再次强调,尽量不要修改表名或者库名,危险,必须谨慎。-------

    ---小结---

    --约束

    -5种约束或表级和列级

    --修改数据表

    -对字段:添加删除修改定义和名称

    -对约束:添加删除

    -对数据表:更名

    2、PHP-正则表达式

    ---边界控制与模式单元---

    --^匹配字符串开始的位置-限制要匹配的字段必须以什么开头

    -比如^d必须以d开头,然后前面连空格都不能有

    --$。。。。。。结束

    --模式单元()

    把()内的东西当作一个原子看待,()中是一个正则表达式

    ----基本语法到此结束,知识点多而散,要灵活运用----

    ---懒惰匹配与贪婪匹配---

    --修正模式-修正匹配出现歧义的情况

    --贪婪匹配在歧义时选长的,匹配相反

    --有歧义时,默认贪婪

    <?php
    /*
    * Description:PHP 正则表达式函数
    *
    * @name:show
    * @description:output debug
    * @param $var:input data
    * @return void
    *
    */

    //产生歧义
    $pattern='/imooc.+123/'; //匹配imooc任意个任意多个字符并以123结尾
    $subject='I love imooc__123123123123123';

    $matches=array();
    preg_match($pattern,$subject,$matches);

    show($matches);

    function show($var=null){
    if(empty($var)){
    echo 'null';
    }elseif(is_array($var)||is_object($var)){
    //array,object
    echo '<pre>';
    print_r($var);
    echo '</pre>';
    }else{
    //string,int,float...
    echo $var;
    }
    }

    结果是

    Array
    (
        [0] => imooc__123123123123123
    )
    

    --修改为懒惰模式:$pattern='/imooc.+123/U';  

    Array
    (
        [0] => imooc__123
    )
    

    ---常见的修正模式---

    --U,懒惰匹配  $pattern='/imooc.+123/U'; 

    --i,忽略大小写 $pattern='/iMooc.+123/Ui';  //这里用了两种修正模式,也是可以的

    --x,忽略空白 $pattern='/iMo o c.+123/Uxi';

    --s,让‘.'匹配除换行符以外的所有字符

    --注意,修正模式是指对匹配结构进行修正,对象是正则表达式,一定不是匹配对象

    -------------实战应用-------------

    ---常用情况---

    --需求~正则表达式的行为的口头描述~正则表达式

    --非空~原子出现的次数1次到无穷大次~.+   //.一般代表任意原子,+代表任意多个,应用场景就是必填项的提示等

    --浮点数(例子是两位小数的浮点数)~数字连续出现1到无穷大次,点号后面有两位数字~d+.d{2}$      //d数字匹配,.转义.,d{2}两位数字i,{}实现量词,$必须以两位数字结尾(和之前的描述相吻合)。应用场景是款项之类的验证

    ----------------复习------------------

    筛选

    |  匹配两个或多个,即或者

    []  匹配括号内任意一个原子,特殊[1-3],这里的-是“到”的意思

    [^] 同上互逆,匹配除括号内的所有原子

    注意:用^要小心,会匹配所有其他的,包括空格等不可见原子;再有就是^要和其他原子紧贴顶头写

    -定义原子的集合

    .   等价于[^ ],匹配除换行符之外的任意字符——基本上就是所有的

    d  [0-9]匹配一个十进制数字

    D  [^0-9]匹配一个非十进制数字

    w  [0-9a-zA-Z]匹配一个数字、字母或下划线

    W  [^0-9a-zA-Z]匹配一个非数字、字母或下划线

    s  匹配一个不可见原子

    S  匹配一个可见原子

    --量词

    -表示某个原子连续出现多少次

    -{n}   表示其前面的原子恰好连续出现n次——5{3}

    -{n,}   表示其前面的原子至少连续出现n次

    -{n,m}   [f|5]{3,6}表示连续出现n次,最多m次,就是n到m次

    -*   任意次,只要连续,都匹配,{0,}

    -?    {0,1}0到1次

    -+   {1,}至少有1次

    -------------------复习结束------------------------

    --手机号匹配~数字,11位,以数字结尾,以数字1开头~^1[34578]d{9}$或者^1(3|4|5|7|8)d{9}$

    --email地址匹配~英文或者数字,位数不限,有@,有.,并以非数字结尾~^w+@w+(.w+)+$   //注意()的妙用,即自定义原子(块),把可能重复出现的一些原子集合的写

    --URL地址匹配~字母开头(非数字),://,然后是数字,字母.之类的~^(https?://)?(w+.)+[a-zA-Z]+      //这里仅仅是匹配到了一般情况

  • 相关阅读:
    一个周末掌握IT前沿技术之node.js篇<六>:Node.js与客户端模板引擎
    一个周末掌握IT前沿技术之node.js篇<四>:Node.js与Restful API
    一个周末掌握IT前沿技术之node.js篇<三>:Node.js与服务端模板引擎
    添加dom节点及优化
    CSS琐碎[1]
    兼容处理集合
    Dom优化
    apply函数应用
    javascript的slice()与splice()方法
    鼠标滚轮插件
  • 原文地址:https://www.cnblogs.com/andy1202go/p/4915459.html
Copyright © 2011-2022 走看看