mysql数据库(零基础学sql要多久)原创2021060809:30追求源于热爱i目录 1。数据库基础 1。1数据库基础概述 1。2MySQL数据库介绍 1。3MySQL数据库安装 2数据库和数据表管理 2。1数据库管理 2。2数据表管理数据表设计 2。3数据表管理创建表 2。4数据表管理修改表 2。5数据表管理修改表 2。6数据表管理删除表 3。图形化界面操作数据库 4。简单查询与数据操作 4。1基本查询语句 4。2插入数据 4。3修改数据 4。4删除数据 5。备份和恢复数据库 5。1备份数据库 5。2恢复数据库 5。3图形界面备份和恢复数据库1。数据库基础1。1数据库基础概述 数据管理主要经历过程: 手工管理阶段:应用程序管理数据、数据不保存、不共享、不具有独立性。 文件管理阶段:文件系统管理数据、数据可长期保存、但共享性差、冗余度大、独立性差。 数据管理阶段:数据库系统管理数据、数据结构复杂、冗余小、易扩充、较高的独立性、统一数据控制。 数据库的特征: 数据结构化 实现数据共享 减少数据冗余 数据独立性 数据库类型(按数据模型特点分) 网状型数据库 层次型数据库 关系型数据库 网状数据库:采用记录类型为节点的网状数据模型 层次数据库:采用层次模型模拟现实世界中按层次组织起来的事物 关系型数据库:采用二维表结构组织和管理数据,并规定了表内和表间数据的依赖关系 关系数据库是指一些相关的表和其他数据库对象的集合。对于关系数据库来说,关系就是表的同义词。 表是由行和列组成(类似二维数组的结构)。 列包含一组命名的属性(也称字段)。 行包含一组记录,每行包含一条记录。 行和列的交集称为数据项,指出了某列对应的属性在某行上的值,也称为字段值。 列需定义数据类型,比如整数或者字符型的数据。 关系数据库的数据结构图示: 1。2MySQL数据库介绍 MySQL是由瑞典MySQLAB公司开的一种开放源代码的关系型数据库管理系统(RDBMS),目前属于Oracle旗下产品。 MySQL数据库系统使用最常用的数据库管理语言结构化查询语言(SQL)进行数据库管理。 SQL语言主要是用来操作关系型数据库的一本语言,称之为结构化查询语句。 SQL语句主要分为: DQL:数据查询语言,用于对数据进行查询,如select DML:数据操作语言,对数据进行增加、修改、删除,如insert、udpate、delete TPL:事务处理语言,对事务进行处理,包括begintransaction、commit、rollback DCL:数据控制语言,进行授权与权限回收,如grant、revoke DDL:数据定义语言,进行数据库、表的管理等,如create、drop CCL:指针控制语言,通过控制指针完成表的操作,如declarecursor MySQL的特点: 使用C和C编写,并使用了多种编译器进行测试,保证源代码的可移植性 全面支持SQL的GROUPBY和ORDERBY子句,支持聚合函数(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN())。你可以在同一查询中混来自不同数据库的表。 为多种编程语言提供了API,如C、C、Python、Java、Perl、PHP、Eiffel、Ruby等支持多种存储引擎1。3MySQL数据库安装 MySQL服务端(在Linux系统) 下载安装sudoaptgetinstallmysqlserver 启动服务sudoservicemysqlstart 查看服务是否启动psajxgrepmysqlsudoservicemysqlstatus 停止服务sudoservicemysqlstop 重启服务sudoservicemysqlrestart 配置 配置文件目录为etcmysqlmysql。conf。d 进入目录,打开mysqld。cnf,可以看到配置项 bindaddress表示服务器绑定的ip,默认为127。0。0。1 port表示端口,默认为3306 datadir表示数据库目录,默认为varlibmysql generallogfile表示普通日志,默认为varlogmysqlmysql。log logerror表示错误日志,默认为varlogmysqlerror。log MySQL客户端 客户端为开发人员使用,常用的有命令行客户端、navicat图形界面客户端等。 下载安装命令行客户端 sudoaptinstallmysqlclient 连接数据库 mysqlurootp123456 u后面跟的是数据库的账户名,p密码p与密码之间不能有空格如果p后面不加密码,那么回车后会要求输入密码。 注:按ctrld或输入quit或者exit命令退出2数据库和数据表管理2。1数据库管理 连接数据库mysqlu账号p密码h主机地址P端口mysqlurootpmysql 查看数据库版本selectversion(); 显示当前时间selectnow(); 查看所有数据库:showdatabases; 创建数据库createdatabase数据库名charsetutf8; 注:创建库的时候一定要指定编码utf8,utf8中间没有,跟pyhton中写编码有点区别 切换数据库:use数据库名 查看当前正在使用哪个数据库selectdatabase(); 删除数据库dropdatabase数据库名; 2。2数据表管理数据表设计 数据表设计包括ER图、表的主键、字段、数据类型、约束、表之间关系的设计 ER(EntityRelationship)模型即实体关系模型主要用于定义数据的存储需求,该模型已经广泛用于关系数据库设计中。ER模型由实体、属性和关系三个基本要素构成。 主键(PrimaryKey) 数据库表要求表中的每一行记录都必须是唯一的,即在同一张表中不允许出现完全相同的两条记录。 在设计数据库时,为了保证记录的唯一性,最为普遍、最为推荐的做法是为表定义一个主键(primarykey)。 数据库表中主键有以下两个特征: 表的主键可以由一个字段构成,也可以由多个字段构成(这种情况称为复合主键)。 数据库表中主键的值具有唯一性且不能取空值(NULL),当数据库表中的主键由多个字段构成时,每个字段的值不能取NULL值。 实体间的关系与外键(ForeignKey) 班级实体和班主任实体之间为一对一关系,班级实体和学生实体之间为一对多关系,学生实体和课程实体之间为多对多关系。 实体间的关系可以通过外键来表示。如果表A中的一个字段a对应于表B的主键b,则字段a称为表A的外键。此时存储在表A中字段a的值,同时这个字段值也是表B主键b的值。 约束(Constraint) 约束是定义在表上的一种强制规则。当为某个表定义约束后,对该表做的所有SQL操作都必须满足约束的规则要求,否则操作将失败。 约束类型: 2。3数据表管理创建表 查看当前数据库中的表showtables; 创建表 注:建表主要是前面是字段,字段后面跟的是约束条件。 创建学生表 comment注释,在创建表的时候如果字段很多,防止忘记字段是存什么数据的,可以给字段添加注释。 查看创建表的sql语句showcreatetable表名;2。4数据表管理修改表 添加字段 altertable表名add列名类型; 给students添加一个生日字段 删除字段 altertable表名drop字段名字; 将students表中的gender字段删除 2。5数据表管理修改表 修改字段 第一种,不修改字段名只修改类型及约束altertable表名modify列名类型及约束; 第二种,需要修改字段名字altertable表名change原名新名类型及约束; 2。6数据表管理删除表droptable表名; 删除学生表 3。图形化界面操作数据库 下载安装图形界面工具Navicat Navicat官网: https:www。navicat。com。cn mysql刚装好root账号默认只能本地登录,不能在其他机器登录的。使用Navicat连接之前,先在命令行客户端将mysql的用户登录权限进行修改; 修改步骤: (1)mysqlurootp123456连接数据库 (2)usemsyql进入mysql数据库 (3)selecthost,userfromuser;查看账号有哪些权限 (4)将root登录权限修改成所有主机都能登录grantallprivilegeson。to39;root39;39;39;; (5)注释配置文件的bindaddress 把 etcmysqlmysql。conf。dmysqld。cnf配置文件里面的bindaddress注释掉 使用Navicat连接MySQL 打开安装好的Navicat客户端点击连接gt;mysql填写账号密码,主机地址是你安装msyql的ubuntuip地址,点击连接测试弹出连接成功,说明Navicat已经连接上了mysql,点击确定。 连接成功后可以看到所有数据库 创建数据库 在左侧栏空白处右击,点击新建数据库 在弹出框里填写数据库名,编码格式,选择utf8 创建数据表 选择表然后点击新建表 创建一个班级表 对于id字段,需要设置为int类型,无符号,自动增长,主键,非空 创建好表后,还可以对表进行编辑 打开表,设计表,删除表 4。简单查询与数据操作4。1基本查询语句 selectfrom表名;selectfromstudents;查询students表中的所有内容 指定字段查询 select字段1,字段2from表名; 比如只想看id,name这两列selectid,namefromstudents; 4。2插入数据 全列插入 insertinto表名values() 在上节课中创建的students学生表中插入学生信息insertintostudentsvalues(0,39;韩信39;,0,39;广州39;); 注:全列插入时,有多少个字段,必须插入多少个字段,即使默认可以为空的字段也要占位。主键自增也需要占位一般使用0占位。 部分插入 insertinto表名〔字段1,字段2〕values(值1,值2); 全列多行插入 多行插入每一行的内容写在一个小括号内,用逗号分隔多行。insertinto表名values(。。。),(。。。。),(。。。。); 部分列多行插入insertinto表名(字段1,字段2)values(。。),(。。); 4。3修改数据 update表名set字段xxxwhere字段xxx;updatestudentssethometown39;珠海39;whereid5; 注:修改某一行内容一定要加where限定条件,否则会造成全表修改,除非你想要修改整张表。4。4删除数据 删除id为3的程咬金deletefromstudentswhereid3; 注:删除行也要加限定条件,不加的话会造成全表删除5。备份和恢复数据库5。1备份数据库 备份数据库的所有表的数据 mysqldumpurootp数据库名gt;python。sql;mysqldumpurootppythongt;python。sql 提示输入密码,mysql的密码 备份数据库的某个数据表的数据 mysqldumpurootp数据库名数据表名gt;class。sql;msyqldumpurootppythonclassgt;class。sql 5。2恢复数据库 恢复数据库之前要先手动创建库mysqlurootp新数据库名lt;python。sql 5。3图形界面备份和恢复数据库 备份数据库,转储SQL文件即可以进行数据库备份