一 : 数据库及mysql简介
数据库
: 存储数据的仓库,本质是文件系统,数据库按照特定的格式将数据存储起来,用户可以通过SQL对数据库中的数据进行增删改查操作.数据库中包含多个数据表.
数据库管理系统 (DataBase Management System,DBMS)
: 是一种操作和管理数据库的大型软件,用于建立,使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性. 用户通过数据库管理系统访问数据库中表内的数据, DBMS
扮演者一个代理者,让用户优雅的处理数据库与数据表的各种操作.
常见的数据库软件 :
- mysql :开源免费的数据库,小型的数据库,已经被Oracle收购,6.X版本也开始收费.
- Oracle : 收费的大型数据库,Oracle公司的产品.Oracle收购SUN公司,收购MYSQL.
- DB2 : IBM公司的数据库产品,收费,常应用在银行系统中.
- SQLServer : MicroSoft 公司收费的中型的数据库. C# , .net等语言常使用.
- SyBase : 已经淡出历史舞台,提供了一个非常专业数据建模工具PowerDesigner.
- SQLite : 嵌入式的小型数据库,应用在移动端.
二 : mysql 的常用命令
- 启动与关闭 : mysql.server start;/mysql.server stop;
- 登录 : mysql -uroot -pnewpass;
三 : SQL简介
(Structured Query Language))结构化查询语言,关系数据库语言的国际标准
数据库厂商们都会支持ISO的SQL标准,也会在标准的基础上做自己的扩展
SQL分类
数据定义语言
: 简称DDL
(Data Definition Language),用来定义数据库对象 : 数据库,数据表,列(column)等 .对结构的操作
关键字 : 创建create, 修改alter, 删除drop等
数据操作语言
: 简称DML
(Data Manipulation Language),用来对数据库中表的记录进行更新,对数据的操作
关键字 : 插入 insert,删除 delete, 更新 update等
数据查询语言
: 简称DQL
(Data Query Language) ,用来查询数据库中标的记录 .关键字 : select ,from ,where 等
四 : SQL常见命令
( 一 )数据库
-
创建一个库
create database 库名
create database 库名 character set 编码
-
删除一个库
drop database 库名
-
使用某个数据库
use 库名
-
查看当前正在操作的库
select database();
-
插入数据中文乱码问题解决办法
set names 编码
或者去配置文件里设置
( 二 )数据表
-
创建一张表
create table 表名(
字段名 类型(长度) [约束],
字段名 类型(长度) [约束],
字段名 类型(长度) [约束]
);
CREATE TABLE TZ_zhangwu (
zwid INT PRIMARY KEY AUTO_INCREMENT,
flname VARCHAR(200),
money DOUBLE,
zhangHu VARCHAR(100),
createtime DATE,
description VARCHAR(1000)
);
-
查看数据库表
show tables;
-
查看表的结构
desc 表名
-
删除一张表
drop table 表名
-
修改表
①添加一列
alter table 表名 add 字段名 类型(长度)[约束]
②修改列的类型
alter table 表名 modify 要修改的字段名 类型(长度)[约束]
③修改列的列名
alter table 表名 change 旧列名 新列名 类型(长度)[约束]
④删除表的列
alter table 表名 drop 列名
⑤修改表名
rename table 表名 to 新表名
⑥修改表的字符集
alter table 表名 character set 编码
( 三 )对数据库记录进行操作
①插入记录
insert into 表名(列名1,列名2,列名3...) values(值1,值2,值3....)
insert into 表名 values(值1,值2,值3...)
②修改表记录
update 表名 set 字段名=值,字段名=值,字段=值
update 表名 set 字段名=值,字段名=值,字段=值 where 条件
③删除表记录
delete from 表名 where条件
//全部删除了
delete from 表名
④查询操作
( 1 )简单查询 :
简单查询语法:
select [distinct] *| 列名,列名 from 表名 [where条件]
查询所有
select * from TZ_zhangwu;
查询部分列
select flname,money from TZ_zhangwu;
查询所有信息使用表别名
select * from TZ_zhangwu as p;
查询分类名称,使用别名
select flname as p from TZ_zhangwu;
去掉重复值(按照价格)
select distinct(money) from TZ_zhangwu;
将所有消费的价格+10 显示
select flname,money+10 from TZ_zhangwu;
( 2 )条件查询:
查询flname 为 '彤德莱'的信息
select * from TZ_zhangwu where flname = '彤德莱';
查询 money > 100元 的所有信息
select * from TZ_zhangwu where money > 100;
查询flname含有'吃'字的商品信息
select * from TZ_zhangwu where flname like '%吃%';
查询zwid 在(3,6,9)范围内的所有信息
select * from TZ_zhangwu where zwid in (3,6,9);
查询flname含有'吃'字并zwid 为6 的信息
select * from TZ_zhangwu where flname like '%吃%' and zwid = 6;
查询 zwid 为2 或者 6 的信息
select * from where zwid = 2 or zwid = 6;
( 3 )排序:
查询所有信息,按照money进行排序(升序/降序)
升序
select * from TZ_zhangwu order by money asc;
降序
select * from TZ_zhangwu order by money asc;
查询flname 有'吃' 的信息,并且按照money降序排序
select * from TZ_zhangwu where flname like '%吃%' order by money desc;
( 4 )聚合函数:
获取所有money的总和
select sum(money) from TZ_zhangwu;
获取所有商品的平均价格
select avg(price) from TZ_zhangwu;
获得所有账务的个数
select count(*) from TZ_zhangwu;
( 5 )分组操作:
1.添加分类
id (alter table TZ_zhangwu add cid varchar(32);)
2.初始化数据
update TZ_zhangwu set cid='1';
update TZ_zhangwu set cid='2' where pid in (5,6,7);
根据 'cid' 字段分组,分组后统账务记录个数
select cid,count(*) from TZ_zhangwu group by cid;
根据 'cid'分组,分组统计每组的平均money,并且平均money大于2000元;
select cid,avg(money) from TZ_zhangwu group by cid having avg(money) > 2000;