《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);
《PHP, MySQL, Javascript和CSS》读书随手记----MySQL篇的更多相关文章
- 《PHP, MySQL, Javascript和CSS》读书随手记----php篇
1. 基础 注释: // 或 /* */ $标示变量 语句末尾加分号 数组: $oxo = array(array('x','','o'), array('p','x',''),array('','x ...
- 前端html、Javascript、CSS技术小结
简单地总结了一下前端用过的html.javascript.css技术,算是清点一下,做个大略的小结,为进一步的学习给个纲领. 一.HTML 由于HTML5的兴起,简单地判断一个网页是否是html5网页 ...
- 5种JavaScript和CSS交互的方法
分享 分享 分享 分享 分享 随着浏览器不断的升级改进,CSS和JavaScript之间的界限越来越模糊.本来它们是负责着完全不同的功能,但最终,它们都属于网页前端技术,它们需 ...
- JavaScript根据CSS的Media Queries来判断浏览设备的方法
CSS 部分 首先随便新建一个用来做判断的类,然后通过 Media Queries 来对这个类的 z-index 属性赋予不同的值.这个类仅作为 JavaScript 读取使用,所以需要将其移出屏幕窗 ...
- 5种你未必知道的JavaScript和CSS交互的方法
随着浏览器不断的升级改进,CSS和JavaScript之间的界限越来越模糊.本来它们是负责着完全不同的功能,但最终,它们都属于网页前端技术,它们需要相互密切的合作.我们的网页中都有.js文件和.css ...
- Dynamically loading an external JavaScript or CSS file
原文: Dynamically loading an external JavaScript or CSS file 通过javascript动态加载css文件和javascript文件,主要是通 ...
- 《PHP与MySQL WEB开发》读书笔记
<PHP与MySQL WEB开发>读书笔记 作者:[美]Luke Welling PHP输出的HereDoc语法: echo <<<theEnd line 1 line ...
- Odometer使用JavaScript和CSS制作数字滑动效果
Odometer是一个使用JavaScript和CSS技术,制作出数字上下滑动的动画效果插件,有点类似与我们的天然气的读数的动画效果,这个插件是轻量级的,压缩版本只有3kg,使用CSS3动画技术,所以 ...
- HTML文档中使用JavaScript和css
HTML文档中使用JavaScript和css 引入css 内嵌式引入:将css代码写在HTML中的style标签里面 <!DOCTYPE html> <html> <h ...
随机推荐
- Activiti 5.18启动流程到完成所有任务之间的数据库变化(转)
来写一下Activiti 5.18版本从启动流程到整个流程结束之间数据库表的变化 先给出流程图,很简单的流程,就是两个UserTask: 代码如下: DeploymentBuilder builder ...
- Mac osx 启用和关闭root用户
设置->群组和用户->点击小
- Idea中如何将web项目打包成war包并放到tomcat中启动
第一步:在idea中选中Artifacts.右侧勾选Build on make生成war包,如下图 第二步:将target文件夹里面的war包拷贝到tomcat文件下的webapp目录下 第三步:修改 ...
- Codeforces 1107 简要题解
文章目录 A题 B题 C题 D题 E题 F题 G题 传送门 A题 传送门 题意简述:问你能不能把一个数字串切成若干块,使得切出来的kkk个数k≤2k\le2k≤2满足a1<a2<...&l ...
- 2018.10.31 NOIP训练 锻造(方程式期望入门题)(期望dp)
传送门 根据题目列出方程: fi=pi∗(fi−1+fi−2)+(1−pi)∗(fi+1+fi)f_i=p_i*(f_{i-1}+f_{i-2})+(1-p_i)*(f_{i+1}+f_i)fi=p ...
- mysql 外键理解
假定一个班级的学生个人信息表: 什么是外键 在设计的时候,就给表1加入一个外键,这个外键就是表2中的学号字段,那么这样表1就是主表,表2就是子表.(注意: 外键不一定须要作为从表的主键.外键也不一定是 ...
- adb push init.rc /
http://blog.csdn.net/jumper511/article/details/28856249 修改Android init.rc文件后,需要将修改后的文件上传到手机,但是发下如下问题 ...
- Redis基于eval的多字段原子增量计算
目录 目录 1 1. 前言 1 2. 优点 1 3. 方法一:使用struct 2 3.1. 设置初始值(覆盖原有的,如果存在) 2 3.2. 查询k1的值 2 3.3. 设置初始值(覆盖原有的,如果 ...
- C#版ObjectId
近来在准备弄一个开源的HIS,但一周过去了几乎没有进度.就卡在ID如何生成.HIS的数据库压力大,如何多数据库支持,减轻压力一直想去实现.拿不准纯数字ID段还是GUID一类的文本ID.最终在mongo ...
- 关于windows10的使用
关于windows10的使用 个人习惯设置 打开我的电脑之后,不是定位到此电脑,而是定位到快速访问. [解决办法] 用win + 箭头 快捷键将窗口靠边之后,另一边出现多个窗口 [解决办法] win ...