数据库
博客:http://blog.csdn.net/heyiaiqing/article/details/74066831
什么是数据库
数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作
什么是数据库管理系统
数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中表内的数据
常见的数据库管理系统
- MYSQL:开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费
- Oracle:收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购了MYSQL
- DB2:IBM公司的数据库产品,收费的.常应用在银行系统中.
- SQLServer:MicroSoft公司收费的中型的数据库.C#、.net等语言常使用
- SyBase:已经淡出历史舞台.提供了一个非常专业数据建模的工具PowerDesigner
- SQLite:嵌入式的小型数据库,应用在手机端
- Java相关的数据库:MYSQL,Oracle.
数据库与数据库管理系统的关系
MySQL的安装
http://blog.csdn.net/u013235478/article/details/50623693
SQLYog的安装
http://download.csdn.net/detail/zl544434558/7206367
SQL语句介绍与分类
创建数据库
/*
创建数据库
*/
CREATE DATABASE 数据库名;
CREATE DATABASE luoDatabase;
查看数据库
SHOW DATABASE;
删除数据库
DROP DATABASE luoDatabase;
使用数据库
USE luoDatabase;
创建表
create table 表名(
列名1(字段名) 数据类型 约束,
列名2(字段名) 数据类型 约束,
列名3(字段名) 数据类型 约束
);
CREATE TABLE users(
uId INT,
uName VARCHAR(20),
uAddress VARCHAR(40)
);
删除表
DROP TABLE users;
主键约束,自动增长
/**
设置为主键,保证数据的唯一性,非空性
PRIMARY KEY AUTO_INCREMENT,让主键列数据实现自动增长
**/
CREATE TABLE users(
uId INT PRIMARY KEY AUTO_INCREMENT,
uName VARCHAR(20),
uAddress VARCHAR(40)
);
查看所有表
SHOW TABLES;
查看某一表
DESC 表名;
删除表
DROP table users;
修改表结构
添加列,添加字段
ALTER TABLE users ADD tel INT;
修改列名,字段名的约束
alter table 表名 modify 列名 数据类型 约束;
ALTER TABLE users MODIFY tel VARCHAR(50)
修改列名,字段名
ALTER TABLE 表名 CHANGE 旧列名 新列名 类型长度 约束; ALTER TABLE users CHANGE tel newtel VARCHAR(11) NOT NULL;
删除列
ALTER TABLE 表名 DROP 列名;
ALTER TABLE users DROP newtel;
修改表名
RENAME TABLE 表名 TO 新名;
RENAME TABLE users TO users2;
修改表的字符集(最好不要做)
往表中添加数据(考虑主键)
向数据表中添加数据 insert
格式:
insert into 表名(列名1,列名2,列名3) values (值1,值2,值3);
注意:
列名,表名问题
对应问题,个数,数据类型
添加数据,不考虑主键
格式1:
insert into 表名 (列名) values (值);
格式2:(省略列名的不能省掉主键的值)
insert into 表名 values (值);
添加数据,批量写入
格式:
insert into 表名 (列名1,列名2) values (值1,值2), (值1,值2), (值1,值2);
对数据进行更新操作
格式:(where条件最好唯一)
update 表名 set 列1=值1,列2=值2 where 条件(列名=值);
删除表中的数据
格式:
delete from 表名 where 列名 = 值;
查询指定列的数据
格式:
select 列名1,列名2 FROM 表名;
查询表中所有列的数据
格式:
select * from 表名 where 列名 = 值;
查询去掉重复记录(distinct) distinct
格式:
select distinct 列名 from 表名
查询重新命名列(as)
select 列名 as '名称' from 表名
查询时直接进行数学计算
查询数据中,直接进行数学计算
select zname,zmoney+1000 as 'sum' from 表名
数据库数据乱码问题
-- 临时性的改变,
set names 'gbk';
条件
=
<>
<=
>=
and
or
not
id in (1, 3, 5, 7)
id not in (1, 2, 3, 4)
条件查询(where的条件过滤)
between and(可以用于日期之间的查询)
列名 in (100, 3500, 5000)
列名 not in (100, 3500, 5000)
模糊查询(like)
必须配合通配符
%:多个字符
_:一个字符
select * from 表名 where 列名 like '%支出%'
排序查询
升序,降序
order by 列名 [desc:降序] [asc:升序]
select * from 表名 order by 列名 [desc:降序] [asc:升序]
聚合函数
对一列进行计算,返回单一的值
- count:统计不为null的值的个数
- sum:对一些数据进行求和计算
- max:对某列数据,获取最大值
- avg:求平均数
count函数
select count(列名*) as 'count' from 表名;
sum求和函数,对一些数据进行求和计算 sum(列名)
sum求和时,不是数值类型就忽略,null值按照0算
select sum(列名) from 表名 [where zname like '%支出%']
max 函数,对某列数据,获取最大值
avg函数,求平均数
如果指定列不是数值类型,那么计算结果为0
分组统计
group by 被分组的列名
select sum(列名) as 'sum', 列名 from 表名 [where 条件] Group by 列名 [order by sum]
分组后过滤,关键字having
select sum(列名) as 'sum', 列名 from 表名 [where 条件] Group by 列名 [order by sum] having sum > 5000
总结
后续会跟上JDBC和MySQL进阶的内容,坚持坚持。