| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> MySQL数据库day01 -> 正文阅读 |
|
[大数据]MySQL数据库day01 |
一、数据库介绍 ? ? 1、为什么需要数据库 ? ? ? ? a、计算机的资源是有限的,不可能把所有的数据存储在内存中,内存掉电后数据回丢失 ? ? ? ? b、为了让数据在程序关闭重启后还能继续使用,必须把数据存储到磁盘的文件中 ? ? ? ? c、随着程序的功能越来越复杂、数据越来越多,从文件中读取数据需要大量的重复性操作, ? ? ? ? 从文件中读取指定的数据需要复杂的逻辑 ? ? ? ? d、不同的程序它的数据不同、访问数据文件的操作也有所不同,意味着读写文件的代码不能复用 ? ? ? ? e、所有程序员非常需要一个统一的、快速的访问磁盘数据的工具 ? ? ? ? f、使用数据库时,程序员不需要自己管理数据,而是通过数据库提供统一的接口进行读写数据即可 ? ? ? ? ? ? 至于数据在数据库文件中如何保存、查找、修改等与程序员无关 ? ? 2、什么是数据库 ? ? ? ? 数据库指的是管理数据的软件,而不是存储数据的仓库 ? ? 3、数据库的类型 ? ? ? ? 层次型:以上下级层次关系组织数据的一种数据库,层次模型类似于树型结构,是早期的组织管理数据库 ? ? ? ? 网状型:把相互之间有关系的数据进行连接,形成一张数据网,适合复杂数据的存储 ? ? ? ? 关系型:就是把数据看作一张二维表,由行和列组成,这是普通人最容易理解和使用的一种数据组织方式 ? ? ? ? ? ? 因此关系型数据库获得了最后的胜利 ? ? ? ? key/value型:目前比较流行的一种内存数据库,适合存储高频访问的数据、并且对时间有一定要求 ? ? 4、主流的关系型数据库 ? ? ? ? 商用型: OceanBase、Oracle、DB2、SQL Server ? ? ? ? 开源型: MySQL、mariaDB、PostgreSQL ? ? ? ? 桌面型: 以微软的Access为代表,可以通过界面操作数据库 ? ? ? ? 嵌入式: 以SQLLite为代表,适合嵌入式设备使用的小型数据库 二、SQL语言介绍 ? ? 1、什么是SQL ? ? SQL是结构化查询语言的缩写,是数据库的标准库的标准委员会提供,用于访问和操作数据的统一语言标准 ? ? ? ? 是所有的数据库都支持SQL语言,也就是说我们只需要学习SQL语言就能操作所有的数据 ? ? 虽然ANSI组织定义了统一的SQL语言标准,但是不同的数据库厂商对SQL的支持不同,甚至有的还添加自己新的语法 ? ? ? ? 把各种数据库中独有的SQL语法称为SQL的方言 ? ? 标准SQL语句不区分大小写(int或INT),但是自定义的标识符(表名)是区分大小的 ? ? 2、SQL语句的功能分类 ? ? ? ? 数据控制语句:用于权限的划分的回收 ? ? ? ? 数据定义语句:用于建立、修改、删除数据库对象(表、视图等) ? ? ? ? 数据操作语句:用于改变表中的数据(增、删、改) ? ? ? ? 数据查询语句:根据各种不同的条件进行查询数据 ? ? ? ? 事务控制语句:用于维护数据库的统一性 ? ? ? ? 3、SQL语句中的数据类型 ? ? 数值型: ? ? ? ? 整型: ? ? ? ? ? ? TINYINT ? 1 Byte ? ? ? ? ? ? SMALLINT ?2 Bytes ? ? ? ? ? ? MEDIUMINT 3 Bytes ? ? ? ? ? ? INT ? ? ? 4 Bytes ? ? ? ? ? ? BIGINT ? ?8 Bytes ? ? ? ? 浮点型: ? ? ? ? ? ? FLOAT ? ? 4 Bytes ? ? ? ? ? ? DOUBLE ? ?8 Bytes ? ? 日期\时间型: ? ? ? ? DATE ? ? ? ?3 ? 1000-01-01/9999-12-31 ? ? ? ? TIME ? ? ? ?3 ? '-838:59:59'/'838:59:59' ? ? ? ? YEAR ? ? ? ?1 ? 1901/2155 ? ? ? ? DATETIME ? ?8 ? 1000-01-01 00:00:00/9999-12-31 23:59:59 ? ? ? ? TIMESTAMP ? 4 ? 1970-01-01 00:00:00/2038 ? ? 字符串型: ? ? ? ? CHAR ? ? ? ?0-255 bytes ? ? ? ? VARCHAR ? ? 0-65535 bytes ? ? ? ? LONGTEXT ? ?0-4 294 967 295 bytes 三、如何访问数据库 ? ? 1、本地访问 ? ? ? ? mysql -u用户名 -p密码 ? 方便但是容易泄漏密码 ? ? ? ? mysql -u用户名 -p ? 建议这样登录 ? ? 2、远程登录 ? ? ? ? 先使用 ssh 或 telnet ?远程登录MySQL服务器 ? ? ? ? ? ? ssh 服务器用户名@ip地址 输入密码 ? ? ? ? 后通过 mysql -u用户名 -p 访问数据库 ? ? 3、客户端登录 ? ? ? ? 详情见数据库环境搭建 ? ? 注意:登陆后,一定要选择具体的数据库 ? ? ? ? use 数据库名; ? ? ? ? use testDB; ? ? ? ? ctrl + Enter 快速执行选中的语句 四、数据定义语句 ? ? 1、创建表 ? ? ? ? create table 表名(字段名 字段类型,...); ? ? 2、查看表结构 ? ? ? ? desc 表名; ? ? 3、修改表 ? ? ? ? --修改表名 ? ? ? ? rename table 旧表名 to 新表名; ? ? ? ? --增加列 ? ? ? ? alter table 表名 add(新字段名 字段类型); ? ? ? ? --删除列 ? ? ? ? alter table 表名 drop 字段名; ? ? 4、删除表 ? ? ? ? --删除表数据,保留表结构 ? ? ? ? truncate 表名; ? ? ? ? --删除表 包括数据和结构 ? ? ? ? drop table 表名; 五、数据操作语句 ? ? 1、插入数据 ? ? --按照全字段的顺序插入 必须完全相同 ? ? insert into 表名 values(数据); ? ? --按照指定字段顺序插入 ? ? insert into 表名(字段名) values(数据); ? ? ? ? 2、删除数据 ? ? delete from 表名 where 条件; ? ? --delete from stu where name="hehe"; ? ? 注意: 如果where不写,相当于删除整张表的数据 ? ? 注意: SQL中 = 就是等于号,数据都可以直接=比较 ? ? 3、修改数据 ? ? update 表名 set 字段1=数据,字段2=数据 [where 条件]; ? ? 注意: 如果不写where,则整张表的数据都修改 六、数据查询语句 ? ? select 字段名1,字段名2,... from 表名; ? ? -- * 在SQL语句中也是通配符,代表所有字段 ? ? --select * from 表名; 七、事务控制语句 ? ? 1、commit 提交 ? ? 在数据库中,一个用户修改、插入一条数据时,只有它自己能查询到结果,其它用户不能立即看到, ? ? ? ? 只有该用户执行commit语句后,其他用户才能看到 ? ? 注意:默认情况下会默认自动提交 ? ? A转账1000元给B ? ? if(A余额>1000) ? ? { ? ? ? ? A-=1000; ? ? ? ? if(检查B是否存在) ? ? ? ? { ? ? ? ? ? ? B+=1000; ? ? ? ? ? ? commit; ? ? ? ? } ? ? ? ? else ? ? ? ? { ? ? ? ? ? ? 取消 ? ? ? ? ? ? //A+=1000; ? ? ? ? } ? ? } ? ? else ? ? {} ? ? 2、rollback ? ? 当用户对数据进行操作后,如果发现想要取消操作,可以使用rollback语句返回到上一次commit时的状态 ? ? 使用commit\rollback的优点: ? ? 1、让数据库批量性提交操作,提高数据库的操作效率 ? ? 2、减少读写磁盘的次数,延长硬盘的使用寿命 ? ? 3、使用rollback可以撤销大量操作,提高效率 ? ? 3、MySQL的自动提交 ? ? 默认情况下,MySQL是自动进行commit ? ? --查询当前用户的自动提交是否开启 ? ? show variables like 'autocommit'; ? ? --关闭或开启当前用户的自动提交 ? ? set session autocommit = 0 | 1; ? ? 注意:这些修改都只能该当前次生效,想要永久生效要修改配置文件 ? ? 4、设置保存点 ? ? 使用rollback会取消commit后所有操作,这样就可能浪费一些有意义的操作,可以在某一个节点设置一个保存点, ? ? ? ? 让rollback返回指定的保存点 ? ? insert into stu values("h1",1,'x',1,"中国"); ? ? savepoint s1; ? ? insert into stu values("h2",1,'x',1,"中国"); ? ? savepoint s2; ? ? insert into stu values("h3",1,'x',1,"中国"); ? ? savepoint s3; ? ? insert into stu values("h4",1,'x',1,"中国"); ? ? savepoint s4; ? ? insert into stu values("h5",1,'x',1,"中国"); ? ? select * from stu; ? ? rollback to savepoint s1; |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年4日历 | -2025/4/22 18:09:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |