<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mysql &#8211; 个人随笔</title>
	<atom:link href="/classify/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql/feed" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description></description>
	<lastBuildDate>Sun, 20 May 2018 01:23:42 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.1</generator>

<image>
	<url>/wp-content/uploads/2022/01/cropped-截屏2022-01-01-18.57.09-32x32.png</url>
	<title>Mysql &#8211; 个人随笔</title>
	<link>/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Mysql（一）关系型、 层次型、 数据库、 数据库引擎、 数据表、 网状型、 表属性</title>
		<link>/%e6%95%b0%e6%8d%ae%e5%ba%93/mysql/944.html</link>
					<comments>/%e6%95%b0%e6%8d%ae%e5%ba%93/mysql/944.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Thu, 17 May 2018 17:14:51 +0000</pubDate>
				<category><![CDATA[Mysql]]></category>
		<category><![CDATA[关系型]]></category>
		<category><![CDATA[层次型]]></category>
		<category><![CDATA[数据库]]></category>
		<category><![CDATA[数据库引擎]]></category>
		<category><![CDATA[数据表]]></category>
		<category><![CDATA[网状型]]></category>
		<category><![CDATA[表属性]]></category>
		<guid isPermaLink="false">/?p=944</guid>

					<description><![CDATA[基本概念 数据库 database 什么是数据库：存放数据的仓库，用途就是存放，（永久存放） Word也是永久 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>基本概念</h1>
<h2>数据库</h2>
<p>
  database
</p>
<p>
  什么是数据库：存放数据的仓库，用途就是存放，（永久存放）
</p>
<p>
  Word也是永久存放数据的地方，那么word是数据库吗？
</p>
<p>
  Word 文档文件&#8212;-从定义上说，word就是数据库，为什么？
</p>
<p>
  其实数据库的本质就是文件
</p>
<p>
  <img fetchpriority="high" decoding="async" width="1033" height="327" src="/wp-content/uploads/2018/05/word-image-838.png" class="wp-image-945" srcset="/wp-content/uploads/2018/05/word-image-838.png 1033w, /wp-content/uploads/2018/05/word-image-838-300x95.png 300w, /wp-content/uploads/2018/05/word-image-838-768x243.png 768w, /wp-content/uploads/2018/05/word-image-838-1024x324.png 1024w" sizes="(max-width: 1033px) 100vw, 1033px" />
</p>
<h2>数据库发展史</h2>
<h3>层次型</h3>
<p>
  什么是层次型数据库？
</p>
<p>
  把数据分层，分类来存储好处，把数据归类了，层次分明
</p>
<p>
  像一个倒立的树
</p>
<p>
  现在你要找一个学生，那么必须从学校开始找  学校&#8212;-班级&#8212;-学生或学校&#8212;-教师&#8212;学生
</p>
<p>
  出现了一个导航问题找C必须通过A再B
</p>
<p>
  出现了重复数据
</p>
<p>
  <img decoding="async" width="603" height="515" src="/wp-content/uploads/2018/05/word-image-839.png" class="wp-image-946" srcset="/wp-content/uploads/2018/05/word-image-839.png 603w, /wp-content/uploads/2018/05/word-image-839-300x256.png 300w" sizes="(max-width: 603px) 100vw, 603px" />
</p>
<h3>网状型</h3>
<p>
  好处：解决了数据的重复
</p>
<p>
  坏处：但是导航问题没有根本的解决
</p>
<p>
  <img decoding="async" width="522" height="523" src="/wp-content/uploads/2018/05/word-image-840.png" class="wp-image-947" srcset="/wp-content/uploads/2018/05/word-image-840.png 522w, /wp-content/uploads/2018/05/word-image-840-150x150.png 150w, /wp-content/uploads/2018/05/word-image-840-300x300.png 300w" sizes="(max-width: 522px) 100vw, 522px" />
</p>
<h3>关系型</h3>
<p>
  什么是关系型数据库
</p>
<p>
  其实就是有关系的二维表
</p>
<p>
  <img loading="lazy" decoding="async" width="946" height="145" src="/wp-content/uploads/2018/05/word-image-841.png" class="wp-image-948" srcset="/wp-content/uploads/2018/05/word-image-841.png 946w, /wp-content/uploads/2018/05/word-image-841-300x46.png 300w, /wp-content/uploads/2018/05/word-image-841-768x118.png 768w" sizes="(max-width: 946px) 100vw, 946px" />
</p>
<h2>数据表</h2>
<p>
  关系型数据库中的二维表就是数据表，是二维的另外一个名字
</p>
<h3>记录</h3>
<p>
  数据表中一行就是一条记录
</p>
<h3>字段</h3>
<p>
  数据表中一列就是一个字段
</p>
<h3>数据</h3>
<p>
  一行和一列交差的地方就是数据
</p>
<p>
  <img loading="lazy" decoding="async" width="463" height="168" src="/wp-content/uploads/2018/05/word-image-842.png" class="wp-image-949" srcset="/wp-content/uploads/2018/05/word-image-842.png 463w, /wp-content/uploads/2018/05/word-image-842-300x109.png 300w" sizes="(max-width: 463px) 100vw, 463px" />
</p>
<h2>数据库管理系统（软件）</h2>
<p>
  Managerment  database  system
</p>
<p>
  平时说的MySQL数据库这个定义不对  其实MySQL是管理数据库的，是一个数据库管理系统
</p>
<p>
  常见的一些数据库管理系统有如下几个;
</p>
<p>
  Oracle  mysql   sqlserver  sqllite   db2  access
</p>
<p>
  如上的一些数据库管理系统都有一个特点&#8212;&#8211;都是管理关系型数据库的
</p>
<p>
  用途：数据库管理系统就是用来管理数据库的
</p>
<h2>SQL</h2>
<p>
  Sql就是数据库管理系统管理数据库的一种命令
</p>
<p>
  这里数据库管理系统可以不同但是sql命令确是可以共用的，说白了，SQL就是一种专门管理数据库的一种语言
</p>
<h2>数据库服务器（硬件）</h2>
<p>
  数据库服务器：就是提供数据库服务的一个计算机，安装了数据库管理系统
</p>
<h2>数据库系统</h2>
<p>
  数据库系统=数据库管理员+数据库管理系统+数据库
</p>
<p>
  <img loading="lazy" decoding="async" width="1555" height="497" src="/wp-content/uploads/2018/05/word-image-843.png" class="wp-image-950" srcset="/wp-content/uploads/2018/05/word-image-843.png 1555w, /wp-content/uploads/2018/05/word-image-843-300x96.png 300w, /wp-content/uploads/2018/05/word-image-843-768x245.png 768w, /wp-content/uploads/2018/05/word-image-843-1024x327.png 1024w" sizes="(max-width: 1555px) 100vw, 1555px" />
</p>
<h2>今日数据库操作步骤</h2>
<ul>
<li>
    数据库操作顺序
  </li>
<li>
    第一步：打开数据库服务
  </li>
<li>
    第二步：连接数据库
  </li>
<li>
    第三步：数据库的‘库操作’</p>
<ul>
<li>
<ul>
<li>
            对数据库的增删改查
          </li>
</ul>
</li>
</ul>
</li>
<li>
    第四步：进入数据库
  </li>
<li>
    第五步：表操作（增加，删除，修改）
  </li>
</ul>
<h1>数据库服务</h1>
<h2>启动数据库服务</h2>
<p>
  第一种
</p>
<p>
  右键计算机&#8212;管理&#8212;服务&#8212;MySQL数据库
</p>
<p>
  <img loading="lazy" decoding="async" width="759" height="285" src="/wp-content/uploads/2018/05/word-image-844.png" class="wp-image-951" srcset="/wp-content/uploads/2018/05/word-image-844.png 759w, /wp-content/uploads/2018/05/word-image-844-300x113.png 300w" sizes="(max-width: 759px) 100vw, 759px" />
</p>
<p>
  第二种
</p>
<p>
  Cmd 命令行方式启动
</p>
<p>
  <img loading="lazy" decoding="async" width="484" height="72" src="/wp-content/uploads/2018/05/word-image-845.png" class="wp-image-952" srcset="/wp-content/uploads/2018/05/word-image-845.png 484w, /wp-content/uploads/2018/05/word-image-845-300x45.png 300w" sizes="(max-width: 484px) 100vw, 484px" />
</p>
<p>
  注意：配置path，net start mysql后没有分号；
</p>
<h2>关闭数据库服务</h2>
<p>
  语法： net stop mysql
</p>
<p>
  <img loading="lazy" decoding="async" width="563" height="132" src="/wp-content/uploads/2018/05/word-image-846.png" class="wp-image-953" srcset="/wp-content/uploads/2018/05/word-image-846.png 563w, /wp-content/uploads/2018/05/word-image-846-300x70.png 300w" sizes="(max-width: 563px) 100vw, 563px" />
</p>
<h1>MySQL客户端</h1>
<h2>Windows命令窗口cmd</h2>
<h3>连接数据库</h3>
<p>
  语法:  mysql -h主机名 -P端口号 -u用户名 -p密码
</p>
<ul>
<li>
    -h主机名，默认是localhost(127.0.0.1) ,如果是默认可以不填写
  </li>
<li>
    -P端口号，默认是3306，如果是默认的可以不填写
  </li>
<li>
    -u用户名
  </li>
<li>
    -p密码
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="856" height="283" src="/wp-content/uploads/2018/05/word-image-847.png" class="wp-image-954" srcset="/wp-content/uploads/2018/05/word-image-847.png 856w, /wp-content/uploads/2018/05/word-image-847-300x99.png 300w, /wp-content/uploads/2018/05/word-image-847-768x254.png 768w" sizes="(max-width: 856px) 100vw, 856px" />
</p>
<p>
  优化
</p>
<p>
  <img loading="lazy" decoding="async" width="895" height="306" src="/wp-content/uploads/2018/05/word-image-848.png" class="wp-image-955" srcset="/wp-content/uploads/2018/05/word-image-848.png 895w, /wp-content/uploads/2018/05/word-image-848-300x103.png 300w, /wp-content/uploads/2018/05/word-image-848-768x263.png 768w" sizes="(max-width: 895px) 100vw, 895px" />
</p>
<h3>退出数据库</h3>
<p>
  \q
</p>
<p>
  <img loading="lazy" decoding="async" width="706" height="63" src="/wp-content/uploads/2018/05/word-image-849.png" class="wp-image-956" srcset="/wp-content/uploads/2018/05/word-image-849.png 706w, /wp-content/uploads/2018/05/word-image-849-300x27.png 300w" sizes="(max-width: 706px) 100vw, 706px" />
</p>
<p>
  Exit
</p>
<p>
  <img loading="lazy" decoding="async" width="535" height="84" src="/wp-content/uploads/2018/05/word-image-850.png" class="wp-image-957" srcset="/wp-content/uploads/2018/05/word-image-850.png 535w, /wp-content/uploads/2018/05/word-image-850-300x47.png 300w" sizes="(max-width: 535px) 100vw, 535px" />
</p>
<p>
  Quit
</p>
<p>
  <img loading="lazy" decoding="async" width="611" height="86" src="/wp-content/uploads/2018/05/word-image-851.png" class="wp-image-958" srcset="/wp-content/uploads/2018/05/word-image-851.png 611w, /wp-content/uploads/2018/05/word-image-851-300x42.png 300w" sizes="(max-width: 611px) 100vw, 611px" />
</p>
<h2>Windows界面客户端</h2>
<p>
  Navicate (强烈不推荐使用)
</p>
<p>
  <img loading="lazy" decoding="async" width="579" height="275" src="/wp-content/uploads/2018/05/word-image-852.png" class="wp-image-960" srcset="/wp-content/uploads/2018/05/word-image-852.png 579w, /wp-content/uploads/2018/05/word-image-852-300x142.png 300w" sizes="(max-width: 579px) 100vw, 579px" />
</p>
<h2>Web界面（PHPadmin）</h2>
<h3>配置web站</h3>
<p>
  解压放置到你的虚拟站点位置
</p>
<p>
  <img loading="lazy" decoding="async" width="1016" height="353" src="/wp-content/uploads/2018/05/word-image-853.png" class="wp-image-961" srcset="/wp-content/uploads/2018/05/word-image-853.png 1016w, /wp-content/uploads/2018/05/word-image-853-300x104.png 300w, /wp-content/uploads/2018/05/word-image-853-768x267.png 768w" sizes="(max-width: 1016px) 100vw, 1016px" />
</p>
<p>
  配置虚拟主机
</p>
<p>
  <img loading="lazy" decoding="async" width="1091" height="321" src="/wp-content/uploads/2018/05/word-image-854.png" class="wp-image-962" srcset="/wp-content/uploads/2018/05/word-image-854.png 1091w, /wp-content/uploads/2018/05/word-image-854-300x88.png 300w, /wp-content/uploads/2018/05/word-image-854-768x226.png 768w, /wp-content/uploads/2018/05/word-image-854-1024x301.png 1024w" sizes="(max-width: 1091px) 100vw, 1091px" />
</p>
<p>
  修改host
</p>
<p>
  <img loading="lazy" decoding="async" width="659" height="235" src="/wp-content/uploads/2018/05/word-image-855.png" class="wp-image-963" srcset="/wp-content/uploads/2018/05/word-image-855.png 659w, /wp-content/uploads/2018/05/word-image-855-300x107.png 300w" sizes="(max-width: 659px) 100vw, 659px" />
</p>
<p>
  重启Apache访问站点
</p>
<p>
  <img loading="lazy" decoding="async" width="1322" height="725" src="/wp-content/uploads/2018/05/word-image-856.png" class="wp-image-964" srcset="/wp-content/uploads/2018/05/word-image-856.png 1322w, /wp-content/uploads/2018/05/word-image-856-300x165.png 300w, /wp-content/uploads/2018/05/word-image-856-768x421.png 768w, /wp-content/uploads/2018/05/word-image-856-1024x562.png 1024w" sizes="(max-width: 1322px) 100vw, 1322px" />
</p>
<p>
  我的错误：配置路径的时候多了一个s
</p>
<h3>连接数据库</h3>
<p>
  登录完成后的效果：
</p>
<p>
  <img loading="lazy" decoding="async" width="1355" height="506" src="/wp-content/uploads/2018/05/word-image-857.png" class="wp-image-965" srcset="/wp-content/uploads/2018/05/word-image-857.png 1355w, /wp-content/uploads/2018/05/word-image-857-300x112.png 300w, /wp-content/uploads/2018/05/word-image-857-768x287.png 768w, /wp-content/uploads/2018/05/word-image-857-1024x382.png 1024w" sizes="(max-width: 1355px) 100vw, 1355px" />
</p>
<h1>数据库操作</h1>
<h2>创建数据库</h2>
<p>
  语法：create  database 数据库名字;
</p>
<p>
  <img loading="lazy" decoding="async" width="520" height="89" src="/wp-content/uploads/2018/05/word-image-858.png" class="wp-image-966" srcset="/wp-content/uploads/2018/05/word-image-858.png 520w, /wp-content/uploads/2018/05/word-image-858-300x51.png 300w" sizes="(max-width: 520px) 100vw, 520px" />
</p>
<p>
  注意;数据库命名有如下的规则
</p>
<p>
  数据库名字是由字母，数字，下划线组成
</p>
<p>
  数据库名字不能是纯数字
</p>
<p>
  <img loading="lazy" decoding="async" width="783" height="67" src="/wp-content/uploads/2018/05/word-image-859.png" class="wp-image-967" srcset="/wp-content/uploads/2018/05/word-image-859.png 783w, /wp-content/uploads/2018/05/word-image-859-300x26.png 300w, /wp-content/uploads/2018/05/word-image-859-768x66.png 768w" sizes="(max-width: 783px) 100vw, 783px" />
</p>
<p>
  数据库名字不能是数据库的关键字
</p>
<p>
  <img loading="lazy" decoding="async" width="841" height="42" src="/wp-content/uploads/2018/05/word-image-860.png" class="wp-image-968" srcset="/wp-content/uploads/2018/05/word-image-860.png 841w, /wp-content/uploads/2018/05/word-image-860-300x15.png 300w, /wp-content/uploads/2018/05/word-image-860-768x38.png 768w" sizes="(max-width: 841px) 100vw, 841px" />
</p>
<p>
  如果数据库名字是一个数据库关键字，那么用&#8220;（反引号）引起来
</p>
<p>
  <img loading="lazy" decoding="async" width="479" height="50" src="/wp-content/uploads/2018/05/word-image-861.png" class="wp-image-969" srcset="/wp-content/uploads/2018/05/word-image-861.png 479w, /wp-content/uploads/2018/05/word-image-861-300x31.png 300w" sizes="(max-width: 479px) 100vw, 479px" />
</p>
<p>
  扩展;创建数据库的时候指定字符集
</p>
<p>
  语法：create  database  数据库名字  charset  字符集;
</p>
<p>
  <img loading="lazy" decoding="async" width="514" height="48" src="/wp-content/uploads/2018/05/word-image-862.png" class="wp-image-970" srcset="/wp-content/uploads/2018/05/word-image-862.png 514w, /wp-content/uploads/2018/05/word-image-862-300x28.png 300w" sizes="(max-width: 514px) 100vw, 514px" />
</p>
<h2>删除数据库</h2>
<p>
  语法: drop database 数据库名字;
</p>
<p>
  <img loading="lazy" decoding="async" width="459" height="56" src="/wp-content/uploads/2018/05/word-image-863.png" class="wp-image-971" srcset="/wp-content/uploads/2018/05/word-image-863.png 459w, /wp-content/uploads/2018/05/word-image-863-300x37.png 300w" sizes="(max-width: 459px) 100vw, 459px" />
</p>
<h2>修改数据库</h2>
<p>
  修改数据库的名字
</p>
<p>
  	这里没有直接修改数据库名字的语法，只能先删除数据库，再重建
</p>
<p>
  修改数据库的字符集
</p>
<ul>
<li>
    alter database 数据库名字 charset 新字符集
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="482" height="53" src="/wp-content/uploads/2018/05/word-image-864.png" class="wp-image-972" srcset="/wp-content/uploads/2018/05/word-image-864.png 482w, /wp-content/uploads/2018/05/word-image-864-300x33.png 300w" sizes="(max-width: 482px) 100vw, 482px" />
</p>
<ul>
<li>
    alter database 数据库名字 charset = 新字符集
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="478" height="43" src="/wp-content/uploads/2018/05/word-image-865.png" class="wp-image-973" srcset="/wp-content/uploads/2018/05/word-image-865.png 478w, /wp-content/uploads/2018/05/word-image-865-300x27.png 300w" sizes="(max-width: 478px) 100vw, 478px" />
</p>
<ul>
<li>
    alter  database  数据库名字  default  character set 新字符集名字
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="553" height="45" src="/wp-content/uploads/2018/05/word-image-866.png" class="wp-image-974" srcset="/wp-content/uploads/2018/05/word-image-866.png 553w, /wp-content/uploads/2018/05/word-image-866-300x24.png 300w" sizes="(max-width: 553px) 100vw, 553px" />
</p>
<h2>查看数据库</h2>
<p>
  语法:show databases;
</p>
<p>
  注意：系统数据库不要随意操作
</p>
<p>
  <img loading="lazy" decoding="async" width="920" height="556" src="/wp-content/uploads/2018/05/word-image-867.png" class="wp-image-975" srcset="/wp-content/uploads/2018/05/word-image-867.png 920w, /wp-content/uploads/2018/05/word-image-867-300x181.png 300w, /wp-content/uploads/2018/05/word-image-867-768x464.png 768w" sizes="(max-width: 920px) 100vw, 920px" />
</p>
<h2>查看数据库创建语句</h2>
<p>
  语法:show create database 数据库名;
</p>
<p>
  <img loading="lazy" decoding="async" width="784" height="144" src="/wp-content/uploads/2018/05/word-image-868.png" class="wp-image-976" srcset="/wp-content/uploads/2018/05/word-image-868.png 784w, /wp-content/uploads/2018/05/word-image-868-300x55.png 300w, /wp-content/uploads/2018/05/word-image-868-768x141.png 768w" sizes="(max-width: 784px) 100vw, 784px" />
</p>
<h2>数据库保存目录</h2>
<p>
  <img loading="lazy" decoding="async" width="1409" height="245" src="/wp-content/uploads/2018/05/word-image-869.png" class="wp-image-977" srcset="/wp-content/uploads/2018/05/word-image-869.png 1409w, /wp-content/uploads/2018/05/word-image-869-300x52.png 300w, /wp-content/uploads/2018/05/word-image-869-768x134.png 768w, /wp-content/uploads/2018/05/word-image-869-1024x178.png 1024w" sizes="(max-width: 1409px) 100vw, 1409px" />
</p>
<p>
  默认保存路径可以在my.ini中修改
</p>
<p>
  <img loading="lazy" decoding="async" width="872" height="190" src="/wp-content/uploads/2018/05/word-image-870.png" class="wp-image-978" srcset="/wp-content/uploads/2018/05/word-image-870.png 872w, /wp-content/uploads/2018/05/word-image-870-300x65.png 300w, /wp-content/uploads/2018/05/word-image-870-768x167.png 768w" sizes="(max-width: 872px) 100vw, 872px" />
</p>
<h1>表操作</h1>
<h2>创建数据表</h2>
<p>
  Create table 表名
</p>
<p>
  (
</p>
<p>
  	字段名 类型  [字段属性],
</p>
<p>
  字段名 类型  [字段属性],
</p>
<p>
  字段名 类型  [字段属性]   &#8212;  最后一个字段后边不加逗号,
</p>
<p>
  )[表属性]
</p>
<p>
  创建表：只是创建了一个表的结构，而没有数据；
</p>
<h3>字段类型（介绍）</h3>
<ul>
<li>
    整形  tinyint  smallint  mediumint  int   bigint
  </li>
<li>
    小数 float  double  decimal
  </li>
<li>
    字符串 char   varchar  text  set  enum  blob
  </li>
<li>
    时间 time  date  datetime  timestamp
  </li>
</ul>
<h3>字段属性（介绍）</h3>
<p>
  什么是字段属性：字段属性就是对字段的一种约束
</p>
<ul>
<li>
    Not null/null  允许为不为空/空
  </li>
<li>
    Primary key  主键
  </li>
<li>
    Unque key   唯一建
  </li>
<li>
    Comment    说明
  </li>
<li>
    Atuo_increment  自动增长
  </li>
</ul>
<h3>表属性（介绍）</h3>
<ul>
<li>
    Charset  表字符集
  </li>
<li>
    Auto_increment   自动增长
  </li>
<li>
    Collate   校对集
  </li>
<li>
    Comment  说明
  </li>
<li>
    Engine   数据表引擎
  </li>
</ul>
<p>
  案例：创建一个简单表
</p>
<p>
  第一步：数据表创建，是创建到数据库中的，所以呢创建数据表之前应该选定创建到哪个数据库
</p>
<p>
  选择数据库语法: use 数据库名字;
</p>
<p>
  <img loading="lazy" decoding="async" width="403" height="47" src="/wp-content/uploads/2018/05/word-image-871.png" class="wp-image-979" srcset="/wp-content/uploads/2018/05/word-image-871.png 403w, /wp-content/uploads/2018/05/word-image-871-300x35.png 300w" sizes="(max-width: 403px) 100vw, 403px" />
</p>
<p><strong>第二步：创建表</strong>
</p>
<p>
  <img loading="lazy" decoding="async" width="679" height="190" src="/wp-content/uploads/2018/05/word-image-872.png" class="wp-image-980" srcset="/wp-content/uploads/2018/05/word-image-872.png 679w, /wp-content/uploads/2018/05/word-image-872-300x84.png 300w" sizes="(max-width: 679px) 100vw, 679px" />
</p>
<p><strong>英雄技能表案例：</strong>
</p>
<p>
  <img loading="lazy" decoding="async" width="806" height="203" src="/wp-content/uploads/2018/05/word-image-873.png" class="wp-image-981" srcset="/wp-content/uploads/2018/05/word-image-873.png 806w, /wp-content/uploads/2018/05/word-image-873-300x76.png 300w, /wp-content/uploads/2018/05/word-image-873-768x193.png 768w" sizes="(max-width: 806px) 100vw, 806px" />
</p>
<h2>查看数据表</h2>
<p>
  查看当前数据库有哪些数据表（所有的表查看）
</p>
<p>
  语法：show tables；
</p>
<p>
  <img loading="lazy" decoding="async" width="715" height="143" src="/wp-content/uploads/2018/05/word-image-874.png" class="wp-image-982" srcset="/wp-content/uploads/2018/05/word-image-874.png 715w, /wp-content/uploads/2018/05/word-image-874-300x60.png 300w" sizes="(max-width: 715px) 100vw, 715px" />
</p>
<h2>删除数据表</h2>
<p>
  语法:  drop table 表名;
</p>
<p>
  <img loading="lazy" decoding="async" width="493" height="45" src="/wp-content/uploads/2018/05/word-image-875.png" class="wp-image-983" srcset="/wp-content/uploads/2018/05/word-image-875.png 493w, /wp-content/uploads/2018/05/word-image-875-300x27.png 300w" sizes="(max-width: 493px) 100vw, 493px" />
</p>
<p>
  扩展，一次删除多张数据表 drop  table 表1,表2…..;
</p>
<p>
  <img loading="lazy" decoding="async" width="507" height="54" src="/wp-content/uploads/2018/05/word-image-876.png" class="wp-image-984" srcset="/wp-content/uploads/2018/05/word-image-876.png 507w, /wp-content/uploads/2018/05/word-image-876-300x32.png 300w" sizes="(max-width: 507px) 100vw, 507px" />
</p>
<h2>查看表结构</h2>
<p>
  查看表的结构:  desc 表名;
</p>
<p>
  <img loading="lazy" decoding="async" width="714" height="224" src="/wp-content/uploads/2018/05/word-image-877.png" class="wp-image-985" srcset="/wp-content/uploads/2018/05/word-image-877.png 714w, /wp-content/uploads/2018/05/word-image-877-300x94.png 300w" sizes="(max-width: 714px) 100vw, 714px" />
</p>
<h2>查看表创建语法</h2>
<p>
  查看数据表的创建语句
</p>
<p>
  语法; show create table 表名;、
</p>
<p>
  <img loading="lazy" decoding="async" width="777" height="234" src="/wp-content/uploads/2018/05/word-image-878.png" class="wp-image-986" srcset="/wp-content/uploads/2018/05/word-image-878.png 777w, /wp-content/uploads/2018/05/word-image-878-300x90.png 300w, /wp-content/uploads/2018/05/word-image-878-768x231.png 768w" sizes="(max-width: 777px) 100vw, 777px" />
</p>
<h1>数据简单操作</h1>
<h2>增加</h2>
<p>
  提前准备：
</p>
<p>
  删除老的hero表，创建新的hero表
</p>
<p>
  <img loading="lazy" decoding="async" width="792" height="204" src="/wp-content/uploads/2018/05/word-image-879.png" class="wp-image-987" srcset="/wp-content/uploads/2018/05/word-image-879.png 792w, /wp-content/uploads/2018/05/word-image-879-300x77.png 300w, /wp-content/uploads/2018/05/word-image-879-768x198.png 768w" sizes="(max-width: 792px) 100vw, 792px" />
</p>
<p>
  执行命令 set names gbk 避免乱码错误
</p>
<p>
  语法： insert    [into] 表名   [(插入的字段列表)]  values  (字段值1,字段值2,字段值3……)
</p>
<p>
  注意：后边的值和前边的字段列表的顺序一定要对应
</p>
<ul>
<li>
    错误案例：
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="881" height="127" src="/wp-content/uploads/2018/05/word-image-880.png" class="wp-image-988" srcset="/wp-content/uploads/2018/05/word-image-880.png 881w, /wp-content/uploads/2018/05/word-image-880-300x43.png 300w, /wp-content/uploads/2018/05/word-image-880-768x111.png 768w" sizes="(max-width: 881px) 100vw, 881px" />
</p>
<ul>
<li>
    正确案例：
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="743" height="103" src="/wp-content/uploads/2018/05/word-image-881.png" class="wp-image-989" srcset="/wp-content/uploads/2018/05/word-image-881.png 743w, /wp-content/uploads/2018/05/word-image-881-300x42.png 300w" sizes="(max-width: 743px) 100vw, 743px" />
</p>
<ul>
<li>
    扩展：省略字段列表插入表数据
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="1100" height="87" src="/wp-content/uploads/2018/05/word-image-882.png" class="wp-image-990" srcset="/wp-content/uploads/2018/05/word-image-882.png 1100w, /wp-content/uploads/2018/05/word-image-882-300x24.png 300w, /wp-content/uploads/2018/05/word-image-882-768x61.png 768w, /wp-content/uploads/2018/05/word-image-882-1024x81.png 1024w" sizes="(max-width: 1100px) 100vw, 1100px" />
</p>
<p>
  表创建的顺序如下
</p>
<p>
  <img loading="lazy" decoding="async" width="697" height="195" src="/wp-content/uploads/2018/05/word-image-883.png" class="wp-image-991" srcset="/wp-content/uploads/2018/05/word-image-883.png 697w, /wp-content/uploads/2018/05/word-image-883-300x84.png 300w" sizes="(max-width: 697px) 100vw, 697px" />
</p>
<p>
  扩展：Select 语句复制表
</p>
<h2>修改</h2>
<p>
  语法形式如下：
</p>
<p>
  	Update 表名 set 字段名 =字段值 where修改条件
</p>
<ul>
<li>
    修改大头的英雄伤害
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="681" height="71" src="/wp-content/uploads/2018/05/word-image-884.png" class="wp-image-992" srcset="/wp-content/uploads/2018/05/word-image-884.png 681w, /wp-content/uploads/2018/05/word-image-884-300x31.png 300w" sizes="(max-width: 681px) 100vw, 681px" />
</p>
<p>
  结果
</p>
<p>
  <img loading="lazy" decoding="async" width="857" height="128" src="/wp-content/uploads/2018/05/word-image-885.png" class="wp-image-993" srcset="/wp-content/uploads/2018/05/word-image-885.png 857w, /wp-content/uploads/2018/05/word-image-885-300x45.png 300w, /wp-content/uploads/2018/05/word-image-885-768x115.png 768w" sizes="(max-width: 857px) 100vw, 857px" />
</p>
<p>
  注意：修改表数据的时候一般都要指定修改的条件，如果修改不指定条件的话会把整张表的数据都修改
</p>
<p>
  <img loading="lazy" decoding="async" width="953" height="184" src="/wp-content/uploads/2018/05/word-image-886.png" class="wp-image-994" srcset="/wp-content/uploads/2018/05/word-image-886.png 953w, /wp-content/uploads/2018/05/word-image-886-300x58.png 300w, /wp-content/uploads/2018/05/word-image-886-768x148.png 768w" sizes="(max-width: 953px) 100vw, 953px" />
</p>
<ul>
<li>
    数据多字段的修改
  </li>
</ul>
<p>
  语法：update  表名 set 字段名=值1 ,字段名=字段值…. Where 修改条件
</p>
<p>
  <img loading="lazy" decoding="async" width="843" height="214" src="/wp-content/uploads/2018/05/word-image-887.png" class="wp-image-995" srcset="/wp-content/uploads/2018/05/word-image-887.png 843w, /wp-content/uploads/2018/05/word-image-887-300x76.png 300w, /wp-content/uploads/2018/05/word-image-887-768x195.png 768w" sizes="(max-width: 843px) 100vw, 843px" />
</p>
<h2>查找</h2>
<ul>
<li>
    语法：select  *  from 表名
  </li>
</ul>
<p>
  说明：*代表所有的字段
</p>
<p>
  <img loading="lazy" decoding="async" width="940" height="176" src="/wp-content/uploads/2018/05/word-image-888.png" class="wp-image-996" srcset="/wp-content/uploads/2018/05/word-image-888.png 940w, /wp-content/uploads/2018/05/word-image-888-300x56.png 300w, /wp-content/uploads/2018/05/word-image-888-768x144.png 768w" sizes="(max-width: 940px) 100vw, 940px" />
</p>
<ul>
<li>
    我们还可已选择查看哪些字段的信息
  </li>
</ul>
<p>
  语法: select   字段1,字段2,字段3,字段4……  from  表名；
</p>
<p>
  <img loading="lazy" decoding="async" width="809" height="190" src="/wp-content/uploads/2018/05/word-image-889.png" class="wp-image-997" srcset="/wp-content/uploads/2018/05/word-image-889.png 809w, /wp-content/uploads/2018/05/word-image-889-300x70.png 300w, /wp-content/uploads/2018/05/word-image-889-768x180.png 768w" sizes="(max-width: 809px) 100vw, 809px" />
</p>
<ul>
<li>
    查看技能伤害大于50的英雄信息
  </li>
</ul>
<p>
  语法如下：select 字段列表 from 表名 where  条件
</p>
<p>
  <img loading="lazy" decoding="async" width="962" height="152" src="/wp-content/uploads/2018/05/word-image-890.png" class="wp-image-998" srcset="/wp-content/uploads/2018/05/word-image-890.png 962w, /wp-content/uploads/2018/05/word-image-890-300x47.png 300w, /wp-content/uploads/2018/05/word-image-890-768x121.png 768w" sizes="(max-width: 962px) 100vw, 962px" />
</p>
<h2>删除</h2>
<p>
  语法：delete  from 表名 where 删除的条件；
</p>
<p>
  删除前数据
</p>
<p>
  <img loading="lazy" decoding="async" width="932" height="180" src="/wp-content/uploads/2018/05/word-image-891.png" class="wp-image-999" srcset="/wp-content/uploads/2018/05/word-image-891.png 932w, /wp-content/uploads/2018/05/word-image-891-300x58.png 300w, /wp-content/uploads/2018/05/word-image-891-768x148.png 768w" sizes="(max-width: 932px) 100vw, 932px" />
</p>
<p>
  删除成功
</p>
<p>
  <img loading="lazy" decoding="async" width="750" height="75" src="/wp-content/uploads/2018/05/word-image-892.png" class="wp-image-1000" srcset="/wp-content/uploads/2018/05/word-image-892.png 750w, /wp-content/uploads/2018/05/word-image-892-300x30.png 300w" sizes="(max-width: 750px) 100vw, 750px" />
</p>
<p>
  删除后数据
</p>
<p>
  <img loading="lazy" decoding="async" width="931" height="161" src="/wp-content/uploads/2018/05/word-image-893.png" class="wp-image-1001" srcset="/wp-content/uploads/2018/05/word-image-893.png 931w, /wp-content/uploads/2018/05/word-image-893-300x52.png 300w, /wp-content/uploads/2018/05/word-image-893-768x133.png 768w" sizes="(max-width: 931px) 100vw, 931px" />
</p>
<p>
  注意;这里删除一般都需要制定删除的条件，如果不指定删除的条件那么整张表的数据都会被删除
</p>
<ul>
<li>
    没有条件的删除
  </li>
</ul>
<p>
  删除前
</p>
<p>
  <img loading="lazy" decoding="async" width="941" height="163" src="/wp-content/uploads/2018/05/word-image-894.png" class="wp-image-1002" srcset="/wp-content/uploads/2018/05/word-image-894.png 941w, /wp-content/uploads/2018/05/word-image-894-300x52.png 300w, /wp-content/uploads/2018/05/word-image-894-768x133.png 768w" sizes="(max-width: 941px) 100vw, 941px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="868" height="122" src="/wp-content/uploads/2018/05/word-image-895.png" class="wp-image-1003" srcset="/wp-content/uploads/2018/05/word-image-895.png 868w, /wp-content/uploads/2018/05/word-image-895-300x42.png 300w, /wp-content/uploads/2018/05/word-image-895-768x108.png 768w" sizes="(max-width: 868px) 100vw, 868px" />
</p>
<h1>表属性</h1>
<p>
  表属性就是用来约束表的，限定一些东西
</p>
<h2>字符集（乱码的解决）</h2>
<p>
  常见的字符集有：utf8  gbk  latin1  gb2312
</p>
<p>
  什么是字符集？
</p>
<p>
  	字符集就是字符和字符编码的对应关系
</p>
<p>
  什么是字符？
</p>
<p>
  	像 a,b,A,V,1中文 等都是字符
</p>
<p>
  	什么是字符编码？
</p>
<p>
  		比如 ‘a’这个字符在计算机中是以什么形式存的
</p>
<p>
  		‘a’在计算机中是以二进制存储的，那么这个二进制的码值就是‘a’的字符编码
</p>
<p>
  		 ‘a’&#8212;&#8212;-10110101   10110101就是a的字符编码
</p>
<p>
  		‘b’&#8212;&#8212;-10110110   10110110就是b的字符编码
</p>
<p>
  插入中文数据，插入失败
</p>
<p>
  <img loading="lazy" decoding="async" width="982" height="52" src="/wp-content/uploads/2018/05/word-image-896.png" class="wp-image-1004" srcset="/wp-content/uploads/2018/05/word-image-896.png 982w, /wp-content/uploads/2018/05/word-image-896-300x16.png 300w, /wp-content/uploads/2018/05/word-image-896-768x41.png 768w" sizes="(max-width: 982px) 100vw, 982px" />
</p>
<p>
  错误原因
</p>
<p>
  <img loading="lazy" decoding="async" width="1179" height="311" src="/wp-content/uploads/2018/05/word-image-897.png" class="wp-image-1005" srcset="/wp-content/uploads/2018/05/word-image-897.png 1179w, /wp-content/uploads/2018/05/word-image-897-300x79.png 300w, /wp-content/uploads/2018/05/word-image-897-768x203.png 768w, /wp-content/uploads/2018/05/word-image-897-1024x270.png 1024w" sizes="(max-width: 1179px) 100vw, 1179px" />
</p>
<p>
  错误解决
</p>
<p>
  <img loading="lazy" decoding="async" width="839" height="366" src="/wp-content/uploads/2018/05/word-image-898.png" class="wp-image-1006" srcset="/wp-content/uploads/2018/05/word-image-898.png 839w, /wp-content/uploads/2018/05/word-image-898-300x131.png 300w, /wp-content/uploads/2018/05/word-image-898-768x335.png 768w" sizes="(max-width: 839px) 100vw, 839px" />
</p>
<p>
  插入数据插入成功
</p>
<p>
  <img loading="lazy" decoding="async" width="706" height="64" src="/wp-content/uploads/2018/05/word-image-899.png" class="wp-image-1007" srcset="/wp-content/uploads/2018/05/word-image-899.png 706w, /wp-content/uploads/2018/05/word-image-899-300x27.png 300w" sizes="(max-width: 706px) 100vw, 706px" />
</p>
<p>
  查看数据
</p>
<p>
  <img loading="lazy" decoding="async" width="912" height="147" src="/wp-content/uploads/2018/05/word-image-900.png" class="wp-image-1008" srcset="/wp-content/uploads/2018/05/word-image-900.png 912w, /wp-content/uploads/2018/05/word-image-900-300x48.png 300w, /wp-content/uploads/2018/05/word-image-900-768x124.png 768w" sizes="(max-width: 912px) 100vw, 912px" />
</p>
<p>
  错误原因
</p>
<p>
  <img loading="lazy" decoding="async" width="1191" height="343" src="/wp-content/uploads/2018/05/word-image-901.png" class="wp-image-1009" srcset="/wp-content/uploads/2018/05/word-image-901.png 1191w, /wp-content/uploads/2018/05/word-image-901-300x86.png 300w, /wp-content/uploads/2018/05/word-image-901-768x221.png 768w, /wp-content/uploads/2018/05/word-image-901-1024x295.png 1024w" sizes="(max-width: 1191px) 100vw, 1191px" />
</p>
<p>
  错误解决
</p>
<p>
  <img loading="lazy" decoding="async" width="970" height="346" src="/wp-content/uploads/2018/05/word-image-902.png" class="wp-image-1010" srcset="/wp-content/uploads/2018/05/word-image-902.png 970w, /wp-content/uploads/2018/05/word-image-902-300x107.png 300w, /wp-content/uploads/2018/05/word-image-902-768x274.png 768w" sizes="(max-width: 970px) 100vw, 970px" />
</p>
<p>
  再次查看数据
</p>
<p>
  <img loading="lazy" decoding="async" width="989" height="142" src="/wp-content/uploads/2018/05/word-image-903.png" class="wp-image-1011" srcset="/wp-content/uploads/2018/05/word-image-903.png 989w, /wp-content/uploads/2018/05/word-image-903-300x43.png 300w, /wp-content/uploads/2018/05/word-image-903-768x110.png 768w" sizes="(max-width: 989px) 100vw, 989px" />
</p>
<h2>校对集</h2>
<p>
  什么是校对集：校对集就是字符集中的一种比较规则，主要用于排序
</p>
<p>
  Show  collation;查看所有的校对集
</p>
<p>
  show collation like &#8216;utf8_%&#8217;;查看utf8的校对集
</p>
<p>
   	utf8的两种校对集使用
</p>
<p>
  utf8_general_ci  不区分大小写  (a  B  c)
</p>
<p>
  utf8_bin   二进制排序 （B a c）
</p>
<p>
  	B&#8212;-66
</p>
<p>
  a&#8212;-97
</p>
<p>
  c&#8212;-99
</p>
<p>
  案例：
</p>
<p>
  	创建两张表
</p>
<p>
  <img loading="lazy" decoding="async" width="674" height="247" src="/wp-content/uploads/2018/05/word-image-904.png" class="wp-image-1012" srcset="/wp-content/uploads/2018/05/word-image-904.png 674w, /wp-content/uploads/2018/05/word-image-904-300x110.png 300w" sizes="(max-width: 674px) 100vw, 674px" />
</p>
<p>
  插入数据
</p>
<p>
  insert into test1 values(&#8216;a&#8217;);
</p>
<p>
  insert into test1 values(&#8216;B&#8217;);
</p>
<p>
  insert into test1 values(&#8216;c&#8217;);
</p>
<p>
  insert into test2 values(&#8216;a&#8217;);
</p>
<p>
  insert into test2 values(&#8216;B&#8217;);
</p>
<p>
  insert into test2 values(&#8216;c&#8217;);
</p>
<p>
  排序查看
</p>
<p>
  <img loading="lazy" decoding="async" width="834" height="365" src="/wp-content/uploads/2018/05/word-image-905.png" class="wp-image-1013" srcset="/wp-content/uploads/2018/05/word-image-905.png 834w, /wp-content/uploads/2018/05/word-image-905-300x131.png 300w, /wp-content/uploads/2018/05/word-image-905-768x336.png 768w" sizes="(max-width: 834px) 100vw, 834px" />
</p>
<h2>数据库引擎</h2>
<p>
  什么是数据库引擎：就是数据库保存表数据的一种方式
</p>
<p>
  常用的数据库引擎有 innodb myisam
</p>
<p>
  默认的数据库引擎是innodb
</p>
<p>
  <img loading="lazy" decoding="async" width="1224" height="195" src="/wp-content/uploads/2018/05/word-image-906.png" class="wp-image-1014" srcset="/wp-content/uploads/2018/05/word-image-906.png 1224w, /wp-content/uploads/2018/05/word-image-906-300x48.png 300w, /wp-content/uploads/2018/05/word-image-906-768x122.png 768w, /wp-content/uploads/2018/05/word-image-906-1024x163.png 1024w" sizes="(max-width: 1224px) 100vw, 1224px" />
</p>
<p>
  默认的数据库引擎可以在配置文件中配置
</p>
<p>
  <img loading="lazy" decoding="async" width="874" height="197" src="/wp-content/uploads/2018/05/word-image-907.png" class="wp-image-1015" srcset="/wp-content/uploads/2018/05/word-image-907.png 874w, /wp-content/uploads/2018/05/word-image-907-300x68.png 300w, /wp-content/uploads/2018/05/word-image-907-768x173.png 768w" sizes="(max-width: 874px) 100vw, 874px" />
</p>
<p>
  数据库引擎的支持
</p>
<p>
  <img loading="lazy" decoding="async" width="858" height="534" src="/wp-content/uploads/2018/05/word-image-908.png" class="wp-image-1016" srcset="/wp-content/uploads/2018/05/word-image-908.png 858w, /wp-content/uploads/2018/05/word-image-908-300x187.png 300w, /wp-content/uploads/2018/05/word-image-908-768x478.png 768w" sizes="(max-width: 858px) 100vw, 858px" /></p>
]]></content:encoded>
					
					<wfw:commentRss>/%e6%95%b0%e6%8d%ae%e5%ba%93/mysql/944.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Mysql（二）修改表结构、 复制表、 字段类型、 数据类型、 重命名表</title>
		<link>/%e6%95%b0%e6%8d%ae%e5%ba%93/mysql/1018.html</link>
					<comments>/%e6%95%b0%e6%8d%ae%e5%ba%93/mysql/1018.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Thu, 17 May 2018 17:13:09 +0000</pubDate>
				<category><![CDATA[Mysql]]></category>
		<category><![CDATA[修改表结构]]></category>
		<category><![CDATA[复制表]]></category>
		<category><![CDATA[字段类型]]></category>
		<category><![CDATA[数据类型]]></category>
		<category><![CDATA[重命名表]]></category>
		<guid isPermaLink="false">/?p=1018</guid>

					<description><![CDATA[字段类型 扩充： 复制表就是在原有表基础上，把原有的表的东西拿过来创建一个新的数据表 语法：create ta [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>字段类型</h1>
<p>
  扩充：
</p>
<p>
  复制表就是在原有表基础上，把原有的表的东西拿过来创建一个新的数据表
</p>
<ul>
<li>
    语法：create table 表名 select * from 表名;
  </li>
<li>
    作用:复制表的结构和表内容信息
  </li>
</ul>
<p>
  复制前：
</p>
<p>
  <img loading="lazy" decoding="async" width="955" height="317" src="/wp-content/uploads/2018/05/word-image-909.png" class="wp-image-1019" srcset="/wp-content/uploads/2018/05/word-image-909.png 955w, /wp-content/uploads/2018/05/word-image-909-300x100.png 300w, /wp-content/uploads/2018/05/word-image-909-768x255.png 768w" sizes="(max-width: 955px) 100vw, 955px" />
</p>
<p>
  复制
</p>
<p>
  <img loading="lazy" decoding="async" width="579" height="82" src="/wp-content/uploads/2018/05/word-image-910.png" class="wp-image-1020" srcset="/wp-content/uploads/2018/05/word-image-910.png 579w, /wp-content/uploads/2018/05/word-image-910-300x42.png 300w" sizes="(max-width: 579px) 100vw, 579px" />
</p>
<p>
  复制后
</p>
<p>
  <img loading="lazy" decoding="async" width="866" height="323" src="/wp-content/uploads/2018/05/word-image-911.png" class="wp-image-1021" srcset="/wp-content/uploads/2018/05/word-image-911.png 866w, /wp-content/uploads/2018/05/word-image-911-300x112.png 300w, /wp-content/uploads/2018/05/word-image-911-768x286.png 768w" sizes="(max-width: 866px) 100vw, 866px" />
</p>
<p>
  第二种复制表
</p>
<p>
  语法：create table 表名 like 表名;
</p>
<p>
  作用：只复制表结构，不复制表信息
</p>
<p>
  复制前
</p>
<p>
  <img loading="lazy" decoding="async" width="914" height="320" src="/wp-content/uploads/2018/05/word-image-912.png" class="wp-image-1022" srcset="/wp-content/uploads/2018/05/word-image-912.png 914w, /wp-content/uploads/2018/05/word-image-912-300x105.png 300w, /wp-content/uploads/2018/05/word-image-912-768x269.png 768w" sizes="(max-width: 914px) 100vw, 914px" />
</p>
<p>
  复制
</p>
<p>
  <img loading="lazy" decoding="async" width="525" height="46" src="/wp-content/uploads/2018/05/word-image-913.png" class="wp-image-1023" srcset="/wp-content/uploads/2018/05/word-image-913.png 525w, /wp-content/uploads/2018/05/word-image-913-300x26.png 300w" sizes="(max-width: 525px) 100vw, 525px" />
</p>
<p>
  复制后
</p>
<p>
  <img loading="lazy" decoding="async" width="814" height="244" src="/wp-content/uploads/2018/05/word-image-914.png" class="wp-image-1024" srcset="/wp-content/uploads/2018/05/word-image-914.png 814w, /wp-content/uploads/2018/05/word-image-914-300x90.png 300w, /wp-content/uploads/2018/05/word-image-914-768x230.png 768w" sizes="(max-width: 814px) 100vw, 814px" />
</p>
<h2>数值型</h2>
<h3>整数</h3>
<p>
  <img loading="lazy" decoding="async" width="578" height="350" src="/wp-content/uploads/2018/05/word-image-915.png" class="wp-image-1025" srcset="/wp-content/uploads/2018/05/word-image-915.png 578w, /wp-content/uploads/2018/05/word-image-915-300x182.png 300w" sizes="(max-width: 578px) 100vw, 578px" />
</p>
<p>
  思考？&#8212;一个字节占多少位？&#8212;8位&#8212;&#8211;整形存储占8位&#8212;2*2*2*2*2*2*2*2=256
</p>
<p>
  		Tinyint的范围就是256个这里   -128&#8212;-127 刚好256个数
</p>
<p>
  整形存储的范围和，存储的空间有关系
</p>
<h4>数值范围</h4>
<p>
  <img loading="lazy" decoding="async" width="562" height="106" src="/wp-content/uploads/2018/05/word-image-916.png" class="wp-image-1026" srcset="/wp-content/uploads/2018/05/word-image-916.png 562w, /wp-content/uploads/2018/05/word-image-916-300x57.png 300w" sizes="(max-width: 562px) 100vw, 562px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="759" height="234" src="/wp-content/uploads/2018/05/word-image-917.png" class="wp-image-1027" srcset="/wp-content/uploads/2018/05/word-image-917.png 759w, /wp-content/uploads/2018/05/word-image-917-300x92.png 300w" sizes="(max-width: 759px) 100vw, 759px" />
</p>
<h4>无符号</h4>
<p>
  	Unsigned 只能存储正数，不能存储负数
</p>
<p>
  <img loading="lazy" decoding="async" width="721" height="174" src="/wp-content/uploads/2018/05/word-image-918.png" class="wp-image-1028" srcset="/wp-content/uploads/2018/05/word-image-918.png 721w, /wp-content/uploads/2018/05/word-image-918-300x72.png 300w" sizes="(max-width: 721px) 100vw, 721px" />
</p>
<p>
  注意：无符号没有负数，正数方向范围加倍
</p>
<p>
  <img loading="lazy" decoding="async" width="681" height="274" src="/wp-content/uploads/2018/05/word-image-919.png" class="wp-image-1029" srcset="/wp-content/uploads/2018/05/word-image-919.png 681w, /wp-content/uploads/2018/05/word-image-919-300x121.png 300w" sizes="(max-width: 681px) 100vw, 681px" />
</p>
<h4>显示宽度&amp;零填充</h4>
<p>
  <img loading="lazy" decoding="async" width="919" height="118" src="/wp-content/uploads/2018/05/word-image-920.png" class="wp-image-1030" srcset="/wp-content/uploads/2018/05/word-image-920.png 919w, /wp-content/uploads/2018/05/word-image-920-300x39.png 300w, /wp-content/uploads/2018/05/word-image-920-768x99.png 768w" sizes="(max-width: 919px) 100vw, 919px" />
</p>
<p>
  插入数据：
</p>
<p>
  <img loading="lazy" decoding="async" width="730" height="116" src="/wp-content/uploads/2018/05/word-image-921.png" class="wp-image-1031" srcset="/wp-content/uploads/2018/05/word-image-921.png 730w, /wp-content/uploads/2018/05/word-image-921-300x48.png 300w" sizes="(max-width: 730px) 100vw, 730px" />
</p>
<p>
  显示效果
</p>
<p>
  <img loading="lazy" decoding="async" width="747" height="141" src="/wp-content/uploads/2018/05/word-image-922.png" class="wp-image-1032" srcset="/wp-content/uploads/2018/05/word-image-922.png 747w, /wp-content/uploads/2018/05/word-image-922-300x57.png 300w" sizes="(max-width: 747px) 100vw, 747px" />
</p>
<p>
  注意：
</p>
<ul>
<li>
    显示长度和零填充一块使用才有效果；
  </li>
<li>
    当插入数据的长度大于显示长度的话
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="724" height="250" src="/wp-content/uploads/2018/05/word-image-923.png" class="wp-image-1033" srcset="/wp-content/uploads/2018/05/word-image-923.png 724w, /wp-content/uploads/2018/05/word-image-923-300x104.png 300w" sizes="(max-width: 724px) 100vw, 724px" />
</p>
<h3>小数</h3>
<p>
  浮点型
</p>
<p>
  <img loading="lazy" decoding="async" width="1010" height="246" src="/wp-content/uploads/2018/05/word-image-924.png" class="wp-image-1034" srcset="/wp-content/uploads/2018/05/word-image-924.png 1010w, /wp-content/uploads/2018/05/word-image-924-300x73.png 300w, /wp-content/uploads/2018/05/word-image-924-768x187.png 768w" sizes="(max-width: 1010px) 100vw, 1010px" />
</p>
<h4>Float</h4>
<p>
  	单精度浮点型
</p>
<p>
  这个float一般在数据类型中不使用，因为有误差；
</p>
<ul>
<li>
    误差问题测试案例
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="664" height="121" src="/wp-content/uploads/2018/05/word-image-925.png" class="wp-image-1035" srcset="/wp-content/uploads/2018/05/word-image-925.png 664w, /wp-content/uploads/2018/05/word-image-925-300x55.png 300w" sizes="(max-width: 664px) 100vw, 664px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="683" height="199" src="/wp-content/uploads/2018/05/word-image-926.png" class="wp-image-1036" srcset="/wp-content/uploads/2018/05/word-image-926.png 683w, /wp-content/uploads/2018/05/word-image-926-300x87.png 300w" sizes="(max-width: 683px) 100vw, 683px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="604" height="227" src="/wp-content/uploads/2018/05/word-image-927.png" class="wp-image-1037" srcset="/wp-content/uploads/2018/05/word-image-927.png 604w, /wp-content/uploads/2018/05/word-image-927-300x113.png 300w" sizes="(max-width: 604px) 100vw, 604px" />
</p>
<p>
  误差的原因&#8212;-MySQL内部存储计算使用的都是double类型
</p>
<h4>Double</h4>
<p>
  <img loading="lazy" decoding="async" width="666" height="113" src="/wp-content/uploads/2018/05/word-image-928.png" class="wp-image-1038" srcset="/wp-content/uploads/2018/05/word-image-928.png 666w, /wp-content/uploads/2018/05/word-image-928-300x51.png 300w" sizes="(max-width: 666px) 100vw, 666px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="807" height="163" src="/wp-content/uploads/2018/05/word-image-929.png" class="wp-image-1039" srcset="/wp-content/uploads/2018/05/word-image-929.png 807w, /wp-content/uploads/2018/05/word-image-929-300x61.png 300w, /wp-content/uploads/2018/05/word-image-929-768x155.png 768w" sizes="(max-width: 807px) 100vw, 807px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="855" height="191" src="/wp-content/uploads/2018/05/word-image-930.png" class="wp-image-1040" srcset="/wp-content/uploads/2018/05/word-image-930.png 855w, /wp-content/uploads/2018/05/word-image-930-300x67.png 300w, /wp-content/uploads/2018/05/word-image-930-768x172.png 768w" sizes="(max-width: 855px) 100vw, 855px" />
</p>
<ul>
<li>
    无符号问题测试案例
  </li>
</ul>
<p>
  Unsigned 无符号，也就是不能插入负数
</p>
<p>
  <img loading="lazy" decoding="async" width="831" height="187" src="/wp-content/uploads/2018/05/word-image-931.png" class="wp-image-1041" srcset="/wp-content/uploads/2018/05/word-image-931.png 831w, /wp-content/uploads/2018/05/word-image-931-300x68.png 300w, /wp-content/uploads/2018/05/word-image-931-768x173.png 768w" sizes="(max-width: 831px) 100vw, 831px" />
</p>
<ul>
<li>
    设置显示宽度
  </li>
</ul>
<p>
  			create table 表名
</p>
<p>
  			(
</p>
<p>
  				num double(m,d)
</p>
<p>
  				&#8212; m是可以显示的总字符长度，d显示的是可以显示几个小数字符
</p>
<p>
  			)charset=utf8;
</p>
<p>
  <img loading="lazy" decoding="async" width="829" height="108" src="/wp-content/uploads/2018/05/word-image-932.png" class="wp-image-1042" srcset="/wp-content/uploads/2018/05/word-image-932.png 829w, /wp-content/uploads/2018/05/word-image-932-300x39.png 300w, /wp-content/uploads/2018/05/word-image-932-768x100.png 768w" sizes="(max-width: 829px) 100vw, 829px" />
</p>
<ul>
<li>
    如果插入的数据的小数长度唱过了设置的d小数的显示长度1位，那么把超出的部分直接去掉
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="841" height="182" src="/wp-content/uploads/2018/05/word-image-933.png" class="wp-image-1043" srcset="/wp-content/uploads/2018/05/word-image-933.png 841w, /wp-content/uploads/2018/05/word-image-933-300x65.png 300w, /wp-content/uploads/2018/05/word-image-933-768x166.png 768w" sizes="(max-width: 841px) 100vw, 841px" />
</p>
<ul>
<li>
    果插入的数据的小数长度唱过了设置的d小数的显示长度1位以上，会四舍五入
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="764" height="221" src="/wp-content/uploads/2018/05/word-image-934.png" class="wp-image-1044" srcset="/wp-content/uploads/2018/05/word-image-934.png 764w, /wp-content/uploads/2018/05/word-image-934-300x87.png 300w" sizes="(max-width: 764px) 100vw, 764px" />
</p>
<ul>
<li>
    如果整数的显示长度超过了m – d(减号)，那么会直接报错，范围超出的错误
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="874" height="48" src="/wp-content/uploads/2018/05/word-image-935.png" class="wp-image-1045" srcset="/wp-content/uploads/2018/05/word-image-935.png 874w, /wp-content/uploads/2018/05/word-image-935-300x16.png 300w, /wp-content/uploads/2018/05/word-image-935-768x42.png 768w" sizes="(max-width: 874px) 100vw, 874px" />
</p>
<p>
  零填充
</p>
<p>
  	Zerofill—当显示的长度不够设置的长度的时候在左侧补0占位显示；
</p>
<p>
  创建表
</p>
<p>
  <img loading="lazy" decoding="async" width="926" height="111" src="/wp-content/uploads/2018/05/word-image-936.png" class="wp-image-1046" srcset="/wp-content/uploads/2018/05/word-image-936.png 926w, /wp-content/uploads/2018/05/word-image-936-300x36.png 300w, /wp-content/uploads/2018/05/word-image-936-768x92.png 768w" sizes="(max-width: 926px) 100vw, 926px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="816" height="221" src="/wp-content/uploads/2018/05/word-image-937.png" class="wp-image-1047" srcset="/wp-content/uploads/2018/05/word-image-937.png 816w, /wp-content/uploads/2018/05/word-image-937-300x81.png 300w, /wp-content/uploads/2018/05/word-image-937-768x208.png 768w" sizes="(max-width: 816px) 100vw, 816px" />
</p>
<p>
  注意：这里如果有zerofill零填充会把小数点算一个长度
</p>
<ul>
<li>
    默认精度就是默认的显示长度
  </li>
</ul>
<p>
  Float和double是没有默认精度的
</p>
<p>
  <img loading="lazy" decoding="async" width="923" height="288" src="/wp-content/uploads/2018/05/word-image-938.png" class="wp-image-1048" srcset="/wp-content/uploads/2018/05/word-image-938.png 923w, /wp-content/uploads/2018/05/word-image-938-300x94.png 300w, /wp-content/uploads/2018/05/word-image-938-768x240.png 768w" sizes="(max-width: 923px) 100vw, 923px" /><br />
  <img loading="lazy" decoding="async" width="1085" height="278" src="/wp-content/uploads/2018/05/word-image-939.png" class="wp-image-1049" srcset="/wp-content/uploads/2018/05/word-image-939.png 1085w, /wp-content/uploads/2018/05/word-image-939-300x77.png 300w, /wp-content/uploads/2018/05/word-image-939-768x197.png 768w, /wp-content/uploads/2018/05/word-image-939-1024x262.png 1024w" sizes="(max-width: 1085px) 100vw, 1085px" />
</p>
<p>
  但是有一个类型是有默认精度的就是decimal小数类型
</p>
<p>
  <img loading="lazy" decoding="async" width="817" height="282" src="/wp-content/uploads/2018/05/word-image-940.png" class="wp-image-1050" srcset="/wp-content/uploads/2018/05/word-image-940.png 817w, /wp-content/uploads/2018/05/word-image-940-300x104.png 300w, /wp-content/uploads/2018/05/word-image-940-768x265.png 768w" sizes="(max-width: 817px) 100vw, 817px" />
</p>
<p>
  定点型
</p>
<p>
  	Decimal比较准确，一般在存储关于钱的数据的时候都使用decimal
</p>
<p>
  Decimal的默认精度是（10,0）;
</p>
<p>
  案例：
</p>
<p>
  表结构创建
</p>
<p>
  <img loading="lazy" decoding="async" width="752" height="122" src="/wp-content/uploads/2018/05/word-image-941.png" class="wp-image-1051" srcset="/wp-content/uploads/2018/05/word-image-941.png 752w, /wp-content/uploads/2018/05/word-image-941-300x49.png 300w" sizes="(max-width: 752px) 100vw, 752px" />
</p>
<p>
  数据测试
</p>
<p>
  <img loading="lazy" decoding="async" width="796" height="70" src="/wp-content/uploads/2018/05/word-image-942.png" class="wp-image-1052" srcset="/wp-content/uploads/2018/05/word-image-942.png 796w, /wp-content/uploads/2018/05/word-image-942-300x26.png 300w, /wp-content/uploads/2018/05/word-image-942-768x68.png 768w" sizes="(max-width: 796px) 100vw, 796px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="725" height="208" src="/wp-content/uploads/2018/05/word-image-943.png" class="wp-image-1053" srcset="/wp-content/uploads/2018/05/word-image-943.png 725w, /wp-content/uploads/2018/05/word-image-943-300x86.png 300w" sizes="(max-width: 725px) 100vw, 725px" />
</p>
<h3>总结</h3>
<p>
  Float和double的比较
</p>
<p>
  	精度方面：float有误差，double存储没有误差，因为数据库存储计算的时候使用的就是double类型
</p>
<p>
  Decimal和float的标准
</p>
<p>
  	四舍五入方面
</p>
<p>
  		Float;如果小数长度超过了设置长度的1位&#8212;直接舍去，如果超过了一位以上四舍五入
</p>
<p>
  		Decimal: 如果小数长度超过了设置的长度直接四舍五入
</p>
<p>
  通常如果这个小数类型是用来存储钱的时候就用decimal
</p>
<h2>字符串型</h2>
<p>
  <img loading="lazy" decoding="async" width="886" height="263" src="/wp-content/uploads/2018/05/word-image-944.png" class="wp-image-1054" srcset="/wp-content/uploads/2018/05/word-image-944.png 886w, /wp-content/uploads/2018/05/word-image-944-300x89.png 300w, /wp-content/uploads/2018/05/word-image-944-768x228.png 768w" sizes="(max-width: 886px) 100vw, 886px" />
</p>
<ul>
<li>
    在utf8编码中一个字符占用3个字节
  </li>
<li>
    在gbk编码中一个字符占用2个字节
  </li>
</ul>
<h3>Char</h3>
<p>
  Char是一个定长的最多能存储255个字符
</p>
<ul>
<li>
    插入时，字符串长度问题
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="782" height="315" src="/wp-content/uploads/2018/05/word-image-945.png" class="wp-image-1055" srcset="/wp-content/uploads/2018/05/word-image-945.png 782w, /wp-content/uploads/2018/05/word-image-945-300x121.png 300w, /wp-content/uploads/2018/05/word-image-945-768x309.png 768w" sizes="(max-width: 782px) 100vw, 782px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="741" height="113" src="/wp-content/uploads/2018/05/word-image-946.png" class="wp-image-1056" srcset="/wp-content/uploads/2018/05/word-image-946.png 741w, /wp-content/uploads/2018/05/word-image-946-300x46.png 300w" sizes="(max-width: 741px) 100vw, 741px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="744" height="63" src="/wp-content/uploads/2018/05/word-image-947.png" class="wp-image-1057" srcset="/wp-content/uploads/2018/05/word-image-947.png 744w, /wp-content/uploads/2018/05/word-image-947-300x25.png 300w" sizes="(max-width: 744px) 100vw, 744px" />
</p>
<ul>
<li>
    自动填充空格的问题
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="767" height="115" src="/wp-content/uploads/2018/05/word-image-948.png" class="wp-image-1058" srcset="/wp-content/uploads/2018/05/word-image-948.png 767w, /wp-content/uploads/2018/05/word-image-948-300x45.png 300w" sizes="(max-width: 767px) 100vw, 767px" />
</p>
<p>
  插入数据
</p>
<p>
  	插入7个长度的字符串
</p>
<p>
  <img loading="lazy" decoding="async" width="626" height="65" src="/wp-content/uploads/2018/05/word-image-949.png" class="wp-image-1059" srcset="/wp-content/uploads/2018/05/word-image-949.png 626w, /wp-content/uploads/2018/05/word-image-949-300x31.png 300w" sizes="(max-width: 626px) 100vw, 626px" />
</p>
<p>
  	插入10个长度的字符串
</p>
<p>
  <img loading="lazy" decoding="async" width="588" height="56" src="/wp-content/uploads/2018/05/word-image-950.png" class="wp-image-1060" srcset="/wp-content/uploads/2018/05/word-image-950.png 588w, /wp-content/uploads/2018/05/word-image-950-300x29.png 300w" sizes="(max-width: 588px) 100vw, 588px" />
</p>
<p>
  查看结果
</p>
<p>
  <img loading="lazy" decoding="async" width="802" height="134" src="/wp-content/uploads/2018/05/word-image-951.png" class="wp-image-1061" srcset="/wp-content/uploads/2018/05/word-image-951.png 802w, /wp-content/uploads/2018/05/word-image-951-300x50.png 300w, /wp-content/uploads/2018/05/word-image-951-768x128.png 768w" sizes="(max-width: 802px) 100vw, 802px" />
</p>
<h3>Varchar</h3>
<p>
  Varchar:可变字符类型，这里如果插入的字符不够设置的长度，会自动回收多于的空间
</p>
<p>
  		存储时以字节存储，会受到字符编码的影响 最多存储65535个字节
</p>
<p>
  		create table num12
</p>
<p>
  		(
</p>
<p>
  			name varchar()  &#8212; 这里规定的可以显示的字符长度  一个字符占3个字节
</p>
<p>
  						   &#8212; 计算这里括号里最多可以设置多长  65535字节/3=2万多个字符
</p>
<p>
  		)charset=utf8
</p>
<p>
  	Utf8中一个字符占3个字节
</p>
<p>
  <img loading="lazy" decoding="async" width="994" height="171" src="/wp-content/uploads/2018/05/word-image-952.png" class="wp-image-1062" srcset="/wp-content/uploads/2018/05/word-image-952.png 994w, /wp-content/uploads/2018/05/word-image-952-300x52.png 300w, /wp-content/uploads/2018/05/word-image-952-768x132.png 768w" sizes="(max-width: 994px) 100vw, 994px" />
</p>
<p>
  	Gbk中一个字符占2个字节
</p>
<p>
  <img loading="lazy" decoding="async" width="1014" height="134" src="/wp-content/uploads/2018/05/word-image-953.png" class="wp-image-1063" srcset="/wp-content/uploads/2018/05/word-image-953.png 1014w, /wp-content/uploads/2018/05/word-image-953-300x40.png 300w, /wp-content/uploads/2018/05/word-image-953-768x101.png 768w" sizes="(max-width: 1014px) 100vw, 1014px" />
</p>
<p>
  案例：
</p>
<p>
  <img loading="lazy" decoding="async" width="735" height="177" src="/wp-content/uploads/2018/05/word-image-954.png" class="wp-image-1064" srcset="/wp-content/uploads/2018/05/word-image-954.png 735w, /wp-content/uploads/2018/05/word-image-954-300x72.png 300w" sizes="(max-width: 735px) 100vw, 735px" />
</p>
<p>
  Char和varchar的比较
</p>
<ul>
<li>
    Char是定长，之规定存储多少字符，也是按照字符的个数来存储的,如果存储的字符少于规定的长度，多于的空间不能自动回收
  </li>
<li>
    Varchar 是变长（不够设置的长度的话会自动的回收多于的空间），以字节来存的，但是<strong>varchar(20)规定的是最多存储20个字符</strong>
  </li>
</ul>
<p>
  什么时候使用char ,什么时候使用varchar
</p>
<p>
  问题：手机号存用什么存？
</p>
<p>
  	用char（定长）来存，手机号是固定的长度，都是11位
</p>
<p>
  问题：新闻标题用什么存？
</p>
<p>
  	新闻标题字符数不确定，用varchar来存
</p>
<p>
  Char 会浪费空间，执行效率高
</p>
<p>
  Varchar 节省空间，执行效率低
</p>
<h3>Set</h3>
<p>
  在MySQL中是一个多选类型，存储的是字符串，用途是供用户来选择，用户插入的值只能从set选项里边来插入
</p>
<p>
  <img loading="lazy" decoding="async" width="593" height="82" src="/wp-content/uploads/2018/05/word-image-955.png" class="wp-image-1065" srcset="/wp-content/uploads/2018/05/word-image-955.png 593w, /wp-content/uploads/2018/05/word-image-955-300x41.png 300w" sizes="(max-width: 593px) 100vw, 593px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="679" height="169" src="/wp-content/uploads/2018/05/word-image-956.png" class="wp-image-1066" srcset="/wp-content/uploads/2018/05/word-image-956.png 679w, /wp-content/uploads/2018/05/word-image-956-300x75.png 300w" sizes="(max-width: 679px) 100vw, 679px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="909" height="70" src="/wp-content/uploads/2018/05/word-image-957.png" class="wp-image-1067" srcset="/wp-content/uploads/2018/05/word-image-957.png 909w, /wp-content/uploads/2018/05/word-image-957-300x23.png 300w, /wp-content/uploads/2018/05/word-image-957-768x59.png 768w" sizes="(max-width: 909px) 100vw, 909px" />
</p>
<p>
  扩展：set 在MySQL底层计算的时候是以整数来计算的
</p>
<p>
  sex set(&#8216;男&#8217;,&#8217;女&#8217;,&#8217;保密&#8217;)
</p>
<p>
  这里第一个值是   男&#8212;-1&#8212;2的0次方
</p>
<p>
  这里第二个值是   女&#8212;-2&#8212;2的1次方
</p>
<p>
  这里第三个值是    保密&#8212;4&#8212;2的2次方
</p>
<p>
  所以在插入数据的时候我们还可以以整数的形式进行插入
</p>
<p>
  表结构
</p>
<p>
  <img loading="lazy" decoding="async" width="640" height="114" src="/wp-content/uploads/2018/05/word-image-958.png" class="wp-image-1068" srcset="/wp-content/uploads/2018/05/word-image-958.png 640w, /wp-content/uploads/2018/05/word-image-958-300x53.png 300w" sizes="(max-width: 640px) 100vw, 640px" />
</p>
<p>
  插入数据
</p>
<p>
  <img loading="lazy" decoding="async" width="701" height="180" src="/wp-content/uploads/2018/05/word-image-959.png" class="wp-image-1069" srcset="/wp-content/uploads/2018/05/word-image-959.png 701w, /wp-content/uploads/2018/05/word-image-959-300x77.png 300w" sizes="(max-width: 701px) 100vw, 701px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="833" height="197" src="/wp-content/uploads/2018/05/word-image-960.png" class="wp-image-1070" srcset="/wp-content/uploads/2018/05/word-image-960.png 833w, /wp-content/uploads/2018/05/word-image-960-300x71.png 300w, /wp-content/uploads/2018/05/word-image-960-768x182.png 768w" sizes="(max-width: 833px) 100vw, 833px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="718" height="230" src="/wp-content/uploads/2018/05/word-image-961.png" class="wp-image-1071" srcset="/wp-content/uploads/2018/05/word-image-961.png 718w, /wp-content/uploads/2018/05/word-image-961-300x96.png 300w" sizes="(max-width: 718px) 100vw, 718px" />
</p>
<h3>Enum</h3>
<p>
  单选，单选的值是以字符串来保存的，内计算的时候是以整形来计算，所以单选的执行效率比较高
</p>
<p>
  表结构
</p>
<p>
  <img loading="lazy" decoding="async" width="709" height="112" src="/wp-content/uploads/2018/05/word-image-962.png" class="wp-image-1072" srcset="/wp-content/uploads/2018/05/word-image-962.png 709w, /wp-content/uploads/2018/05/word-image-962-300x47.png 300w" sizes="(max-width: 709px) 100vw, 709px" />
</p>
<p>
  插入数据
</p>
<p>
  <img loading="lazy" decoding="async" width="953" height="176" src="/wp-content/uploads/2018/05/word-image-963.png" class="wp-image-1073" srcset="/wp-content/uploads/2018/05/word-image-963.png 953w, /wp-content/uploads/2018/05/word-image-963-300x55.png 300w, /wp-content/uploads/2018/05/word-image-963-768x142.png 768w" sizes="(max-width: 953px) 100vw, 953px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="864" height="65" src="/wp-content/uploads/2018/05/word-image-964.png" class="wp-image-1074" srcset="/wp-content/uploads/2018/05/word-image-964.png 864w, /wp-content/uploads/2018/05/word-image-964-300x23.png 300w, /wp-content/uploads/2018/05/word-image-964-768x58.png 768w" sizes="(max-width: 864px) 100vw, 864px" />
</p>
<p>
  扩展enum也可以用数字来插入
</p>
<p>
  	enum中有三个值
</p>
<p>
  		第一个是 男&#8212;-1
</p>
<p>
  		第二个是 女&#8212;-2
</p>
<p>
  		第三个是 保密&#8212;-3
</p>
<p>
  <img loading="lazy" decoding="async" width="709" height="112" src="/wp-content/uploads/2018/05/word-image-965.png" class="wp-image-1075" srcset="/wp-content/uploads/2018/05/word-image-965.png 709w, /wp-content/uploads/2018/05/word-image-965-300x47.png 300w" sizes="(max-width: 709px) 100vw, 709px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="783" height="215" src="/wp-content/uploads/2018/05/word-image-966.png" class="wp-image-1076" srcset="/wp-content/uploads/2018/05/word-image-966.png 783w, /wp-content/uploads/2018/05/word-image-966-300x82.png 300w, /wp-content/uploads/2018/05/word-image-966-768x211.png 768w" sizes="(max-width: 783px) 100vw, 783px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="638" height="210" src="/wp-content/uploads/2018/05/word-image-967.png" class="wp-image-1077" srcset="/wp-content/uploads/2018/05/word-image-967.png 638w, /wp-content/uploads/2018/05/word-image-967-300x99.png 300w" sizes="(max-width: 638px) 100vw, 638px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="862" height="217" src="/wp-content/uploads/2018/05/word-image-968.png" class="wp-image-1078" srcset="/wp-content/uploads/2018/05/word-image-968.png 862w, /wp-content/uploads/2018/05/word-image-968-300x76.png 300w, /wp-content/uploads/2018/05/word-image-968-768x193.png 768w" sizes="(max-width: 862px) 100vw, 862px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="861" height="62" src="/wp-content/uploads/2018/05/word-image-969.png" class="wp-image-1079" srcset="/wp-content/uploads/2018/05/word-image-969.png 861w, /wp-content/uploads/2018/05/word-image-969-300x22.png 300w, /wp-content/uploads/2018/05/word-image-969-768x55.png 768w" sizes="(max-width: 861px) 100vw, 861px" />
</p>
<p>
  第一个值就是1，第二个值就是2，第三个值就是3，第四个值就是4；
</p>
<p>
  注意：单选每次只能插入一个值
</p>
<h3>比较set和enum的区别和相同点</h3>
<p>
  不同的地方
</p>
<ul>
<li>
<ul>
<li>
        Set每次可以插入多个选项的值   Enum每次只能插入一个选项的值
      </li>
<li>
        Set用整数插入的时候 第一个选项的值2的0次方 第二个值是2的1次方…   Enum用整数插入的时候，第一个选项的是是1，第二个选项的值是2，第三个选项的设置是3
      </li>
<li>
        Set 可以用整数的和代表几个选项，比如  3=2的零次方+2的一次方  = 男,女
      </li>
</ul>
</li>
</ul>
<p>
  相同的地方
</p>
<ul>
<li>
    Set和enum底层计算都是用整数来计算，插入的时候都可以使用整数来插入
  </li>
</ul>
<h2>时间型</h2>
<p>
  这个类型不常用，一般存储时间的我们用int
</p>
<p>
  <img loading="lazy" decoding="async" width="1149" height="248" src="/wp-content/uploads/2018/05/word-image-970.png" class="wp-image-1080" srcset="/wp-content/uploads/2018/05/word-image-970.png 1149w, /wp-content/uploads/2018/05/word-image-970-300x65.png 300w, /wp-content/uploads/2018/05/word-image-970-768x166.png 768w, /wp-content/uploads/2018/05/word-image-970-1024x221.png 1024w" sizes="(max-width: 1149px) 100vw, 1149px" />
</p>
<p>
  这里datetime和timestamp类型比较相似，最大的区别就是取值范围不一样
</p>
<p>
  时间类型插入的时间格式（注意插入的时候时间用引号引起来）
</p>
<p>
  <img loading="lazy" decoding="async" width="355" height="75" src="/wp-content/uploads/2018/05/word-image-971.png" class="wp-image-1081" srcset="/wp-content/uploads/2018/05/word-image-971.png 355w, /wp-content/uploads/2018/05/word-image-971-300x63.png 300w" sizes="(max-width: 355px) 100vw, 355px" />
</p>
<p>
  案例使用
</p>
<p>
  	表结构
</p>
<p>  <img loading="lazy" decoding="async" width="660" height="186" src="/wp-content/uploads/2018/05/word-image-972.png" class="wp-image-1082" srcset="/wp-content/uploads/2018/05/word-image-972.png 660w, /wp-content/uploads/2018/05/word-image-972-300x85.png 300w" sizes="(max-width: 660px) 100vw, 660px" />
</p>
<p>
  插入数据时间格式1
</p>
<p>
  <img loading="lazy" decoding="async" width="1126" height="195" src="/wp-content/uploads/2018/05/word-image-973.png" class="wp-image-1083" srcset="/wp-content/uploads/2018/05/word-image-973.png 1126w, /wp-content/uploads/2018/05/word-image-973-300x52.png 300w, /wp-content/uploads/2018/05/word-image-973-768x133.png 768w, /wp-content/uploads/2018/05/word-image-973-1024x177.png 1024w" sizes="(max-width: 1126px) 100vw, 1126px" />
</p>
<p>
  插入的时间格式2
</p>
<p>
  <img loading="lazy" decoding="async" width="1106" height="215" src="/wp-content/uploads/2018/05/word-image-974.png" class="wp-image-1084" srcset="/wp-content/uploads/2018/05/word-image-974.png 1106w, /wp-content/uploads/2018/05/word-image-974-300x58.png 300w, /wp-content/uploads/2018/05/word-image-974-768x149.png 768w, /wp-content/uploads/2018/05/word-image-974-1024x199.png 1024w" sizes="(max-width: 1106px) 100vw, 1106px" />
</p>
<p>
  插入的时间格式3
</p>
<p>
  <img loading="lazy" decoding="async" width="1142" height="258" src="/wp-content/uploads/2018/05/word-image-975.png" class="wp-image-1085" srcset="/wp-content/uploads/2018/05/word-image-975.png 1142w, /wp-content/uploads/2018/05/word-image-975-300x68.png 300w, /wp-content/uploads/2018/05/word-image-975-768x174.png 768w, /wp-content/uploads/2018/05/word-image-975-1024x231.png 1024w" sizes="(max-width: 1142px) 100vw, 1142px" />
</p>
<h1>字段属性</h1>
<h2>Not null /null</h2>
<p>
  含义:限制字段值是否是null
</p>
<p>
  	Not null&#8212;-限制字段值不能为null
</p>
<p>
  	Null&#8212;&#8212;字段值允许为 null
</p>
<p>
  这里 空字符串 等于null 吗？  0等于 null吗？ 不全等
</p>
<p>
  <img loading="lazy" decoding="async" width="593" height="122" src="/wp-content/uploads/2018/05/word-image-976.png" class="wp-image-1086" srcset="/wp-content/uploads/2018/05/word-image-976.png 593w, /wp-content/uploads/2018/05/word-image-976-300x62.png 300w" sizes="(max-width: 593px) 100vw, 593px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="710" height="53" src="/wp-content/uploads/2018/05/word-image-977.png" class="wp-image-1087" srcset="/wp-content/uploads/2018/05/word-image-977.png 710w, /wp-content/uploads/2018/05/word-image-977-300x22.png 300w" sizes="(max-width: 710px) 100vw, 710px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="726" height="120" src="/wp-content/uploads/2018/05/word-image-978.png" class="wp-image-1088" srcset="/wp-content/uploads/2018/05/word-image-978.png 726w, /wp-content/uploads/2018/05/word-image-978-300x50.png 300w" sizes="(max-width: 726px) 100vw, 726px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="715" height="317" src="/wp-content/uploads/2018/05/word-image-979.png" class="wp-image-1089" srcset="/wp-content/uploads/2018/05/word-image-979.png 715w, /wp-content/uploads/2018/05/word-image-979-300x133.png 300w" sizes="(max-width: 715px) 100vw, 715px" />
</p>
<h2>Comment</h2>
<p>
  	一个字段的说明
</p>
<h2>Auto_increment &amp;&amp;Primary key</h2>
<p>
  <img loading="lazy" decoding="async" width="896" height="344" src="/wp-content/uploads/2018/05/word-image-980.png" class="wp-image-1090" srcset="/wp-content/uploads/2018/05/word-image-980.png 896w, /wp-content/uploads/2018/05/word-image-980-300x115.png 300w, /wp-content/uploads/2018/05/word-image-980-768x295.png 768w" sizes="(max-width: 896px) 100vw, 896px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="671" height="216" src="/wp-content/uploads/2018/05/word-image-981.png" class="wp-image-1091" srcset="/wp-content/uploads/2018/05/word-image-981.png 671w, /wp-content/uploads/2018/05/word-image-981-300x97.png 300w" sizes="(max-width: 671px) 100vw, 671px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="715" height="203" src="/wp-content/uploads/2018/05/word-image-982.png" class="wp-image-1092" srcset="/wp-content/uploads/2018/05/word-image-982.png 715w, /wp-content/uploads/2018/05/word-image-982-300x85.png 300w" sizes="(max-width: 715px) 100vw, 715px" />
</p>
<p>
  	Auto_increment：自动增长，用于整形，每次默认自动加1
</p>
<p>
  <img loading="lazy" decoding="async" width="1156" height="134" src="/wp-content/uploads/2018/05/word-image-983.png" class="wp-image-1093" srcset="/wp-content/uploads/2018/05/word-image-983.png 1156w, /wp-content/uploads/2018/05/word-image-983-300x35.png 300w, /wp-content/uploads/2018/05/word-image-983-768x89.png 768w, /wp-content/uploads/2018/05/word-image-983-1024x119.png 1024w" sizes="(max-width: 1156px) 100vw, 1156px" />
</p>
<p>
  	Primary key : 就是能唯一确定一行（记录）的字段，说白了就是一个‘<strong>身份证号</strong>‘
</p>
<p>
  总结：主键字段一般和auto_increment 连用，自动增长，
</p>
<p>
  		设置过主键和自动增长的字段表属性里会多增加一个属性AUTO_INCREMENT
</p>
<p>
  <img loading="lazy" decoding="async" width="784" height="193" src="/wp-content/uploads/2018/05/word-image-984.png" class="wp-image-1094" srcset="/wp-content/uploads/2018/05/word-image-984.png 784w, /wp-content/uploads/2018/05/word-image-984-300x74.png 300w, /wp-content/uploads/2018/05/word-image-984-768x189.png 768w" sizes="(max-width: 784px) 100vw, 784px" />
</p>
<p>
  用来表示下一次插入记录的时候，主键的值；如果主键的值是null那么就会使用表属性里边自动增长的值
</p>
<ul>
<li>
    表属性自动增长的值是表最大的主键值加1
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="666" height="237" src="/wp-content/uploads/2018/05/word-image-985.png" class="wp-image-1095" srcset="/wp-content/uploads/2018/05/word-image-985.png 666w, /wp-content/uploads/2018/05/word-image-985-300x107.png 300w" sizes="(max-width: 666px) 100vw, 666px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="1117" height="179" src="/wp-content/uploads/2018/05/word-image-986.png" class="wp-image-1096" srcset="/wp-content/uploads/2018/05/word-image-986.png 1117w, /wp-content/uploads/2018/05/word-image-986-300x48.png 300w, /wp-content/uploads/2018/05/word-image-986-768x123.png 768w, /wp-content/uploads/2018/05/word-image-986-1024x164.png 1024w" sizes="(max-width: 1117px) 100vw, 1117px" />
</p>
<ul>
<li>
    主键能重复吗
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="863" height="270" src="/wp-content/uploads/2018/05/word-image-987.png" class="wp-image-1097" srcset="/wp-content/uploads/2018/05/word-image-987.png 863w, /wp-content/uploads/2018/05/word-image-987-300x94.png 300w, /wp-content/uploads/2018/05/word-image-987-768x240.png 768w" sizes="(max-width: 863px) 100vw, 863px" />
</p>
<h2>Unique key </h2>
<p>
  	含义：字段的值不能重复
</p>
<p>
  测试：
</p>
<p>
  <img loading="lazy" decoding="async" width="774" height="139" src="/wp-content/uploads/2018/05/word-image-988.png" class="wp-image-1098" srcset="/wp-content/uploads/2018/05/word-image-988.png 774w, /wp-content/uploads/2018/05/word-image-988-300x54.png 300w, /wp-content/uploads/2018/05/word-image-988-768x138.png 768w" sizes="(max-width: 774px) 100vw, 774px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="822" height="270" src="/wp-content/uploads/2018/05/word-image-989.png" class="wp-image-1099" srcset="/wp-content/uploads/2018/05/word-image-989.png 822w, /wp-content/uploads/2018/05/word-image-989-300x99.png 300w, /wp-content/uploads/2018/05/word-image-989-768x252.png 768w" sizes="(max-width: 822px) 100vw, 822px" />
</p>
<p>
  一般unique key会自动的加一个默认值是 null
</p>
<p>
  这个null的含义就是’没有值’,多以唯一键一般都会加一个not null字段属性
</p>
<p>
  <img loading="lazy" decoding="async" width="773" height="252" src="/wp-content/uploads/2018/05/word-image-990.png" class="wp-image-1100" srcset="/wp-content/uploads/2018/05/word-image-990.png 773w, /wp-content/uploads/2018/05/word-image-990-300x98.png 300w, /wp-content/uploads/2018/05/word-image-990-768x250.png 768w" sizes="(max-width: 773px) 100vw, 773px" />
</p>
<h2>Default（一般不单独使用）</h2>
<p>
    含义：如果添加数据的时候没有给值，会自动用设置的默认值填充；一般和not null 连用
</p>
<p>
  create table test20
</p>
<p>
  (
</p>
<p>
  	id int primary key auto_increment,
</p>
<p>
  	name char(8) unique key not null default &#8216;a&#8217;
</p>
<p>
  ) charset = utf8;
</p>
<p>
  <img loading="lazy" decoding="async" width="520" height="47" src="/wp-content/uploads/2018/05/word-image-991.png" class="wp-image-1101" srcset="/wp-content/uploads/2018/05/word-image-991.png 520w, /wp-content/uploads/2018/05/word-image-991-300x27.png 300w" sizes="(max-width: 520px) 100vw, 520px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="559" height="121" src="/wp-content/uploads/2018/05/word-image-992.png" class="wp-image-1102" srcset="/wp-content/uploads/2018/05/word-image-992.png 559w, /wp-content/uploads/2018/05/word-image-992-300x65.png 300w" sizes="(max-width: 559px) 100vw, 559px" />
</p>
<p>
  一般数据库表设计的时候，都会加上一个not null,
</p>
<ul>
<li>
    第一执行效率比较快
  </li>
<li>
    Null的特殊性
  </li>
</ul>
<p>
  优化第一天案例英雄表
</p>
<p>
  <img loading="lazy" decoding="async" width="1272" height="211" src="/wp-content/uploads/2018/05/word-image-993.png" class="wp-image-1103" srcset="/wp-content/uploads/2018/05/word-image-993.png 1272w, /wp-content/uploads/2018/05/word-image-993-300x50.png 300w, /wp-content/uploads/2018/05/word-image-993-768x127.png 768w, /wp-content/uploads/2018/05/word-image-993-1024x170.png 1024w" sizes="(max-width: 1272px) 100vw, 1272px" />
</p>
<p>
  设计表：
</p>
<ul>
<li>
    一般字段类型的选择够用就行，不能过大（浪费空间）
  </li>
<li>
    一个表一般都有主键这个主键一般都设置成自动增长
  </li>
<li>
    字符串类型，看情况选择定长char(执行效率高)或是varchar(节省空间)
  </li>
<li>
    表字段除了主键一般都会使用字段属性  not null 如果不设置，后期的数据处理比较麻烦（唯一键的时候，可以有多个记录是null的情况出现）
  </li>
</ul>
<h1>修改表结构</h1>
<h2>增加字段</h2>
<p>
  语法：alter table 表名 add 字段名 类型  [字段属性]  [after 字段名]||[first ]
</p>
<p>
  <img loading="lazy" decoding="async" width="1021" height="326" src="/wp-content/uploads/2018/05/word-image-994.png" class="wp-image-1104" srcset="/wp-content/uploads/2018/05/word-image-994.png 1021w, /wp-content/uploads/2018/05/word-image-994-300x96.png 300w, /wp-content/uploads/2018/05/word-image-994-768x245.png 768w" sizes="(max-width: 1021px) 100vw, 1021px" />
</p>
<p>
  扩展
</p>
<ul>
<li>
    在某个字段后增加字段
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="1092" height="376" src="/wp-content/uploads/2018/05/word-image-995.png" class="wp-image-1105" srcset="/wp-content/uploads/2018/05/word-image-995.png 1092w, /wp-content/uploads/2018/05/word-image-995-300x103.png 300w, /wp-content/uploads/2018/05/word-image-995-768x264.png 768w, /wp-content/uploads/2018/05/word-image-995-1024x353.png 1024w" sizes="(max-width: 1092px) 100vw, 1092px" />
</p>
<ul>
<li>
    增加的字段在表的字段顺序第一个
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="1111" height="362" src="/wp-content/uploads/2018/05/word-image-996.png" class="wp-image-1106" srcset="/wp-content/uploads/2018/05/word-image-996.png 1111w, /wp-content/uploads/2018/05/word-image-996-300x98.png 300w, /wp-content/uploads/2018/05/word-image-996-768x250.png 768w, /wp-content/uploads/2018/05/word-image-996-1024x334.png 1024w" sizes="(max-width: 1111px) 100vw, 1111px" />
</p>
<h2>修改字段属性</h2>
<p>
  语法：alter table 表名 modify 字段名  新的类型 新的字段属性
</p>
<p>
  <img loading="lazy" decoding="async" width="1056" height="278" src="/wp-content/uploads/2018/05/word-image-997.png" class="wp-image-1107" srcset="/wp-content/uploads/2018/05/word-image-997.png 1056w, /wp-content/uploads/2018/05/word-image-997-300x79.png 300w, /wp-content/uploads/2018/05/word-image-997-768x202.png 768w, /wp-content/uploads/2018/05/word-image-997-1024x270.png 1024w" sizes="(max-width: 1056px) 100vw, 1056px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="1023" height="373" src="/wp-content/uploads/2018/05/word-image-998.png" class="wp-image-1108" srcset="/wp-content/uploads/2018/05/word-image-998.png 1023w, /wp-content/uploads/2018/05/word-image-998-300x109.png 300w, /wp-content/uploads/2018/05/word-image-998-768x280.png 768w" sizes="(max-width: 1023px) 100vw, 1023px" />
</p>
<h2>修改字段名&amp;属性</h2>
<p>
  语法：alter table表名 change 老字段名   新的字段名  新类型  新字段属性;
</p>
<p>
  <img loading="lazy" decoding="async" width="1101" height="303" src="/wp-content/uploads/2018/05/word-image-999.png" class="wp-image-1109" srcset="/wp-content/uploads/2018/05/word-image-999.png 1101w, /wp-content/uploads/2018/05/word-image-999-300x83.png 300w, /wp-content/uploads/2018/05/word-image-999-768x211.png 768w, /wp-content/uploads/2018/05/word-image-999-1024x282.png 1024w" sizes="(max-width: 1101px) 100vw, 1101px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="1047" height="399" src="/wp-content/uploads/2018/05/word-image-1000.png" class="wp-image-1110" srcset="/wp-content/uploads/2018/05/word-image-1000.png 1047w, /wp-content/uploads/2018/05/word-image-1000-300x114.png 300w, /wp-content/uploads/2018/05/word-image-1000-768x293.png 768w, /wp-content/uploads/2018/05/word-image-1000-1024x390.png 1024w" sizes="(max-width: 1047px) 100vw, 1047px" />
</p>
<h2>删除字段</h2>
<p>
  语法：alter table 表名 drop 字段名；
</p>
<p>
  <img loading="lazy" decoding="async" width="1011" height="271" src="/wp-content/uploads/2018/05/word-image-1001.png" class="wp-image-1111" srcset="/wp-content/uploads/2018/05/word-image-1001.png 1011w, /wp-content/uploads/2018/05/word-image-1001-300x80.png 300w, /wp-content/uploads/2018/05/word-image-1001-768x206.png 768w" sizes="(max-width: 1011px) 100vw, 1011px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="1039" height="349" src="/wp-content/uploads/2018/05/word-image-1002.png" class="wp-image-1112" srcset="/wp-content/uploads/2018/05/word-image-1002.png 1039w, /wp-content/uploads/2018/05/word-image-1002-300x101.png 300w, /wp-content/uploads/2018/05/word-image-1002-768x258.png 768w, /wp-content/uploads/2018/05/word-image-1002-1024x344.png 1024w" sizes="(max-width: 1039px) 100vw, 1039px" />
</p>
<h2>修改数据表引擎</h2>
<p>
  表属性的修改
</p>
<p>
  语法：alter table 表名 表属性=新属性
</p>
<p>
  <img loading="lazy" decoding="async" width="955" height="338" src="/wp-content/uploads/2018/05/word-image-1003.png" class="wp-image-1113" srcset="/wp-content/uploads/2018/05/word-image-1003.png 955w, /wp-content/uploads/2018/05/word-image-1003-300x106.png 300w, /wp-content/uploads/2018/05/word-image-1003-768x272.png 768w" sizes="(max-width: 955px) 100vw, 955px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="840" height="425" src="/wp-content/uploads/2018/05/word-image-1004.png" class="wp-image-1114" srcset="/wp-content/uploads/2018/05/word-image-1004.png 840w, /wp-content/uploads/2018/05/word-image-1004-300x152.png 300w, /wp-content/uploads/2018/05/word-image-1004-768x389.png 768w" sizes="(max-width: 840px) 100vw, 840px" />
</p>
<p>
  扩展：修改字符集
</p>
<p>
  <img loading="lazy" decoding="async" width="692" height="84" src="/wp-content/uploads/2018/05/word-image-1005.png" class="wp-image-1115" srcset="/wp-content/uploads/2018/05/word-image-1005.png 692w, /wp-content/uploads/2018/05/word-image-1005-300x36.png 300w" sizes="(max-width: 692px) 100vw, 692px" />
</p>
<h2>重命名表</h2>
<p>
  语法: alter table 表名 rename [to] 新表名
</p>
<p>
  <img loading="lazy" decoding="async" width="677" height="212" src="/wp-content/uploads/2018/05/word-image-1006.png" class="wp-image-1116" srcset="/wp-content/uploads/2018/05/word-image-1006.png 677w, /wp-content/uploads/2018/05/word-image-1006-300x94.png 300w" sizes="(max-width: 677px) 100vw, 677px" />
</p>
<h2>重命名表移动到别的数据库</h2>
<p>
  语法 :  alter table  表名  rename  [to]  数据库名.表名；
</p>
<p>
  <img loading="lazy" decoding="async" width="1066" height="60" src="/wp-content/uploads/2018/05/word-image-1007.png" class="wp-image-1117" srcset="/wp-content/uploads/2018/05/word-image-1007.png 1066w, /wp-content/uploads/2018/05/word-image-1007-300x17.png 300w, /wp-content/uploads/2018/05/word-image-1007-768x43.png 768w, /wp-content/uploads/2018/05/word-image-1007-1024x58.png 1024w" sizes="(max-width: 1066px) 100vw, 1066px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="763" height="154" src="/wp-content/uploads/2018/05/word-image-1008.png" class="wp-image-1118" srcset="/wp-content/uploads/2018/05/word-image-1008.png 763w, /wp-content/uploads/2018/05/word-image-1008-300x61.png 300w" sizes="(max-width: 763px) 100vw, 763px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="750" height="274" src="/wp-content/uploads/2018/05/word-image-1009.png" class="wp-image-1119" srcset="/wp-content/uploads/2018/05/word-image-1009.png 750w, /wp-content/uploads/2018/05/word-image-1009-300x110.png 300w" sizes="(max-width: 750px) 100vw, 750px" />
</p>
<p>
  注意：移动数据表的时候同时还可以给表重新命名
</p>
<h1>思考题</h1>
<ul>
<li>
    手机号码一般使用什么数据类型存储?			Char
  </li>
<li>
    QQ号										    varchar
  </li>
<li>
    性别一般使用什么数据类型存储?				Set 或enum
  </li>
<li>
    年龄信息一般使用什么数据类型存储?			Int 或者 tinyint
  </li>
<li>
    照片信息一般使用什么数据类型存储?			varchar
  </li>
<li>
    薪水一般使用什么数据类型存储?				Num Decimal
  </li>
<li>
    学员姓名允许为空吗?							Not null
  </li>
<li>
    家庭地址允许为空吗?							Not Null
  </li>
<li>
    电子邮件信息允许为空吗?						Null
  </li>
<li>
    考试成绩允许为空吗?							Not null
  </li>
<li>
    在主键列输入的数值，允许为空吗?				Not null
  </li>
<li>
    一个表可以有多个主键吗?						不可以
  </li>
<li>
    在一个学校数据库中，如果一个学校内允许重名的学员，但是一个班级内不允许学员重名，可以组合班级和姓名两个字段一起来作为主键吗？		        可以
  </li>
<li>
    标识列允许为字符数据类型吗？			标识列主键，主键任意类型列都要每行值都唯种，要求自增标识列能用数值型
  </li>
<li>
    表中没有合适的列作为主键怎么办？	    想加主键alter table table_name add constaint pk_tablename primary key (表主键列)
  </li>
<li>
    如果标识列A的初始值为1，增量为1，则输入三行数据以后，再删除两行，下次再输入数据行的时候，标识值从多少开始？4
  </li>
</ul>
<p>
  注意注释的使用</p>
]]></content:encoded>
					
					<wfw:commentRss>/%e6%95%b0%e6%8d%ae%e5%ba%93/mysql/1018.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Mysql（三）联合查询、 运算符、 高级修改、 高级删除、 高级新增、 高级查询</title>
		<link>/%e6%95%b0%e6%8d%ae%e5%ba%93/mysql/1121.html</link>
					<comments>/%e6%95%b0%e6%8d%ae%e5%ba%93/mysql/1121.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Thu, 17 May 2018 17:12:34 +0000</pubDate>
				<category><![CDATA[Mysql]]></category>
		<category><![CDATA[联合查询]]></category>
		<category><![CDATA[运算符]]></category>
		<category><![CDATA[高级修改]]></category>
		<category><![CDATA[高级删除]]></category>
		<category><![CDATA[高级新增]]></category>
		<category><![CDATA[高级查询]]></category>
		<guid isPermaLink="false">/?p=1121</guid>

					<description><![CDATA[思考题 手机号码一般使用什么数据类型存储? char（11） QQ号 varchar（12） 性别一般使用什么 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>思考题</h1>
<ul>
<li>
    手机号码一般使用什么数据类型存储?			char（11）
  </li>
<li>
    QQ号										    varchar（12）
  </li>
<li>
    性别一般使用什么数据类型存储?				tinyint(1)   1-男，2-女   char(1) 男，enum 单选女
  </li>
<li>
    年龄信息一般使用什么数据类型存储?			Unsigned tinyint(3)
  </li>
<li>
    照片信息一般使用什么数据类型存储?			varchar(60)  直接存唯一的图片名
  </li>
<li>
    薪水一般使用什么数据类型存储?				decimal(10,2) php要判断小数位不能有第三位
  </li>
<li>
    学员姓名允许为空吗?							不能（使用情况）
  </li>
<li>
    家庭地址允许为空吗?							个人中心设置可以为空，购物不能为空
  </li>
<li>
    电子邮件信息允许为空吗?						可个人中心可以，用邮箱注册账号
  </li>
<li>
    考试成绩允许为空吗?							不可以 给一个默认值0
  </li>
<li>
    在主键列输入的数值，允许为空吗?				不能
  </li>
<li>
    一个表可以有多个主键吗?						不能
  </li>
<li>
    在一个学校数据库中，如果一个学校内允许重名的学员，但是一个班级内不允许学员重名，可以组合班级和姓名两个字段一起来作为主键吗？		        primary key(id,name)
  </li>
<li>
    表中没有合适的列作为主键怎么办？	    给他添加一个编号id
  </li>
<li>
    一个表可以没有主键吗？   可以，一般使用没有主键的表都是中间表（存储两个表之间的关系）
  </li>
<li>
    如果标识列A的初始值为1，增量为1，则输入三行数据以后，再删除两行，下次再输入数据行的时候，标识值从多少开始？					4
  </li>
</ul>
<h1>运算符</h1>
<h2>算术运算符</h2>
<p>
  + 加
</p>
<p>
  &#8211; 减
</p>
<p>
  *乘
</p>
<p>
  / 除    如果除数为0怎么办？  得出的结果是null
</p>
<p>
  % 取模(求余) 如果除数为0怎么办？  得出的结果是null
</p>
<p>
  <img loading="lazy" decoding="async" width="330" height="114" src="/wp-content/uploads/2018/05/word-image-1010.png" class="wp-image-1122" srcset="/wp-content/uploads/2018/05/word-image-1010.png 330w, /wp-content/uploads/2018/05/word-image-1010-300x104.png 300w" sizes="(max-width: 330px) 100vw, 330px" /></p>
<p>  <img loading="lazy" decoding="async" width="439" height="118" src="/wp-content/uploads/2018/05/word-image-1011.png" class="wp-image-1123" srcset="/wp-content/uploads/2018/05/word-image-1011.png 439w, /wp-content/uploads/2018/05/word-image-1011-300x81.png 300w" sizes="(max-width: 439px) 100vw, 439px" />
</p>
<p>
  算术运算符一般是应用到，结果字段运算上
</p>
<p>
  Select   (字段运算)字段表达式   [from ] [where]
</p>
<p>
  <img loading="lazy" decoding="async" width="903" height="168" src="/wp-content/uploads/2018/05/word-image-1012.png" class="wp-image-1124" srcset="/wp-content/uploads/2018/05/word-image-1012.png 903w, /wp-content/uploads/2018/05/word-image-1012-300x56.png 300w, /wp-content/uploads/2018/05/word-image-1012-768x143.png 768w" sizes="(max-width: 903px) 100vw, 903px" />
</p>
<h2>关系运算符</h2>
<p>
  &lt; 小于
</p>
<p>
  &gt;大于
</p>
<p>
  &lt;= 小于等于
</p>
<p>
  &gt;=大于等于
</p>
<p>
  = 等于(比较)
</p>
<p>
  &lt;&gt;   !=  不等于
</p>
<p>
  关系运算符主要用在哪个类型上 数值类型，也可以用在字符串类型
</p>
<p>
  Select * from 表名 id&gt;5
</p>
<p>
  Select * from  表名 name=’李明’;
</p>
<p>
  Select * from  表名 name!=’李明’;
</p>
<h2>逻辑运算符</h2>
<p>
   and 条件同时满足为真
</p>
<p>
  <img loading="lazy" decoding="async" width="788" height="131" src="/wp-content/uploads/2018/05/word-image-1013.png" class="wp-image-1125" srcset="/wp-content/uploads/2018/05/word-image-1013.png 788w, /wp-content/uploads/2018/05/word-image-1013-300x50.png 300w, /wp-content/uploads/2018/05/word-image-1013-768x128.png 768w" sizes="(max-width: 788px) 100vw, 788px" />
</p>
<p>
   or  条件有一个满足为真
</p>
<p>
  <img loading="lazy" decoding="async" width="866" height="290" src="/wp-content/uploads/2018/05/word-image-1014.png" class="wp-image-1126" srcset="/wp-content/uploads/2018/05/word-image-1014.png 866w, /wp-content/uploads/2018/05/word-image-1014-300x100.png 300w, /wp-content/uploads/2018/05/word-image-1014-768x257.png 768w" sizes="(max-width: 866px) 100vw, 866px" />
</p>
<p>
   not 取反
</p>
<p>
  <img loading="lazy" decoding="async" width="925" height="279" src="/wp-content/uploads/2018/05/word-image-1015.png" class="wp-image-1127" srcset="/wp-content/uploads/2018/05/word-image-1015.png 925w, /wp-content/uploads/2018/05/word-image-1015-300x90.png 300w, /wp-content/uploads/2018/05/word-image-1015-768x232.png 768w" sizes="(max-width: 925px) 100vw, 925px" />
</p>
<h1>高级查询</h1>
<p>
  高级查询的格式
</p>
<p>
  Select  [all/distinct]  字段/字段表达式
</p>
<p>
  [from 子句]
</p>
<p>
  [where子句]
</p>
<p>
  [group by 子句]
</p>
<p>
  [having子句]
</p>
<p>
  [order by子句]
</p>
<p>
  [limit 子句]
</p>
<p>
  子句的顺序固定
</p>
<h2>All</h2>
<p>
  含义就是把查询出来的结果全部展示出来
</p>
<p>
  <img loading="lazy" decoding="async" width="849" height="313" src="/wp-content/uploads/2018/05/word-image-1016.png" class="wp-image-1128" srcset="/wp-content/uploads/2018/05/word-image-1016.png 849w, /wp-content/uploads/2018/05/word-image-1016-300x111.png 300w, /wp-content/uploads/2018/05/word-image-1016-768x283.png 768w" sizes="(max-width: 849px) 100vw, 849px" />
</p>
<h2>distinct去除重复数据</h2>
<p>
  <img loading="lazy" decoding="async" width="775" height="297" src="/wp-content/uploads/2018/05/word-image-1017.png" class="wp-image-1129" srcset="/wp-content/uploads/2018/05/word-image-1017.png 775w, /wp-content/uploads/2018/05/word-image-1017-300x115.png 300w, /wp-content/uploads/2018/05/word-image-1017-768x294.png 768w" sizes="(max-width: 775px) 100vw, 775px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="647" height="210" src="/wp-content/uploads/2018/05/word-image-1018.png" class="wp-image-1130" srcset="/wp-content/uploads/2018/05/word-image-1018.png 647w, /wp-content/uploads/2018/05/word-image-1018-300x97.png 300w" sizes="(max-width: 647px) 100vw, 647px" />
</p>
<h2>as别名</h2>
<p>
   使用方式 as  新名字，as关键字可以省略
</p>
<p>
  <img loading="lazy" decoding="async" width="686" height="219" src="/wp-content/uploads/2018/05/word-image-1019.png" class="wp-image-1131" srcset="/wp-content/uploads/2018/05/word-image-1019.png 686w, /wp-content/uploads/2018/05/word-image-1019-300x96.png 300w" sizes="(max-width: 686px) 100vw, 686px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="689" height="218" src="/wp-content/uploads/2018/05/word-image-1020.png" class="wp-image-1132" srcset="/wp-content/uploads/2018/05/word-image-1020.png 689w, /wp-content/uploads/2018/05/word-image-1020-300x95.png 300w" sizes="(max-width: 689px) 100vw, 689px" />
</p>
<h2>Where条件</h2>
<h3>In </h3>
<p>
  在某个范围内
</p>
<p>
  找出type 是打野，或输出的英雄信息
</p>
<p>
  一般会：select * from hero where type=&#8217;打野&#8217; or type=&#8217;输出&#8217;;查询
</p>
<p>
  其实还可以使用in来查询
</p>
<p>
  字段名  In (值1，值2….);含义就是  该字段的值是小括号里边的任意一个
</p>
<p>
  <img loading="lazy" decoding="async" width="851" height="210" src="/wp-content/uploads/2018/05/word-image-1021.png" class="wp-image-1133" srcset="/wp-content/uploads/2018/05/word-image-1021.png 851w, /wp-content/uploads/2018/05/word-image-1021-300x74.png 300w, /wp-content/uploads/2018/05/word-image-1021-768x190.png 768w" sizes="(max-width: 851px) 100vw, 851px" />
</p>
<p>
  	比较：or 和in
</p>
<p>
  		In比or使用更方便，如果需要再加满足的条件，只需要在小括号里边加一个值就行了而or需要使用两次or运算这样执行效率慢，语法繁琐
</p>
<p>
  <img loading="lazy" decoding="async" width="861" height="260" src="/wp-content/uploads/2018/05/word-image-1022.png" class="wp-image-1134" srcset="/wp-content/uploads/2018/05/word-image-1022.png 861w, /wp-content/uploads/2018/05/word-image-1022-300x91.png 300w, /wp-content/uploads/2018/05/word-image-1022-768x232.png 768w" sizes="(max-width: 861px) 100vw, 861px" />
</p>
<h3>Is null /is not null</h3>
<p>
  Is是判断，一般只和null连用，判断字段的值是否是null，如果是null就返回1，如果不是就返回0；
</p>
<p>
  <img loading="lazy" decoding="async" width="822" height="369" src="/wp-content/uploads/2018/05/word-image-1023.png" class="wp-image-1135" srcset="/wp-content/uploads/2018/05/word-image-1023.png 822w, /wp-content/uploads/2018/05/word-image-1023-300x135.png 300w, /wp-content/uploads/2018/05/word-image-1023-768x345.png 768w" sizes="(max-width: 822px) 100vw, 822px" />
</p>
<h3>between…and </h3>
<p>
  在什么范围之内，这个范围主要指数字
</p>
<p>
  大于3小于8
</p>
<p>
  Between 3 and 8;  包括3和8的<br />
  <img loading="lazy" decoding="async" width="829" height="250" src="/wp-content/uploads/2018/05/word-image-1024.png" class="wp-image-1136" srcset="/wp-content/uploads/2018/05/word-image-1024.png 829w, /wp-content/uploads/2018/05/word-image-1024-300x90.png 300w, /wp-content/uploads/2018/05/word-image-1024-768x232.png 768w" sizes="(max-width: 829px) 100vw, 829px" />
</p>
<p>
  Between…and…表示不了不连续的范围，比如 在这些数字里边的  1,6,8,9
</p>
<h3>like模糊查询</h3>
<p>
  模糊查询就是知道要查询信息的一部分内容，不是精确的内容的查询
</p>
<p>
  英雄名字我只知道第一个是‘牛’ 那么我怎么查到这些英雄的信息呢？
</p>
<h4>通配符</h4>
<p>
  就是占位的符号，有一定含义
</p>
<table>
<tr>
<td>
<p>
  通配符
</p>
</td>
<td>
<p>
  描述
</p>
</td>
</tr>
<tr>
<td>
<p>
  _  (下划线)
</p>
</td>
<td>
<p>
  表示任意<strong>一个</strong>字符
</p>
</td>
</tr>
<tr>
<td>
<p>
  %
</p>
</td>
<td>
<p>
  表示任意多个或一个或0个字符
</p>
</td>
</tr>
</table>
<p>
  1、’t_m’下列选项符合的条件的是（）
</p>
<p>
  A：tm 	B：tom 	C:toom	D:tam		E:tmo
</p>
<p>
  2、’张%’ 下列选项符合的条件的是（）
</p>
<p>
  A：张三	B：张三丰	C：张牙舞爪  D：张   E：小张
</p>
<p>
  3、’%诺基亚%’  下列选项符合的条件的是（）
</p>
<p>
  A：诺基亚2100   B :2100诺基亚  C：我的诺基亚质量很好 D：诺基亚
</p>
<p>
  4、SELECT * FROM 数据表 WHERE 编号 LIKE &#8217;00_A5%C’ （）
</p>
<p>
  A、0890AC   B、007_A51C    C、00A54C   D、00AA5C
</p>
<p>
  <img loading="lazy" decoding="async" width="758" height="302" src="/wp-content/uploads/2018/05/word-image-1025.png" class="wp-image-1137" srcset="/wp-content/uploads/2018/05/word-image-1025.png 758w, /wp-content/uploads/2018/05/word-image-1025-300x120.png 300w" sizes="(max-width: 758px) 100vw, 758px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="703" height="160" src="/wp-content/uploads/2018/05/word-image-1026.png" class="wp-image-1138" srcset="/wp-content/uploads/2018/05/word-image-1026.png 703w, /wp-content/uploads/2018/05/word-image-1026-300x68.png 300w" sizes="(max-width: 703px) 100vw, 703px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="613" height="184" src="/wp-content/uploads/2018/05/word-image-1027.png" class="wp-image-1139" srcset="/wp-content/uploads/2018/05/word-image-1027.png 613w, /wp-content/uploads/2018/05/word-image-1027-300x90.png 300w" sizes="(max-width: 613px) 100vw, 613px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="852" height="185" src="/wp-content/uploads/2018/05/word-image-1028.png" class="wp-image-1140" srcset="/wp-content/uploads/2018/05/word-image-1028.png 852w, /wp-content/uploads/2018/05/word-image-1028-300x65.png 300w, /wp-content/uploads/2018/05/word-image-1028-768x167.png 768w" sizes="(max-width: 852px) 100vw, 852px" />
</p>
<h2>group by分组</h2>
<p>
  什么是group  by分组查询，作用
</p>
<p>
  分组查询是按照指定的字段来分组，分组的目的是为了统计
</p>
<p>
  <img loading="lazy" decoding="async" width="1415" height="395" src="/wp-content/uploads/2018/05/word-image-1029.png" class="wp-image-1141" srcset="/wp-content/uploads/2018/05/word-image-1029.png 1415w, /wp-content/uploads/2018/05/word-image-1029-300x84.png 300w, /wp-content/uploads/2018/05/word-image-1029-768x214.png 768w, /wp-content/uploads/2018/05/word-image-1029-1024x286.png 1024w" sizes="(max-width: 1415px) 100vw, 1415px" />
</p>
<h3>聚合函数</h3>
<p>
  聚合函数就在分组的基础上求某一个字段的相关信息，返回的是一个单独的数据，也就是  ‘一行一列’
</p>
<p>
  Sum求和
</p>
<p>
  Avg平均值
</p>
<p>
  Max最大值
</p>
<p>
  Min 最小值
</p>
<p>
  Count 数量
</p>
<p>
  <img loading="lazy" decoding="async" width="1039" height="231" src="/wp-content/uploads/2018/05/word-image-1030.png" class="wp-image-1142" srcset="/wp-content/uploads/2018/05/word-image-1030.png 1039w, /wp-content/uploads/2018/05/word-image-1030-300x67.png 300w, /wp-content/uploads/2018/05/word-image-1030-768x171.png 768w, /wp-content/uploads/2018/05/word-image-1030-1024x228.png 1024w" sizes="(max-width: 1039px) 100vw, 1039px" />
</p>
<h3>having条件</h3>
<p>
  在原有查询出来的结果上过滤
</p>
<p>
  <img loading="lazy" decoding="async" width="999" height="228" src="/wp-content/uploads/2018/05/word-image-1031.png" class="wp-image-1143" srcset="/wp-content/uploads/2018/05/word-image-1031.png 999w, /wp-content/uploads/2018/05/word-image-1031-300x68.png 300w, /wp-content/uploads/2018/05/word-image-1031-768x175.png 768w" sizes="(max-width: 999px) 100vw, 999px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="869" height="129" src="/wp-content/uploads/2018/05/word-image-1032.png" class="wp-image-1144" srcset="/wp-content/uploads/2018/05/word-image-1032.png 869w, /wp-content/uploads/2018/05/word-image-1032-300x45.png 300w, /wp-content/uploads/2018/05/word-image-1032-768x114.png 768w" sizes="(max-width: 869px) 100vw, 869px" />
</p>
<h3>比较having和where的区别</h3>
<p>
  相似的地方都是条件&#8212;&#8211;过滤数据
</p>
<p>
  不同的地方
</p>
<ul>
<li>
    Where在分组之前执行，having在分组之后执行说白了，having就是在where过滤之后的结果之上，再次过滤数据
  </li>
<li>
    Having过滤只能使用查询结果中有的字段，where过滤数据能使用表中的任何字段
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="995" height="44" src="/wp-content/uploads/2018/05/word-image-1033.png" class="wp-image-1145" srcset="/wp-content/uploads/2018/05/word-image-1033.png 995w, /wp-content/uploads/2018/05/word-image-1033-300x13.png 300w, /wp-content/uploads/2018/05/word-image-1033-768x34.png 768w" sizes="(max-width: 995px) 100vw, 995px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="777" height="248" src="/wp-content/uploads/2018/05/word-image-1034.png" class="wp-image-1146" srcset="/wp-content/uploads/2018/05/word-image-1034.png 777w, /wp-content/uploads/2018/05/word-image-1034-300x96.png 300w, /wp-content/uploads/2018/05/word-image-1034-768x245.png 768w" sizes="(max-width: 777px) 100vw, 777px" />
</p>
<h3>回溯查询  with rollup</h3>
<p>
  就是在分组的结果基础之上，再次进行相同的分组查询
</p>
<p>
  <img loading="lazy" decoding="async" width="1755" height="620" src="/wp-content/uploads/2018/05/word-image-1035.png" class="wp-image-1147" srcset="/wp-content/uploads/2018/05/word-image-1035.png 1755w, /wp-content/uploads/2018/05/word-image-1035-300x106.png 300w, /wp-content/uploads/2018/05/word-image-1035-768x271.png 768w, /wp-content/uploads/2018/05/word-image-1035-1024x362.png 1024w" sizes="(max-width: 1755px) 100vw, 1755px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="920" height="201" src="/wp-content/uploads/2018/05/word-image-1036.png" class="wp-image-1148" srcset="/wp-content/uploads/2018/05/word-image-1036.png 920w, /wp-content/uploads/2018/05/word-image-1036-300x66.png 300w, /wp-content/uploads/2018/05/word-image-1036-768x168.png 768w" sizes="(max-width: 920px) 100vw, 920px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="737" height="120" src="/wp-content/uploads/2018/05/word-image-1037.png" class="wp-image-1149" srcset="/wp-content/uploads/2018/05/word-image-1037.png 737w, /wp-content/uploads/2018/05/word-image-1037-300x49.png 300w" sizes="(max-width: 737px) 100vw, 737px" />
</p>
<p>
  扩展：我想在一次结果中查看到不同英雄的平均伤害，和所有英雄的平均伤害
</p>
<p>
  <img loading="lazy" decoding="async" width="965" height="234" src="/wp-content/uploads/2018/05/word-image-1038.png" class="wp-image-1150" srcset="/wp-content/uploads/2018/05/word-image-1038.png 965w, /wp-content/uploads/2018/05/word-image-1038-300x73.png 300w, /wp-content/uploads/2018/05/word-image-1038-768x186.png 768w" sizes="(max-width: 965px) 100vw, 965px" />
</p>
<h2>order by排序</h2>
<p>
  排序，按照某一字段从大到小排，从小到大排<br />
  <br />
  从大到小排序 desc   order by 字段名  desc  按照某个字段从大到小排序
</p>
<p>
  从小到大排序 asc    order by 字段名  asc按照某个字段从小到大排序
</p>
<p>
  如果没有设置排序，会按照id从小到大排序展示出来
</p>
<p>
  Id从大到小排序
</p>
<p>  <img loading="lazy" decoding="async" width="941" height="387" src="/wp-content/uploads/2018/05/word-image-1039.png" class="wp-image-1151" srcset="/wp-content/uploads/2018/05/word-image-1039.png 941w, /wp-content/uploads/2018/05/word-image-1039-300x123.png 300w, /wp-content/uploads/2018/05/word-image-1039-768x316.png 768w" sizes="(max-width: 941px) 100vw, 941px" />
</p>
<h2>limit限定 </h2>
<p>
  限定查询出来的结果显示多少条，从第几条开始显示显示多少条
</p>
<p>
  Limit 数字  &#8211;从第一条开始显示多少条数据
</p>
<p>
  Limit 数字 ，数字 &#8212;从第几条开始显示，显示多少条  不包括开始的那一条
</p>
<p>
  <img loading="lazy" decoding="async" width="948" height="345" src="/wp-content/uploads/2018/05/word-image-1040.png" class="wp-image-1152" srcset="/wp-content/uploads/2018/05/word-image-1040.png 948w, /wp-content/uploads/2018/05/word-image-1040-300x109.png 300w, /wp-content/uploads/2018/05/word-image-1040-768x279.png 768w" sizes="(max-width: 948px) 100vw, 948px" />
</p>
<p>
  实现：显示前四条数据
</p>
<p>
  <img loading="lazy" decoding="async" width="803" height="193" src="/wp-content/uploads/2018/05/word-image-1041.png" class="wp-image-1153" srcset="/wp-content/uploads/2018/05/word-image-1041.png 803w, /wp-content/uploads/2018/05/word-image-1041-300x72.png 300w, /wp-content/uploads/2018/05/word-image-1041-768x185.png 768w" sizes="(max-width: 803px) 100vw, 803px" />
</p>
<p>
  实现：从第5条开始，显示3条
</p>
<p>
  <img loading="lazy" decoding="async" width="776" height="191" src="/wp-content/uploads/2018/05/word-image-1042.png" class="wp-image-1154" srcset="/wp-content/uploads/2018/05/word-image-1042.png 776w, /wp-content/uploads/2018/05/word-image-1042-300x74.png 300w, /wp-content/uploads/2018/05/word-image-1042-768x189.png 768w" sizes="(max-width: 776px) 100vw, 776px" />
</p>
<h1>高级查询案例</h1>
<p>
  测试数据
</p>
<p>
  <img loading="lazy" decoding="async" width="840" height="337" src="/wp-content/uploads/2018/05/word-image-1043.png" class="wp-image-1155" srcset="/wp-content/uploads/2018/05/word-image-1043.png 840w, /wp-content/uploads/2018/05/word-image-1043-300x120.png 300w, /wp-content/uploads/2018/05/word-image-1043-768x308.png 768w" sizes="(max-width: 840px) 100vw, 840px" />
</p>
<ul>
<li>
    找出伤害是前三的英雄信息
  </li>
</ul>
<p>
  select name from hero order by hurt desc limit 3;
</p>
<ul>
<li>
    找出英雄名字中有&#8217;德&#8217;字的英雄
  </li>
</ul>
<p>
  select name from hero where name like &#8216;%德%&#8217;;
</p>
<ul>
<li>
    找出每种技能的平均伤害
  </li>
</ul>
<p>
  select skill,avg(hurt) from hero group by skill;
</p>
<ul>
<li>
    找出每种技能的平均伤害 和所有技能的平均伤害
  </li>
</ul>
<p>
  select skill,avg(hurt) from hero group by skill with rollup;
</p>
<ul>
<li>
    找出平均技能伤害大于60的技能
  </li>
</ul>
<p>
  select skill,avg(hurt) as 平均伤害 from hero group by skill having 平均伤害&gt;60;
</p>
<ul>
<li>
    找出伤害最高的英雄信息（不要求掌握）
  </li>
</ul>
<p>
  select name,hurt from hero where hurt= (select max(hurt) from hero);
</p>
<h1>高级新增</h1>
<p>
  之前学的新增:insert [into]  表名  [(字段列表)]    values  (值列表);
</p>
<p>
  要求，字段列表和值列表一致，每一次执行插入一条数据的
</p>
<h2>多值插入</h2>
<p>
  语法： insert [into] 表名  [(字段列表)]
</p>
<p>
  values (值列表), (值列表), (值列表)……;
</p>
<p>
   例如：
</p>
<p>
  insert into hero  values
</p>
<p>
  	(null,&#8217;a&#8217;,1,2,50,60),
</p>
<p>
  	(null,&#8217;b&#8217;,1,2,50,60),
</p>
<p>
  	(null,&#8217;c&#8217;,1,2,50,60);
</p>
<p>
  <img loading="lazy" decoding="async" width="650" height="141" src="/wp-content/uploads/2018/05/word-image-1044.png" class="wp-image-1156" srcset="/wp-content/uploads/2018/05/word-image-1044.png 650w, /wp-content/uploads/2018/05/word-image-1044-300x65.png 300w" sizes="(max-width: 650px) 100vw, 650px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="814" height="378" src="/wp-content/uploads/2018/05/word-image-1045.png" class="wp-image-1157" srcset="/wp-content/uploads/2018/05/word-image-1045.png 814w, /wp-content/uploads/2018/05/word-image-1045-300x139.png 300w, /wp-content/uploads/2018/05/word-image-1045-768x357.png 768w" sizes="(max-width: 814px) 100vw, 814px" />
</p>
<h2>set方式插入</h2>
<p>
  很少用，只需要知道就可以了
</p>
<p>
  语法： insert 表名 set  字段1=值1，字段2=值2…；每次只插入一条数据
</p>
<p>
  例如：
</p>
<p>
  insert into hero set name=&#8217;d&#8217;,type=1,skill=2,hurt=23,waittime=6;
</p>
<p>
  <img loading="lazy" decoding="async" width="784" height="61" src="/wp-content/uploads/2018/05/word-image-1046.png" class="wp-image-1158" srcset="/wp-content/uploads/2018/05/word-image-1046.png 784w, /wp-content/uploads/2018/05/word-image-1046-300x23.png 300w, /wp-content/uploads/2018/05/word-image-1046-768x60.png 768w" sizes="(max-width: 784px) 100vw, 784px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="816" height="404" src="/wp-content/uploads/2018/05/word-image-1047.png" class="wp-image-1159" srcset="/wp-content/uploads/2018/05/word-image-1047.png 816w, /wp-content/uploads/2018/05/word-image-1047-300x149.png 300w, /wp-content/uploads/2018/05/word-image-1047-768x380.png 768w" sizes="(max-width: 816px) 100vw, 816px" />
</p>
<h2>蠕虫复制</h2>
<p>
  什么是蠕虫复制，这个类似细胞分裂
</p>
<p>
  1 变 2
</p>
<p>
  2 变 4
</p>
<p>
  4 变 8
</p>
<p>
  每次进行一个蠕虫复制的话，数据表的数据就是成倍的增加
</p>
<p>
  当前表有10条数据，蠕虫复制了10次&#8212;-现在有多少条数据？1024*10
</p>
<p>
  再蠕虫复制10次   1024*1024*10&#8212;-千万级数据
</p>
<p>
  所以蠕虫复制需要防止；
</p>
<p>
  例如：
</p>
<p>
  <img loading="lazy" decoding="async" width="586" height="209" src="/wp-content/uploads/2018/05/word-image-1048.png" class="wp-image-1160" srcset="/wp-content/uploads/2018/05/word-image-1048.png 586w, /wp-content/uploads/2018/05/word-image-1048-300x107.png 300w" sizes="(max-width: 586px) 100vw, 586px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="835" height="71" src="/wp-content/uploads/2018/05/word-image-1049.png" class="wp-image-1161" srcset="/wp-content/uploads/2018/05/word-image-1049.png 835w, /wp-content/uploads/2018/05/word-image-1049-300x26.png 300w, /wp-content/uploads/2018/05/word-image-1049-768x65.png 768w" sizes="(max-width: 835px) 100vw, 835px" /></p>
<p>
  <img loading="lazy" decoding="async" width="794" height="259" src="/wp-content/uploads/2018/05/word-image-1050.png" class="wp-image-1162" srcset="/wp-content/uploads/2018/05/word-image-1050.png 794w, /wp-content/uploads/2018/05/word-image-1050-300x98.png 300w, /wp-content/uploads/2018/05/word-image-1050-768x251.png 768w" sizes="(max-width: 794px) 100vw, 794px" />
</p>
<p>
  语法 insert [into] 表名 values select 语句
</p>
<p>
  Select 语句的查询结果字段和插入的字段列表一致（数量，类型）;
</p>
<p>
  扩展：怎么防止蠕虫复制
</p>
<p>
  	加入unique key
</p>
<h2>replace插入</h2>
<p>
  替换插入，如果插入的数据中在表中有（一个字段上—<strong><em>唯一建</em></strong>），那么会先把表中已有的数据删除，然后再插入
</p>
<p>
  Replace[ into]  表名  [(字段列表)]  values  (值列表);
</p>
<p>
  <img loading="lazy" decoding="async" width="573" height="157" src="/wp-content/uploads/2018/05/word-image-1051.png" class="wp-image-1163" srcset="/wp-content/uploads/2018/05/word-image-1051.png 573w, /wp-content/uploads/2018/05/word-image-1051-300x82.png 300w" sizes="(max-width: 573px) 100vw, 573px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="821" height="83" src="/wp-content/uploads/2018/05/word-image-1052.png" class="wp-image-1164" srcset="/wp-content/uploads/2018/05/word-image-1052.png 821w, /wp-content/uploads/2018/05/word-image-1052-300x30.png 300w, /wp-content/uploads/2018/05/word-image-1052-768x78.png 768w" sizes="(max-width: 821px) 100vw, 821px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="562" height="159" src="/wp-content/uploads/2018/05/word-image-1053.png" class="wp-image-1165" srcset="/wp-content/uploads/2018/05/word-image-1053.png 562w, /wp-content/uploads/2018/05/word-image-1053-300x85.png 300w" sizes="(max-width: 562px) 100vw, 562px" />
</p>
<h1>高级修改</h1>
<p>
  Update 表名 set 字段1=值1 ,字段2=值2…  where 修改条件;
</p>
<h2>排序限定条数修改</h2>
<p>
  语法：update 表名 set 字段1=值1 ,字段2=值2…  [where 条件]  [order by 子句]  [limit子句]
</p>
<p>
  在修改的过程中可以限定修改的条数，和排序
</p>
<p>
  我要修改英雄前三的伤害值 ，让伤害值加倍；
</p>
<p>
  这里用到了排序   英雄伤害从高到低排序    order by desc
</p>
<p>
  限定  		     修改前三条信息，让信息值加倍  limit 3
</p>
<p>
  Update hero set hurt=hurt*2 [hurt+hurt] order by hurt desc limit3;
</p>
<p>
  修改前，伤害前三的英雄信息
</p>
<p>
  <img loading="lazy" decoding="async" width="717" height="164" src="/wp-content/uploads/2018/05/word-image-1054.png" class="wp-image-1166" srcset="/wp-content/uploads/2018/05/word-image-1054.png 717w, /wp-content/uploads/2018/05/word-image-1054-300x69.png 300w" sizes="(max-width: 717px) 100vw, 717px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="813" height="269" src="/wp-content/uploads/2018/05/word-image-1055.png" class="wp-image-1167" srcset="/wp-content/uploads/2018/05/word-image-1055.png 813w, /wp-content/uploads/2018/05/word-image-1055-300x99.png 300w, /wp-content/uploads/2018/05/word-image-1055-768x254.png 768w" sizes="(max-width: 813px) 100vw, 813px" />
</p>
<p>
  扩展：
</p>
<p>
  	回想limit  3；
</p>
<p>
  		Limit 4,2;   修改英雄伤害排名是5,6的伤害，让其加倍&#8212;update修改没有这样的用法
</p>
<p>
  <img loading="lazy" decoding="async" width="1042" height="75" src="/wp-content/uploads/2018/05/word-image-1056.png" class="wp-image-1168" srcset="/wp-content/uploads/2018/05/word-image-1056.png 1042w, /wp-content/uploads/2018/05/word-image-1056-300x22.png 300w, /wp-content/uploads/2018/05/word-image-1056-768x55.png 768w, /wp-content/uploads/2018/05/word-image-1056-1024x74.png 1024w" sizes="(max-width: 1042px) 100vw, 1042px" />
</p>
<h1>高级删除</h1>
<p>
  delete from 表名 [where 条件] [order by 子句] [limit 子句]
</p>
<h2>排序限定条数删除</h2>
<p>
  英雄伤害前2两名，英雄删除
</p>
<p>
  Delete from hero  order by hurt desc  limit 2
</p>
<p>
  删除前数据
</p>
<p>
  <img loading="lazy" decoding="async" width="914" height="392" src="/wp-content/uploads/2018/05/word-image-1057.png" class="wp-image-1169" srcset="/wp-content/uploads/2018/05/word-image-1057.png 914w, /wp-content/uploads/2018/05/word-image-1057-300x129.png 300w, /wp-content/uploads/2018/05/word-image-1057-768x329.png 768w" sizes="(max-width: 914px) 100vw, 914px" />
</p>
<p>
  删除伤害排名前两位的英雄，如果成功，德玛和诺克消失
</p>
<p>
  <img loading="lazy" decoding="async" width="999" height="455" src="/wp-content/uploads/2018/05/word-image-1058.png" class="wp-image-1170" srcset="/wp-content/uploads/2018/05/word-image-1058.png 999w, /wp-content/uploads/2018/05/word-image-1058-300x137.png 300w, /wp-content/uploads/2018/05/word-image-1058-768x350.png 768w" sizes="(max-width: 999px) 100vw, 999px" />
</p>
<p>
  扩展：能不能指定从第几条开始删除？
</p>
<p>
  	也就是delete语句中支不支持 limit  数字,数字;的用法
</p>
<p>
  测试；删除伤害排名在第3，4的两个英雄
</p>
<p>
  <img loading="lazy" decoding="async" width="930" height="388" src="/wp-content/uploads/2018/05/word-image-1059.png" class="wp-image-1171" srcset="/wp-content/uploads/2018/05/word-image-1059.png 930w, /wp-content/uploads/2018/05/word-image-1059-300x125.png 300w, /wp-content/uploads/2018/05/word-image-1059-768x320.png 768w" sizes="(max-width: 930px) 100vw, 930px" />
</p>
<p>
  Sql: delete from hero order by hurt desc limit 2,2;
</p>
<p>
  <img loading="lazy" decoding="async" width="882" height="66" src="/wp-content/uploads/2018/05/word-image-1060.png" class="wp-image-1172" srcset="/wp-content/uploads/2018/05/word-image-1060.png 882w, /wp-content/uploads/2018/05/word-image-1060-300x22.png 300w, /wp-content/uploads/2018/05/word-image-1060-768x57.png 768w" sizes="(max-width: 882px) 100vw, 882px" />
</p>
<h2>Truncate删除</h2>
<p>
  清空表，除了清空表中的数据，还可以把表的自动增长归成1
</p>
<p>
  <img loading="lazy" decoding="async" width="795" height="207" src="/wp-content/uploads/2018/05/word-image-1061.png" class="wp-image-1173" srcset="/wp-content/uploads/2018/05/word-image-1061.png 795w, /wp-content/uploads/2018/05/word-image-1061-300x78.png 300w, /wp-content/uploads/2018/05/word-image-1061-768x200.png 768w" sizes="(max-width: 795px) 100vw, 795px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="975" height="217" src="/wp-content/uploads/2018/05/word-image-1062.png" class="wp-image-1174" srcset="/wp-content/uploads/2018/05/word-image-1062.png 975w, /wp-content/uploads/2018/05/word-image-1062-300x67.png 300w, /wp-content/uploads/2018/05/word-image-1062-768x171.png 768w" sizes="(max-width: 975px) 100vw, 975px" />
</p>
<p>
  Truncate请空表
</p>
<p>
  <img loading="lazy" decoding="async" width="501" height="51" src="/wp-content/uploads/2018/05/word-image-1063.png" class="wp-image-1175" srcset="/wp-content/uploads/2018/05/word-image-1063.png 501w, /wp-content/uploads/2018/05/word-image-1063-300x31.png 300w" sizes="(max-width: 501px) 100vw, 501px" />
</p>
<p>
  清空完成的效果
</p>
<p>
  <img loading="lazy" decoding="async" width="722" height="67" src="/wp-content/uploads/2018/05/word-image-1064.png" class="wp-image-1176" srcset="/wp-content/uploads/2018/05/word-image-1064.png 722w, /wp-content/uploads/2018/05/word-image-1064-300x28.png 300w" sizes="(max-width: 722px) 100vw, 722px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="710" height="205" src="/wp-content/uploads/2018/05/word-image-1065.png" class="wp-image-1177" srcset="/wp-content/uploads/2018/05/word-image-1065.png 710w, /wp-content/uploads/2018/05/word-image-1065-300x87.png 300w" sizes="(max-width: 710px) 100vw, 710px" />
</p>
<h1>联合查询</h1>
<h2>含义</h2>
<p>
  什么是联合查询
</p>
<p>
  联合查询是把两个查询结果放在一起来显示
</p>
<p>
  <img loading="lazy" decoding="async" width="568" height="282" src="/wp-content/uploads/2018/05/word-image-1066.png" class="wp-image-1178" srcset="/wp-content/uploads/2018/05/word-image-1066.png 568w, /wp-content/uploads/2018/05/word-image-1066-300x149.png 300w" sizes="(max-width: 568px) 100vw, 568px" />
</p>
<p>
  联合查询就是把这个两个展示出来的结果放在一块展示
</p>
<p>
  <img loading="lazy" decoding="async" width="792" height="247" src="/wp-content/uploads/2018/05/word-image-1067.png" class="wp-image-1179" srcset="/wp-content/uploads/2018/05/word-image-1067.png 792w, /wp-content/uploads/2018/05/word-image-1067-300x94.png 300w, /wp-content/uploads/2018/05/word-image-1067-768x240.png 768w" sizes="(max-width: 792px) 100vw, 792px" />
</p>
<p>
  既然是纵向的连接：首先是字段的个数必须一致
</p>
<h2>基本形式</h2>
<p>
  语法：select 语句  union [all/distinct]  select 语句
</p>
<p>
  <img loading="lazy" decoding="async" width="612" height="165" src="/wp-content/uploads/2018/05/word-image-1068.png" class="wp-image-1180" srcset="/wp-content/uploads/2018/05/word-image-1068.png 612w, /wp-content/uploads/2018/05/word-image-1068-300x81.png 300w" sizes="(max-width: 612px) 100vw, 612px" />
</p>
<h2>注意点</h2>
<ul>
<li>
    第一纵向连接，两个结果集字段数量必须一致
  </li>
<li>
    第二如果需要对连接过后的结果集 进行排序那么必须把两个select语句用小括号包括起来
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="741" height="41" src="/wp-content/uploads/2018/05/word-image-1069.png" class="wp-image-1181" srcset="/wp-content/uploads/2018/05/word-image-1069.png 741w, /wp-content/uploads/2018/05/word-image-1069-300x17.png 300w" sizes="(max-width: 741px) 100vw, 741px" />
</p>
<p>
  这个order by是对联合过后的结果进行排序
</p>
<ul>
<li>
    第三如果我们前边的select 语句查询的结果字段名，有别名，那么排序的时候必须用别名
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="916" height="49" src="/wp-content/uploads/2018/05/word-image-1070.png" class="wp-image-1182" srcset="/wp-content/uploads/2018/05/word-image-1070.png 916w, /wp-content/uploads/2018/05/word-image-1070-300x16.png 300w, /wp-content/uploads/2018/05/word-image-1070-768x41.png 768w" sizes="(max-width: 916px) 100vw, 916px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="910" height="48" src="/wp-content/uploads/2018/05/word-image-1071.png" class="wp-image-1183" srcset="/wp-content/uploads/2018/05/word-image-1071.png 910w, /wp-content/uploads/2018/05/word-image-1071-300x16.png 300w, /wp-content/uploads/2018/05/word-image-1071-768x41.png 768w" sizes="(max-width: 910px) 100vw, 910px" />
</p>
<p>
  错误原因：因为联合查询出来的结果集中没有id这个字段名，原来的id改成了编号，如果想用id进行排序，难么只能使用 ‘编号’这个名称；
</p>
<ul>
<li>
    第四联合查询结果的字段名，默认是第一个select语句查询出来的字段名
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="710" height="477" src="/wp-content/uploads/2018/05/word-image-1072.png" class="wp-image-1184" srcset="/wp-content/uploads/2018/05/word-image-1072.png 710w, /wp-content/uploads/2018/05/word-image-1072-300x202.png 300w" sizes="(max-width: 710px) 100vw, 710px" /></p>
]]></content:encoded>
					
					<wfw:commentRss>/%e6%95%b0%e6%8d%ae%e5%ba%93/mysql/1121.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Mysql（四）子查询数据库备份还原、 用户权限、 表关系、 连接查询</title>
		<link>/%e6%95%b0%e6%8d%ae%e5%ba%93/mysql/1186.html</link>
					<comments>/%e6%95%b0%e6%8d%ae%e5%ba%93/mysql/1186.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Thu, 17 May 2018 17:11:12 +0000</pubDate>
				<category><![CDATA[Mysql]]></category>
		<category><![CDATA[子查询数据库备份还原]]></category>
		<category><![CDATA[用户权限]]></category>
		<category><![CDATA[表关系]]></category>
		<category><![CDATA[连接查询]]></category>
		<guid isPermaLink="false">/?p=1186</guid>

					<description><![CDATA[连接查询 表与表的关系 公用的字段来关联表 一对一 一对多 多对多 一对一的关系 老婆和老公（法律上） 人和身 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>连接查询</h1>
<h2>表与表的关系</h2>
<p>
  公用的字段来关联表
</p>
<h3>一对一</h3>
<p>
  <img loading="lazy" decoding="async" width="1248" height="177" src="/wp-content/uploads/2018/05/word-image-1073.png" class="wp-image-1187" srcset="/wp-content/uploads/2018/05/word-image-1073.png 1248w, /wp-content/uploads/2018/05/word-image-1073-300x43.png 300w, /wp-content/uploads/2018/05/word-image-1073-768x109.png 768w, /wp-content/uploads/2018/05/word-image-1073-1024x145.png 1024w" sizes="(max-width: 1248px) 100vw, 1248px" />
</p>
<h3>一对多</h3>
<p>
  <img loading="lazy" decoding="async" width="1491" height="259" src="/wp-content/uploads/2018/05/word-image-1074.png" class="wp-image-1188" srcset="/wp-content/uploads/2018/05/word-image-1074.png 1491w, /wp-content/uploads/2018/05/word-image-1074-300x52.png 300w, /wp-content/uploads/2018/05/word-image-1074-768x133.png 768w, /wp-content/uploads/2018/05/word-image-1074-1024x178.png 1024w" sizes="(max-width: 1491px) 100vw, 1491px" />
</p>
<h3>多对多</h3>
<p>
  <img loading="lazy" decoding="async" width="1197" height="312" src="/wp-content/uploads/2018/05/word-image-1075.png" class="wp-image-1189" srcset="/wp-content/uploads/2018/05/word-image-1075.png 1197w, /wp-content/uploads/2018/05/word-image-1075-300x78.png 300w, /wp-content/uploads/2018/05/word-image-1075-768x200.png 768w, /wp-content/uploads/2018/05/word-image-1075-1024x267.png 1024w" sizes="(max-width: 1197px) 100vw, 1197px" />
</p>
<ul>
<li><strong>一对一的关系</strong>
  </li>
</ul>
<p><strong>		    老婆和老公（法律上）</strong>
</p>
<p><strong>		    人和身份证号</strong>
</p>
<ul>
<li><strong>一对多的关系</strong>
  </li>
</ul>
<p><strong>		    父亲和孩子</strong>
</p>
<ul>
<li><strong>多对多的关系</strong>
  </li>
</ul>
<p><strong>		   学生和老师</strong>
</p>
<h2>连接查询的概念</h2>
<p>
  什么是连接查询
</p>
<p>
  	【通过公用字段】把两张表进行横向的拼接就是连接查询
</p>
<p>
  比如A表有3个字段，B表有5个字段，那么连接查询后的结果最多有8个字段
</p>
<h2>连接查询分类</h2>
<h3>交叉连接</h3>
<p>
  [Cross] join   交差连接没有条件，这里没有公用字段
</p>
<p>
  交差连接就是左边*右表
</p>
<p>
  <img loading="lazy" decoding="async" width="1057" height="386" src="/wp-content/uploads/2018/05/word-image-1076.png" class="wp-image-1190" srcset="/wp-content/uploads/2018/05/word-image-1076.png 1057w, /wp-content/uploads/2018/05/word-image-1076-300x110.png 300w, /wp-content/uploads/2018/05/word-image-1076-768x280.png 768w, /wp-content/uploads/2018/05/word-image-1076-1024x374.png 1024w" sizes="(max-width: 1057px) 100vw, 1057px" />
</p>
<p>
  语法实现: select ….from  A  cross join  B……….
</p>
<p>
  <img loading="lazy" decoding="async" width="1049" height="261" src="/wp-content/uploads/2018/05/word-image-1077.png" class="wp-image-1191" srcset="/wp-content/uploads/2018/05/word-image-1077.png 1049w, /wp-content/uploads/2018/05/word-image-1077-300x75.png 300w, /wp-content/uploads/2018/05/word-image-1077-768x191.png 768w, /wp-content/uploads/2018/05/word-image-1077-1024x255.png 1024w" sizes="(max-width: 1049px) 100vw, 1049px" />
</p>
<h3>内连接</h3>
<p>
  Inner join /  join
</p>
<p>
  根据公用字段来进行横向连接，只返回满足条件的部分
</p>
<p>
  语法  select …. From 表1 inner join 表2  on 连接的条件….
</p>
<p>
  <img loading="lazy" decoding="async" width="1013" height="180" src="/wp-content/uploads/2018/05/word-image-1078.png" class="wp-image-1192" srcset="/wp-content/uploads/2018/05/word-image-1078.png 1013w, /wp-content/uploads/2018/05/word-image-1078-300x53.png 300w, /wp-content/uploads/2018/05/word-image-1078-768x136.png 768w" sizes="(max-width: 1013px) 100vw, 1013px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="1547" height="222" src="/wp-content/uploads/2018/05/word-image-1079.png" class="wp-image-1193" srcset="/wp-content/uploads/2018/05/word-image-1079.png 1547w, /wp-content/uploads/2018/05/word-image-1079-300x43.png 300w, /wp-content/uploads/2018/05/word-image-1079-768x110.png 768w, /wp-content/uploads/2018/05/word-image-1079-1024x147.png 1024w" sizes="(max-width: 1547px) 100vw, 1547px" />
</p>
<p>
  内连接：只返回满足条件 （公用字段班级id相同的）记录横向连接的结果
</p>
<p>
  内连接如果不加on条件就变成了交差连接
</p>
<p>
  说白了，如果有条件就是内连接，没有条件就是交差连接
</p>
<h3>左连接</h3>
<p>
  左连接就是返回左表的全部数据，和满足条件的右表的数据
</p>
<p>
  语法: select … from 表1 left join 表2  on条件  …….
</p>
<p>
  select * from class left join student on  class.id=student.class_id;
</p>
<p>
  <img loading="lazy" decoding="async" width="970" height="162" src="/wp-content/uploads/2018/05/word-image-1080.png" class="wp-image-1194" srcset="/wp-content/uploads/2018/05/word-image-1080.png 970w, /wp-content/uploads/2018/05/word-image-1080-300x50.png 300w, /wp-content/uploads/2018/05/word-image-1080-768x128.png 768w" sizes="(max-width: 970px) 100vw, 970px" />
</p>
<p>
  如果左边表没有满足条件的右边表数据，会自动补null，并且显示出来
</p>
<h3>右连接</h3>
<p>
  右连接，返回右表全部数据，和满足条件的左表数据
</p>
<p><strong>右边表如果没有满足条件的左表数据，会在左边自动补充Null 并且显示出来</strong>
</p>
<p>
  语法 :select … from 表1 right join 表2  on条件  …….
</p>
<p>
  Select * from class right join student on class.id=student.class_id;
</p>
<p>
  <img loading="lazy" decoding="async" width="960" height="162" src="/wp-content/uploads/2018/05/word-image-1081.png" class="wp-image-1195" srcset="/wp-content/uploads/2018/05/word-image-1081.png 960w, /wp-content/uploads/2018/05/word-image-1081-300x51.png 300w, /wp-content/uploads/2018/05/word-image-1081-768x130.png 768w" sizes="(max-width: 960px) 100vw, 960px" />
</p>
<h3>总结比较，内连接 左连接 右连接</h3>
<p>
  内连接：只返回满足条件的数据
</p>
<p>
  左连接：返回满足条件的数据和左表的所有数据 （比内连接多数据&#8212;-左边中不满足条件的记录）
</p>
<p>
  右连接：返回满足条件的数据和右表的所有数据 （比内连接多数据&#8212;-右表中不满足条件的数据）
</p>
<h3>全连接</h3>
<p>
  MySQL没有全连接  full  join
</p>
<p>
  返回的是左表全内容，和右表全部内容，满足条件的内容
</p>
<p>
  左连接的结果  union  右连接的结果
</p>
<h2>课堂练习</h2>
<ul>
<li>
    谁考试不及格
  </li>
<li>
    猪八戒都有哪些学生
  </li>
<li>
    谁参加了2门以上的考试
  </li>
<li>
    哪个几个班级有姓周的同学
  </li>
<li>
    年龄最大前三位同学在那间教室上课
  </li>
</ul>
<p>
  以下练习：要求有能力的学生自己再琢磨一种更好的连接方式
</p>
<ul>
<li>
    列出相对应的班级名,学生名,考试成绩信息
  </li>
</ul>
<h1>子查询</h1>
<h2>子查询的概念</h2>
<p>
  子查询就在一个查询select语句中还有select语句，那么这些select都是子查询
</p>
<p>
  一般来说子查询的结果一般在主查询中用于，数据来源，条件数，结果数据
</p>
<p>
  <img loading="lazy" decoding="async" width="1003" height="81" src="/wp-content/uploads/2018/05/word-image-1082.png" class="wp-image-1196" srcset="/wp-content/uploads/2018/05/word-image-1082.png 1003w, /wp-content/uploads/2018/05/word-image-1082-300x24.png 300w, /wp-content/uploads/2018/05/word-image-1082-768x62.png 768w" sizes="(max-width: 1003px) 100vw, 1003px" />
</p>
<h3>主查询</h3>
<p>
  确定结果字段的select语句就是主查询
</p>
<p>
  <img loading="lazy" decoding="async" width="834" height="76" src="/wp-content/uploads/2018/05/word-image-1083.png" class="wp-image-1197" srcset="/wp-content/uploads/2018/05/word-image-1083.png 834w, /wp-content/uploads/2018/05/word-image-1083-300x27.png 300w, /wp-content/uploads/2018/05/word-image-1083-768x70.png 768w" sizes="(max-width: 834px) 100vw, 834px" />
</p>
<h2>子查询分类</h2>
<h3>按返回结果</h3>
<h4>标量子查询</h4>
<p>
  子查询返回的结果是一个数据，一行一列
</p>
<ul>
<li>
    301房间都有谁上课
  </li>
</ul>
<p>
  select * from t_student where class_id =(select id from t_class where classroom=&#8217;301房间&#8217;);
</p>
<p>
  <img loading="lazy" decoding="async" width="1034" height="182" src="/wp-content/uploads/2018/05/word-image-1084.png" class="wp-image-1198" srcset="/wp-content/uploads/2018/05/word-image-1084.png 1034w, /wp-content/uploads/2018/05/word-image-1084-300x53.png 300w, /wp-content/uploads/2018/05/word-image-1084-768x135.png 768w, /wp-content/uploads/2018/05/word-image-1084-1024x180.png 1024w" sizes="(max-width: 1034px) 100vw, 1034px" />
</p>
<p>
  子查询中返回的数据是一行一列，这种子查询就是标量查询
</p>
<ul>
<li>
    猪八戒都有哪些学生
  </li>
</ul>
<h4>列子查询</h4>
<p>
  从子查询中返回的结果是多行一列就是列子查询
</p>
<ul>
<li>
    班级有女生的班主任是谁
  </li>
</ul>
<p>
  select * from t_class where id in (select class_id from t_student where sex=&#8217;女&#8217;);
</p>
<p>
  <img loading="lazy" decoding="async" width="968" height="163" src="/wp-content/uploads/2018/05/word-image-1085.png" class="wp-image-1199" srcset="/wp-content/uploads/2018/05/word-image-1085.png 968w, /wp-content/uploads/2018/05/word-image-1085-300x51.png 300w, /wp-content/uploads/2018/05/word-image-1085-768x129.png 768w" sizes="(max-width: 968px) 100vw, 968px" />
</p>
<p>
  子查询返回的是多行一列的数据&#8212;列子查询
</p>
<ul>
<li>
    哪些班级学生年龄超过了30岁
  </li>
</ul>
<p>
  select * from t_class where id in (select class_id from t_student where age&gt;30);
</p>
<h4>行子查询</h4>
<p>
  子查询的结果返回的是多列一行
</p>
<ul>
<li>
    和周杰伦性别一样，在同一间教室上课的人
  </li>
</ul>
<p>
  第一步：找到周杰伦的性别和班级id
</p>
<p>
  select sex,class_id from t_student where name=&#8217;周杰伦&#8217;;
</p>
<p>
  第二步：构建子查询
</p>
<p>
  select * from t_student where (sex,class_id)=(select sex,class_id from t_student where name=&#8217;周杰伦&#8217;);
</p>
<p>
  <img loading="lazy" decoding="async" width="1142" height="217" src="/wp-content/uploads/2018/05/word-image-1086.png" class="wp-image-1200" srcset="/wp-content/uploads/2018/05/word-image-1086.png 1142w, /wp-content/uploads/2018/05/word-image-1086-300x57.png 300w, /wp-content/uploads/2018/05/word-image-1086-768x146.png 768w, /wp-content/uploads/2018/05/word-image-1086-1024x195.png 1024w" sizes="(max-width: 1142px) 100vw, 1142px" />
</p>
<p>
  第三步：把周杰伦本省过滤掉
</p>
<p>
  select * from t_student where (sex,class_id)=(select sex,class_id from t_student where name=&#8217;周杰伦&#8217;)
</p>
<p>
  and name &lt;&gt; &#8216;周杰伦&#8217;;
</p>
<p>
  <img loading="lazy" decoding="async" width="1310" height="199" src="/wp-content/uploads/2018/05/word-image-1087.png" class="wp-image-1201" srcset="/wp-content/uploads/2018/05/word-image-1087.png 1310w, /wp-content/uploads/2018/05/word-image-1087-300x46.png 300w, /wp-content/uploads/2018/05/word-image-1087-768x117.png 768w, /wp-content/uploads/2018/05/word-image-1087-1024x156.png 1024w" sizes="(max-width: 1310px) 100vw, 1310px" />
</p>
<h4>表子查询</h4>
<p>
  子查询是作为数据的来源使用 一般是在from后边，返回的信息是多行多列
</p>
<ul>
<li>
    用表子查询，找所有姓周的男生
  </li>
</ul>
<p>
  select * from (select * from t_student where sex=&#8217;男&#8217;) as tb where tb.name like &#8216;周%&#8217;;
</p>
<p>
  或select * from (select * from t_student where name like &#8216;周%&#8217;) as tb where tb.sex=&#8217;男&#8217;;
</p>
<p>
  <img loading="lazy" decoding="async" width="1172" height="355" src="/wp-content/uploads/2018/05/word-image-1088.png" class="wp-image-1202" srcset="/wp-content/uploads/2018/05/word-image-1088.png 1172w, /wp-content/uploads/2018/05/word-image-1088-300x91.png 300w, /wp-content/uploads/2018/05/word-image-1088-768x233.png 768w, /wp-content/uploads/2018/05/word-image-1088-1024x310.png 1024w" sizes="(max-width: 1172px) 100vw, 1172px" />
</p>
<h4>Exists子查询</h4>
<p>
  Exitsts 是存在，如果存在返回1，如果不存在返回0
</p>
<ul>
<li>
    有考试满分的学生显示所有班级名称
  </li>
</ul>
<p>
  select  class from t_class exists (select * from t_result where result=100);
</p>
<p>
  如果查询出来的结果有那么条件成立
</p>
<p>
  如果查询不出来信息那么条件不通过
</p>
<p>
  <img loading="lazy" decoding="async" width="996" height="212" src="/wp-content/uploads/2018/05/word-image-1089.png" class="wp-image-1203" srcset="/wp-content/uploads/2018/05/word-image-1089.png 996w, /wp-content/uploads/2018/05/word-image-1089-300x64.png 300w, /wp-content/uploads/2018/05/word-image-1089-768x163.png 768w" sizes="(max-width: 996px) 100vw, 996px" />
</p>
<h3>按试用场合</h3>
<h4>作为主查询的结果数据</h4>
<p>  <img loading="lazy" decoding="async" width="851" height="244" src="/wp-content/uploads/2018/05/word-image-1090.png" class="wp-image-1204" srcset="/wp-content/uploads/2018/05/word-image-1090.png 851w, /wp-content/uploads/2018/05/word-image-1090-300x86.png 300w, /wp-content/uploads/2018/05/word-image-1090-768x220.png 768w" sizes="(max-width: 851px) 100vw, 851px" />
</p>
<h4>作为主查询的条件数据</h4>
<p>
  	子查询在where条件里边
</p>
<p>
  	Having
</p>
<p>
  	on
</p>
<h4>作为主查询的来源数据</h4>
<p>
  	子查询在from后边
</p>
<h2>子查询中特定关键字</h2>
<h3>in关键字</h3>
<p>
   在什么范围中
</p>
<p>
   Not  in 标识不再范围中
</p>
<ul>
<li>
    有男生的班级都有哪些
  </li>
</ul>
<p>
  第一步：先找男生的班级id  去重
</p>
<p>
     Select  distinct class_id from t_student where sex=’男’;
</p>
<p>
  第二步：根据男生班级的id在班级表中找到班级的名字
</p>
<p>
  select class from t_class where id in (Select distinct class_id from t_student where sex=&#8217;男&#8217;);
</p>
<p>
  <img loading="lazy" decoding="async" width="1082" height="188" src="/wp-content/uploads/2018/05/word-image-1091.png" class="wp-image-1205" srcset="/wp-content/uploads/2018/05/word-image-1091.png 1082w, /wp-content/uploads/2018/05/word-image-1091-300x52.png 300w, /wp-content/uploads/2018/05/word-image-1091-768x133.png 768w, /wp-content/uploads/2018/05/word-image-1091-1024x178.png 1024w" sizes="(max-width: 1082px) 100vw, 1082px" />
</p>
<ul>
<li>
    没有男生的班级都有哪些
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="1120" height="185" src="/wp-content/uploads/2018/05/word-image-1092.png" class="wp-image-1206" srcset="/wp-content/uploads/2018/05/word-image-1092.png 1120w, /wp-content/uploads/2018/05/word-image-1092-300x50.png 300w, /wp-content/uploads/2018/05/word-image-1092-768x127.png 768w, /wp-content/uploads/2018/05/word-image-1092-1024x169.png 1024w" sizes="(max-width: 1120px) 100vw, 1120px" />
</p>
<h3>any关键字</h3>
<p>
  表示满足任意一个条件即可
</p>
<ul>
<li>
    找出比任意一个姓周的年龄大的学生
  </li>
</ul>
<p>
  第一步：找出所有姓周的年龄
</p>
<p>
  select age from t_student where name like &#8216;周%&#8217;;
</p>
<p>
  第二：根据所有姓周的学生年龄来找比其年龄大的人
</p>
<p>
  select name,age from t_student where age &gt; any (select age from t_student where name like &#8216;周%&#8217;);
</p>
<p>
  <img loading="lazy" decoding="async" width="1088" height="181" src="/wp-content/uploads/2018/05/word-image-1093.png" class="wp-image-1207" srcset="/wp-content/uploads/2018/05/word-image-1093.png 1088w, /wp-content/uploads/2018/05/word-image-1093-300x50.png 300w, /wp-content/uploads/2018/05/word-image-1093-768x128.png 768w, /wp-content/uploads/2018/05/word-image-1093-1024x170.png 1024w" sizes="(max-width: 1088px) 100vw, 1088px" />
</p>
<h3>all关键字</h3>
<p>
  表示满足所有的条件
</p>
<ul>
<li>
    找出比所有姓周的年龄小的学生
  </li>
</ul>
<p>
  第一步：找出所有姓周的年龄
</p>
<p>
  select age from t_student where name like &#8216;周%&#8217;;
</p>
<p>
  第二步：根据所有姓周年龄找结果字段数据
</p>
<p>
  select name,age from t_student where age &lt; all (select age from t_student where name like &#8216;周%&#8217;);
</p>
<p>
  <img loading="lazy" decoding="async" width="1119" height="254" src="/wp-content/uploads/2018/05/word-image-1094.png" class="wp-image-1208" srcset="/wp-content/uploads/2018/05/word-image-1094.png 1119w, /wp-content/uploads/2018/05/word-image-1094-300x68.png 300w, /wp-content/uploads/2018/05/word-image-1094-768x174.png 768w, /wp-content/uploads/2018/05/word-image-1094-1024x232.png 1024w" sizes="(max-width: 1119px) 100vw, 1119px" />
</p>
<h1>数据的备份还原</h1>
<h2>备份还原的意义</h2>
<p>
  防范于未然，保证数据的安全性和完整性，网站最重要的就是数据，如果没有数据，你这个就是镜中花水中月
</p>
<h2>文件备份</h2>
<p>
  <img loading="lazy" decoding="async" width="847" height="68" src="/wp-content/uploads/2018/05/word-image-1095.png" class="wp-image-1209" srcset="/wp-content/uploads/2018/05/word-image-1095.png 847w, /wp-content/uploads/2018/05/word-image-1095-300x24.png 300w, /wp-content/uploads/2018/05/word-image-1095-768x62.png 768w" sizes="(max-width: 847px) 100vw, 847px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="1018" height="414" src="/wp-content/uploads/2018/05/word-image-1096.png" class="wp-image-1210" srcset="/wp-content/uploads/2018/05/word-image-1096.png 1018w, /wp-content/uploads/2018/05/word-image-1096-300x122.png 300w, /wp-content/uploads/2018/05/word-image-1096-768x312.png 768w" sizes="(max-width: 1018px) 100vw, 1018px" />
</p>
<p>
  数据库的本质就是文件，数据都是存放在文件中，我们把这个文件夹中的文件复制出来一份，是不是就是把当前数据库进行了备份呢？&#8212;&#8211;不一定
</p>
<p>
  这样的备份是有要求的，要这个数据库的表数据引擎必须是myisam的
</p>
<p>
  测试：
</p>
<p>
  创建数据库，数据表
</p>
<p>
  <img loading="lazy" decoding="async" width="830" height="194" src="/wp-content/uploads/2018/05/word-image-1097.png" class="wp-image-1211" srcset="/wp-content/uploads/2018/05/word-image-1097.png 830w, /wp-content/uploads/2018/05/word-image-1097-300x70.png 300w, /wp-content/uploads/2018/05/word-image-1097-768x180.png 768w" sizes="(max-width: 830px) 100vw, 830px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="598" height="341" src="/wp-content/uploads/2018/05/word-image-1098.png" class="wp-image-1212" srcset="/wp-content/uploads/2018/05/word-image-1098.png 598w, /wp-content/uploads/2018/05/word-image-1098-300x171.png 300w" sizes="(max-width: 598px) 100vw, 598px" />
</p>
<p>
  在test表中添加测试数据
</p>
<p>
  <img loading="lazy" decoding="async" width="731" height="202" src="/wp-content/uploads/2018/05/word-image-1099.png" class="wp-image-1213" srcset="/wp-content/uploads/2018/05/word-image-1099.png 731w, /wp-content/uploads/2018/05/word-image-1099-300x83.png 300w" sizes="(max-width: 731px) 100vw, 731px" />
</p>
<p>
  复制lzh文件夹，重命名
</p>
<p>
  <img loading="lazy" decoding="async" width="1133" height="288" src="/wp-content/uploads/2018/05/word-image-1100.png" class="wp-image-1214" srcset="/wp-content/uploads/2018/05/word-image-1100.png 1133w, /wp-content/uploads/2018/05/word-image-1100-300x76.png 300w, /wp-content/uploads/2018/05/word-image-1100-768x195.png 768w, /wp-content/uploads/2018/05/word-image-1100-1024x260.png 1024w" sizes="(max-width: 1133px) 100vw, 1133px" />
</p>
<p>
  查看数据库
</p>
<p>
  <img loading="lazy" decoding="async" width="929" height="543" src="/wp-content/uploads/2018/05/word-image-1101.png" class="wp-image-1215" srcset="/wp-content/uploads/2018/05/word-image-1101.png 929w, /wp-content/uploads/2018/05/word-image-1101-300x175.png 300w, /wp-content/uploads/2018/05/word-image-1101-768x449.png 768w" sizes="(max-width: 929px) 100vw, 929px" />
</p>
<p>
  操作lzh1数据库
</p>
<p>
  <img loading="lazy" decoding="async" width="911" height="329" src="/wp-content/uploads/2018/05/word-image-1102.png" class="wp-image-1216" srcset="/wp-content/uploads/2018/05/word-image-1102.png 911w, /wp-content/uploads/2018/05/word-image-1102-300x108.png 300w, /wp-content/uploads/2018/05/word-image-1102-768x277.png 768w" sizes="(max-width: 911px) 100vw, 911px" />
</p>
<p>
  这种文件备份数据库只能备份myisam数据库引擎的数据表
</p>
<h2>整库备份</h2>
<p>
  用到了一个mysqldump工具来进行备份数据库，备份出来的数据是保存到一个.sql文件中的
</p>
<p>
  <img loading="lazy" decoding="async" width="1110" height="358" src="/wp-content/uploads/2018/05/word-image-1103.png" class="wp-image-1217" srcset="/wp-content/uploads/2018/05/word-image-1103.png 1110w, /wp-content/uploads/2018/05/word-image-1103-300x97.png 300w, /wp-content/uploads/2018/05/word-image-1103-768x248.png 768w, /wp-content/uploads/2018/05/word-image-1103-1024x330.png 1024w" sizes="(max-width: 1110px) 100vw, 1110px" />
</p>
<p>
  具体的使用方式是如下
</p>
<p>
  Mysqldump -h主机名 -P端口 -u 用户名 -p  数据库名 &gt; sql文件的地址
</p>
<p>
  如果主机名和端口号都是默认的那么可以省略
</p>
<p>
  案例:把db1数据库备份
</p>
<p>
  备份的时候一定要退出数据库连接
</p>
<p>
   Mysqldump  -uroot  -proot  db1 &gt;C:/db1.sql;
</p>
<p>
  <img loading="lazy" decoding="async" width="1376" height="393" src="/wp-content/uploads/2018/05/word-image-1104.png" class="wp-image-1218" srcset="/wp-content/uploads/2018/05/word-image-1104.png 1376w, /wp-content/uploads/2018/05/word-image-1104-300x86.png 300w, /wp-content/uploads/2018/05/word-image-1104-768x219.png 768w, /wp-content/uploads/2018/05/word-image-1104-1024x292.png 1024w" sizes="(max-width: 1376px) 100vw, 1376px" />
</p>
<h2>单表备份</h2>
<p>
  使用MySQLdump工具来备份
</p>
<p>
  使用方式
</p>
<p>
  Mysqldump -h主机名 -P端口 -u 用户名 -p  数据库名 表名 &gt; sql文件的地址
</p>
<p>
  如果主机名和端口号都是默认的那么可以省略
</p>
<p>
  <img loading="lazy" decoding="async" width="1455" height="382" src="/wp-content/uploads/2018/05/word-image-1105.png" class="wp-image-1219" srcset="/wp-content/uploads/2018/05/word-image-1105.png 1455w, /wp-content/uploads/2018/05/word-image-1105-300x79.png 300w, /wp-content/uploads/2018/05/word-image-1105-768x202.png 768w, /wp-content/uploads/2018/05/word-image-1105-1024x269.png 1024w" sizes="(max-width: 1455px) 100vw, 1455px" />
</p>
<p>
  Db1.sql里边只用class表的定义sql和数据插入的sql没有其他表的sql
</p>
<h2>多表备份</h2>
<p>
  使用MySQLdump工具来备份
</p>
<p>
  使用方式
</p>
<p>
  Mysqldump -h主机名 -P端口 -u 用户名 -p  数据库名 表名1   表名2….. &gt; sql文件的地址
</p>
<p>
  如果主机名和端口号都是默认的那么可以省略
</p>
<p>
  <img loading="lazy" decoding="async" width="1543" height="373" src="/wp-content/uploads/2018/05/word-image-1106.png" class="wp-image-1220" srcset="/wp-content/uploads/2018/05/word-image-1106.png 1543w, /wp-content/uploads/2018/05/word-image-1106-300x73.png 300w, /wp-content/uploads/2018/05/word-image-1106-768x186.png 768w, /wp-content/uploads/2018/05/word-image-1106-1024x248.png 1024w" sizes="(max-width: 1543px) 100vw, 1543px" />
</p>
<p>
  Db1.sql文件中只有class 和 student表的相关sql语句没有其他表的sql
</p>
<h2>还原</h2>
<h3>工具还原</h3>
<p>
  Mysql工具还原数据
</p>
<p>
  <img loading="lazy" decoding="async" width="1193" height="390" src="/wp-content/uploads/2018/05/word-image-1107.png" class="wp-image-1221" srcset="/wp-content/uploads/2018/05/word-image-1107.png 1193w, /wp-content/uploads/2018/05/word-image-1107-300x98.png 300w, /wp-content/uploads/2018/05/word-image-1107-768x251.png 768w, /wp-content/uploads/2018/05/word-image-1107-1024x335.png 1024w" sizes="(max-width: 1193px) 100vw, 1193px" />
</p>
<p>
  使用方式   使用还原的时候要退出mysql连接
</p>
<p>
  	Mysql  -h主机名  -P端口号  -u用户名 -p密码  数据库名  &lt; sql文件的地址路径
</p>
<p>
  <img loading="lazy" decoding="async" width="1467" height="346" src="/wp-content/uploads/2018/05/word-image-1108.png" class="wp-image-1222" srcset="/wp-content/uploads/2018/05/word-image-1108.png 1467w, /wp-content/uploads/2018/05/word-image-1108-300x71.png 300w, /wp-content/uploads/2018/05/word-image-1108-768x181.png 768w, /wp-content/uploads/2018/05/word-image-1108-1024x242.png 1024w" sizes="(max-width: 1467px) 100vw, 1467px" />
</p>
<p>
  查看bbss数据库
</p>
<p>
  <img loading="lazy" decoding="async" width="764" height="131" src="/wp-content/uploads/2018/05/word-image-1109.png" class="wp-image-1223" srcset="/wp-content/uploads/2018/05/word-image-1109.png 764w, /wp-content/uploads/2018/05/word-image-1109-300x51.png 300w" sizes="(max-width: 764px) 100vw, 764px" />
</p>
<h3>source还原</h3>
<p>
  source是一个命令，用来还原数据文件到数据库
</p>
<p>
  用法: source  数据库sql文件路径;
</p>
<p>
  前提：你得连接数据库进入到你需要还原的数据库里边
</p>
<p>
  <img loading="lazy" decoding="async" width="840" height="184" src="/wp-content/uploads/2018/05/word-image-1110.png" class="wp-image-1224" srcset="/wp-content/uploads/2018/05/word-image-1110.png 840w, /wp-content/uploads/2018/05/word-image-1110-300x66.png 300w, /wp-content/uploads/2018/05/word-image-1110-768x168.png 768w" sizes="(max-width: 840px) 100vw, 840px" />
</p>
<h2>增量备份了解</h2>
<p>
  例如：
</p>
<p>
  	九月份我备份了30次
</p>
<p>
  	1号备份直到一号的数据库
</p>
<p>
  	2号备份 一号到二号的数据 &#8212;-一号一天的数据
</p>
<p>
  3号备份 二号到三号的数据 &#8212;-二号一天的数据
</p>
<p>
  ………
</p>
<p>
  这样的备份就是增量备份&#8212;每天只备份不重复的一部分，这些部分加起来就是整个数据库
</p>
<p>
  每次备份，数据量小，备份速度快
</p>
<p>
  还原的时候，比较麻烦，还有就是还原的数据有时间的先后问题，只能先还原先备份的数据，在根据时间的顺序还原，如果有一次还原失败，整体数据都会失败，也就是还原不成功
</p>
<h1>用户权限管理</h1>
<h2>用户权限管理的必要性</h2>
<p>
  在项目开发中不同的人员对数据库有不同的权限需求，我们要尽量给这些工作人员小的权限
</p>
<p>
  避免误删，或是破坏数据库的安全性和完整性
</p>
<h2>用户管理</h2>
<h3>用户信息的保存&amp;含义</h3>
<p>
  <img loading="lazy" decoding="async" width="990" height="122" src="/wp-content/uploads/2018/05/word-image-1111.png" class="wp-image-1225" srcset="/wp-content/uploads/2018/05/word-image-1111.png 990w, /wp-content/uploads/2018/05/word-image-1111-300x37.png 300w, /wp-content/uploads/2018/05/word-image-1111-768x95.png 768w" sizes="(max-width: 990px) 100vw, 990px" />
</p>
<h3>创建用户</h3>
<p>
  语法：
</p>
<p>
  Create user user1@’主机地址’  identified by ‘密码’
</p>
<p>
  <img loading="lazy" decoding="async" width="871" height="239" src="/wp-content/uploads/2018/05/word-image-1112.png" class="wp-image-1226" srcset="/wp-content/uploads/2018/05/word-image-1112.png 871w, /wp-content/uploads/2018/05/word-image-1112-300x82.png 300w, /wp-content/uploads/2018/05/word-image-1112-768x211.png 768w" sizes="(max-width: 871px) 100vw, 871px" />
</p>
<h3>删除用户</h3>
<p>
  语法：
</p>
<p>
  	Drop  user 用户名@’主机地址’;
</p>
<p>
  	<a href="mailto:测试删除uer1@'127.0.0.1">测试删除uer1@’127.0.0.1</a>’;
</p>
<p>
  <img loading="lazy" decoding="async" width="450" height="56" src="/wp-content/uploads/2018/05/word-image-1113.png" class="wp-image-1227" srcset="/wp-content/uploads/2018/05/word-image-1113.png 450w, /wp-content/uploads/2018/05/word-image-1113-300x37.png 300w" sizes="(max-width: 450px) 100vw, 450px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="761" height="144" src="/wp-content/uploads/2018/05/word-image-1114.png" class="wp-image-1228" srcset="/wp-content/uploads/2018/05/word-image-1114.png 761w, /wp-content/uploads/2018/05/word-image-1114-300x57.png 300w" sizes="(max-width: 761px) 100vw, 761px" />
</p>
<h3>修改用户密码</h3>
<p>
  第一种直接修改mysql系统数据下的user表
</p>
<p>
  update user set password=password(&#8216;root&#8217;) where user=&#8217;user1&#8242; and host=&#8217;127.0.0.1&#8242;;
</p>
<p>
  <img loading="lazy" decoding="async" width="1007" height="88" src="/wp-content/uploads/2018/05/word-image-1115.png" class="wp-image-1229" srcset="/wp-content/uploads/2018/05/word-image-1115.png 1007w, /wp-content/uploads/2018/05/word-image-1115-300x26.png 300w, /wp-content/uploads/2018/05/word-image-1115-768x67.png 768w" sizes="(max-width: 1007px) 100vw, 1007px" />
</p>
<p>
  测试使用老密码登录（注意先关闭cmd ,在打开cmd）
</p>
<p>
  <img loading="lazy" decoding="async" width="859" height="85" src="/wp-content/uploads/2018/05/word-image-1116.png" class="wp-image-1230" srcset="/wp-content/uploads/2018/05/word-image-1116.png 859w, /wp-content/uploads/2018/05/word-image-1116-300x30.png 300w, /wp-content/uploads/2018/05/word-image-1116-768x76.png 768w" sizes="(max-width: 859px) 100vw, 859px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="793" height="282" src="/wp-content/uploads/2018/05/word-image-1117.png" class="wp-image-1231" srcset="/wp-content/uploads/2018/05/word-image-1117.png 793w, /wp-content/uploads/2018/05/word-image-1117-300x107.png 300w, /wp-content/uploads/2018/05/word-image-1117-768x273.png 768w" sizes="(max-width: 793px) 100vw, 793px" />
</p>
<p>
  注意重启服务
</p>
<p>
  第二种修改密码
</p>
<p>
  给自己修改密码
</p>
<p>
  Set  password=password(‘abc’);
</p>
<p>
  <img loading="lazy" decoding="async" width="754" height="90" src="/wp-content/uploads/2018/05/word-image-1118.png" class="wp-image-1232" srcset="/wp-content/uploads/2018/05/word-image-1118.png 754w, /wp-content/uploads/2018/05/word-image-1118-300x36.png 300w" sizes="(max-width: 754px) 100vw, 754px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="933" height="308" src="/wp-content/uploads/2018/05/word-image-1119.png" class="wp-image-1233" srcset="/wp-content/uploads/2018/05/word-image-1119.png 933w, /wp-content/uploads/2018/05/word-image-1119-300x99.png 300w, /wp-content/uploads/2018/05/word-image-1119-768x254.png 768w" sizes="(max-width: 933px) 100vw, 933px" />
</p>
<p>
  给别修改密码（管理员权限）
</p>
<p>
  set password for user1@&#8217;127.0.0.1&#8242; =password(&#8216;root&#8217;) ;
</p>
<p>
  <img loading="lazy" decoding="async" width="723" height="138" src="/wp-content/uploads/2018/05/word-image-1120.png" class="wp-image-1234" srcset="/wp-content/uploads/2018/05/word-image-1120.png 723w, /wp-content/uploads/2018/05/word-image-1120-300x57.png 300w" sizes="(max-width: 723px) 100vw, 723px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="927" height="315" src="/wp-content/uploads/2018/05/word-image-1121.png" class="wp-image-1235" srcset="/wp-content/uploads/2018/05/word-image-1121.png 927w, /wp-content/uploads/2018/05/word-image-1121-300x102.png 300w, /wp-content/uploads/2018/05/word-image-1121-768x261.png 768w" sizes="(max-width: 927px) 100vw, 927px" />
</p>
<h2>权限管理</h2>
<p>
  <img loading="lazy" decoding="async" width="937" height="344" src="/wp-content/uploads/2018/05/word-image-1122.png" class="wp-image-1236" srcset="/wp-content/uploads/2018/05/word-image-1122.png 937w, /wp-content/uploads/2018/05/word-image-1122-300x110.png 300w, /wp-content/uploads/2018/05/word-image-1122-768x282.png 768w" sizes="(max-width: 937px) 100vw, 937px" />
</p>
<p>
  Mysql权限表
</p>
<p>
  <img loading="lazy" decoding="async" width="613" height="298" src="/wp-content/uploads/2018/05/word-image-1123.png" class="wp-image-1237" srcset="/wp-content/uploads/2018/05/word-image-1123.png 613w, /wp-content/uploads/2018/05/word-image-1123-300x146.png 300w" sizes="(max-width: 613px) 100vw, 613px" />
</p>
<h3>给用户授权</h3>
<p>
  Grant  权限名 on  库名.表名  to 用户名@’主机地址’；
</p>
<p>
  <img loading="lazy" decoding="async" width="781" height="84" src="/wp-content/uploads/2018/05/word-image-1124.png" class="wp-image-1238" srcset="/wp-content/uploads/2018/05/word-image-1124.png 781w, /wp-content/uploads/2018/05/word-image-1124-300x32.png 300w, /wp-content/uploads/2018/05/word-image-1124-768x83.png 768w" sizes="(max-width: 781px) 100vw, 781px" />
</p>
<p>
  如果想把某一个数据库下的所有表的select给user1怎么做呢？
</p>
<p>
  grant select on bbss.* to <a href="mailto:user1@'127.0.0.1">user1@&#8217;127.0.0.1</a>&#8216;;  &#8212;*代表所有的表
</p>
<p>
  <img loading="lazy" decoding="async" width="773" height="69" src="/wp-content/uploads/2018/05/word-image-1125.png" class="wp-image-1239" srcset="/wp-content/uploads/2018/05/word-image-1125.png 773w, /wp-content/uploads/2018/05/word-image-1125-300x27.png 300w, /wp-content/uploads/2018/05/word-image-1125-768x69.png 768w" sizes="(max-width: 773px) 100vw, 773px" />
</p>
<p>
  如果想把所有数据的所有数据表的select权限都给user1;
</p>
<p>
  grant select on *.* to <a href="mailto:user1@'127.0.0.1">user1@&#8217;127.0.0.1</a>&#8216;;
</p>
<p>
  <img loading="lazy" decoding="async" width="647" height="73" src="/wp-content/uploads/2018/05/word-image-1126.png" class="wp-image-1240" srcset="/wp-content/uploads/2018/05/word-image-1126.png 647w, /wp-content/uploads/2018/05/word-image-1126-300x34.png 300w" sizes="(max-width: 647px) 100vw, 647px" />
</p>
<p>
  注意：赋予权限后，当前的连接不会生效，从新连接数据库后才会生效，有权限缓存的问题
</p>
<h3>收回权限</h3>
<p>
  Revoke 权限名on 数据库名.表名  from 用户名@’主机地址’；
</p>
<p>
  <img loading="lazy" decoding="async" width="733" height="91" src="/wp-content/uploads/2018/05/word-image-1127.png" class="wp-image-1241" srcset="/wp-content/uploads/2018/05/word-image-1127.png 733w, /wp-content/uploads/2018/05/word-image-1127-300x37.png 300w" sizes="(max-width: 733px) 100vw, 733px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="587" height="198" src="/wp-content/uploads/2018/05/word-image-1128.png" class="wp-image-1242" srcset="/wp-content/uploads/2018/05/word-image-1128.png 587w, /wp-content/uploads/2018/05/word-image-1128-300x101.png 300w" sizes="(max-width: 587px) 100vw, 587px" />
</p>
<h3>刷新权限</h3>
<p>
  把权限从数据表中刷新的内存
</p>
<p>
  Flush  privilege;
</p>
<h2>用户密码丢失处理</h2>
<ul>
<li>
    开启服务  跳过权限认证
  </li>
</ul>
<p>
  mysqld &#8211;skip-grant-tables
</p>
<p>
  <img loading="lazy" decoding="async" width="881" height="156" src="/wp-content/uploads/2018/05/word-image-1129.png" class="wp-image-1243" srcset="/wp-content/uploads/2018/05/word-image-1129.png 881w, /wp-content/uploads/2018/05/word-image-1129-300x53.png 300w, /wp-content/uploads/2018/05/word-image-1129-768x136.png 768w" sizes="(max-width: 881px) 100vw, 881px" />
</p>
<ul>
<li>
    连接服务器  这时候不需要用户名 和密码
  </li>
</ul>
<p>
  Mysql
</p>
<p>
  <img loading="lazy" decoding="async" width="840" height="298" src="/wp-content/uploads/2018/05/word-image-1130.png" class="wp-image-1244" srcset="/wp-content/uploads/2018/05/word-image-1130.png 840w, /wp-content/uploads/2018/05/word-image-1130-300x106.png 300w, /wp-content/uploads/2018/05/word-image-1130-768x272.png 768w" sizes="(max-width: 840px) 100vw, 840px" />
</p>
<ul>
<li>
    修改密码
  </li>
</ul>
<p>
  update mysql.user set password=password(&#8216;abc&#8217;) where user=&#8217;root&#8217; and host=&#8217;localhost&#8217;;
</p>
<p>
  <img loading="lazy" decoding="async" width="973" height="237" src="/wp-content/uploads/2018/05/word-image-1131.png" class="wp-image-1245" srcset="/wp-content/uploads/2018/05/word-image-1131.png 973w, /wp-content/uploads/2018/05/word-image-1131-300x73.png 300w, /wp-content/uploads/2018/05/word-image-1131-768x187.png 768w" sizes="(max-width: 973px) 100vw, 973px" />
</p>
<ul>
<li>
    重启服务
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="801" height="345" src="/wp-content/uploads/2018/05/word-image-1132.png" class="wp-image-1246" srcset="/wp-content/uploads/2018/05/word-image-1132.png 801w, /wp-content/uploads/2018/05/word-image-1132-300x129.png 300w, /wp-content/uploads/2018/05/word-image-1132-768x331.png 768w" sizes="(max-width: 801px) 100vw, 801px" />
</p>
<ul>
<li>
    重新连接
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="1013" height="462" src="/wp-content/uploads/2018/05/word-image-1133.png" class="wp-image-1247" srcset="/wp-content/uploads/2018/05/word-image-1133.png 1013w, /wp-content/uploads/2018/05/word-image-1133-300x137.png 300w, /wp-content/uploads/2018/05/word-image-1133-768x350.png 768w" sizes="(max-width: 1013px) 100vw, 1013px" /></p>
]]></content:encoded>
					
					<wfw:commentRss>/%e6%95%b0%e6%8d%ae%e5%ba%93/mysql/1186.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Mysql（五）事物、 外键、 存储函数、 存储过程、 流程控制、 视图、 触发器</title>
		<link>/%e6%95%b0%e6%8d%ae%e5%ba%93/mysql/1249.html</link>
					<comments>/%e6%95%b0%e6%8d%ae%e5%ba%93/mysql/1249.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Thu, 17 May 2018 17:10:06 +0000</pubDate>
				<category><![CDATA[Mysql]]></category>
		<category><![CDATA[事物]]></category>
		<category><![CDATA[外键]]></category>
		<category><![CDATA[存储函数]]></category>
		<category><![CDATA[存储过程]]></category>
		<category><![CDATA[流程控制]]></category>
		<category><![CDATA[视图]]></category>
		<category><![CDATA[触发器]]></category>
		<guid isPermaLink="false">/?p=1249</guid>

					<description><![CDATA[外键 什么是外键 在两张表中公用字段，在一个关系中是主键，在另外一个关系中就是外键 公共字段是主键的表，是主表 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>外键</h1>
<h2>什么是外键</h2>
<p>
  在两张表中公用字段，在一个关系中是主键，在另外一个关系中就是外键
</p>
<p>
  公共字段是主键的表，是主表；是外键的表就是从表
</p>
<p>
  <img loading="lazy" decoding="async" width="610" height="494" src="/wp-content/uploads/2018/05/word-image-1134.png" class="wp-image-1250" srcset="/wp-content/uploads/2018/05/word-image-1134.png 610w, /wp-content/uploads/2018/05/word-image-1134-300x243.png 300w" sizes="(max-width: 610px) 100vw, 610px" />
</p>
<h2>增加外键</h2>
<p>
  建表的时候加外键（明确指定从表中的公用字段是外键—有一定的约束）
</p>
<p>
  create table class
</p>
<p>
  (
</p>
<p>
  	id int primary key auto_increment,
</p>
<p>
  	class_name char(20)
</p>
<p>
  )charset=utf8;
</p>
<p>
  create table student
</p>
<p>
  (
</p>
<p>
  	id int primary key auto_increment,
</p>
<p>
  	name char(30),
</p>
<p>
  	class_id int,
</p>
<p>
  	foreign key(class_id) references class(id)
</p>
<p>
  )charset=utf8;
</p>
<p>
  指定外键的时候，系统会自动的把外键字段加一个索引
</p>
<p>
  <img loading="lazy" decoding="async" width="887" height="286" src="/wp-content/uploads/2018/05/word-image-1135.png" class="wp-image-1251" srcset="/wp-content/uploads/2018/05/word-image-1135.png 887w, /wp-content/uploads/2018/05/word-image-1135-300x97.png 300w, /wp-content/uploads/2018/05/word-image-1135-768x248.png 768w" sizes="(max-width: 887px) 100vw, 887px" />
</p>
<p>
  创建外键并指定名字
</p>
<p>
  <img loading="lazy" decoding="async" width="791" height="175" src="/wp-content/uploads/2018/05/word-image-1136.png" class="wp-image-1252" srcset="/wp-content/uploads/2018/05/word-image-1136.png 791w, /wp-content/uploads/2018/05/word-image-1136-300x66.png 300w, /wp-content/uploads/2018/05/word-image-1136-768x170.png 768w" sizes="(max-width: 791px) 100vw, 791px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="1017" height="257" src="/wp-content/uploads/2018/05/word-image-1137.png" class="wp-image-1253" srcset="/wp-content/uploads/2018/05/word-image-1137.png 1017w, /wp-content/uploads/2018/05/word-image-1137-300x76.png 300w, /wp-content/uploads/2018/05/word-image-1137-768x194.png 768w" sizes="(max-width: 1017px) 100vw, 1017px" />
</p>
<p>
  修改表加外键
</p>
<p>
  alter table 表名add foreign key(外键字段) references 主表(主键);
</p>
<p>
  <img loading="lazy" decoding="async" width="909" height="88" src="/wp-content/uploads/2018/05/word-image-1138.png" class="wp-image-1254" srcset="/wp-content/uploads/2018/05/word-image-1138.png 909w, /wp-content/uploads/2018/05/word-image-1138-300x29.png 300w, /wp-content/uploads/2018/05/word-image-1138-768x74.png 768w" sizes="(max-width: 909px) 100vw, 909px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="914" height="296" src="/wp-content/uploads/2018/05/word-image-1139.png" class="wp-image-1255" srcset="/wp-content/uploads/2018/05/word-image-1139.png 914w, /wp-content/uploads/2018/05/word-image-1139-300x97.png 300w, /wp-content/uploads/2018/05/word-image-1139-768x249.png 768w" sizes="(max-width: 914px) 100vw, 914px" />
</p>
<h2>删除外键</h2>
<p>
  Alter table  表名 drop foreign key 外键名字;
</p>
<p>
  <img loading="lazy" decoding="async" width="771" height="89" src="/wp-content/uploads/2018/05/word-image-1140.png" class="wp-image-1256" srcset="/wp-content/uploads/2018/05/word-image-1140.png 771w, /wp-content/uploads/2018/05/word-image-1140-300x35.png 300w, /wp-content/uploads/2018/05/word-image-1140-768x89.png 768w" sizes="(max-width: 771px) 100vw, 771px" />
</p>
<h2>外键的基本要求</h2>
<ul>
<li>
    首先数据表字段是外键，表必须是innodb的数据库引擎
  </li>
<li>
    主表和从表的公用字段，数据类型和必要的属性必须一致
  </li>
<li>
    外键创建的时候需要注意数据的影响&#8212;（修改表后期加外键的时候）公用字段中从表的数据必须能在主表相应字段中找到
  </li>
</ul>
<p>
  <img loading="lazy" decoding="async" width="848" height="84" src="/wp-content/uploads/2018/05/word-image-1141.png" class="wp-image-1257" srcset="/wp-content/uploads/2018/05/word-image-1141.png 848w, /wp-content/uploads/2018/05/word-image-1141-300x30.png 300w, /wp-content/uploads/2018/05/word-image-1141-768x76.png 768w" sizes="(max-width: 848px) 100vw, 848px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="410" height="163" src="/wp-content/uploads/2018/05/word-image-1142.png" class="wp-image-1258" srcset="/wp-content/uploads/2018/05/word-image-1142.png 410w, /wp-content/uploads/2018/05/word-image-1142-300x119.png 300w" sizes="(max-width: 410px) 100vw, 410px" /></p>
<p>  <img loading="lazy" decoding="async" width="381" height="166" src="/wp-content/uploads/2018/05/word-image-1143.png" class="wp-image-1259" srcset="/wp-content/uploads/2018/05/word-image-1143.png 381w, /wp-content/uploads/2018/05/word-image-1143-300x131.png 300w" sizes="(max-width: 381px) 100vw, 381px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="1097" height="64" src="/wp-content/uploads/2018/05/word-image-1144.png" class="wp-image-1260" srcset="/wp-content/uploads/2018/05/word-image-1144.png 1097w, /wp-content/uploads/2018/05/word-image-1144-300x18.png 300w, /wp-content/uploads/2018/05/word-image-1144-768x45.png 768w, /wp-content/uploads/2018/05/word-image-1144-1024x60.png 1024w" sizes="(max-width: 1097px) 100vw, 1097px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="1001" height="150" src="/wp-content/uploads/2018/05/word-image-1145.png" class="wp-image-1261" srcset="/wp-content/uploads/2018/05/word-image-1145.png 1001w, /wp-content/uploads/2018/05/word-image-1145-300x45.png 300w, /wp-content/uploads/2018/05/word-image-1145-768x115.png 768w" sizes="(max-width: 1001px) 100vw, 1001px" />
</p>
<h2>外键约束</h2>
<h3>什么是外键约束</h3>
<p>
  就是对主表数据，和从表数据的一些要求
</p>
<p>
  从表中有的相关数据，主表中不能随意删除
</p>
<p>
  <img loading="lazy" decoding="async" width="821" height="416" src="/wp-content/uploads/2018/05/word-image-1146.png" class="wp-image-1262" srcset="/wp-content/uploads/2018/05/word-image-1146.png 821w, /wp-content/uploads/2018/05/word-image-1146-300x152.png 300w, /wp-content/uploads/2018/05/word-image-1146-768x389.png 768w" sizes="(max-width: 821px) 100vw, 821px" />
</p>
<p>
  想操作主表中的内容怎么办/
</p>
<p>
  把相关信息从从表中全部删除，再修改相应主表中的内容
</p>
<p>
  <img loading="lazy" decoding="async" width="929" height="323" src="/wp-content/uploads/2018/05/word-image-1147.png" class="wp-image-1263" srcset="/wp-content/uploads/2018/05/word-image-1147.png 929w, /wp-content/uploads/2018/05/word-image-1147-300x104.png 300w, /wp-content/uploads/2018/05/word-image-1147-768x267.png 768w" sizes="(max-width: 929px) 100vw, 929px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="727" height="129" src="/wp-content/uploads/2018/05/word-image-1148.png" class="wp-image-1264" srcset="/wp-content/uploads/2018/05/word-image-1148.png 727w, /wp-content/uploads/2018/05/word-image-1148-300x53.png 300w" sizes="(max-width: 727px) 100vw, 727px" />
</p>
<p>
  从表中用的相关数据，必须是主表中有的
</p>
<p>
  <img loading="lazy" decoding="async" width="939" height="387" src="/wp-content/uploads/2018/05/word-image-1149.png" class="wp-image-1265" srcset="/wp-content/uploads/2018/05/word-image-1149.png 939w, /wp-content/uploads/2018/05/word-image-1149-300x124.png 300w, /wp-content/uploads/2018/05/word-image-1149-768x317.png 768w" sizes="(max-width: 939px) 100vw, 939px" />
</p>
<h2>外键的意义</h2>
<p>
  保证了数据的一致性（外键约束的体现）
</p>
<p>
  和完整性（班级和人进行了关联）
</p>
<p>
  工作中一般很少使用外键，因为操作表数据的时候太麻烦，限制的条件太死
</p>
<h1>视图</h1>
<h2>	什么是视图</h2>
<p>
  视图其实就是一张虚构的表，这个表只有表结构，没有表数据，视图的数据是从真正的数据表中引用的，那么我们修改视图的数据相关数据表的数据也会被修改；说白了视图就是把select查询结果当做了一个表
</p>
<h2>	视图的操作</h2>
<h3>创建视图</h3>
<p>
  Create  view  view1 as   select 语句
</p>
<p>
  <img loading="lazy" decoding="async" width="876" height="115" src="/wp-content/uploads/2018/05/word-image-1150.png" class="wp-image-1266" srcset="/wp-content/uploads/2018/05/word-image-1150.png 876w, /wp-content/uploads/2018/05/word-image-1150-300x39.png 300w, /wp-content/uploads/2018/05/word-image-1150-768x101.png 768w" sizes="(max-width: 876px) 100vw, 876px" />
</p>
<h3>查看视图</h3>
<p>
  <img loading="lazy" decoding="async" width="650" height="199" src="/wp-content/uploads/2018/05/word-image-1151.png" class="wp-image-1267" srcset="/wp-content/uploads/2018/05/word-image-1151.png 650w, /wp-content/uploads/2018/05/word-image-1151-300x92.png 300w" sizes="(max-width: 650px) 100vw, 650px" />
</p>
<h3>使用视图</h3>
<p>
  和使用表的用法一样，注意这里视图主要是用于查询和修改的，一版不用于添加也不删除
</p>
<p>
  查询视图
</p>
<p>
  <img loading="lazy" decoding="async" width="604" height="140" src="/wp-content/uploads/2018/05/word-image-1152.png" class="wp-image-1268" srcset="/wp-content/uploads/2018/05/word-image-1152.png 604w, /wp-content/uploads/2018/05/word-image-1152-300x70.png 300w" sizes="(max-width: 604px) 100vw, 604px" />
</p>
<p>
  视图中的数据，都是从真实的表中来的
</p>
<p>
  create view view1 as
</p>
<p>
  	select class_name,name from class join student on class.id=student.class_id;
</p>
<p>
  <img loading="lazy" decoding="async" width="813" height="117" src="/wp-content/uploads/2018/05/word-image-1153.png" class="wp-image-1269" srcset="/wp-content/uploads/2018/05/word-image-1153.png 813w, /wp-content/uploads/2018/05/word-image-1153-300x43.png 300w, /wp-content/uploads/2018/05/word-image-1153-768x111.png 768w" sizes="(max-width: 813px) 100vw, 813px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="857" height="159" src="/wp-content/uploads/2018/05/word-image-1154.png" class="wp-image-1270" srcset="/wp-content/uploads/2018/05/word-image-1154.png 857w, /wp-content/uploads/2018/05/word-image-1154-300x56.png 300w, /wp-content/uploads/2018/05/word-image-1154-768x142.png 768w" sizes="(max-width: 857px) 100vw, 857px" />
</p>
<h3>删除视图</h3>
<p>
  <img loading="lazy" decoding="async" width="734" height="68" src="/wp-content/uploads/2018/05/word-image-1155.png" class="wp-image-1271" srcset="/wp-content/uploads/2018/05/word-image-1155.png 734w, /wp-content/uploads/2018/05/word-image-1155-300x28.png 300w" sizes="(max-width: 734px) 100vw, 734px" />
</p>
<h2>视图数据的操作</h2>
<h3>增加视图数据</h3>
<p>
  一般不是对视图的数据进行添加
</p>
<p>
  这个视图的数据是来源于多表的
</p>
<p>
  	肯定不能插入成功；
</p>
<p>
  <img loading="lazy" decoding="async" width="882" height="63" src="/wp-content/uploads/2018/05/word-image-1156.png" class="wp-image-1272" srcset="/wp-content/uploads/2018/05/word-image-1156.png 882w, /wp-content/uploads/2018/05/word-image-1156-300x21.png 300w, /wp-content/uploads/2018/05/word-image-1156-768x55.png 768w" sizes="(max-width: 882px) 100vw, 882px" />
</p>
<p>
  这个视图数据是来源于一张表的
</p>
<p>
  	当视图的数据是这个表中所有必须要写的数据的时候能插入
</p>
<p>
  	否则不能插入
</p>
<p>
  测试1
</p>
<p>
  <img loading="lazy" decoding="async" width="651" height="62" src="/wp-content/uploads/2018/05/word-image-1157.png" class="wp-image-1273" srcset="/wp-content/uploads/2018/05/word-image-1157.png 651w, /wp-content/uploads/2018/05/word-image-1157-300x29.png 300w" sizes="(max-width: 651px) 100vw, 651px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="874" height="61" src="/wp-content/uploads/2018/05/word-image-1158.png" class="wp-image-1274" srcset="/wp-content/uploads/2018/05/word-image-1158.png 874w, /wp-content/uploads/2018/05/word-image-1158-300x21.png 300w, /wp-content/uploads/2018/05/word-image-1158-768x54.png 768w" sizes="(max-width: 874px) 100vw, 874px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="834" height="214" src="/wp-content/uploads/2018/05/word-image-1159.png" class="wp-image-1275" srcset="/wp-content/uploads/2018/05/word-image-1159.png 834w, /wp-content/uploads/2018/05/word-image-1159-300x77.png 300w, /wp-content/uploads/2018/05/word-image-1159-768x197.png 768w" sizes="(max-width: 834px) 100vw, 834px" />
</p>
<p>
  测试2
</p>
<p>
  <img loading="lazy" decoding="async" width="961" height="278" src="/wp-content/uploads/2018/05/word-image-1160.png" class="wp-image-1276" srcset="/wp-content/uploads/2018/05/word-image-1160.png 961w, /wp-content/uploads/2018/05/word-image-1160-300x87.png 300w, /wp-content/uploads/2018/05/word-image-1160-768x222.png 768w" sizes="(max-width: 961px) 100vw, 961px" />
</p>
<h3>删除视图数据</h3>
<p>
  第一种：视图的数据来源于多个表
</p>
<p>
  <img loading="lazy" decoding="async" width="755" height="251" src="/wp-content/uploads/2018/05/word-image-1161.png" class="wp-image-1277" srcset="/wp-content/uploads/2018/05/word-image-1161.png 755w, /wp-content/uploads/2018/05/word-image-1161-300x100.png 300w" sizes="(max-width: 755px) 100vw, 755px" />
</p>
<p>
  第二种：视图的数据来源于一个表
</p>
<p>
  <img loading="lazy" decoding="async" width="896" height="269" src="/wp-content/uploads/2018/05/word-image-1162.png" class="wp-image-1278" srcset="/wp-content/uploads/2018/05/word-image-1162.png 896w, /wp-content/uploads/2018/05/word-image-1162-300x90.png 300w, /wp-content/uploads/2018/05/word-image-1162-768x231.png 768w" sizes="(max-width: 896px) 100vw, 896px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="792" height="191" src="/wp-content/uploads/2018/05/word-image-1163.png" class="wp-image-1279" srcset="/wp-content/uploads/2018/05/word-image-1163.png 792w, /wp-content/uploads/2018/05/word-image-1163-300x72.png 300w, /wp-content/uploads/2018/05/word-image-1163-768x185.png 768w" sizes="(max-width: 792px) 100vw, 792px" />
</p>
<h3>修改视图数据</h3>
<p>
  视图 数据的修改和表修改一样的用法都是使用update，视图数据的修改成功后，相应数据表中的数据也会发生改变
</p>
<p>
  <img loading="lazy" decoding="async" width="767" height="255" src="/wp-content/uploads/2018/05/word-image-1164.png" class="wp-image-1280" srcset="/wp-content/uploads/2018/05/word-image-1164.png 767w, /wp-content/uploads/2018/05/word-image-1164-300x100.png 300w" sizes="(max-width: 767px) 100vw, 767px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="879" height="185" src="/wp-content/uploads/2018/05/word-image-1165.png" class="wp-image-1281" srcset="/wp-content/uploads/2018/05/word-image-1165.png 879w, /wp-content/uploads/2018/05/word-image-1165-300x63.png 300w, /wp-content/uploads/2018/05/word-image-1165-768x162.png 768w" sizes="(max-width: 879px) 100vw, 879px" />
</p>
<p>
  查询视图
</p>
<p>
  和普通的表查询一样
</p>
<h2>视图的作用和好处</h2>
<p>
  视图的数据都是存在真实的表中的，但是视图的结构可以自己定义（select查询结果的结构）
</p>
<p>
  当一些敏感数据不想被用户看到，但是该表中还有些数据用户还必须使用
</p>
<p>
  我们就可以用视图来解决这个问题
</p>
<p>
  比如下边的一些敏感数据 年龄，性别我们都可以用视图来把这些信息不显示（只需要用select语句不选这两个字段），用户只需要有权限查询我们创建的视图就可以了
</p>
<table>
<tr>
<td>
<p>
  Id
</p>
</td>
<td>
<p>
  Name
</p>
</td>
<td>
<p>
  Age
</p>
</td>
<td>
<p>
  sex
</p>
</td>
</tr>
<tr>
<td>
<p>
  1
</p>
</td>
<td>
<p>
  林志玲
</p>
</td>
<td>
<p>
  67
</p>
</td>
<td>
<p>
  男
</p>
</td>
</tr>
<tr>
<td>
<p>
  2
</p>
</td>
<td>
<p>
  赵薇
</p>
</td>
<td>
<p>
  58
</p>
</td>
<td>
<p>
  男
</p>
</td>
</tr>
</table>
<p>
  我们可以把一些复杂的sql语句的结果做成视图
</p>
<p>
  	四表联查
</p>
<p>
  		班级名，学生名，课程名, 成绩
</p>
<p>
  	我们可以把四表联查的sql结果做成视图，每次我们需要查看这种数据的时候直接
</p>
<p>
  Select * from 视图;就可以了，而不用每次都写一个四表连接的sql
</p>
<p>
  如果一个表数据量太大有200万条，查询的速度慢
</p>
<p>
  我们可以把200条分别做成视图
</p>
<p>
  1-10万条是一个视图  （id从1&#8212;10万）
</p>
<p>
  10-20万条是一个视图	   （id从10万到20万）
</p>
<p>
  ……………
</p>
<p>
  我们查询前先判断id是哪个范围，再根据范围查找相应视图
</p>
<p>
  查询的效率就大大的提高了  这种做法就是把表横向切割&#8212;-分表
</p>
<h1>事务</h1>
<h2>什么是事务</h2>
<p>
  你向银行存钱 ，钱已经存入银行了，这是该把你的存钱记录存入电脑了，但是停电了
</p>
<p>
  	你的钱少了，但是钱没在银行提现
</p>
<p>
  你去银行取钱，钱取出来了，该从你的账户扣钱，这是又停电了，
</p>
<p>
  	你拿到钱了，银行账户余额没少
</p>
<p>
  在多条sql的时候，如果有一条不成功，那么所有的sql执行失效&#8212;事务
</p>
<h2>事务的执行流程</h2>
<p>
  开启事务   begin  /start transcation
</p>
<p>
  执行sql
</p>
<p>
  提交事务（所有sql执行成功） commit
</p>
<p>
  回滚  (有一条sql执行失败就回滚)  rollback
</p>
<p>
  注意;再开启事务后，没有提交事务，或是回滚都是没有效果的
</p>
<p>
  <img loading="lazy" decoding="async" width="961" height="301" src="/wp-content/uploads/2018/05/word-image-1166.png" class="wp-image-1282" srcset="/wp-content/uploads/2018/05/word-image-1166.png 961w, /wp-content/uploads/2018/05/word-image-1166-300x94.png 300w, /wp-content/uploads/2018/05/word-image-1166-768x241.png 768w" sizes="(max-width: 961px) 100vw, 961px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="969" height="236" src="/wp-content/uploads/2018/05/word-image-1167.png" class="wp-image-1283" srcset="/wp-content/uploads/2018/05/word-image-1167.png 969w, /wp-content/uploads/2018/05/word-image-1167-300x73.png 300w, /wp-content/uploads/2018/05/word-image-1167-768x187.png 768w" sizes="(max-width: 969px) 100vw, 969px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="745" height="276" src="/wp-content/uploads/2018/05/word-image-1168.png" class="wp-image-1284" srcset="/wp-content/uploads/2018/05/word-image-1168.png 745w, /wp-content/uploads/2018/05/word-image-1168-300x111.png 300w" sizes="(max-width: 745px) 100vw, 745px" />
</p>
<p>
  测试2
</p>
<p>
  事务执行没有完成的时候，数据表的数据没有任何变化
</p>
<p>
  <img loading="lazy" decoding="async" width="868" height="244" src="/wp-content/uploads/2018/05/word-image-1169.png" class="wp-image-1285" srcset="/wp-content/uploads/2018/05/word-image-1169.png 868w, /wp-content/uploads/2018/05/word-image-1169-300x84.png 300w, /wp-content/uploads/2018/05/word-image-1169-768x216.png 768w" sizes="(max-width: 868px) 100vw, 868px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="743" height="306" src="/wp-content/uploads/2018/05/word-image-1170.png" class="wp-image-1286" srcset="/wp-content/uploads/2018/05/word-image-1170.png 743w, /wp-content/uploads/2018/05/word-image-1170-300x124.png 300w" sizes="(max-width: 743px) 100vw, 743px" />
</p>
<p>
  	提交事务后，数据表中的数据会永久性的改变
</p>
<p>
  <img loading="lazy" decoding="async" width="638" height="62" src="/wp-content/uploads/2018/05/word-image-1171.png" class="wp-image-1287" srcset="/wp-content/uploads/2018/05/word-image-1171.png 638w, /wp-content/uploads/2018/05/word-image-1171-300x29.png 300w" sizes="(max-width: 638px) 100vw, 638px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="808" height="345" src="/wp-content/uploads/2018/05/word-image-1172.png" class="wp-image-1288" srcset="/wp-content/uploads/2018/05/word-image-1172.png 808w, /wp-content/uploads/2018/05/word-image-1172-300x128.png 300w, /wp-content/uploads/2018/05/word-image-1172-768x328.png 768w" sizes="(max-width: 808px) 100vw, 808px" />
</p>
<h2>事务基本原理图</h2>
<p>
  <img loading="lazy" decoding="async" width="1328" height="552" src="/wp-content/uploads/2018/05/word-image-1173.png" class="wp-image-1289" srcset="/wp-content/uploads/2018/05/word-image-1173.png 1328w, /wp-content/uploads/2018/05/word-image-1173-300x125.png 300w, /wp-content/uploads/2018/05/word-image-1173-768x319.png 768w, /wp-content/uploads/2018/05/word-image-1173-1024x426.png 1024w" sizes="(max-width: 1328px) 100vw, 1328px" />
</p>
<h2>事务的特点（acid）</h2>
<ul>
<li>
    原子性（Atomicity）
  </li>
</ul>
<p>
  事务里边的所有sql语句是一个整体，不可分割，要么全部执行成功，要么全部执行失败
</p>
<ul>
<li>
    一致性（consistency）
  </li>
</ul>
<p>
  事务执行过后，没有用户访问到的数据都是一样的
</p>
<p>
  <img loading="lazy" decoding="async" width="1045" height="476" src="/wp-content/uploads/2018/05/word-image-1174.png" class="wp-image-1290" srcset="/wp-content/uploads/2018/05/word-image-1174.png 1045w, /wp-content/uploads/2018/05/word-image-1174-300x137.png 300w, /wp-content/uploads/2018/05/word-image-1174-768x350.png 768w, /wp-content/uploads/2018/05/word-image-1174-1024x466.png 1024w" sizes="(max-width: 1045px) 100vw, 1045px" />
</p>
<ul>
<li>
    隔离性（Isolation）
  </li>
</ul>
<p>
  事务与事务之间没有影响各自执行自己的命令
</p>
<p>
  当前事务一开启执行后，开启事务2，操的数据如果一样比如是同一行数据，那么事务2会等待事务1结束以后再执行，开启事务1以后，操作的这行数据就会被‘锁’起来，其他的命令不能操作
</p>
<p>
  <img loading="lazy" decoding="async" width="1431" height="180" src="/wp-content/uploads/2018/05/word-image-1175.png" class="wp-image-1291" srcset="/wp-content/uploads/2018/05/word-image-1175.png 1431w, /wp-content/uploads/2018/05/word-image-1175-300x38.png 300w, /wp-content/uploads/2018/05/word-image-1175-768x97.png 768w, /wp-content/uploads/2018/05/word-image-1175-1024x129.png 1024w" sizes="(max-width: 1431px) 100vw, 1431px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="831" height="144" src="/wp-content/uploads/2018/05/word-image-1176.png" class="wp-image-1292" srcset="/wp-content/uploads/2018/05/word-image-1176.png 831w, /wp-content/uploads/2018/05/word-image-1176-300x52.png 300w, /wp-content/uploads/2018/05/word-image-1176-768x133.png 768w" sizes="(max-width: 831px) 100vw, 831px" />
</p>
<ul>
<li>
    永久性（Durability）
  </li>
</ul>
<p>
  事务结束以后，对表的影响是永久有效的
</p>
<h1>Mysql编程</h1>
<h2>系统函数(了解)</h2>
<ul>
<li>
    字符串函数，比如：char_length(), concat(), instr(), lcase(), left(), ltrim(), mid()
  </li>
<li>
    时间函数，比如：now(), cordate(), curtime(), datediff(), date_add()
  </li>
<li>
    数学函数，比如：abs(), ceiling(), floor(), pow(), rand(), round()
  </li>
<li>
    其他函数，比如：md5(), version(), datebase(), UUID()
  </li>
</ul>
<p>
  系统函数就是mysql系统自己定义的函数，我们只需要调用就可以了
</p>
<p>
  <img loading="lazy" decoding="async" width="981" height="153" src="/wp-content/uploads/2018/05/word-image-1177.png" class="wp-image-1293" srcset="/wp-content/uploads/2018/05/word-image-1177.png 981w, /wp-content/uploads/2018/05/word-image-1177-300x47.png 300w, /wp-content/uploads/2018/05/word-image-1177-768x120.png 768w" sizes="(max-width: 981px) 100vw, 981px" />
</p>
<h2>存储函数</h2>
<p>
  就是自己定义函数，必须返回一个单独的值，存储函数里边不能有结果集显示不能有select show 等命令
</p>
<h3>创建存储函数</h3>
<p>
  创建语法：
</p>
<p>
  	create function 函数名(参数1 类型1,参数2 类型2&#8230;..) returns 返回值类型
</p>
<p>
  begin
</p>
<p>
  	&#8230;..
</p>
<p>
  end;
</p>
<p>
  其中begin和end 就是开始和结束的标识 可以理解成PHP的 {  }
</p>
<p>
  <img loading="lazy" decoding="async" width="1030" height="134" src="/wp-content/uploads/2018/05/word-image-1178.png" class="wp-image-1294" srcset="/wp-content/uploads/2018/05/word-image-1178.png 1030w, /wp-content/uploads/2018/05/word-image-1178-300x39.png 300w, /wp-content/uploads/2018/05/word-image-1178-768x100.png 768w, /wp-content/uploads/2018/05/word-image-1178-1024x133.png 1024w" sizes="(max-width: 1030px) 100vw, 1030px" />
</p>
<p>
  解决：修改sql代码执行结束符
</p>
<p>
  	命令：delimiter  新的结束符
</p>
<p>
  <img loading="lazy" decoding="async" width="564" height="64" src="/wp-content/uploads/2018/05/word-image-1179.png" class="wp-image-1295" srcset="/wp-content/uploads/2018/05/word-image-1179.png 564w, /wp-content/uploads/2018/05/word-image-1179-300x34.png 300w" sizes="(max-width: 564px) 100vw, 564px" />
</p>
<p>
  声明存储函数
</p>
<p>
  <img loading="lazy" decoding="async" width="769" height="150" src="/wp-content/uploads/2018/05/word-image-1180.png" class="wp-image-1296" srcset="/wp-content/uploads/2018/05/word-image-1180.png 769w, /wp-content/uploads/2018/05/word-image-1180-300x59.png 300w, /wp-content/uploads/2018/05/word-image-1180-768x150.png 768w" sizes="(max-width: 769px) 100vw, 769px" />
</p>
<p>
  查看存储函数状态；
</p>
<p>
  Show function status;
</p>
<p>
  <img loading="lazy" decoding="async" width="976" height="216" src="/wp-content/uploads/2018/05/word-image-1181.png" class="wp-image-1297" srcset="/wp-content/uploads/2018/05/word-image-1181.png 976w, /wp-content/uploads/2018/05/word-image-1181-300x66.png 300w, /wp-content/uploads/2018/05/word-image-1181-768x170.png 768w" sizes="(max-width: 976px) 100vw, 976px" />
</p>
<p>
  存储函数是属于某一个数据库的只能在当前这个数据库中使用
</p>
<h3>调用存储函数</h3>
<p>
  一般存储函数的调用和select 连用
</p>
<p>
  其实和系统函数的使用没有差别，都是函数的调用
</p>
<p>
  <img loading="lazy" decoding="async" width="566" height="135" src="/wp-content/uploads/2018/05/word-image-1182.png" class="wp-image-1298" srcset="/wp-content/uploads/2018/05/word-image-1182.png 566w, /wp-content/uploads/2018/05/word-image-1182-300x72.png 300w" sizes="(max-width: 566px) 100vw, 566px" />
</p>
<p>
  扩展，如果传入的参数类型不是int会怎么样？
</p>
<p>
  <img loading="lazy" decoding="async" width="856" height="76" src="/wp-content/uploads/2018/05/word-image-1183.png" class="wp-image-1299" srcset="/wp-content/uploads/2018/05/word-image-1183.png 856w, /wp-content/uploads/2018/05/word-image-1183-300x27.png 300w, /wp-content/uploads/2018/05/word-image-1183-768x68.png 768w" sizes="(max-width: 856px) 100vw, 856px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="915" height="197" src="/wp-content/uploads/2018/05/word-image-1184.png" class="wp-image-1300" srcset="/wp-content/uploads/2018/05/word-image-1184.png 915w, /wp-content/uploads/2018/05/word-image-1184-300x65.png 300w, /wp-content/uploads/2018/05/word-image-1184-768x165.png 768w" sizes="(max-width: 915px) 100vw, 915px" />
</p>
<h3>删除存储函数</h3>
<p>
  drop function 函数名;
</p>
<p>
  <img loading="lazy" decoding="async" width="840" height="76" src="/wp-content/uploads/2018/05/word-image-1185.png" class="wp-image-1301" srcset="/wp-content/uploads/2018/05/word-image-1185.png 840w, /wp-content/uploads/2018/05/word-image-1185-300x27.png 300w, /wp-content/uploads/2018/05/word-image-1185-768x69.png 768w" sizes="(max-width: 840px) 100vw, 840px" />
</p>
<p>
  总结：存储函数就是一个普通的有返回值的函数，这里返回值必须是一个单独的数据
</p>
<p>
  		存储函数里边不能使用select show等命令因为，select show 返回的是一个结果集
</p>
<h2>变量</h2>
<h3>系统变量</h3>
<p>
  查看系统变量
</p>
<p>
  Show variables;
</p>
<p>
  Autocommit  自动事务的提交，默认自动事务的提交会开启的
</p>
<p>
  自动事务的开启  set atuocommit=1;
</p>
<p>
  关闭   set  autocommit=0;
</p>
<p>
  <img loading="lazy" decoding="async" width="862" height="233" src="/wp-content/uploads/2018/05/word-image-1186.png" class="wp-image-1302" srcset="/wp-content/uploads/2018/05/word-image-1186.png 862w, /wp-content/uploads/2018/05/word-image-1186-300x81.png 300w, /wp-content/uploads/2018/05/word-image-1186-768x208.png 768w" sizes="(max-width: 862px) 100vw, 862px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="1444" height="268" src="/wp-content/uploads/2018/05/word-image-1187.png" class="wp-image-1303" srcset="/wp-content/uploads/2018/05/word-image-1187.png 1444w, /wp-content/uploads/2018/05/word-image-1187-300x56.png 300w, /wp-content/uploads/2018/05/word-image-1187-768x143.png 768w, /wp-content/uploads/2018/05/word-image-1187-1024x190.png 1024w" sizes="(max-width: 1444px) 100vw, 1444px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="1503" height="361" src="/wp-content/uploads/2018/05/word-image-1188.png" class="wp-image-1304" srcset="/wp-content/uploads/2018/05/word-image-1188.png 1503w, /wp-content/uploads/2018/05/word-image-1188-300x72.png 300w, /wp-content/uploads/2018/05/word-image-1188-768x184.png 768w, /wp-content/uploads/2018/05/word-image-1188-1024x246.png 1024w" sizes="(max-width: 1503px) 100vw, 1503px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="1638" height="334" src="/wp-content/uploads/2018/05/word-image-1189.png" class="wp-image-1305" srcset="/wp-content/uploads/2018/05/word-image-1189.png 1638w, /wp-content/uploads/2018/05/word-image-1189-300x61.png 300w, /wp-content/uploads/2018/05/word-image-1189-768x157.png 768w, /wp-content/uploads/2018/05/word-image-1189-1024x209.png 1024w" sizes="(max-width: 1638px) 100vw, 1638px" />
</p>
<h3>局部变量</h3>
<p>
  用declare声明的变量
</p>
<p>
  声明格式是如下
</p>
<p>
  	Declare 变量名 类型  default 默认值；
</p>
<p>
  局部变量一般使用在函数的begin  end中间，应该先声明再使用；
</p>
<h3>会话变量</h3>
<p>
  就是在一次数据库连接中都生效的变量
</p>
<p>
  声明方式是：set  @变量名=值；
</p>
<p>
  <img loading="lazy" decoding="async" width="1052" height="220" src="/wp-content/uploads/2018/05/word-image-1190.png" class="wp-image-1306" srcset="/wp-content/uploads/2018/05/word-image-1190.png 1052w, /wp-content/uploads/2018/05/word-image-1190-300x63.png 300w, /wp-content/uploads/2018/05/word-image-1190-768x161.png 768w, /wp-content/uploads/2018/05/word-image-1190-1024x214.png 1024w" sizes="(max-width: 1052px) 100vw, 1052px" />
</p>
<h2>流程控制</h2>
<h3>If分支</h3>
<p>
  if 条件 then
</p>
<p>
  	//代码
</p>
<p>
  elseif 条件 then
</p>
<p>
  	//代码
</p>
<p>
  else
</p>
<p>
  	//代码
</p>
<p>
  end if;
</p>
<p>
  做一个判断学生成绩的函数，如果分数超过80为优秀，超过60为及格 ，低于60不及格
</p>
<p>
  <img loading="lazy" decoding="async" width="1000" height="272" src="/wp-content/uploads/2018/05/word-image-1191.png" class="wp-image-1307" srcset="/wp-content/uploads/2018/05/word-image-1191.png 1000w, /wp-content/uploads/2018/05/word-image-1191-300x82.png 300w, /wp-content/uploads/2018/05/word-image-1191-768x209.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="819" height="433" src="/wp-content/uploads/2018/05/word-image-1192.png" class="wp-image-1308" srcset="/wp-content/uploads/2018/05/word-image-1192.png 819w, /wp-content/uploads/2018/05/word-image-1192-300x159.png 300w, /wp-content/uploads/2018/05/word-image-1192-768x406.png 768w" sizes="(max-width: 819px) 100vw, 819px" />
</p>
<h3>While循环</h3>
<p>
  while 条件 do
</p>
<p>
  	//代码
</p>
<p>
  end while;
</p>
<p>
  案例，求一个数的阶乘
</p>
<p>
  <img loading="lazy" decoding="async" width="911" height="209" src="/wp-content/uploads/2018/05/word-image-1193.png" class="wp-image-1309" srcset="/wp-content/uploads/2018/05/word-image-1193.png 911w, /wp-content/uploads/2018/05/word-image-1193-300x69.png 300w, /wp-content/uploads/2018/05/word-image-1193-768x176.png 768w" sizes="(max-width: 911px) 100vw, 911px" />
</p>
<p>
  <img loading="lazy" decoding="async" width="741" height="138" src="/wp-content/uploads/2018/05/word-image-1194.png" class="wp-image-1310" srcset="/wp-content/uploads/2018/05/word-image-1194.png 741w, /wp-content/uploads/2018/05/word-image-1194-300x56.png 300w" sizes="(max-width: 741px) 100vw, 741px" />
</p>
<h2>Mysql注释</h2>
<h3>第一种</h3>
<p>
  	&#8212; 注释  注&#8211;后有一个空格
</p>
<h3>第二种</h3>
<p>
  	# 注释  注#后有一个空格
</p>
<h3>第三种</h3>
<p>
  	/*
</p>
<p>
  	 多行注释
</p>
<p>
  	 */
</p>
<h2>存储过程</h2>
<p>
  什么是存储过程：说白了，存储过程也是一个mysql自定义函数，要求没有return返回值
</p>
<p>
  也就没有返回值的MySQL自定义函数，一般用于处理大型的业务逻辑，存储过程的代码只解析一次，
</p>
<p>
  存储过程也是只属于某一个数据库的
</p>
<h3>创建存储过程</h3>
<p>
  语法：
</p>
<p>
  Create procedure 名字 ([形参修饰符] 参数1 参数类型,[形参修饰符] 参数2,参数类型….)
</p>
<p>
  Begin
</p>
<p>
  End;
</p>
<p>
  <img loading="lazy" decoding="async" width="951" height="234" src="/wp-content/uploads/2018/05/word-image-1195.png" class="wp-image-1311" srcset="/wp-content/uploads/2018/05/word-image-1195.png 951w, /wp-content/uploads/2018/05/word-image-1195-300x74.png 300w, /wp-content/uploads/2018/05/word-image-1195-768x189.png 768w" sizes="(max-width: 951px) 100vw, 951px" />
</p>
<h3>调用存储过程</h3>
<p>
  存储过程的调用和存储函数的调用不同，存储函数不是单独调用的，可以和其他存储函数一块调用
</p>
<p>
  <img loading="lazy" decoding="async" width="806" height="179" src="/wp-content/uploads/2018/05/word-image-1196.png" class="wp-image-1312" srcset="/wp-content/uploads/2018/05/word-image-1196.png 806w, /wp-content/uploads/2018/05/word-image-1196-300x67.png 300w, /wp-content/uploads/2018/05/word-image-1196-768x171.png 768w" sizes="(max-width: 806px) 100vw, 806px" />
</p>
<h3>存储过程调用</h3>
<p>
  存储过程是单独调用的用到了call关键字
</p>
<p>
  用法:call 存储过程名字(参数列表);
</p>
<p>
  <img loading="lazy" decoding="async" width="729" height="153" src="/wp-content/uploads/2018/05/word-image-1197.png" class="wp-image-1313" srcset="/wp-content/uploads/2018/05/word-image-1197.png 729w, /wp-content/uploads/2018/05/word-image-1197-300x63.png 300w" sizes="(max-width: 729px) 100vw, 729px" />
</p>
<h3>查看存储过程</h3>
<p>
  Show  procedure  status;
</p>
<p>
  <img loading="lazy" decoding="async" width="976" height="171" src="/wp-content/uploads/2018/05/word-image-1198.png" class="wp-image-1314" srcset="/wp-content/uploads/2018/05/word-image-1198.png 976w, /wp-content/uploads/2018/05/word-image-1198-300x53.png 300w, /wp-content/uploads/2018/05/word-image-1198-768x135.png 768w" sizes="(max-width: 976px) 100vw, 976px" />
</p>
<h3>删除存储过程</h3>
<p>
  Drop  procedure 存储过程的名字
</p>
<p>
  <img loading="lazy" decoding="async" width="650" height="86" src="/wp-content/uploads/2018/05/word-image-1199.png" class="wp-image-1315" srcset="/wp-content/uploads/2018/05/word-image-1199.png 650w, /wp-content/uploads/2018/05/word-image-1199-300x40.png 300w" sizes="(max-width: 650px) 100vw, 650px" />
</p>
<h3>存储过程的形参修饰符in,out,inout</h3>
<p>
  形参修饰符放在参数前边，类型放在参数后边
</p>
<p>
  In
</p>
<p>
  	参数的值可以传入，但是存储过程不能修改这个值
</p>
<p>
  Out
</p>
<p>
  	不能传入值，能在内部修改变量的值，外部也生效
</p>
<p>
  Inout
</p>
<p>
  	能传入值，并且可以修改标量的值，并且外部也生效
</p>
<p>
  思考：存储函数和存储过程的区别
</p>
<h2>触发器</h2>
<h3>触发器概念</h3>
<h4>触发器的基本概念</h4>
<p>
  类似js中的点击事件，当我们点击了一个连接会自动的跳出一个窗口
</p>
<p>
  触发器是在操作数据的时候，比如删除(增加，更新)了某个表的数据的时候，自动调用的自定义函数
</p>
<h4>触发器的作用好处</h4>
<p>
  首先可以安全验证，&#8212;增加数据的时候，进行数据的安全验证
</p>
<p>
  	不用手动调用，&#8212;如果一件商品下架了，那么订单中就不要出现这个商品了，触发器可以自动的删除订单中的商品
</p>
<h3>创建触发器</h3>
<p>
  创建触发器基本语法
</p>
<p>
  create trigger 名称 after|before 事件 on 表名  for each row
</p>
<p>
  begin
</p>
<p>
  #SQL语句
</p>
<p>
  end //
</p>
<p>
  定义一个触发器，当删除商品的时候，自动的把订单中用相关商品的记录删除（自动）
</p>
<p>
  <img loading="lazy" decoding="async" width="822" height="82" src="/wp-content/uploads/2018/05/word-image-1200.png" class="wp-image-1316" srcset="/wp-content/uploads/2018/05/word-image-1200.png 822w, /wp-content/uploads/2018/05/word-image-1200-300x30.png 300w, /wp-content/uploads/2018/05/word-image-1200-768x77.png 768w" sizes="(max-width: 822px) 100vw, 822px" />
</p>
<p>
  触发事件  触发 触发器自动调用
</p>
<p>
  <img loading="lazy" decoding="async" width="973" height="49" src="/wp-content/uploads/2018/05/word-image-1201.png" class="wp-image-1317" srcset="/wp-content/uploads/2018/05/word-image-1201.png 973w, /wp-content/uploads/2018/05/word-image-1201-300x15.png 300w, /wp-content/uploads/2018/05/word-image-1201-768x39.png 768w" sizes="(max-width: 973px) 100vw, 973px" />
</p>
<p>
  删除商品信息后，再次查看订单表信息
</p>
<p>
  <img loading="lazy" decoding="async" width="782" height="50" src="/wp-content/uploads/2018/05/word-image-1202.png" class="wp-image-1318" srcset="/wp-content/uploads/2018/05/word-image-1202.png 782w, /wp-content/uploads/2018/05/word-image-1202-300x19.png 300w, /wp-content/uploads/2018/05/word-image-1202-768x49.png 768w" sizes="(max-width: 782px) 100vw, 782px" />
</p>
</p>
<p>
  触发时机关键字：before, after
</p>
<p>
  触发事件关键字：insert, delete, update
</p>
<p>
  触发器一共有
</p>
<p>
  	6中before insert，before delete，before update，after insert ,after delete,after update;
</p>
<p>
  注意触发器不能有冲突
</p>
<p>
  <img loading="lazy" decoding="async" width="1053" height="119" src="/wp-content/uploads/2018/05/word-image-1203.png" class="wp-image-1319" srcset="/wp-content/uploads/2018/05/word-image-1203.png 1053w, /wp-content/uploads/2018/05/word-image-1203-300x34.png 300w, /wp-content/uploads/2018/05/word-image-1203-768x87.png 768w, /wp-content/uploads/2018/05/word-image-1203-1024x116.png 1024w" sizes="(max-width: 1053px) 100vw, 1053px" />
</p>
<h3>触发器的应用</h3>
<h4>触发器中的关键字：new</h4>
<p>
  	New新添加的记录信息
</p>
<p>
  	Before  Delete
</p>
<p>
  	After  delete
</p>
<p>
  	两个都没有new关键字
</p>
<h4>触发器中的关键字：old</h4>
<p>
  	Old代表老的信息记录
</p>
<p>
  	Before insert 这个触发器有old吗？ 没有</p>
]]></content:encoded>
					
					<wfw:commentRss>/%e6%95%b0%e6%8d%ae%e5%ba%93/mysql/1249.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
