《PHP, MySQL, Javascript和CSS》读书随手记----MySQL篇

一 基础

  • 要求结尾分号
  • 如果在命令输入期间想要终止其运行,不要Ctrl-C. 要输入\c,并按回车键.
  • sql命令和关键字不区分大小写. 表名在windows中不区分大小写,但是在linux和os x中区分

二 sql语言

创建一个数据库

CREATE DATABASE publication

创建用户

GRANT PRIVILEGES ON database.object TO ‘username‘@‘hostname‘ IDENTIFIED BY ‘password‘

添加自增型ID列

ALTER TABLE classics ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT KEY

删除列

ALTER TABLE classics DROP pages;

删除表

DROP TABLE classics;

添加新列

ALTER TABLE classics ADD pages SMALLINT UNSIGNED

添加索引

ALTER TABLE classics ADD INDEX(author(20));

ALTER TABLE classics ADD INDEX(title(20));

ALTER TABLE classics ADD INDEX(category(4));

ALTER TABLE classics ADD INDEX(year);

另一种添加索引的方法

CREATE INDEX author ON classics (author(20));

创建主键

ALTER TABLE classics ADD isbn CHAR(13) PRIMARY KEY;

或者:

ALTER TABLE classics ADD isbn CHAR(13);

...

ALTER TABLE classics ADD PRIMARY KEY(isbn)

创建全文索引: 允许超快速检索文本中的所有列.

在每个数据字符串中存储作为专用索引的单词, 以实现用"自然语言"进行检索.

注意:

  • fulltext索引只能用于MyISAM表,是MySQL默认的存储引擎使用的类型. 如果需要将表转换为MyISAM, 通常可以使用MySQL命令 ALTER TABLE tablename ENGINE = MyISAM
  • fulltext索引的创建只适用于CHAR, VARCHAR和TEXT列
  • 在创建表时, 可以通过CREATE TABLE语句定义FULLTEXT索引, 或之后使用ALTER TABLE (或用CREATE INDEX)加入
  • 对于一个大型数据集, 将数据加载到一个没有FULLTEXT索引的表中后再创建索引, 要比将数据加载到一个已经有全文索引的表中块的多
  • 非索引词(stopwords, 比如and, as等会被忽略)

ALTER TABLE classics ADD FULLTEXT(author, title)

使用FULLTEXT索引: MATCH ... AGAINST.

MATCH...AGAINST

允许在一个查询中输入多个单词, 并对fulltext列中的所有单词进行核对. fulltext索引不区分大小写, 所以查询中所使用的大小写没有区别

SELECT author,title FROM classics WHERE MATCH(author, title) AGAINST(‘and‘)    返回空集. 因为and是一个无用词, 会被忽略. 不管这些列中存储了什么

SELECT author,title FROM classics WHERE MATCH(author, title) AGAINST(‘old shop‘)

布尔模式

MATCH...AGAINST...IN BOOLEAN MODE

改变了标准fulltext查询的作用, 使其可以搜索任意组合的搜索词, 而不要求所有的搜索词都在文本中. 一列中只有唯一一个词的话, 检索会返回该词所在的行

布尔模式还可以在检索词前用+或-来表示是否必须包含或排除.

数据库查询

SELECT * FROM classics

SELECT author, title FROM classics

SELECT COUNT(*) FROM classics    获取表的行数

SELECT DISTINCT author FROM classics    清除包含相同数据的多重输入

DELETE

DELETE FROM classics WHERE title=‘Little Dorrit‘;

WHERE

=

like %匹配任意字符

LIMIT

限定选择在一次查询中返回的行数, 以及从表中的什么位置开始返回

如果传递一个参数, 则通知mysql从结果的头部开始, 并返回参数指定的行数

如果传的是两个参数, 那么第一个参数表示从开始显示点算起的偏移量, 第二个参数表示返回的数量.

偏移量从0开始, 而返回的行数从1开始

SELECT author,title FROM classics LIMIT 1,3    从第二行开始返回三行

SELECT author,title FROM classics LIMIT 3     返回表的前3行

UPDATE....SET

更新字段内容

ORDER BY

通过一个或多个列按升序(ASC, 默认)或降序(DESC)形式将返回的结果进行排序

SELECT author, title, year FROM classics ORDER BY author ASC, year DESC

GROUP BY

组织查询返回的结果

SELECT category, COUNT(author) FROM classics GROUP BY category;

两个表连接成一个单一的\SELECT

SELECT name, author, titile from customers, classics WHERE customers.isbn=classics.isbn

NATURAL JOIN(自然连接)

SELECT name, author, title FROM customers NATURAL JOIN classics

JOIN...ON

指定一个列将两个表连接在一起

SELECT name, author, title FROM customers JOIN classics ON customers.isbn=classics.isbn;

AS创建别名:

在表名后面加AS和别名

SELECT name, author, title FROM customers AS cust, classics, AS class WHERE cust.isbn=class.isbn;

使用逻辑运算符

AND OR NOT

三 数据库设计

第一范式: 处理多列间的重复数据(或冗余)

  • 不能有包含相同类型数据的重复列出现
  • 所有的列都是单值的
  • 要有一个主键来唯一标识每一行

第二范式: 处理多行间的冗余

第三范式: 数据不直接依赖于主键, 但根据相关性, 也要将依赖于表中其他值的数据移到其他单独的表中

事务:

使用begin或start transaction语句开始

commit命令把所有的更改提交到数据库. 在收到commit命令之前,数据库认为所做的任何更改都是暂时的. 这个功能提供了撤销事务的机会, 不发送commit而是发出rollback命令便可撤销

使用rollback命令, 可以告诉mysql取消一个事务开始以来做过的所有查询, 并结束该事务.

explain 可得到任何查询快照, 来确定是否能以更好或更有效的方式发出查询.

EXPLAIN SELECT * FROM accounts WHERE number=‘123454‘;

备份:

备份前要关闭数据库或锁定: LOCK TABLES database.tablename READ;(运行中的mysql仍然可读,但不能写入)

mysqldump -u username -ppassword database> database.sql

mysqldump -u username -ppassword database tablename > tablename.sql    只备份一张表

mysqldump -u username -ppassword --all-databases > all_databases.sql     一次性备份所有的mysql数据库

从备份文件中恢复数据库

mysql -u username -ppassword < all_databases.sql

恢复单个数据库:

mysql -u username -ppassword -D database < database.sql

将一张表恢复到一个数据库中

mysql -u username -ppassword -D database < tablename.sql

四 php连接数据库

$db_server = mysql_connect($db_hostname, $db_username, $db_password);

选择数据库:

mysql_select_db($db_database)

创建并执行命令:

$query = "SELECT * FROM classics";

$result = mysql_query($query);

获取结果:

$rows = mysql_num_rows($result);    //查询到的行数

for ($j=0; $j<$rows; ++$j){

  echo mysql_result($result, $j, ‘author‘);

}

更快的方法: mysql_fetch_row

获取一行数据:

for(.....){

  $row = mysql_fetch_row($result);

  echo $row[0];

}

关闭连接:

mysql_close($db_server);

时间: 2024-10-10 21:43:21

《PHP, MySQL, Javascript和CSS》读书随手记----MySQL篇的相关文章

《PHP, MySQL, Javascript和CSS》读书随手记----php篇

1. 基础 注释: // 或 /* */ $标示变量 语句末尾加分号 数组: $oxo = array(array('x','','o'), array('p','x',''),array('','x','p')); echo $oxo[1][2] 常量: 之前不能用$符号, 只能用define函数定义 2. 对象复制 clone操作符 $obj2 = clone $obj1; 3. 类 类的构造方法: __construct() 析构方法: __destruct() 静态方法: static

压缩 javascript 和 css

www.iwangzheng.com 目前我们项目中的 CSS/JS 文件比较多, 由于RAILS 3.0 没有提供asset pipeline功能,所以这样会制约我们的访问速度. 例如:  目前,我们的布局( origin.html.erb )页面有 19 个JS文件,15个CSS文件. 每次打开都需要发送 34个 request,严重影响体验. 所以,我们要把这些js, css 分别打包压缩成一个文件. 参考: http://stackoverflow.com/questions/71122

JavaScript根据CSS的Media Queries来判断浏览设备的方法

CSS 部分 首先随便新建一个用来做判断的类,然后通过 Media Queries 来对这个类的 z-index 属性赋予不同的值.这个类仅作为 JavaScript 读取使用,所以需要将其移出屏幕窗口,让浏览者不可见以免引起意外情况. 作为演示,下面代码设置了四种设备状态:桌面普通版.小屏幕桌面版.平板电脑版和手机版. /* default state */ .state-indicator { position: absolute; top: -999em; left: -999em; z-

JavaScript高级程序设计-读书笔记(6)

第20章 JSON JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量 JSON的语法可以表示一下三种类型的值 l        简单值:使用与JavaScript相同的语法,可以在JSON中表示字符串.数值.布尔值和null.但JSON不支持JavaScript中的特殊数值undefined. “Hello world!” l        对象(属性的值可以是简单值,也可以是复杂类型值,如下这样在对象嵌入对象) { “name” : ”Nicholas”, “age” : 29

JavaScript获取CSS样式的问题(1)

刚刚来到博客园!先分享一点初级的知识吧! 在学习javascript中,很多人对获取DOM元素的CSS样式感到很困惑,因为,对于行级样式,我们可以通过很简单的访问style属性就可以了得到,而对于<style>……</style>标签中定义的CSS样式和通过<link>载入的外部样式表,我们就无法用style属性访问得到,而且使用getAttribute()方法也无法获取到.以前在网上搜索了很久,其解决方案都不尽完美,回头通过自己查阅各种书籍,算是找到了比较完美的解决方

在 WordPress 指定页面加载指定 JavaScript 或 CSS 代码

如何添加自定义字段到主题 用你常用的代码编辑器打开你的 WordPress 主题的 header.php文件,找到<?php wp_head(); ?>这句代码,在其后面添加上: <?php if (is_single() || is_page()) { $head = get_post_meta($post->ID, 'head', true); if (!empty($head)) { ?> <?php echo $head; ?> <?php } }

Html,JavaScript和CSS的关系

Html,JavaScript和CSS的关系 1. HTML是网页内容的载体.内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字.图片.视频等. 2. CSS样式是表现.就像网页的外衣.比如,标题字体.颜色变化,或为标题加入背景图片.边框等.所有这些用来改变内容外观的东西称之为表现. 3. JavaScript是用来实现网页上的特效效果.如:鼠标滑过弹出下拉菜单.或鼠标滑过表格的背景颜色改变.还有焦点新闻(新闻图片)的轮换.可以这么理解,有动画的,有交互的一般都是用JavaScrip

JavaScript获取CSS样式的问题(2)

上一篇文章我们创建了一个cssObj对象,我们在里面添加了一个能力检测结果的属性和一个获取CSS样式的方法,但是这个对象和方法还不够完美! 为什么呢? 原因就是我们没有对传入参数进行合法性验证以及还没有对javascript中的保留关键字float进行处理,所以,当我们传入非法参数和查询float属性时,会发生脚本错误! 这当然是我们不想看到的! 首先,我们进行参数的合法性判断,在getCSS()方法中,接收2个参数,第一个是DOM元素对象,第二个是需要查询的CSS属性名称,我们知道,第一个参数

前端html、Javascript、CSS技术小结

简单地总结了一下前端用过的html.javascript.css技术,算是清点一下,做个大略的小结,为进一步的学习给个纲领. 一.HTML 由于HTML5的兴起,简单地判断一个网页是否是html5网页,只需要找找内部是否有html5的标志性标签就行了.然而平时虽然写了不少html,却没怎么关注它的发展史: GML(Generalized Marcup Language)通用标记语言 和SGML(Standard Generalized Markup Language)标准通用标记语言. 由Tim