mySQL
建立数据库 CREATE DATABASE databasename
选择数据库 USE databasename
从cmd进入数据库 mysql -u root -p databasename
建立表 CREATE TABLE tablename(col1 type1,col2 type2........)
删除表 DROP TABLE tablename
删除行 DELETE FROM table WHERE ....如果不加WHERE将删除整个表,因此几乎必须加上WHERE查看表结构 DESCRIBE tablename
插入行 INSERT INTO table(colname1,colname2...) VALUES(colvalue1,colvalue2...)注意列名不用加引号,值要加。
改变表结构 ALTER TABLE tablename ADD CLOTYPE
如:ALTER TABLE email_list ADD id INT NOT NULL AUTO_INCREMENT FIRST;类型为INT非空自动憎长
新增主键ADD PRIMARY KEY(id)
修改列名或类型或删除列 ALTER TABLE tablename DROP COLUMN/CHANGE COLUMN
命令行登陆MYSQL mysql -u root -p (如果需要登陆其他服务器的-h IP地址)
外键:是表中的一个键,它是另外一个表的主键。含有外键的表成为主表,外键作为主键的表成为外表。
GRANT赋予用户权限 GRANT privilege [cloumn] ON item TO username WITH [grantoption] 如MAX_CONNECTIONS_PER_HOUR n等
REVOKE命令用于撤销用户权限,语法与GRANT差不多
show tables 显示数据库的所有表 show databases 显示所有数据库
CREATE INDEX indexname ON tablename 增加索引(可提高效率)
insert delay可暂时缓存数据,等服务器不繁忙的时候才插入
完全关联(内连接):关联n个表,需要用n-1个where a.x=b.x来关联,显示多个表合并的笛卡尔集。也可以使用using cloname来关联,要求表有相同的列名
左(右)关联(外连接):显示左(右)表中所有列值,就算右表中为空也列出!(主要用于找出右表的空值时用)
a AS b为表和列取别名。当找同一表中相同的项目时必须使用别名。如select c1.name,c2.name from col as c1,col as c2 where c1.city=c2.city
order by 属性.按一定属性的顺序输出,默认是升序。如降序则order by 属性 desc
统计值avg,count,max,min,sum。select avg(price) from list group by customerid 打印平均价格. 一般与group by一起使用显示分组平均
group by 后可加having 条件。having相当于分组的where。select avg(price) from list group by customerid having price > 50
limit 2,3。 mysql独有的语法,一共只返回所有结果中的3行,从第二行开始。
子查询操作符ANY,IN,ALL。 select c from t where c> ANY(select ...) or c in (select ...) or c>ALL(select ...)
EXISTS NOT EXISTS子查询中有一个或以上的名中行,则返回true
update tablename set price=price*1.1 更新数据库
alter table tablename add/modify/drop .....修改表属性
delete from tablename 删除表的行
修改列名alter table tablename change oldname newname coltype
select distinct xx from.... 只显示不同的结果去除重复结果。 而UNIQUE是在建立表的时候用的,用于防止插入重复数据。
LIKE 相当于宽松的=操作。_代表一个字符 %代表0或多个字符
source 路径 导入.sql文件
PHP
isset()验证变量是否存在 empty()验证变量是否为空,FALSE等。
define('THREE',3); 定义常量,常量不需用$符号。
.操作符,用用于连接字符串(或字符串变量)
===三等号操作,只有左右操作数值和类型都相等时才返回true
instanceof()用于检查实例是否属于某个类
isset()检查变量是否存在
empty()检查是否为空、NULL
建立数组$myarr=array('tom','jak','kk'); PHP也支持python的range()函数,字典的话array('a'=>1,'b'=>2)
each(数组) 逐次返回数组类容 while($ele=each($animal)) echo $ele['value']
更常用的是list($a,$b)=each($animal)把返回值分别付给a b
foreach($数组 as $个体),字典的话foreach($数组 as $key=>$value)
用完each和foreach后数组指针已经到达最后,必须使用reset($animal)才能重新使用each
使用trim函数消除字符串前后的空格来防止SQL注入。 因为注入一般使用-- (有个空格)来注释后面的SQL语句来注入。
再利用mysqli_real_escape_string()会自动将有危险的字符如-- ‘’进行转义,防止注入
addslashes()在符号前面自动加反斜杠进行转义。确保安全。
好的insert语句风格是id使用auto_incease,approved选项默认为0而不是每次插入0. 语法:default '0' 防止注入直接跳过审批流程
使用is_xx()等函数来确保表单的数据是否真的是数字防止注入使用setcookie()之前不能用echo,<html>要放setcookie之下,<php?>之前不能有空行。
header('Location: index.php ');跳转到某页
@unlink(filename) unlink用于删除一个文件,@放在函数前的作用是不显示错误信息。使用文件上传表单文件会传到一个临时文件夹,有临时名字。需要使用move_upload_files()函数把临时文件移到指定文件夹。
explode(分隔符,字符串) 分割字符串函数 implode(分隔符,数组) 把数组组合成一个字符串使用双引号输出数组变量 要不使用大括号把变量括住 {$a['dd']}或者中括号里不使用单引号a[dd]
使用URL传递变量<a herf="index.html?var1=a&var2=b&var3=c">Go Index</a> 连接目标?变量1&变量2...使用$_GET['var1']来获取preg_match(reg,string) 如果有匹配返回1,否则0
preg_replace(reg,replacement,string)替代匹配内容