http://blog.csdn.net/lutianfeiml/article/details/51372859
数据库简介
什么是数据库
- 数据库就是一个文件系统,但是访问的时候需要使用标准SQL语句来访问数据。
关系型数据库
ER模型图
常见的数据库
- Oracle : 甲骨文公司的数据库产品,大型的收费的数据库。
- SQLServer : 微软公司的数据库产品,中型的收费的数据库。
- MySQL : 是开源的,免费的数据库产品。在5.x版本是免费的,6.x是收费的。
- DB2 : IBM公司的数据库产品,大型的收费的数据库。
- SyBASE : 已退出了历史舞台,PowerDigener(数据库建模工具)
MySQL数据库
MySQL的简介
MySQL完全卸载
- 找到MySQL的安装路径,找到my.ini的配置文件。
- basedir=”C:/Program Files (x86)/MySQL/MySQL Server 5.5/” 安装的路径(删除)
- datadir=”C:/ProgramData/MySQL/MySQL Server 5.5/Data/” MySQL存储数据的路径(删除)
- 通过控制面板卸载MySQL
- 找到上面的两个路径,删除。
MySQL 安装与配置
注:
- 安装路径不要有中文。
- MySQL默认端口是3306,不要修改。
- 设置MySQL的编码集(采用UTF-8的编码)
- 要把Include Bin Directory in Windows PATH勾选上。
- 设置用户名的密码:两行都是密码,第一行是密码,第二行是确认密码。
访问:
- cmd > 输入命令 mysql -u root -p 回车
- 输入密码 回车
密码重置
MySQL数据库服务器、数据库和表关系
- 所谓安装数据库服务器,只是在机器上装了一个数据库管理程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
- 为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体的数据。
- 数据库服务器、数据库和表的关系如图所示:
- 1、Java是使用对象封装数据,例如程序产生了如上所示2个user对象,这些对象的数据要想保存到数据库中,需要在数据库中创建与之对应的表,一个user对象中封装的数据,要保存到数据库中,一般就要在数据库中创建一个与之对应的表。
- 2、对象的属性定义为表头,对象的数据对应于表中的一条记录。
- 3、每个对象对应于表中的一条记录。
数据在数据库中的存储方式
SQL语句(重点)
SQL的简介
- SQL:Structured Query Language, 结构化查询语言
- 特点:非过程性语言
过程性语言
:当前的这条语句执行需要依赖于上一条或几条语句非过程性语言
:写一条语句,就会执行一个结果。
- 为加强SQL的语言能力,各厂商增强了过程性语言的特征
- 如Oracle的PL/SQL 过程性处理能力
- SQL Server、Sybase的T-SQL
- SQL是用来存取关系数据库的语言,具有查询、操纵、定义和控制关系型数据库的四方面功能
SQL语言分类
DDL
(数据定义语言)
- 数据定义语言 - Data Definition Language
- 用来定义数据库的
对象
,如数据表、视图、索引等
DML
(数据操纵语言)(重点)
- 数据处理语言 - Data Manipulation Language
- 在数据库表中更新,增加和删除记录
- 如 update, insert, delete
DCL
(数据控制语言)
- 数据控制语言 – Data Control Language
- 指用于设置用户权限和控制事务语句
- 如grant,revoke,if…else,while,begin transaction
DQL
(数据查询语言)(重点)
- 数据查询语言 – Data Query Language
- select
数据库(CURD – 增删改查)
创建数据库
- 语法:
- create database 数据名称;
- create database 数据库名称 character set 编码 collate 校对规则;
- 校对规则:和编码是成对出现的
<code class="hljs sql has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">CREATE</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">TABLE</span> table_name( field1 datatype, field2 datatype, field3 datatype,)<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">character</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">set</span> 字符集 <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">collate</span> 校对规则</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li></ul>
- field:指定列名
datatype:指定列类型
练习
- 创建一个名称为mydb1的数据库。
- 创建一个使用utf8字符集的mydb2数据库。
- create database mydb2 character set ‘utf8’;
- 创建一个使用utf8字符集,并带校对规则的mydb3数据库。
- create database mydb3 character set ‘utf8’ collate ‘utf8_bin’;
查看、删除数据库
修改数据库
其他的操作
- 切换数据库 : use db_name;
- 查看当前使用的数据库 : select database();
数据表(CURD–增删改查)
创建表
<code class="hljs sql has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"> <span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">create</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">table</span> 表名( 字段<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> 类型(长度) 约束, 字段<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> 类型(长度) 约束, 字段<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span> 类型(长度) 约束, 字段<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span> 类型(长度) 约束 );</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li></ul>
- 注意:
- 表名小括号,后面要有分号。
- 每一行字段后面要有逗号,但是最后一行没有逗号。
- 数据的类型后面有长度,如果是字符串类型,长度必须加。如果其他类型可以不加。默认长度。int 默认长度11
MySQL常用数据类型
字符串型
- VARCHAR、CHAR
- varchar和char区别:
- varchar(经常使用) 长度是可变的。 name varchar(8) 存入数据hello,但是如果存入helloworld报错了。
- char 长度不可变的。 name char(8) 存入的数据hello,如果不够用空格补全。
- 效率高:char效果。
大数据类型(一般不用)
- BLOB、TEXT
- BLOB:二进制文件
- TEXT:字符
数值型
- TINYINT 、SMALLINT、INT、BIGINT、FLOAT、DOUBLE
- java 中 byte short int long float double 与之相对应
逻辑性 对应boolean
日期型
- DATE、TIME、DATETIME、TIMESTAMP
- date 只包含日期
- time 只包含时分秒
- datetime和timestamp包含日期和时分秒区别:
- datetime需要手动录入时间。
- timestamp不传入数据,默认选择当前系统时间。
练习,创建员工表的练习
<code class="hljs sql has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"> <span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">create</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">table</span> employee( id <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span>, name <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">varchar</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20</span>), gender <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">varchar</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">10</span>), birthday <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">date</span>, entry_date <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">date</span>, job <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">varchar</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">100</span>), salary <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">double</span>, resume text );</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li></ul>
定义单表字段的约束
主键约束(重点)
- 主键约束
primary key
: 信息记录某个字段可以唯一区分其他信息记录,这个字段就可以是主键 (唯一 非空) auto_increment
数据库维护主键。自动增长。- primary key:不允许为空,不允许重复
- 删除主键:
alter table tablename drop primary key
; - 如果主键约束类型为 数值型 int bigint ,添加auto_increment 自动增长
唯一约束
非空约束
创建新的标签employee2,把约束加上。
<code class="hljs sql has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"> <span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">create</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">table</span> employee2( id <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">primary</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">key</span> auto_increment, name <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">varchar</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20</span>) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">unique</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">not</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">null</span>, gender <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">varchar</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">10</span>) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">not</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">null</span>, birthday <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">date</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">not</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">null</span>, entry_date <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">date</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">not</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">null</span>, job <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">varchar</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">100</span>) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">not</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">null</span>, salary <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">double</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">not</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">null</span>, resume text <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">not</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">null</span> );</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li></ul>
查看数据表结构
- desc 表名; 查看表的信息
- show tables ; 查看当前库内所有表名
- show create table 表名; 查看建表语句和字符集
删除表
修改表
数据–CRUD语句
添加数据
语法:
insert into 表名 (字段1,字段2,字段3..) values(值1,值2,值3...);
有几列就插入多少的值。insert into 表名 values(值1,值2,值3...);
插入所有的列
注意:
- 插入的数据应与字段的数据类型相同。
- 数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中。
- 在values中列出的数据位置必须与被加入的列的排列位置相对应。
字符
和日期型
数据应包含在单引号''
中。- 插入空值:不指定或insert into table values (null)
练习:
- 向user表中插入数据
<code class="hljs sql has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">insert</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">into</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">user</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">values</span> (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'xiaofeng'</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'1994-10-10'</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'2011-1-1'</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'HR'</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">19000</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'aaa'</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'abc'</span>);</span><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">insert</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">into</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">user</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">values</span> (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'美美'</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'1994-10-10'</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'2011-1-1'</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'HR'</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">19000</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'aaa'</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'abc'</span>);</span><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">insert</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">into</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">user</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">values</span> (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'小风'</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'1994-10-10'</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'2011-1-1'</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'WORKER'</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">21000</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'aaa'</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'abc'</span>);</span><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">insert</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">into</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">user</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">values</span> (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'芙蓉'</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'1994-10-10'</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'2011-1-1'</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'HR'</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1000</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'aaa'</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'abc'</span>);</span><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">insert</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">into</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">user</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">values</span> (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'班长'</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'1994-10-10'</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'2011-1-1'</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'HR'</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">100</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'aaa'</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'abc'</span>);</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li></ul>
- 注意:字符和日期要写在 单引号中
- show variables like ‘character%’;
- set character_set_results=gbk;或者 set names gbk;
解决中文乱码的问题(重点)
- 解决方案:通过修改my.ini 修改字符集编码,重启MySQL的服务
<code class="hljs ini has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 102, 102);">[client]</span><span class="hljs-setting" style="box-sizing: border-box;">port=<span class="hljs-value" style="box-sizing: border-box;"><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3306</span></span></span><span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 102, 102);">[mysql]</span><span class="hljs-setting" style="box-sizing: border-box;">default-character-set=<span class="hljs-value" style="box-sizing: border-box;">gbk</span></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>
- mysql有六处使用了字符集,分别为:client 、connection、database、results、server 、system。
- client是客户端使用的字符集。
- connection是连接数据库的字符集设置类型,如果程序没有指明连接数据库使用的字符集类型就按照服务器端默认的字符集设置。
- database是数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置。
- results是数据库给客户端返回时使用的字符集设定,如果没有指明,使用服务器默认的字符集。
- server是服务器安装时指定的默认字符集设定。
- system是数据库系统使用的字符集设定。(utf-8不可修改)
修改语句
删除数据
语法:
delete from 表名 [where];
truncate 表名;
删除所有的数据
truncate 和 delete的区别:
- truncate删除数据,先删除整个表。再创建一个新的空的表。(效率)
- delete删除数据,一条一条删除的。
- 事物(insert update delete)(后面讲)
Delete语句练习
- 删除表中名称为’班长’的记录。
- delete from user where username=’班长’;
- 删除表中所有记录。
- 使用truncate删除表中记录。
查询语句
语法:
select * from 表名;
查询所有(字段)select 字段名1,字段名2,字段名3 from 表名;
显示查询字段名select DISTINCT 字段名 from 表名;
去除重复的数据。
select 指定查询哪些列的数据。
*
号代表查询所有列。
<code class="hljs sql has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">create</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">table</span> stu( id <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">primary</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">key</span> auto_increment, name <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">varchar</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20</span>), math <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span>, english <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span>, chinese <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span>);</span><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">insert</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">into</span> stu <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">values</span>(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">null</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'班长'</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">18</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">11</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">62</span>);</span><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">insert</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">into</span> stu <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">values</span>(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">null</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'小风'</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">98</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">91</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">92</span>);</span><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">insert</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">into</span> stu <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">values</span>(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">null</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'美美'</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">68</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">81</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">52</span>);</span><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">insert</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">into</span> stu <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">values</span>(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">null</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'美女'</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">98</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">90</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">65</span>);</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li></ul>
- 练习
- 查询表中所有学生的信息。
- 查询表中所有学生的姓名和对应的英语成绩。
- select name,english from stu;
- 过滤表中重复数据。(面试题)
- select distinct english from stu;
select 语句中别名的使用
使用where条件过滤
- 在where子句中经常使用的运算符
查询姓名为班长的学生成绩
- select * from stu where name=’班长’;
查询英语成绩大于90分的同学
- select name,english from stu where english < 15;
查询总分大于200分的所有同学
- select name,math+english+chinese from stu where (math+english+chinese) > 200;
like – 模糊查询
- 写法:like ‘张_或者%’;
_
和%
区别:占位符。_
只一个%
可以有多个%
的写法 :
- like ‘%张’; 结果XXX张
- like ‘张%’; 结果张XXX
- like ‘%张%’; 只要有张就行
is null – 判断是否为null
- and – 并且
- or – 或者
not – 不成立
练习
查询英语分数在 80-90之间的同学。
select * from stu where english >80 and english <90;
- select * from stu where english between 80 and 90;
查询数学分数为18,78,46的同学。(in)
- select * from stu where math in(18,78,46);
查询所有姓班的学生成绩。
- select * from stu where name like ‘班%’;
- 查询数学分>80 或者 语文分>80的同学。
- select * from stu where math >80 or chinese > 80;
排序
- 使用
order by
升序默认的(asc
)/降序(desc
) - 出现select的语句末尾。
<code class="hljs oxygene has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">SELECT</span> column1, column2. column3.. <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">FROM</span> table; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">order</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">by</span> column <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">asc</span>|<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">desc</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>
聚集函数
聚集函数-count
<code class="hljs sql has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Select</span> <span class="hljs-aggregate" style="box-sizing: border-box;">count</span>(*)|<span class="hljs-aggregate" style="box-sizing: border-box;">count</span>(列名) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">from</span> tablename [<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">WHERE</span> where_definition] </span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>
- 练习:
- 统计一个班级共有多少学生?
- select count(*) from stu;
- 统计数学成绩大于90的学生有多少个?
- select count(*) from stu where math > 90;
- 统计总分大于150的人数有多少?
- select count(*) from stu where (math+english+chinese) > 150;
聚集函数-sum
- sum函数返回满足where条件的列的和(忽略NULL:ifnull(xxx,0)
<code class="hljs sql has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Select</span> <span class="hljs-aggregate" style="box-sizing: border-box;">sum</span>(列名){,<span class="hljs-aggregate" style="box-sizing: border-box;">sum</span>(列名)…} <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">from</span> tablename [<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">WHERE</span> where_definition] </span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>
- 统计一个班级数学总成绩?
- select sum(math) from stu;
- 统计一个班级语文、英语、数学各科的总成绩
- select sum(math),sum(english),sum(chinese) from stu;
- 统计一个班级语文、英语、数学的成绩总和
- select sum(
ifnull(math,0)
+english+chinese) from stu; - select sum(math)+sum(english)+sum(chinese) from stu;
- 统计一个班级语文成绩平均分
- select sum(chinese) / count(*) from stu;
聚集函数-AVG
AVG函数返回满足where条件的一列的平均值
练习:
- 求一个班级数学平均分?
- select avg(math) from stu;
- 求一个班级总分平均分
- select avg(ifnull(math,0)+english+chinese) from stu;
聚集函数-MAX/MIN
- max/min函数返回满足where条件的一列的最大/最小值
<code class="hljs sql has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Select</span> <span class="hljs-aggregate" style="box-sizing: border-box;">max</span>(列名) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">from</span> tablename [<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">WHERE</span> where_definition] </span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>
- max 最大值
- select max(math) from stu;
- min 最小值
- select min(math) from stu;
聚集函数-GROUP
<code class="hljs sql has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">create</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">table</span> orders( id <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span>, product <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">varchar</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20</span>), price <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">float</span>);</span><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">insert</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">into</span> orders(id,product,price) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">values</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'电视'</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">900</span>);</span><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">insert</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">into</span> orders(id,product,price) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">values</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'洗衣机'</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">100</span>);</span><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">insert</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">into</span> orders(id,product,price) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">values</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'洗衣粉'</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">90</span>);</span><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">insert</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">into</span> orders(id,product,price) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">values</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'桔子'</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>);</span><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">insert</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">into</span> orders(id,product,price) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">values</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'洗衣粉'</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">90</span>);</span><span class="hljs-operator" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">select</span> product,<span class="hljs-aggregate" style="box-sizing: border-box;">count</span>(*),<span class="hljs-aggregate" style="box-sizing: border-box;">sum</span>(price) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">from</span> orders <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">group</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">by</span> product;</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li></ul>
- 练习:查询购买了几类商品,并且每类总价大于100的商品
- select product,sum(price) from orders group by product
having
sum(price) > 100;
- select 语句总结 :
S-F-W-G-H-O 组合
- select … from … where … group by… having… order by … ;
- 顺序不能改变
备份、恢复数据库
- 备份数据库
备份命令 mysql/bin/mysqldump
将数据库SQL语句导出
- 语法:
mysqldump -u 用户名 -p 数据库名 > 磁盘SQL文件路径
例如: 备份day12数据库 — c:\day12.sql
cmd > mysqldump -u root -p day12 > c:\day12.sql 回车输入密码
恢复数据库(前提创建空的数据库,并且use)
恢复命令 mysql/bin/mysql
将sql文件导入到数据库
- 语法: mysql -u 用户名 -p 数据库名 < 磁盘SQL文件路径
- 导入SQL 必须手动创建数据库 ,SQL不会创建数据库
例如:将c:\day12.sql 导入 day12数据库
- cmd > mysql -u root -p day12 < c:\day12.sql 回车密码
补充知识:恢复SQL也可以在数据库内部执行 source c:\day12.sql
练习