mysql 存储过程笔记

1.在命令中应设置分隔符。
2.有输入输出参数要标明,应以begin开始,end 加分隔符结束。
3.参数、变量均不能和列名一样。就算有大小写区分也不行。
简单例子如下:

DELIMITER //

Create PROCEDURE sp_GetTeacherByCornet ( in CORNET int(11) )
BEGIN
Select t.Id,t.Exceptionid,dept.name,t.name,t.cornet,t.pass
FROM teacher t,department dept
Where  t.Exceptionid = dept.Id AND t.cornet LIKE CONCAT('%',CORNET,'%');
END //

带循环的例子:

DELIMITER //

Create PROCEDURE sp_InsertID ( in IMAGE_ID_START int(11), in IMAGE_ID_END int(11),in TAG_ID int(11))
BEGIN DECLARE i INTEGER;
SET i=IMAGE_ID_START;
WHILE i<=IMAGE_ID_END DO BEGIN
Insert piwigo_image_tag(image_id,tag_id) VALUES(i,TAG_ID);
SET i=i+1;
END;
END WHILE;
END//

执行存储过程:
call sp_InsertID(1,5)

phpmyadmin 隐藏数据库

os: ubuntu 

phpmyadmin:3.x 以上的版本

   在phpmyadmin中,默认情况下不管用哪个账户登录都可以看到  information_schema 数据库,这个数据库里面存放的是数据库的表名、数据类型、访问权限等。为了提高安全性,隐藏这个数据库,不让它默认显示出来。

 找到 /etc/phpmyadmin/config.inc.php,添加  $cfg['Servers'][$i]['hide_db'] = 'information_schema'; 即可。隐藏其他数据库也是一样的操作。

mysql中视图的算法说明

记录一下:

可选的ALGORITHM子句是对标准SQL的MySQL扩展。ALGORITHM可取三个值:MERGE、TEMPTABLE或UNDEFINED。如果没有ALGORITHM子句,默认算法是UNDEFINED(未定义的)。算法会影响MySQL处理视图的方式。

对于MERGE,会将引用视图的语句的文本与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。
 
对于TEMPTABLE,视图的结果将被置于临时表中,然后使用它执行语句。
 
对于UNDEFINED,MySQL将选择所要使用的算法。如果可能,它倾向于MERGE而不是TEMPTABLE,这是因为MERGE通常更有效,而且如果使用了临时表,视图是不可更新的。
 
明确选择TEMPTABLE的1个原因在于,创建临时表之后、并在完成语句处理之前,能够释放基表上的锁定。与MERGE算法相比,锁定释放的速度更快,这样,使用视图的其他客户端不会被屏蔽过长时间。
 
 

mssql 导入导出数据命令

其中 d:computerinfo.csv 是以逗号分隔,不包含字段名的文件

1.在查询分析器中执行
导入:
exec master..xp_cmdshell 'bcp "labs.dbo.computerinfo" in "d:computerinfo.csv" -c -t ,'
导出:
exec master..xp_cmdshell 'bcp "labs.dbo.computerinfo" out "d:computerinfo.csv" -c -t ,'

2.直接导入/导出表数据
一样的,导入为in,导出为out,-T表示windows身份验证。在命令提示符输入

bcp "labs.dbo.computerinfo" out "d:computerinfo.csv" -T -c -t ,
bcp "labs.dbo.computerinfo" out "d:computerinfo.csv" -Usa -P123456 -c -t ,

3.导出查询结果
bcp "select * from labs.dbo.computerinfo" queryout "d:computerinfo.csv" -T -c -t ,

phpmyadmin 导入csv

phpmyadmin 导入 csv 文件的过程,做个记录:

uid,username,password,u_name,grade,u_cid,u_pid,class
自动递增(也要填写!),用户名,密码明文,姓名,年级,系别ID,专业ID,班级ID
1.添加好班级、专业后找出对应的系别ID,专业ID,班级ID
2.做好excel表格后不需要字段名,学号和密码如果出现科学计数法,只要在单元格格式里面选择自定义,类型设置为0就可以了,保存为csv。
3.查看csv确认没有错之后再另存为 UTF-8 格式的csv。
4.用phpmyadmin导入到pp_passport时,文件字符集为默认的utf8,字段分隔符为英文逗号,填写上字段名。
5.更新导入用户的密码为 MD5 加密:Update `pp_passport` SET password = md5(password) Where class =7
 

phpmyadmin 的"链接表的额外特性尚未激活"

OS: Ubuntu 9.10 Server
kernel: 2.6.31-22-generic-pae
mysql-server:  5.1.37-1ubuntu5.4
phpmyadmin: 4:3.2.2.1-1

os: Ubuntu 10.04.2 LTS
mysql-server: 5.1.41-3ubuntu12.10
phpmyadmin: 4:3.3.2-1

    使用 phpmyadmin 管理 mysql 是非常方便的。如果登录 phpmyadmin 后发现提示:链接表的额外特性尚未激活。

1.详细提示
链接表的额外特性尚未激活。要查出原因,请点击此处。

$cfg['Servers'][$i]['pmadb'] ...  不好 [ 文档 ]
$cfg['Servers'][$i]['relation'] ...  不好 [ 文档 ]
一般关系特性: 已禁用
$cfg['Servers'][$i]['table_info'] ...  不好 [ 文档 ]
显示特性: 已禁用 
$cfg['Servers'][$i]['table_coords'] ...  不好 [ 文档 ]
$cfg['Servers'][$i]['pdf_pages'] ...  不好 [ 文档 ]
创建 PDF: 已禁用 
$cfg['Servers'][$i]['column_info'] ...  不好 [ 文档 ]
显示列注释: 已禁用
此 SQL 查询已加入书签: 已禁用
浏览器转换: 已禁用 
$cfg['Servers'][$i]['history'] ...  不好 [ 文档 ]
SQL 历史: 已禁用 
$cfg['Servers'][$i]['designer_coords'] ...  不好 [ 文档 ]
设计器: 已禁用
$cfg['Servers'][$i]['tracking'] …     
不好 [ 文档 ]  
追踪: 已禁用

其中 $cfg['Servers'][$i]['tracking'] 是 phpmyadmin: 4:3.3.2-1 才有的,到这个版本phpmyadmin的表已经增加到9张。

2.原因
估计是安装的时候不知道 mysql-server 的密码导致没有配置完成。

3.解决
根据 phpmyadmin 给出提示来解决。登录 mysql ,创建 phpmyadmin 数据库,导入相关的表结构
mysql -u root -p
create database phpmyadmin;
source /usr/share/dbconfig-common/data/phpmyadmin/install/mysql;
编辑 /etc/phpmyadmin/config.inc.php 文件,把大约 77-85 行的注释去掉,如:
 $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
 $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
 $cfg['Servers'][$i]['relation'] = 'pma_relation';
 $cfg['Servers'][$i]['table_info'] = 'pma_table_info';
 $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
 $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
 $cfg['Servers'][$i]['column_info'] = 'pma_column_info';
 $cfg['Servers'][$i]['history'] = 'pma_history';
 $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
$cfg['Servers'][$i]['tracking'] = 'pma_tracking';
最后重启 apache2 服务
sudo service apache2 restart
再次登录后 phpmyadmin 后就没有提示了。

phpmyadmin 无法载入 mcrypt

  网上的都是基于 windows  的,这发个基于 ubuntu 的。情况如下:

 登录 phpmyadmin 之后,在下面提示:“无法载入 mcrypt 扩展,请检查 PHP 配置”

如果没有安装过 php5-mcrypt  的话,安装一下就好了:

sudo apt-get instal php5-mcrypt

如果安装过了再次出现,那么就彻底一点:

sudo apt-get purge phpmyadmin php5-mcrypt
sudo apt-get install phpmyadmin php5-mcrypt