Database
ubuntu安装mysql:
1. sudo apt-get install mysql-server 输入密码
2. sudo apt-get install mysql-client
3. sudo apt-get install libmysqlclient-dev
登陆mysql数据库可以通过如下命令:
mysql -u root -p
-u 表示选择登陆的用户名, -p表示登陆的用户密码
在Ubuntu下使用Python连接MySQL
在终端下输入sudo apt-get install python-mysqldb
$python
Python 2.7.3 (default, Apr 20 2012, 22:44:07)
>>> import MySQLdb
MySQL数据库
一种关系型数据库,这种所谓的"关系型"可以理解为"表格"的概念
一个关系型数据库由一个或数个表格组成, 如图所示的一个表格
表头(header): 每一列的名称;
列(row): 具有相同数据类型的数据的集合;
行(col): 每一行用来描述某个人/物的具体信息;
值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
键(key): 表中用来识别某个特定的人\物的方法, 键的值在当前列中具有唯一性
数据库操作
创建一个数据库:create database 数据库名 [其他选项];
查看已经创建的数据库:show databases;
删除整个数据库:drop database 数据库名;
对一个数据库进行操作, 须先选择该数据库, 否则会提示错误: ERROR 1046(3D000): No database selected
两种方式对数据库进行使用的选择:
一: 在登录数据库时指定, 命令: mysql -D 所选择的数据库名 -h 主机名 -u 用户名 -p
例如登录时选择刚刚创建的数据库: mysql -D samp_db -u root -p
二: 在登录后使用 use 语句指定, 命令: use 数据库名;
use语句可以不加分号, 执行 use samp_db 来选择刚刚创建的数据库, 选择成功后会提示: Database changed
表操作
创建数据库表:create table 表名称(列声明);
create table students
(
id int unsigned not null auto_increment primary key,
name char(8) not null,
sex char(4) not null,
age tinyint unsigned not null,
tel char(13) null default "-"
);
对于较长的语句在命令提示符下容易输错, 因此可以通过文本编辑器将语句输入保存为 createtable.sql 的文件, 通过命令提示符下的文件重定向执行该脚本:mysql -D samp_db -u root -p < createtable.sql
show tables; 命令可查看已创建了表的名称
describe 表名; 命令可查看已创建的表的详细信息
语句:
insert:用来将一行或多行数据插到数据库表中
格式:insert into 表名 (字段…,…) values(值…,…)
insert into test (‘id’,‘uid’,‘regdate’,‘remark’) values(’’,‘朱珠’,now(),‘工人’)
insert into test values(’’,‘朱珠’,now(),‘工人’) //简化,不建议使用
update: 更新表中的数据
格式:update 表名称 set 列名称=新值 where 更新条件;
update test set uid=‘朱珠’ where id=3
delete: 删除表中的数据
格式:DELETE FROM 表名 WHERE 条件 limit //limit可以省略
delete from test where id=3
alter table: 语句用于创建后对表的修改
添加列
基本形式: alter table 表名 add 列名 列数据类型 [after 插入位置];
在名为 age 的列后插入列 birthday: alter table students add birthday date after age
修改列
基本形式: alter table 表名 change 列名称 列新名称 新数据类型;
alter table students change name name char(16) not null;
删除列
基本形式: alter table 表名 drop 列名称;
删除 birthday 列: alter table students drop birthday;
重命名表
基本形式: alter table 表名 rename 新表名;
重命名 students 表为 workmates: alter table students rename workmates;
删除整张表
基本形式: drop table 表名;
select:根据一定的查询规则到数据库中获取数据
select 列名称 from 表名称 [查询条件]; select name, age from students;
select * from students where sex=“女”;
- where不仅仅支持"where 列名=值"的查询形式, 对一般的比较运算的运算符都是支持的, 如 =、>、<、>=、<、!= 以及一些扩展运算符 is [not] null、in、like 等。还可以对查询条件使用or 和 and 进行组合查询
select id,uid from newdb 'test' where 1
select remark as r from 'test' where 1 //remark 转换成r,减少字母
select * from 'test' where id=2
select * from 'test' where id in (1,2,3)
select * from 'test' where 'uid' like '%王%' //like匹配uid姓王的 %前后匹配
select * from 'test' where id between 1 and 3
select * from 'test' where id=1 and 'remark'='学生'
2.排序,分组,指针查询
分组语句:group by 字段
排序语句:order by 字段,字段 ASC / DESC
指针查询:limit 初始值,结束值
select * from 'test' group by 'remark' //分类,分出其中有几类
select * from 'test' order by 'regdate' asc //时间正序排列(时间从过去到现在)
select * from 'test' group by 'remark'desc,id asc //几个条件一起排序
select * from 'test' limit 0,3 //只输出前3条
select * from 'test' limit 2,4 //输出第2条到4条
select * from 'test' limit 4
limit放在最后面,然后是order by放在limit的前面, group by放在order by之前。
3.计算:
COUNT(*) 统计函数
MAX(*) 最大值函数
MIN (*) 最小值函数
AVG(*) 平均值函数
SUM(*) 累计值函数(∑)
select count(*) from 'test' where 1 //统计整个表中的信息
select max(id) from 'test' where 1 //id最大的值
select min(id) from 'test' where 1 //id最小的值
分页
1、分页原理
所谓分页显示,也就是讲数据库中的结果集,一段一段显示出来。
2、分页条件
怎么分段,当前在第几段 (每页有几条,当前再第几页)
前10条记录:select * from table limit 0,10
第11至20条记录:select * from table limit 10,10
第21至30条记录:select * from table limit 20,10
3、得到的公式
(当前页数 - 1 )X 每页条数 , 每页条数
Select * from table limit ($Page- 1) * $PageSize, $PageSize
推荐阅读
-
IBM Database Patterns 指南,第 3 部分: 数据库工作负载标准
-
Oracle Flashback之Flashback database
-
MySQL中DATABASE()和CURRENT_USER()函数的示例详解
-
mysql drop database删除数据库命令实例讲解
-
mysql database manual(mysql数据库手册)
-
mysql提示[Warning] Invalid (old?) table or database name问题的解决方法
-
mysql drop database删除数据库命令实例讲解
-
mysql database manual(mysql数据库手册)
-
Mysql 删除数据库drop database详细介绍
-
在ASP.NET 2.0中操作数据之六十:创建一个自定义的Database-Driven Site Map Provider