前言:用了两天多的时间断断续续的把MySQL高效编程看完(后面的实例没有看,准备学习MYSQL+Python的实例,故略过),把这本书中学到的东西梳理下,列在下面:
首先是关于数据库的种类及选择MySQL的优点。
直接从关系型数据库开始(之前的阶层型/网络型、卡片型直接略过,估计以后也不会使用到)。关系型数据库是目前使用比较成熟的数据库类型,目前在使用的SQLServer和在学习的MySQL就属于关系型数据库,除了这两种,IBM推出的DB2,Oracle,SQLLite和Access等都属于关系型数据库。按作者肤浅的理解,未来很长的一段时间内关系型数据库都还会是主流。而什么是关系型数据库?(不看概念还真不知道要怎么说)按照我的使用情况和目前的理解,就是将关联的数据对象以表的形式组织在一起,多个表之间以关键字关联在一起。RDB就是各个表和操作数据库的对象集合体。
除了关系型数据库,往后发展的就是面向对象型的数据库,直接在数据库中存放的是一个对象的相关信息,和面向对象程序设计中的对象直接相对应。这种数据库应该不错,但是没有使用过。不过个人觉得对数据库的发展是一种不错的构想。至于存在的一些面向对象型的数据库,直接google吧。当然,还有XML型的数据库,作者只做了简单的尝试,由于XML的跨平台和不用区分数据交换形式、数据保存形式等优点,还是很期待这种数据库的。
那么,选择MySQL的原因,它有哪些优点呢?
根据历史,MySQL刚推出的时候,以其开源,体积小,速度快赢得了大量的用户。比如Google,Yahoo和Youtube等大型网站采用的就是MySQL。除了这些优点,MySQL还支持多种开发语言,支持多种OS,有免费版和付费版两种等也算作吸引人的有点吧。
至于Windows下和Linux下安装MySQL的方法,已经有很多版本,不赘述了。
以下就是MySQL的使用手记,包括常规操作,高级应用两部分。
MySQL的常规用法(以下均以DOS下的操作为准,MySQL在Windows下不区分大小写,但是在Linux下区分):
1.进入数据库 :mysql -u root -p然后Enter,输入密码(这种操作比较安全,如果直接在p后跟着密码,会被其他人利用进入数据库)
2.查看数据库:show databases;
3.进入数据库:use+空格+数据库的名字;
4.创建操作数据库的专用用户:--不常规,先略去,知道有这个概念
5.创建数据表:create table 表名(域名+空格+数据类型+列选项,域名+....)
例子:create table customer(cid char(5) primary key,cname varchar(255) not null,birth date,sex char(1) default '1');
MySQL提供的数据类型:数值、字符串、日期、二进制、枚举。(每一种都有多种方式供选择)
列选项:AUTO_INCREMENT(定义自增序列), DEFAULT '默认值', INDEX(定义索引), NULL, NOT NULL, PRIMARY KEY(定义主键) ,
UNIQUE(定义唯一性) , CHECK(定义输入范围或输入选项)
另:创建表时可指定字符集,在括号之后添加 charset=utf8
6.显示数据表:show tables;
7.显示表的结构:desc customer或者describe customer;
8.删除数据表:drop table customer;
9.插入数据表:insert into customer(列1,列2,...) values(数据1,数据2,...);
10.显示数据表:select 列1,列2,... from 表名;全部显示,用select * from tablename;
查询中的常规用法:
条件检索:运算符:<,>,<=,>=,<>,is null,is not null,like,not like,between,not between,in ,not in;
模糊匹配:%用来匹配0个或多个字符,_用来匹配一个字符
条件组合:and,or
结果排序:order by ,asc为升序,desc为降序
取得指定件数:limit m,n取得从第m个开始的n件
数据分组:group by
多个表的连接:
内连接和外连接的区别:http://www.cnblogs.com/Ewin/archive/2009/10/05/1578322.html
自连接:基本子查询,多个返回值的子查询,exists运算符等
修改表的列结构:
修改列的定义-修改列的数据类型:alter table tablename modify name varchar(30)
追加新列:alter table tablename add colname date;--在最后追加
alter table tablename add colname date first ;--在开始追加
alter table tablename add colname date after xx;--在xx后追加
改变列的位置
改变列名和类型
删除列:alter after tablename drop colname
复制表和删除表:
复制表的结构和数据
复制表的结构:created table t1 like told
事务:http://blog.csdn.net/zdwzzu2006/article/details/5947062。并发控制的基本单位,是一个操作序列,要么都执行,要么都不执行。
事务的四个基本特征:原子性,一致性,隔离性,持久性
索引:http://kb.cnblogs.com/page/45712/
视图:http://blog.csdn.net/sj120418/article/details/7884391
存储过程:由流控制和SQL语句组成的过程,应用程序只需要调用一个存储过程,就可以调用该存储过程的所有执行语句。
存储函数:
触发器:使得对一个表的修改能够自动映射到相关联数据的表中,实现自动更新。