文章目录
基础介绍及软件介绍
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;