August 1, 2008 – 10:59 am
LOAD DATA INFILE
LOAD DATA INFILE “filename.txt” INTO TABLE tablename;
字段包括在单引号内,用 tab 键进行间隔,每行由 \n 换行,特殊字符用 \ 转义。
存储引擎
MyISAM(MySQL 默认)
ISAM
MEMORY
MERGE
BDB
InnoDB
用 ALTER TABLE 语句转换,比如:
alter table tablename type=innodb;
事务安全性的四个需求(ACID 原则):Atomicity, Consistency, Isolation, Durability。
MySQL 默认为 autocommit 模式。
mysql>set autocommit=0; #关闭 autocommit
在自动提交打开前提下开始事务:
mysql>start transaction;
完成后手动提交:
mysql>commit;
回滚:
mysql>rollback;
InnoDB 支持强制使用 foreign key。
创建存储过程 create procedure
设置分隔符 delimiter …
调用过程 call procedurename(@t);
查看该变量 select @t;
创建函数 create function
局部变量 declare variablename
游标(cursor)
控制结构
声明句柄
EXPLAIN
id
select_type
table
type
possible_keys
key
key_len
ref
rows
Extra
关联优化器
$myisamchk –analyze pathtomysqldatabase/table
$myisamchk –analyze pathtomysqldatabase/*.MYI
$myisamchk –analyze pathtomysqldatabase/*/*.MYI
mysql>analyze table tablename1, tablename2, …;
将列创建为索引
ALTER TABLE table ADD INDEX (column);
表的优化
mysql>OPTIMIZE TABLE tablename;
$myisamchk -r table
$myisamchk –sort-index –sort-records=1 pathtomysqldatabase/*/*.MYI
备份数据库
1. LOCK TABLES table lock_type [, table lock_type ...]
锁定类型 READE / WRITE,备份之前必须执行 FLUSH TABLES。
*******没明白*******
以文件方式备份
2. $mysqldump –opt –all-databases > backup-file.sql
再,停止 mysqld 进程,通过 –log-bin[=logfile] 重新启动进程。日志将记录备份后数据库发生的变化。
*******还是没明白*******
3. $mysqlhotcopy database /path/for/backup
再,停止 mysqld 进程,通过 –log-bin[=logfile] 重新启动进程。日志将记录备份后数据库发生的变化。
*******模模糊糊*******
恢复 MySQL 数据库
使用了方法 1,可将数据文件重新复制到安装 [...]
抽象类(abstract class): 不能被实例化.
抽象方法(abstract operation): 只提供了一个方法的声明, 但是不提供方法的具体实现.
包含抽象方法的任何类自身必须是抽象的.
使用 PEAR::DB 抽象类与数据库进行交互
安装: $sudo apt-get install php-pear
检查最新版本: $pear list-upgrades
升级 DB: $sudo pear upgrade DB
require_once(’DB.php’); # set for using PEAR DB
$dsn = “mysqli://$user:$pass@$host/$db_name”; # set up DSN
$db = $DB::connect($dsn); # connect to database
与实例化 mysqli 类连接数据库相比其实都差不多.
Prepared 语句向 MySQL 发送需要执行的查询模板, 再单独发送数据.
$query = “insert [...]
设计 Web 数据库
列(Column), 又称域或属性.
行(row), 也称为记录.
表中的标志列称为键(key), 一个键可以由不止一列组成. 主键(primary key)和外键(foreign key). 考虑要建模的实际对象, 避免保存冗余数据(避免 3 种更新不规则: 修改, 插入, 删除). 使用原子列值, 每行的每个属性只储存一个数据. 确认所选择的键是唯一的, 要有意义, 事先考虑需要询问数据库的问题. 避免空属性的设计.
Web 数据库架构, 暂不讨论.
—————————————————————
创建 Web 数据库(仅学习 MySQL 数据库)
登录 MySQL Monitor: $mysql -h hostname -u username -p
-h 希望连接的主机, 默认为本机(localhost)
-u 登录时的用户名(可以不是 root)
-p 提示需要密码
创建 root:
$mysql -u root
mysql> SET PASSWORD FOR ”@’localhost’ = PASSWORD(’newpwd’);
mysql> SET PASSWORD FOR ”@’host_name’ = [...]