数据库有点意思

  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 users2\G;即那个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],这里的-是“到”的意思

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

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

-定义原子的集合

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

\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]+      //这里仅仅是匹配到了一般情况

 

posted @ 2015-10-27 20:38  韧还  阅读(201)  评论(0编辑  收藏  举报