欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据库篇-mysql详解( 一 )之基础应用

程序员文章站 2022-05-27 23:44:53
...

一 : 数据库及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;