企业网站维护怎么做,学网站开发去哪学,网页制作素材按钮,南宁小程序制作的公司MySQL数据库开发学习中#xff0c;想满足一些需求#xff0c;无疑需要经常与数据打交道#xff0c;例如#xff0c;我们在使用IO的一些技术的时候#xff0c;常常需要将一些数据存储到外部文件#xff0c;可能大家会问#xff0c;我们初学的时候常常会简单的保存一些数据…MySQL数据库开发学习中想满足一些需求无疑需要经常与数据打交道例如我们在使用IO的一些技术的时候常常需要将一些数据存储到外部文件可能大家会问我们初学的时候常常会简单的保存一些数据到 .txt 文件中为什么还需要数据库呢(一) 为什么使用数据库(1) 查询速度假定我们将数据全部存储在一个普通文件中(data.txt)_(以逗号间隔)......
Eminem,male,1972,USA
Rihanna,female,1988,Barbados
Taylor Swift,1989,female,USA
Aavril Lavigne,1984,female,Canada
......
如果在我们的数据极为庞大的情况下我们需要查询其中的一些数据例如查询Eminem的国籍我们一般会使用遍历但是毫无疑问这个响应时间会变得极其缓慢但是使用数据库后它所提供的一些索引技术等就可以解决这样的问题(2) 保证数据完整有效Rihanna,female,1988,Barbados
Rihanna,female,1995,USA如果数据中出现了重名的情况又如何判断是不是同一个人呢如果data.txt文件中的数据被错误的修改例如出生年份被修改为其他类型字符串这种无效表达怎么办或许你可以在程序中写一些逻辑判断语句进而筛选处理这些问题但是仍旧在数据较为庞大的情况下会出现各种各样的问题增加了开发者的开发难度而数据库本身就制定了一些约束从而保证了数据的完整且有效从而使开发者只需要更加注重于程序本身的设计而不用花费过多的时间去处理数据上的一些细节问题(3) 数据共享常用来简单存储数据的 txt/excel 等均属于单一文件并且都是无法共享的只支持当前用户使用并且修改而数据库则允许用户共享不同的用户可以同时存取数据库中的数据用户也可以用各种方式通过接口使用数据库并提供数据共享(4) 数据的安全性在我们前者中数据的修改是很随意的但是在实际开发中我们有时候需要面临多个用户检索、修改同一文件中的数据或者在并发情况下写同一文件或者记录而数据库基于锁等的一些技术便可以帮助我们解决这些问题(5) 故障恢复由于逻辑或者物理上的错误导致了系统的错误操作从而使得数据被皮怀如何快速恢复数据我们上面的单一文件系统显然无法帮助我们解决问题而数据库却有相关机制去弥补、处理相关问题上面我们仅仅从几个常见的点分析了为什么使用数据库当然远远不止这些所以总的来说就是数据库其特殊的存储以及管理方式既提高了效率也极大的减少了开发人员的负担(二) 数据库的基本概念(1) 概述数据库DateBase简称DB是一种用于存储和管理数据的仓库简单的说就是一个容器内内部按照一定方式存储着一些数据(2) 特点持久化存储数据的。其实数据库就是一个文件系统数据独立存储且集中控制方便存储和管理数据使用了统一的方式操作数据库 -- SQL实现数据共享数据一致性和可维护性保证数据安全可靠(三) MySQL数据库的基本操作MySQL服务启动(两种方式)1. cmd-- services.msc 打开服务的窗口2. 使用管理员打开cmdA: net start mysql : 启动mysql的服务B: net stop mysql : 关闭mysql服务
MySQL登录1. 点击 MySQL 5.7 Command Line Client输入密码即可2. 命令行登录(配置好环境变量)A: mysql -uroot -p密码 //root为用户名B: mysql -hip -uroot -p连接目标的密码C: mysql --hostip --userroot --password连接目标的密码
MySQL退出1. exit2. quit
(四) SQL简单认识(1) 什么是SQLStructured Query Language结构化查询语言SQL就是访问和处理关系数据库的计算机标准语言它定义了操作所有关系型数据库的规则大部分数据库在SQL的标准上进行了扩展。而每一种数据库操作的方式存在不一样的地方称为方言。但凡涉及到关系型数据库就离不开SQL例如在电商网站中存入商品信息游戏中存储装备道具信息等补充常见的关系型数据库Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL商用Oracle、DB2、Microsoft SQL Server开源MySQL桌面Microsoft Access常见的非关系型数据库NoSql、Cloudant、MongoDb、redis、HBase(2) SQL通用语法1. SQL语句 单行或多行书写以分号结尾,并且可以使用空格和缩进来增强语句的可读性
2. MySQL 数据库的 SQL 语句不区分大小写关键字建议使用大写
3. 3 种注释A: 单行注释: -- 注释内容 或 # 注释内容(mysql 特有) B: 多行注释: /* 注释 */
(五) SQL分类数据定义语言——DDL(Data Definition Language)允许用户定义 (创建) 数据库对象数据库表列等
数据操作语言——DML(Data Manipulation Language)允许用户对数据库中表的数据进行增删改
数据查询语言——DQL(Data Query Language)允许用户查询数据库中表的记录(数据)
数据控制语言——DCL(Data Control Language) 用来定义数据库的访问权限和安全级别及创建用户
(1) DDL操作数据库、表1. 操作数据库 —— CRUE-- CURE --- C(Create):创建 R(Retrieve):查询 U(Update):修改 D(Delete)删除
1. C(Create):创建-- 创建数据库CREATE DATABASE 数据库名称;-- 创建数据库判断不存在再创建CREATE DATABASE IF NOT EXISTS 数据库名称;-- 创建数据库并且制定字符集CREATE DATABASE 数据库名称 CHARACTER SET 字符集名;2. R(Retrieve):查询-- 查询所有数据库名称SHOW DATABASES-- 查询某个数据库的字符集 : 查询某个数据库的创建语句SHOW CREATE DATABASE 数据库名称;
3. U(Update):修改-- 修改数据库的字符集ALTER DATABASE 数据库名称 CHARACTER SET 字符集名称;
4. D(Delete)删除 -- 删除数据库DROP DATABASE 数据库名称;-- 判断数据库存在存在再删除DROP DATABASE IF EXISTS 数据库名称
5. 使用数据库-- 查询当前正在使用的数据库名称SELECT DATABASE();-- 使用数据库USE 数据库名称;
2. 操作表1. C(Create):创建-- 语法 * 注意最后一行不需要加逗号(,)CREATE TABLE 表名列名1 数据类型1,列名2 数据类型2,......列名n 数据类型n);-- 数据类型1. INT整数类型2. DOUBLE:小数类型3. DATE:日期只包含年月日yyyy-MM-dd4. DATETIME:日期包含年月日时分秒 yyyy-MM-dd HH:mm:ss5. TIMESTAMP:时间错类型 包含年月日时分秒 yyyy-MM-dd HH:mm:ss 6. VARCHAR字符串-- 注意time如果将来不给这个字段赋值或赋值为null则默认使用当前的系统时间来自动赋值-- DOUBLE(6,3) 代表共保留6位数字小数点后保留3位-- 复制表CREATE TABLE 表名 LIKE 被复制的表名;2. R(Retrieve):查询-- 查询某个数据库中所有的表名SHOW TABLES;-- 查询表结构DESC 表名;3. U(Update):修改-- 修改表名ALTER TABLE 表名 RENAME TO 新表名-- 修改表的字符集ALTER TABLE 表名 CHARACTER SET 字符集名称;-- 添加一列ALTER TABLE 表名 ADD 列名 数据类型-- 修改列名称 类型ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;ALTER TABLE 表名 MODIFY 列名 新数据类型;-- 删除列DROP TABLE 表名;DROP TABLE IF EXISTS 表名;
4. D(Delete)删除 DROP TABLE 表名;Drop TABLE IF EXISTS 表名;(2) DML增删改表中的数据1. 表中添加数据-- 语法INSERT INTO 表名(列名1,列名2,...列名n) VALUES(值1,值2,...值n);-- 注意A: 列名和值要一一对应。B: 如果表名后不定义列名则默认给所有列添加值Eg:INSERT INTO 表名 Values(值1,值2,...值n);C: 除了数字类型其他类型需要使用引号(单双都可以)引起来
2. 删除表中数据-- 语法DELETE FROM 表名 [WHERE 条件]-- 注意若不加条件则删除表中所有记录-- 删除所有记录的两种方式A: DELETE FROM 表名; -- 不推荐使用有多少条记录就会执行多少次删除操作B: TRUNCATE TABLE 表名 -- 推荐使用先删除表然后再创建一张一样的表效率更高3. 修改表中数据-- 语法UPDATE 表名 SET 列名1 值1, 列名2 值2,... [WHERE 条件];-- 注意若不限定条件则会修改表中的所有记录
(3) DQL查询表中的记录SELECT * FROM 表名;
1. 语法SELECT字段列表FROM表名列表WHERE条件列表GROUP BY分组字段HAVING分组之后的条件ORDER BY排序LIMIT分页限定2. 基础查询-- 多个字段的查询SELECT 字段名1字段名2... FROM 表名注意如果查询所有字段则可以使用*来替代字段列表。-- 去除重复DISTINCT-- 计算列一般可以使用四则运算计算一些列的值。一般只会进行数值型的计算IFNULL(表达式1,表达式2)null参与的运算计算结果都为null表达式1哪个字段需要判断是否为null如果该字段为null后的替换值。-- 起别名asas也可以省略3. 条件查询1. where子句后跟条件2. 运算符 、 、 、 、 、BETWEEN...AND IN( 集合) LIKE模糊查询占位符_:单个任意字符%多个任意字符IS NULL AND 或 OR 或 || NOT 或 !-- 查询年龄不等于20岁SELECT * FROM student WHERE age ! 20;SELECT * FROM student WHERE age 20;-- 查询年龄大于等于20 小于等于30(三种方式)SELECT * FROM student WHERE age 20 age 30;SELECT * FROM student WHERE age 20 AND age 30;SELECT * FROM student WHERE age BETWEEN 20 AND 30;-- 查询年龄22岁18岁25岁的信息SELECT * FROM student WHERE age 22 OR age 18 OR age 25SELECT * FROM student WHERE age IN (22,18,25);-- 查询英语成绩为null-- 下面第一句是错误的null值不能使用 和! 判断SELECT * FROM student WHERE english NULL; ×SELECT * FROM student WHERE english IS NULL; √-- 查询英语成绩不为nullSELECT * FROM student WHERE english IS NOT NULL;-- 查询姓张的有哪些 likeSELECT * FROM student WHERE NAME LIKE 张%;-- 查询姓名第二个是杰的人SELECT * FROM student WHERE NAME LIKE _杰%;-- 查询姓名是3个字的人SELECT * FROM student WHERE NAME LIKE ___;-- 查询姓名中包含文的人SELECT * FROM student WHERE NAME LIKE %文%;
DQL:查询语句1. 排序查询-- 语法ORDER BY 子句* ORDER BY 排序字段1 排序方式1 排序字段2 排序方式2...-- 排序方式ASC升序默认的。DESC降序-- 注意如果有多个排序条件则当前边的条件值一样时才会判断第二条件。2. 聚合函数将一列数据作为一个整体进行纵向的计算。COUNT计算个数-- 一般选择非空的列主键-- count(*)MAX计算最大值MIN计算最小值SUM计算和AVG计算平均值-- 注意聚合函数的计算排除null值。解决方案1. 选择不包含非空的列进行计算2. IFNULL函数3. 分组查询:-- 语法group BY 分组字段-- WHERE 和 HAVING 的区别WHERE 在分组之前进行限定不满足则不分组HAVING在分组之后进行限定不满足则查不到WHERE 后不可以跟聚合函数having可以进行聚合函数的判断-- 常见举例巩固一下语法-- 按照性别分组分别查询男、女同学的平均分SELECT sex , AVG(math) FROM student GROUP BY sex;-- 按照性别分组分别查询男、女同学的平均分人数SELECT sex , AVG(math),COUNT(id) FROM student GROUP BY sex;-- 按照性别分组分别查询男、女同学的平均分人数 要求分数低于60分的人不参与分组SELECT sex , AVG(math),COUNT(id) FROM student WHERE math 60 GROUP BY sex;-- 按照性别分组分别查询男、女同学的平均分人数 -- 要求分数低于60分的人不参与分组或分组之后人数要大于2个人SELECT sex , AVG(math),COUNT(id) FROM student WHERE math 60 GROUP BY sex HAVING COUNT(id) 2;SELECT sex , AVG(math),COUNT(id) 人数 FROM student WHERE math 60 GROUP BY sex HAVING 人数 2;4. 分页查询-- 语法limit 开始的索引,每页查询的条数;-- 公式开始的索引 当前的页码 - 1 * 每页显示的条数每页显示5条记录 SELECT * FROM student LIMIT 0,5; -- 第1页SELECT * FROM student LIMIT 5,5; -- 第2页SELECT * FROM student LIMIT 10,5;-- 第3页-- LIMIT 是一个MySQL方言
结尾如果内容中有什么不足或者错误的地方欢迎大家给我留言提出意见, 蟹蟹大家 ^_^如果能帮到你的话那就来关注我吧我是小架我们下篇文章见