当前位置:网站首页>Mysql数据库入门学习笔记
Mysql数据库入门学习笔记
2022-08-08 15:05:00 【逍遥蒗孒】
Mysql数据库
Mysql第一章:
DDL(数据定义语言)它主要是对表和库来进行操作的;
create(创建表、库) alter(修改表、库) drop(删除表、库)
上面这三种对表的操作,我们都称作为DDL;
DML(数据操作语言 or 数据管理语言) 它主要是对数据进行操作的;
Insert(插入数据) update(更新数据) delete(删除数据)
这三种对数据的操作,我们都称作为DML;
DQL(数据查询语言) 查询表中的数据
select
在mysql中的表和excel中的表达方式是一样的,(多少列多少行)
列: column 或者 field (这两个单词指的就是MYSQL中的列)
行: row 或者 字段
安装MySQL
网址:www.mysql.org
# yum install mysql\* -y
或者去www.mysql.org下载最新版
启动MySQL
# service mysqld start
登录MySQL(有两种方式)
第一种方式:# mysql 直接输入mysql就可以登录(套接口登录(本机某个接口))
第二种方式:使用TCP/IP来登录,就是在其它机器来登录;
Mysql是C/S结构(客户端和服务器端)
当在本机安装完之后,即有了客户端也有服务器端
我们在这里使用第一种方式登录:
# mysql 这种方式登录的时候,没有指定任何的用户
它默认使用的是root用户来登录,这个root的系统中的root是不是同一个帐户
获得帮助
Mysql> 后面直接输入 help 或者 ? ,就可以直接的打开帮助信息
前面是全称后面的小括号里是可以简写的方式
Clear 是清屏 也可以按 ctrl+l
Delimiter 更改命令后面的分号的,改成其他的号;
当我们敲命令的时候,每行都必须要使用分号来结束,如果不敲分号的话,mysql就不会去执行,如果没有在命令后面输入分号的话,可以任意换行;
如果我们敲完一条命令,我们不想执行的话,可以输入 \c 就终止了;不能按ctrl+c,否则退出MYSQL;
这条命令是将分号改成 //
Edit 编辑
如果我们在输入命令的时候,发现刚刚输入的命令是错误的,我们可以使用edit命令来编辑;
有两种重新编辑命令的方法:
第一种:按上方向键,把刚才错误的命令给重新调出来;
第二种:就是使用edit命令;注意:在使用edit命令的时候,后面不能有空格;使用edit
编辑的时候,会刚刚的命令给打开在一个文件中,和VIM编辑器一样,退出时,
按一个分号结束(重新执行);
Help 查询帮助 也可以换成 ?
就是说,如果你不知道一个命令怎么用,可以使用help来查看该命令的语法;
# help select 查看select命令的语法
Pager 和 nopager 可以用分屏的形式为显示表(用来调用linux 系统命令)
当打开一个大的文件的时候,系统一下就把这个大的文件的内容全部给显示完了;我们在学习linux的时候,对大的文件的显示可以使用less或者more来进行分屏查看;
使用pager来调用系统中的less命令;
使用过pager less命令之后,就调用了系统中的less功能,这时我们再查看大的文件内容的时候,系统就给分屏查看了,如果想往下看,直接按回车键就可以了;可以按Q键退出来
Mysql> select * from mysql.user \G
\G可以整齐的显示内容
如果不想分屏的话,直接nopager 就可以了,这样就把分屏功能给关闭了;
关闭分屏
Prompt 更改我们登录MYSQL的提示符;
就是说,不管我们是通过什么方式登录的mysql,它的提示符都是 mysql> ,比如说,我们有两台机器,我们就可以用这种方式来标明两台机器的区别;
把mysql>这个提示符改成master>
Source 用来导入一个文件的内容的(后面的文件恢复的时候会讲)
Status 查看当前服务器的一些信息
可以查看当前连接到数据库的用户数量,使用的数据库,当前用户等等;
当前用户使用的编码,这里使用的编码是latin1,当我们在表中输入一些中文的时候,它有可能就会显示乱码,这时候我们就需要去更改这里的编码;
更改编码:
这时我们可以使用charset命令来更改编码;
方法一: Mysql> Charset utf8;
方法二: mysql> set names utf8;
这两种更改编码的方法只是临时生效,当退出mysql之后,又恢复到原来的编码
如果要永久生效,就必须修改配置文件,在配置文件中加上一行 default-character-set=utf8
也可以使用下面的命令来查看当前登录的用户:
查看当前用户
System 可以在mysql提示符里执行linux系统命令
这里显示的是,我们从linux的哪个目录登录到mysql;
通过mysql来查看linux系统中/boot目录的内容;
Use 用来切换到某个数据库
Myql> select database(); 可以查看当前我们是在哪个数据库里面的
Mysql> use mydql 切换到mysql数据库
这时,我们就切换到mysql数据库里了
刚刚在使用status可以查看到当前连接到数据库的ID号,我们还可以使用下面的命令来查看当建立了多少个连接:
Mysql> show processlist;
第二章:基本操作
创建基本的库、表、插入数据、最简单的查询
库:就是存放数据的仓库,(文件夹)
使用下面命令可以查看到mysql中有几个库():
Mysql> show databases;
这里查看到三个库;这三个库,在linux中体现的是三个文件夹;这三个文件夹路径在: /var/lib/mysql
下面我们进入这个目录:
# cd /var/lib/mysql
# mkdir ovinzhang
我们在这里目录中创建了一个目录,下面我们再查看一下库:
Mysql> show databases; 这时我们就可以看到多了一个库ovinzhang
这时就可以看到多了一个ovinzhang库;
这个库是我在linux里面手动创建这个库;
通过mysql来创建库的方法:
Mysql> create database aa;
这时就创建了一个aa这个库;
那么我们怎么在aa这个库中创建一些表呢?如下:
首先登录这个库中:
mysql> use aa 后面可以加分号,也可以不加
登录成功之后,可以使用下面命令来查看库里面有哪些表,如下:
Mysql> show tables; 查看库中有哪些表
显示aa 这个库中,是个空的文件,没有任何表;
下面我们来创建一些表:
我们就按照这个表来创建;
语法: create table 表名 (
Column1 int,
Column2 char(10)
);
建议创建表的时候,分行写;创建列的时候,一定要用使用逗号来来隔开;
这样我们就创建了两列(id和name)
这时我们就看到了aa表;
如果我们想查看表的结构,怎么查看呢?
主要有以下几个命令:
desc 表名;
这里就显示有两列内容;
explain 表名;
注:更多的时候,我们使用explain来分析表的查询过程;我们在学习mysql优化的时候使用这个命令来对表进行分析;
Show columns from 表名; (因为column本来就是列,这句话意思:查看aa表中的列)
Show fields from 表名; (因为fields也是列)
以上四个命令,都可以查看到表的结构;
如果想查看我们在创建表的时候添加了哪些属性(直接查看表属性)
可以使用下面命令来查看:
Show create table aa\G
查看aa表的属性,就是我们在创建aa表的时候所使用的一些语句。以\G结尾;
记住: 查看表属性的唯一查看方法show create table
查看有哪些表 show tables; 中间可以加 full 和open
查看当前有哪些表;
Show open tables;
加上一个open显示的是当前打开了哪些表。
Mysql为了提高访问表的速度,有表缓存。
就是说不管你创建什么文件,最终都是保存到硬盘中,因为内存的速度比硬盘的速度要快很多(我每次要查询表的时候,都要到硬盘里面去读,这样的话速度就会很慢),所以说,所谓的表缓存,就是当你打开一张表之后,那么这个表就放在内存里,当下次查询的时候,就直接在表缓存里读取这个表,而不到硬盘里去读取了。这里的open的意思,就是把哪些表放到了表缓存里。这样就大大的提高了表的读取速度。
那么我们如何把表从缓存中清除呢?
Mysql> flush tables; 清除表缓存
Show full tables;
我们在使用show full tables时,在后面多了一个人table type类型,这个类型有什么作用呢?就是当我们后面讲到后面的视图的时候,视图也是以表的形式体现的,如果我们使用的show tables的时候,是看不出来哪个是视图哪个是表的,如果想区分的话,就是可以使用show full tables;上面的类形里显示的是基本的表,告诉我们这个表是什么类型。
我们直接在linux中输入mysqlshow命令可以查看mysql中有几个库,截图如下:
在linux中输入mysqlshow,查看mysql中的库。
我们在linux中如果想查看某个库中有哪些表,可以使用 mysqlshow aa截图哪下:
查看aa库中有哪些表;
Aa表是刚刚创建的,里面没有任何内容;
Insert 插入数据
用法一:
语法: insert into 表名 (column1,column2) values(‘值1’’值2’)
注意:如果插入的值不是数字的话,使用单引号给引起来;
例:插入了一行数据,在id插入1,在name插入tom;
用法二: insert into 表名 values (‘值1’’值2’)
注意:这里没有指定往哪个字段时插入数据,那么就必须往所有字段插入数据,也就是说values后面的值必须要和安段(列)的数目是一样的
这里插入了第二行。
Select 查询表内容
用法: select 列1,列2,…… from 表;
查看指定列内容,如下:select id from aa;
这里只是查看id列的内容;
查看多列内容时,多个列之间使用逗号隔开,如下:
这里查看了id和name列的内容;
使用下面命令查看所有列内容:
Select * from aa; 查看aa表中所有列的内容。
Limit 指定显示的行
查看的时候可以显示个别列,也可以显示所有的列,都显示了所有行的内容,如果想要显示前几行的,可以使用limit命令,如下:
这里就显示了所有列的前两行数据(默认是从第一行开始的);
如果我想从第二行开始显示3行,怎么操作,如下:
如: select * from aa limit 2,3;
这句话的意思是从第三行开始算,显示三行。
注意:紧跟在limit后面的2称之为偏移量,意思就是把前面2行排除,从第三行开始往下显示3行
Select * from aa limit 2,5; 这句话的意思就是,从第三行开始显示5行。
在使用select 的时候会显示所有的行,有的时候我们并不需要所有的行,那么我们就要过滤(定位),显示满足某个条件的行:这个时候我们就要使用where。
用法: select * from aa where 条件; 如下:
这时查看就是id=2的行
变量
在mysql里变量分为三种: 全局变量、用户变量、局部变量
设置全局变量的方法: set @@变量名=值
设置用户变量的方法: set @变量名=值
设置局部变量的方法: declare 定义
详细说明:
这里定义了一个变量aa=10,然后使用select @aa来查看aa的值;
使用set来设置一个变量,然后使用select来查看一个变量的值;
Select 也可以用来设置一个变量;
语法: select @变量名:=值 (中间的是冒号)
使用select命令给bb设置了一个变量值为123;
使用select命令查看bb的变量值班
Select 数值运算
Select 也可以用来做数值运算,如下:select 5+15;
使用select来计算5+15的和为20。
Handler
查看handler的帮助信息
语法:handler后面加个表名,再加个open ,后面再加上as和别名
注意:as和后面的别名可以不写的,如果不写的话,别名和表名一样;
例:
使用handler打开这个表,并且给这个表起个别名叫做xx,如果不给起别名为xx,则别名和表名一样;
这个时候就打开了一个句柄了。
Handler和select读取表内容时不一样;
Handler是一行行读取的;
读取表的语法如下:handler 别名 read first
这里的别名是你前面要设置过的,如果没有设置就是表的名字;
读取第一行内容;
读取下一行内容;
读取三行内容;
使用where来读取第三行内容
Rename table 重命名表名
可以使用 help rename来查看帮助
用法: rename table 旧表名 to 新表名
重命名aa表名为bb表
根据个人习惯: 当我们在敲SQL语句的时候,命令使用大写,表名或库名使用小写;
刚才创建了一个库一个表,库和表最终都是存放在硬盘里面的,(在硬盘里体现的是一个文件)。所以,创建表的时候,大小写一定要注意。在MYSQL中不区分大小写,但是在操作系统中是区分大小写的。
在windows下,你创建aa表和AA表,会认为是同一张表,此时就会冲突。 在linux下,系统就会认为是两张不的表。
第三章 数据类型:整形、浮点型、字符型、时间型
数字(类型):整数
整数:比如员工号,学生号,身份证号等都为整数;
定义整数类型主要有以下几种类型:tinyint、smallint、mediumint、int、bigint等等
下面就一一来看一下:
一、首先tinyint:如果我们把一列内容定义为tinyint的话,它必须要花一字节来存放这个数据;
1B=8bit(一字节等于八比特)详细:8个比特,每个比特只能是0或者1,也就是八个零或者是八个壹,八个零换成十进制还是零;八个壹换成十进制是255。也就是说对于tinyint最大所存储的数据是255,如果你要想存放更大一点的数据的话,1字节就存放不了;
举例说明:
创建一个表: create table bb (id tinyint);
再插入一个数值255 : insert into bb values (255);
再看一下这个数值: select * from bb;
我们刚刚插入的数值是255,为什么这里是127呢?
因为数字即可以有正数也可以有负数,也就是说8比特并没有全部用来存放数据,而是拿出1比特用来存放正负数,实际存储数据的只有7位,也就是说这个7 位数,最小值是零,最大值是2的7次方,也就是127。它把那一位拿出来记录符号了(正负)
既然有1比特用来存放符号了,取值范围为 -128~-1 和 0~127,都可以存放128 个数据,不管你是正数还是负数
这里插入了一个负数(-100)
Unsigned 不使用负数
我们再加入一列 age 年龄,既然是年龄,就不会有负数,这时我们就可以使用unsigned
举例说明:
创建一个cc表: create table cc (age tinyint unsigned);
插入一个数值: insert into cc values (200);
就是在age 下面就会显示200
我们再插入一个负数: insert into cc values (-10);
这时,我们插入的-10就变成了0了,是因为我们加了个unsigned
上面截图红色部分标出的数字是什么意思呢?
当我创建表的时候,并没有指定长度,为什么会多了一个(4)呢?这个(4)指的是填充,(也就是说当我输入数字的时候,如果只写入一个数据字它会用0填充),如果没有结合zerofill的话,其实没什么作用的:
Tinyint(10) 表示十位;
Unsigned 不使用负数;
Zerofill 做的是一个零的填充;
就是说,如果后面不添加一个zerofill,那么前面的tinyint(10)是没有什么效果。我们插入了数据1,就是显示1,前面就不会多九个零。
这里显示的000000001,这个长度并非存储在硬盘里,他和存储所占用的1字节没有什么关系,它只是显示的效果
如果你插入1111,那么它只会显示最大值255,不会显示1111,如果小于255,则会显示。
如果为整数添加了zerofill的话,那么它会自动添加unsigned
建议: 最好不要使用unsigned,因为会出现一些莫名其妙的问题:
说说为什么莫名其妙:
创建表:create table a1 (id1 tinyint unsigned,id2 tinyint unsigned);
插入值:insert into a1 values (1,2);
做运算:Select id1-id2 from a1;
这里就是使用select来做运算,将id1的值减去id2的值,应该是个负数,但是这里使用了unsigned,就不能出现负责,而我们的运算结果则偏偏是负数,则报错。
所以说,我们在创建表的时候,能不使用unsigned就不使用unsigned;
如果我们非要做减法的话,我们只要改变一下它的模式就可以了,如下:
如下: set sql_mode=’no_unsigned_subtraction’;
改变模式后,再进行运算,得到的结果就是一个 -1,这时就不会报错了;
就是说,对于unsigned 数的操作,其返回值都是unsigned的。
二、smallint 使用2B
存放的数据范围:有符号 0~2的15次方; 无符号: 0~2的17次方减1
下面几个和上面的用法都是一样的。(mediumint 3B、int4B、bigint8B)
后面的几个B的数值就非常大了。
记住: 能用小的,就不要用大的,就是说,如果smallint能存放所有数据,就不要使用int了。为什么?因为使用小的数据类型(前提够用),好处如下:
1、 占用空间比较小;
2、 查询的速度快;
浮点型 (又称小数型)
我们在日常生活中,还会使用一些小数型;
小数型主要分为以下几类:
Float(x,y) 4B
Decimal(x,y) x+2B
Double 8B
边栏推荐
猜你喜欢
光弘科技:公司在印度为小米、三星、OPPO、诺基亚提供智能手机等产品的制造服务
[内部资源] 想拿年薪30W的软件测试人员,这份资料必须领取
本机Redis Desktop Manager连不上vmware的redis
Notes on the development of kindergarten enrollment registration system based on WeChat applet
分布式服务治理
解决Redis、MySQL缓存双写不一致问题
投资一个约20台桩的充电站需要多少钱?多久可以实现盈利?
Mx_yolov3环境配置+模型测试训练
JS-BOM-阶乘计算
See how three years of CRUD programmers solve database deadlocks
随机推荐
hdu2475 Box
兆骑科创创业赛事活动举办平台,投融资对接,线上直播路演
kali换源详细步骤
JS加法器(DOM)
Power BI简介
Is it safe to open an account in China Galaxy Securities?
想要精准营销,从学习搭建一套对的标签体系开始丨 DTVision 分析洞察篇
兆骑科创赛事服务平台对接,海内外高层次人才引进
PHP —— 用 ThinkPHP5.0 实现微信小程序登陆
星起航跨境—跨境电商进入3.0时代,卖家迎来全新机遇
761. 特殊的二进制序列 : 经典构造题
Ubuntu下使用sudo dpkg --configure -a后数据库出现问题
软考 --- 软件工程(6)软项目管理
sqllabs 1~6通关详解
【系统设计】S3 对象存储
JS-Bom-while (calculate leap year)
MySQL清除表数据 id重置
codeforces 444C DZY Loves Colors
如何制作网页
进程和线程