首页 > 编程知识 正文

mysql数据库零基础入门学习(MySQL数据库入门)

时间:2023-12-19 12:29:24 阅读:317724 作者:GDKP

本文目录一览:

mysql数据库怎么学

先给出我的核心观点:

学习,无论你是学什么,也无论你有没有基础。思考永远是第一位的,有些知识你没接触过不要紧,用不着害怕,也没必要害怕。重要的是一秒钟也不要停止思考,问题要想透彻,正所谓磨刀不误砍柴工。尤其是作为工程师,要有打破砂锅问到底的精神,否则你怎么学都没用。

首先,学习基本的SQL语法。完成这个后,你就可以编写SQL语句了。这一步推荐:W3Schools的 SQL 教程。

其次,学习数据库的主要功能和使用方法,比如用户相关或者权限相关等等。

我推荐两本书:

一、《MySQL必知必会》 这本书讲的非常全,从基本概念,到查询到插入新建表,用户的管理,都有具体的例子,非常适合没有任何基础的同学来学习Mysql,总之这本书学习的方法就是:1、十分钟了解下数据库的基本概念 2、找到练手的数据库 3、对照着上面的内容去敲。本书里也有大量的内容是讲sql的,可以结合w3c的sql教程一起,有取舍地看。

二、《数据库系统概念》这本书是dba必看的。看完这些并且实践+思考之后,可以算入门了。接下来对于希望深入学习的童鞋我推荐几本书(很多大神都这么推荐),《高性能MySQL(第3版)》、 《MySQL技术内幕(第4版)》,《MySQL技术内幕 InnoDB存储引擎》,《深入理解MySQL》还有Mysql的官网。读完这些东西,再加些丰富的经验,理论上来讲就具备DBA的水平了。十分推荐阅读Planet MySQL上汇总的博客,特别是Percona's MySQL InnoDB performance and scalability blog但是,正如我开头所言的。

面对问题的时候一定要积极思考!比如:我问你,面对一个并发量比较高的场景,如何配置mysql的连接数?你可能会回答:“哦,就是调高max_connection的数值吧。”那,你有没有思考过调到多少是最合适的呢?为什么这样设置就最合适呢?也许你会回答:“恩我知道,可以看系统之前的max_used_connection的数值,然后来设置。也可以调高back_log的值。”那你有没有思考过,max_connection连接数太高会有什么不好的影响呢?back_log设置的太高有什么不好的地方呢?max_connect的上限其实是取决于mysql能获得的文件描述符的数量,也就是说你就算设置成10000,最后也是没用的,系统会根据机器的情况自动调低。也许你会回答:“恩我知道,设置太高,会有系统开销...”那你有没有思考过,这些开销具体是什么呢?是什么工作导致了需要这些内存开销?也许你还会回答,在连接创建的时候,会立刻为它分配连接缓冲区以及查询缓冲区,这些都会吃内存。那你有没有思考过,占据的资源具体是多少呢?取决于哪些因素呢?好了,我们先结束这个问题。回到知乎的问题上来,其实我说了这么多,就是表达要如何自学mysql。所以的所以,你必须不断思考,才能在工作中面对具体场景的时候,非常淡定地推断:“哦,一定是这里出了问题。应该怎么怎么做。”面对问题,拿出打破砂锅问到底的精神,先思考一番,给出自己的假设,不要着急地去找度娘,谷歌。思考过后,带着你的推断或者答案,大胆地去搜索吧!去看看别人的见解,去看看官方的描述!这才是一个工程师应有的态度。最后我想给出一些有价值的学习资料。可以省去一些时间。-电子书:我认为多看书还是有好处的。有些书值得反复看许多遍,有时候只看一遍无法深刻理解吸收,思考也不够充分

MySQL新手如何快速入门

一、SQL速成

以下是一些重要的SQL快速参考,有关SQL的语法和在标准SQL上增加的特性,请查询MySQL手册。

1.创建表

表是数据库的最基本元素之一,表与表之间可以相互独立,也可以相互关联。创建表的基本语法如下:

create table table_name

(column_name datatype {identity |null|not null},

…)

其中参数table_name和column_name必须满足用户数据库中的识别器(identifier)的要求,参数datatype是一个标准的SQL类型或由用户数据库提供的类型。用户要使用non-null从句为各字段输入数据。

create table还有一些其他选项,如创建临时表和使用select子句从其他的表中读取某些字段组成新表等。还有,在创建表是可用PRIMARY KEY、KEY、INDEX等标识符设定某些字段为主键或索引等。

书写上要注意:

在一对圆括号里的列出完整的字段清单。

字段名间用逗号隔开。

字段名间的逗号后要加一个空格。

最后一个字段名后不用逗号。

所有的SQL陈述都以分号";"结束。

例:

mysql CREATE TABLE test (blob_col BLOB, index(blob_col(10)));

2.创建索引

索引用于对数据库的查询。一般数据库建有多种索引方案,每种方案都精于某一特定的查询类。索引可以加速对数据库的查询过程。创建索引的基本语法如下:

create index index_name

on table_name (col_name[(length)],... )

例:

mysql CREATE INDEX part_of_name ON customer (name(10));

3.改变表结构

在数据库的使用过程中,有时需要改变它的表结构,包括改变字段名,甚至改变不同数据库字段间的关系。可以实现上述改变的命令是alter,其基本语法如下:

alter table table_name alter_spec [, alter_spec ...]

例:

mysql ALTER TABLE t1 CHANGE a b INTEGER;

4.删除数据对象

很多数据库是动态使用的,有时可能需要删除某个表或索引。大多数数据库对象可以下面的命令删除:

drop object_name

mysql DROP TABLE tb1;

5.执行查询

查询是使用最多的SQL命令。查询数据库需要凭借结构、索引和字段类型等因素。大多数数据库含有一个优化器(optimizer),把用户的查询语句转换成可选的形式,以提高查询效率。

值得注意的是MySQL不支持SQL92标准的嵌套的where子句,即它只支持一个where子句。其基本语法如下:

SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY] [DISTINCT | DISTINCTROW | ALL]

select_expression,... [INTO {OUTFILE | DUMPFILE} 'file_name' export_options] [FROM table_references [WHERE where_definition] [GROUP BY col_name,...] [HAVING where_definition] [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...] [LIMIT [offset,] rows] [PROCEDURE procedure_name] ]

其中where从句是定义选择标准的地方,where_definition可以有不同的格式,但都遵循下面的形式:

字段名操作表达式

字段名操作字段名

在第一种形式下,标准把字段的值与表达式进行比较;在第二种形式下,把两个字段的值进行比较。根据所比较的数据类型,search_condition中的操作可能选以下几种:

= 检查是否相等

!= 检查是否不等

(或=) 检查左边值是否大于(或大于等于)右边值

(或=) 检查左边值是否小于(或小于等于)右边值 [not] between 检查左边值是否在某个范围内 [not] in 检查左边是否某个特定集的成员 [not] like 检查左边是否为右边的子串

is [not] null 检查左边是否为空值

在这里,可以用通配符_代表任何一个字符,%代表任何字符串。使用关键字、和可以生成复杂的词,它们运行检查时使用布尔表达式的多重标准集。

例:

mysql select t1.name, t2.salary from employee AS t1, info AS t2 where t1.name = t2.name;

mysql select college, region, seed from tournament

ORDER BY region, seed;

mysql select col_name from tbl_name WHERE col_name 0;

北大青鸟设计培训:零基础如何mysql学习?

最近,有很多学员留言让我整理一下“零基础如何mysql学习?”.今天岳阳电脑培训就整理一下学习MySQL你需要掌握的知识点以及送给新手学习的建议,希望对大家能够有所帮助!给新手的学习建议:1.在学习新的东西的时候,我们至少从三个问题开始。

What?why?how?2.学习需要坚持,如果还没准备好坚持半年比较枯燥的MySQL之旅,那么就别开始。

3.学习东西不在多,在精,市面上有非常多的MySQL教程,不要瞎学,今天这里学一点,明天那里学一点,这样你学的都只是知识点,无法形成一个知识面,知识网络。

4.在学习过程中充满好奇,使用google进行问题搜索,千万不要使用度娘了,质量不高。

至于怎么用Google,请自行搜索。

5.学习的目的在于使用,因此,不要仅仅看书,看一遍,看两遍,你可能还是没什么感觉。

因此学习一开始,就要动手练习,把资料上的情况,模拟一下。

6.请不要在windows上安装mysql进行学习,因为工作中都是linux系统。

我们需要从一开始就是实战,就是生产环境。

7.保持好心态,一步一个脚印的前进。

学习MySQL你需要掌握的知识点:1.系统,当然windos基本的要会。

然后就是Linux系统,现在做MySQLDBA的系统多数都是Linux系统,而生产环境大多又是RedHat,Centos。

其他的Linux和Unix系统可以只做了解。

2.Linux基础,网络,IO,内存,磁盘,CPU。

包括不限于安装,启动过程,目录结构,远程登录,文件属性与管理,用户与用户权限,LAMP结构vim,yum等shell命令,dns,ftp,以及一些常用工具。

3.MySQL基础:MySQL安装、MySQL体系结构,SQL,MySQL管理维护。

4.数据备份与恢复,常用的引擎:MyISAM、Innodb、NDB等。

5.数据库设计优化,一个好的MySQL系统,往往从设计开始。

6.SQL优化,参数优化,监控,安全等。

7.MySQL负载均衡,读写分离,MHA,MMM高可用架构,以及分布式架构:mycat、maxscale、galeracluster、MySQLGroupReplication等。

8.mysql5.6,mysql5.7新特性,mariadb、percona分支的差异和特点。

9.MySQLJSON、MySQLmemcached。

10.常见MySQL搭配的缓存系统,redis,memcached,以及NOSQL、NEWSQL。

以上,就是小编为大家整理的mysql学习你需要掌握的知识点以及送给新手学习的建议,希望能够帮助到大家!

MySQL数据库基础+ 数据库的基本操作?

需要用的资料以链接的形式给需要的同学。

我用的mysql版本为: Mysql-5.5.45-win64.msi 密码是:26zw

图形化工具 Navicat(前期不推荐用,直接手动敲): Navicat 密码:c7fs

开始我的MySQL之旅吧 始于2016.12.04

--WH

一、数据库的安装

这个就不在这里过多阐述了,因为网上实在是太多安装mysql的教程了,有了我给的mysql,在按照这个安装教程(MySQL安装教程)去看,就能够安装完好。

安装好mysql后,如果需要使用windows命令窗口(也就是cmd)来操作mysql,那么就需要配置环境变量,在安装好的mysql下找到bin,将其目录放到环境变量path中去,就行了,检测成功与否的方法是在cmd命令窗口中输入mysql,就会出现一大段英文,就说明成功了,反之失败,如果不会的话就去百度搜教程。

二、数据库的基本操作

1、开启mysql服务命令

net start mysql

2、进入mysql的两种方式

明文进入:mysql -uroot -proot格式:mysql -u帐号 -p密码

密文进入:mysql -uroot -p 按enter会提示你输入密码(Enter pssword:),此时你写的密码就会显示为***这样。

3、查看mysql中所有的数据库(一般在固定的单词命令就会是用大写,这个要习惯,看多了敲多了就认识了)

前面四个数据库是mysql中自带的,也就是必须的.

SHOW DATABASES;

4、创建名为test_1的数据库

格式:CREATE DATABASE 数据库名

CREATE DATABASE test_1;

5、删除名为test_1的数据库

格式:DROP DATABASE 数据库名

DROP DATABASE test_1;

总结:学习了对数据库的三个操作,1、查看所有数据库 2、创建数据库 3、删除数据库

三、数据表的基本操作

数据表和数据库还有Mysql三者的关系

mysql中保存了很多数据库、一个数据库中可以保存很多表。

对数据表的增(创建表)删(删除表)改(修改表字段)查(查询表结构)。 注意:这里的操作对象是表,对表的操作也就是表的结构,和表中的字段的操作(字段和记录要分清楚)

前提:表是在数据库下的,所以要先确实使用哪个数据库。

USE test_1;

1、创建数据表

格式:CREATE TABLE 数据表名(

 字段名1数据类型[列级别约束条件],

 字段名2数据类型[列级别约束条件],

 字段名3数据类型[列级别约束条件]

 ); 

注意:格式不一定需要这样隔着写,完全可以全部写成一行。但是那样写可观性非常差。我这样写只是为了可以看的更清晰。

解释:

1、[]中括号中的内容表示可以有可以没有,

2、列级别这个“列”一定要搞清楚说的是什么,一张表中有行有列,列表示竖,行表示横 

3、约束条件后面会讲到

1.1、创建没有约束的student表

 CREATE TABLE student( idINT(11), nameVARCHAR(12), ageINT(11)  );

注释:SHOW TABLES 查询数据库底下的所有表。

1.2、创建有约束的student表

 六大约束:主键约束、外键约束、非空约束、唯一约束、默认约束、自动增加

1.2.1:主键约束

PRIMARY KEY(primary key):独一无二(唯一)和不能为空(非空),通俗的讲,就是在表中增加记录时,在该字段下的数据不能重复,不能为空,比如以上面创建的表为例子,在表中增加两条记录,如果id字段用了主键约束。则id不能一样,并且不能为空。一般每张表中度有一个字段为主键,唯一标识这条记录。以后需要找到该条记录也可以同这个主键来确认记录,因为主键是唯一的,并且非空,一张表中每个记录的主键度不一样,所以根据主键也就能找到对应的记录。而不是多条重复的记录。如果没有主键,那么表中就会存在很多重复的记录,那么即浪费存储空间,在查询时也消耗更多资源。

一般被主键约束了的字段度习惯性的称该字段为该表的主键

单字段主键约束

两种方式都可以

CREATE TABLE student(CREATE TABLE student(

idINT(11) PRIMARY KEY,idINT(11),

nameVARCHAR(12),nameVARCHAR(12),

ageINT(11) ageINT(11),

); PRIMARY KEY(id) );

多字段主键约束(复合主键)

这个id和name都市主键,说明在以后增加的插入的记录中,id和name不能同时一样,比如说可以是这样。一条记录为id=1,name=yyy、另一条记录为:id=1,name=zzz。 这样是可以的。并不是你们所理解的两个字段分别度不可以相同。

CREATE TABLE student(CREATE TABLE student(

idINT(11) PRIMARY KEY,idINT(11),

nameVARCHAR(12) PRIMARY KEY, nameVARCHAR(12),

ageINT(11) ageINT(11),

);PRIMARY KEY(id,name) );

1.2.2:外键约束

什么是外键举个例子就清楚了,有两张表,一张表是emp(员工)表,另一张表是dept(部门)表,一个员工属于一个部门,那么如何通过员工能让我们自己他在哪个部门呢?那就只能在员工表中增加一个字段,能代表员工所在的部门,那该字段就只能是存储dept中的主键了(因为主键是唯一的,才能确实是哪个部门,进而代表员工所在的部门,如果是部门名称,有些部门的名称可能是同名。就不能区分了。),像这样的字段,就符合外键的特点,就可以使用外键约束,使该字段只能够存储另一张表的主键。如果不被外键约束,那么该字段就无法保证存储进来的值就一定是另一张表的主键值。

外键约束的特点:

1、外键约束可以描述任意一个字段(包括主键),可以为空,并且一个表中可以有多个外键。但是外键字段中的值必须是另一张表中的主键。

2、这样被外键关联的两种表的关系可以称为父子表或者主从表。子表(从表)拥有外键字段的表,父表(主表)被外键字段所指向的表。

3、子表被外键约束修饰的字段必须和父表的主键字段的类型一样。

注意:一个表中有被外键修饰的字段,就称该表有外键(是“有外键”。而不是“是外键”),并会给该表中的外键约束取一个名称,所以我们常说的这个表有没有外键,指的不是被外键约束修饰的字段名,而是指这个表是否有存在外键约束。也就是说,不能说这个表的外键是xxx(该表中被外键约束修饰的字段名),这种说法是错误的,但是大多数人已经习惯了这样,虽然影响不大,但是在很多时候需要理解一个东西时,会造成一定的困扰。

格式:CONSTRAINT外键名称FOREIGN KEY(被外键约束的字段名称)REFERENCES 主表名(主键字段)

英文解释:CONSTRAINT:约束REFERENCES:参考

CREATE TABLE tableA

(

id INT(11),

name VARCHAR(22),

location VARCHAR(50),

PRIMARY KEY(id)

);

CREATE TABLE tableB

(

id INT(11),

name VARCHAR(22) NOT NULL,

deptId INT(11),

PRIMARY KEY(id),

CONSTRAINT tableA_tableB_1 FOREIGH KEY(deptId) REFERENCES tableA(id)

);

 解释:tableB中有一个名为tableA_tableB_1的外键关联了tableA和tableB两个表,被外键约束修饰的字段为tableB中的deptId,主键字段为tableA中的id 

1.2.3:非空约束

NOT NULL. 被该约束修饰了的字段,就不能为空,主键约束中就包括了这个约束

CREATE TABLE tableA

(

id INT(11),

name VARCHAR(22) NOT NULL,

location VARCHAR(50),

PRIMARY KEY(id)

);

1.2.4:唯一约束

UNIQUE 被唯一约束修饰了的字段,表示该字段中的值唯一,不能有相同的值,通俗点讲,就好比插入两条记录,这两条记录中处于该字段的值不能是一样的。

  CREATE TABLE tableA

(

id INT(11),

name VARCHAR(22) UNIQUE,

location VARCHAR(50),

PRIMARY KEY(id)

);

也就是说在插入的记录中,每条记录的name值不能是一样的。

1.2.5:默认约束

Default 指定这一列的默认值为多少,比如,男性同学比较多,性别就可以设置为默认男,如果插入一行记录时,性别没有填,那么就默认加上男 

CREATE TABLE table

(

id INT(11) PRIMARY KEY,

name VARCHAR(22) NOT NULL,

deptId INT(11) DEFAULT 1111,

salary FLOAT

);

1.2.6:自动增加

AUTO_INCREMENT 一个表只能一个字段使用AUTO_INCREMENT,并且使用这个约束的字段只能是整数类型(任意的整数类型 TINYINT,SMALLIN,INT,BIGINT),默认值是1,也就是说从1开始增加的。一般就是给主键使用的,自动增加,使每个主键的值度不一样,并且不用我们自己管理,让主键自己自动生成

CREATE TABLE table ( id INT(11) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(22) NOT NULL );

2、查询表结构

2.1、查看表基本结构语句

格式1:DESCRIBE 表名/DESC 表名这两个的功能是一样的,简写了单词describe

DESCRIBE student;

2.2、查看创建表的语句 

 格式:SHOW CREATE TABLE 表名

 SHOW CREATE TABLE student;

这样显示的格式很不好,看不清楚,所以有了下面这个语句

格式:SHOW CREATE TABLE 表名G

SHOW CREATE TABLE studentG;

3、修改数据表

修改数据表包括:对表中字段的增加、删除、修改。 在这个里面用的关键字为 ALTER

3.1、修改表名

格式:ALTER TABLE旧表名 RENAME[TO]新表名;

将student表名改为student1(改完后在改回来)

ALTER TABLE student RENAME TO student1;

3.2、修改表中的字段名

格式:ALTER TABLE表名 CHANGE旧字段名新字段名新数据类型

将student表中的name字段名改为 username

ALTER TABLE student CHANGE name username VARCHAR(30);

3.3、修改表中的数据类型

格式:ALTER TABLE表名 MODIFY字段名数据类型 

ALTER TABLE student MODIFY username VARCHAR(20);

解释:只能修改字段名的数据类型,但是其原理跟上面change做的事情一样,这里也有修改字段名的过程,只不过修改后的字段名和修改前的字段名相同,但是数据类型不一样。

3.4、修改字段的排列位置

 方式1:ALTER TABLE表名 MODIFY字段1数据类型 FIRST|AFTER字段2

 解释:将字段1的位置放到第一,或者放到指定字段2的后面

 ALTER TABLE student MODIFY username VARCHAR(20) AFTER age;

方式2:ALTER TABLE表名 CHANGE字段1字段2数据类型 FIRST|AFTER字段3 

解释:其实是一样的,将是字段2覆盖字段1,然后在进行排序

ALTER TABLE student CHANGE username username VARCHAR(20) AFTER age;

总结

CHANGE和MODIFY的区别?

原理都市一样的,MODIFY只能修改数据类型,但是CHANGE能够修改数据类型和字段名,也就是说MODIFY是CHANGE的更具体化的一个操作。可能觉得用CHANGE只改变一个数据类型不太爽,就增加了一个能直接改数据类型的使用关键字MODIFY来操作。

3.5、添加字段

格式:ALTER TABLE表名称 ADD新字段名数据类型[约束条件][FIRST|AFTER已存在的表名]

解释:在一个特定位置增加一个新的字段,如果不指定位置,默认是最后一个。

ALTER TABLE student ADD sex VARCHAR(11);

3.6、删除字段

格式:ALTER TABLE表名称 DROP字段名;

ALTER TABLE student DROP sex;

3.7、删除表的外键约束

格式:ALTER TABLE表名称 DROP FOREIGN KEY外键约束名

注意:外键约束名 指的不是被外键约束修饰的字段名,切记,而是我们在创建外键约束关系时取的名字。

3.8、更改表的存储引擎

格式:ALTER TABLE表名 ENGINE=更改后的存储引擎名

这个存储引擎目前我自己也不太清楚,虽然知道有哪几种引擎,但是稍微深入一点就不清楚了,所以打算留到日后在说。

4、删除表

4.1、删除无关联表

格式:DROP TABLE表名;

ALTER TABLE student;

4.2、删除被其他表关联的主表

这个是比较重要的一点,在有外键关联关系的两张表中,如果删除主表,那么是删不掉的,并且会报错。因为有张表依赖于他。那怎么办呢?针对这种情况,总共有两种方法

1、先删除你子表,然后在删除父表,这样就达到了删除父表的目的,但是子表也要被删除

2、先解除外键关系,然后在删除父表,这样也能达到目的,并且保留了子表,只删除我们不需要的父表。在3.7中就讲解了如何删除外键关系。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。