数据库单表 (八)

本文详细介绍了MySQL数据库的基础知识,包括连接、工作机制和表格形式。讲解了数据库操作,如主键、表的增删改查、数据的管理。还涵盖了各种查询操作,如条件查询、聚合查询、排序和分组查询。此外,提到了数据库的安装、卸载流程,以及解决安装问题的方法。内容实用,适合初学者掌握MySQL基本操作。
摘要由CSDN通过智能技术生成

基础介绍及软件介绍

x64 是指CPU是64位版本的。
x86 是指CPU是32位版本的。

数据在内存:
优点:读写速度快
缺点:程序结束后数据丢失

保存到文件
优点:数据可以永久保存
缺点:
1、频繁的IO操作,效率不高
2、数据的管理非常不方便,需要把所有的数据整体都读取出来才能操作

数据库:
1、数据永久保存
2、数据管理非常方便

版本号:
5.4 5.5 5.7 5.7.1

卸载:
1、控制面板-管理工具-服务,停掉MySql服务。
2、控制面板-程序和功能,卸载MySql
3、到C:\Program Files安装目录把MySql目录删除
4、C:\ProgramData删除MySql目录

请添加图片描述
请添加图片描述请添加图片描述

1: This application requires Visual Studio 2013 Redistributable. Please install the Redistributable then run this installer again.
1: 1: MySQL Server 5.7 2: {81B27388-3733-4B65-8D84-AD9C9113B498} 3: 3
https://www.microsoft.com/zh-CN/download/details.aspx?id=40784
点击下载按钮并将vcredist_x64和vcredist_86都下载下来,先安装vcredist_x64后尝试重新安装mysql 5.7.20 ,假如依然报错,然后安装vcredist_x86后再次安装mysql 问题解决。

一、数据库

1.连接

数据库是以表为组织单位存储数据的。
请添加图片描述

2.工作机制

请添加图片描述

3.表格形式

请添加图片描述

二、数据库操作

1.主键

PRIMARY KEY 主键,不能重复,唯一确定一条记录 (unique+not null)
AUTO_INCREMENT 自动增长
varchar(10) char(10)区别:
相同点:都可以最大放10个字符
不同点:char(10)不管输入的是多少都会占10个字符,例如输入名字“张三”只有两个字符,
但是使用char(10)在数据库里面还是占10个字符的空间。
使用varchar(10)最大支持是10个字符,但是实际长度就是输入字符长度,例如输入名字“张三”只有两个字符,
那么在varchar(10)里面就只占两个字符。

Duplicate entry ‘1’ for key ‘PRIMARY’

2.表的增删改查和数据库的创建、删除

SELECT * FROM student;
-- 创建表  查询、添加、修改、删除

-- 列出所有的数据库
SHOW DATABASES;

-- 创建数据库
CREATE DATABASE test DEFAULT CHARACTER SET utf8;
-- 删除数据库
DROP DATABASE test;

-- 创建表
CREATE TABLE `student`(
   `id` INT PRIMARY KEY AUTO_INCREMENT,
   `name` CHAR(1),
   `age` INT,
   `gender` CHAR(1)
);

-- 更改表的结构
-- 添加属性列
ALTER TABLE `student` ADD COLUMN `address` CHAR (10);

-- 删除属性列
ALTER TABLE `student` DROP COLUMN `address` ;

-- 修改表的属性名
ALTER TABLE `student` CHANGE `address`  `address` CHAR(20);
ALTER TABLE `student` CHANGE `name`  `name` CHAR(20);

-- 修改表的名字
ALTER TABLE `student0` RENAME TO `student`;

-- 查看所有的表
SHOW TABLES;

-- 描述表的结构
DESC `student`;

-- 删除表
DROP TABLE `student`;

3.表中数据的增删改查

-- 插入数据
INSERT INTO `student`(`name`,`age`,`gender`) VALUES ('wangwu',23,'男');
INSERT INTO `student`(`name`,`age`,`gender`) VALUES ('wangwu1',23,'男'),('wangwu2',23,'男');

-- 修改数据
UPDATE `student` SET `age`=`age`+1;
UPDATE `student` SET `age`=`age`+1 WHERE `id`=12;
UPDATE `student` SET `name`='zhaoliu',`age`=32,`gender`='男'  WHERE `id`=1;


-- 删除数据
DELETE FROM `student`;-- 没有限制条件,会删除整个表里的数据,非常危险
DELETE FROM `student` WHERE `id`=2;	
-- TRUNCATE删除表里所有数据,自增的id会初始化为1,DELETE还会在原来的id上继续递增
TRUNCATE TABLE student;

-- 查询数据
-- 显示所有列
SELECT * FROM student;-- 学习时可以使用*,工作时最好不用


-- 查询指定的列
SELECT id,`name`  FROM `student`;

4.条件查询

-- 查询的时候可以添加常量列,通过as可以起别名
-- as可以给某一-列起别名,这个as可以省略
-- 添加的常量列不会加入到student中
SELECT id, NAME , age, gender,'Java210702' AS '班级' FROM student ;

-- 查询的时候可以将字段当成java里面的变量进行运算,同样不会加入student
SELECT id,`name`,(php+java) '总成绩' FROM student;

-- distinct查询时去除重复记录
-- 查询这些学生来自那几个城市
SELECT DISTINCT address FROM student;

-- 条件查询  where
SELECT * FROM student WHERE `name`='王五';

-- 逻辑条件: and(同时成立) or(只要有一个成立)
SELECT * FROM student WHERE `name`='王五' AND address='青岛';
SELECT * FROM student WHERE `name`='王五' OR address='青岛';

5.比较运算符查询

-- 比较运算符:> < >=m <= !=
SELECT * FROM student WHERE java>=60 AND java<=90;
-- between and  [60,90] 等价于 >= and <=
SELECT * FROM student WHERE java BETWEEN 60 AND 90;
SELECT * FROM student WHERE address!='青岛';

6.聚合查询

-- 聚合查询
-- 聚合查询函数:sum()、avg()、max()、min()、count()
-- 统计学生php的总成绩(sum求和)
SELECT SUM(php) AS 'php总成绩' FROM student;

-- 统计学生php的平均值
SELECT AVG(php) AS 'php平均值' FROM student;

-- 统计学生php的最大值
SELECT MAX(php) AS 'php最大值' FROM student;

-- 统计学生表里面一共有多少学生
SELECT COUNT(*) AS '总人数' FROM student;
SELECT COUNT(id) AS '总人数' FROM student;
SELECT COUNT(address) AS '总人数' FROM student;
-- 注意:count()函数统计的是指定列不包含NULL的数据的个数

7.查询排序

-- 查询排序
-- 语法:order by 字段  asc/desc  默认是asc升序,可以不写
SELECT * FROM student ORDER BY php;
SELECT * FROM student ORDER BY php ASC;
SELECT * FROM student ORDER BY php DESC;
-- 多个条件排序
-- 需求:先按照php降序,java升序(整体是按照php降序,如果php相同的数据再按照java标准排序)
SELECT * FROM student ORDER BY php DESC, java ASC;

8.分组查询

-- 分组查询(group by)
-- 需求:查询男女分别有多少人
SELECT gender,COUNT(id) FROM student GROUP BY gender;
-- select后面的查询都是基于group by之后的
SELECT address,COUNT(id) FROM student GROUP BY address;
  
-- 分组查询后筛选
-- 需求:address大于1
-- group by之后的条件查询使用having
SELECT address AS '地址',COUNT(id) AS '人数' FROM student GROUP BY address HAVING COUNT(id)>1;
  
 SET @rowno := 0; -- 定义一个变量,变量名随意
SELECT (@rowno := @rowno +1) AS rowno,id,NAME,php,java FROM student;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值