1045 lines
25 KiB
Markdown
1045 lines
25 KiB
Markdown
# MYSQL基础语法
|
||
### 学习目标
|
||
1. 能够理解数据库的概念
|
||
2. 能够安装MySQL数据库
|
||
3. 能够启动,关闭及登录MySQL
|
||
4. 能够使用SQL语句操作数据库
|
||
5. 能够使用SQL语句操作表结构
|
||
6. 能够使用SQL语句进行数据的添加修改和删除的操作
|
||
7. 能够使用SQL语句简单查询数据
|
||
|
||
## 第一章 数据库的基本知识
|
||
|
||
#### 目标
|
||
|
||
1. 能够掌握数据库的概念
|
||
2. 能够说出常用的数据库
|
||
|
||
#### 讲解
|
||
|
||
##### 什么是数据库
|
||
|
||
存储数据的仓库
|
||
|
||
#### 数据的存储方式
|
||
1. **数据保存在内存**
|
||
|
||
```java
|
||
int[] arr = new int[]{1, 2, 3, 4};
|
||
ArrayList<Integer>list = new ArrayList<Integer>();
|
||
list.add(1);
|
||
list.add(2);
|
||
```
|
||
|
||
new出来的对象存储在堆中.堆是内存中的一小块空间
|
||
|
||
优点:内存速度快
|
||
缺点:断电/程序退出,数据就清除了.内存价格贵
|
||
|
||
2. **数据保存在普通文件**
|
||
优点:永久保存
|
||
缺点:查找,增加,修改,删除数据比较麻烦,效率低
|
||
|
||
3. **数据保存在数据库**
|
||
优点:永久保存,通过SQL语句比较方便的操作数据库
|
||
|
||
##### 数据库的优点
|
||
数据库是按照特定的格式将数据存储在文件中,通过SQL语句可以方便的对大量数据进行增、删、改、查操作,数据库是对大量的信息进行管理的高效的解决方案。
|
||
|
||
##### 常见数据库
|
||

|
||
**Oracle**:收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。
|
||
**MYSQL**:开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费。
|
||
**DB2** :IBM公司的数据库产品,收费的。常应用在银行系统中.
|
||
**SQLServer**:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。
|
||
**SyBase**:已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner。
|
||
**SQLite**: 嵌入式的小型数据库,应用在手机端。
|
||
|
||
**常用数据库**:**MYSQL**,**Oracle**
|
||
在web应用中,使用的最多的就是MySQL数据库,原因如下:
|
||
|
||
1. 开源、免费
|
||
2. 功能足够强大,足以应付web应用开发(最高支持千万级别的并发访问)
|
||
|
||
#### 小结
|
||
|
||
1. 说出数据库的概念:存储数据的仓库
|
||
2. 说出常用的数据库:MYSQL, Oracle
|
||
|
||
### 命令行客户端连接服务器
|
||
|
||
#### 目标
|
||
|
||
1. 能够打开和关闭mysql服务
|
||
2. 能够连接到mysql
|
||
|
||
#### 讲解
|
||
|
||
打开和关闭mysql服务
|
||

|
||

|
||
|
||
|
||

|
||
|
||
MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root账号,使用安装时设置的密码即可登录
|
||
1. 登录格式1:`mysql -u用户名 -p密码`
|
||
例如:
|
||
|
||
```sql
|
||
mysql -uroot -proot
|
||
```
|
||
|
||

|
||
后输入密码方式:
|
||
|
||
```sql
|
||
mysql -uroot -p
|
||
下一行输入密码
|
||
```
|
||
|
||

|
||
|
||
2. 登录格式2:`mysql -hip地址 -u用户名 -p密码`
|
||
例如:
|
||
|
||
```sql
|
||
mysql -h127.0.0.1 -uroot -proot
|
||
```
|
||
|
||

|
||
|
||
3. 退出MySQL:`exit`
|
||

|
||
|
||
#### 小结
|
||
|
||
1. 打开和关闭mysql服务?
|
||
2. 连接到本机的mysql?mysql -uroot -proot
|
||
3. 连接到指定主机的mysql?mysql -hip地址 -uroot -proot
|
||
|
||
|
||
|
||
### 服务器与数据库、表、记录的关系
|
||
|
||
#### 目标
|
||
|
||
能够理解mysql服务器与数据库、表、记录的关系
|
||
|
||
#### 讲解
|
||
|
||

|
||
|
||
##### 实体类与表的对应关系
|
||
|
||

|
||
|
||
#### 小结
|
||
|
||
mysql服务器与数据库、表、记录的关系?
|
||
|
||
|
||
### SQL语句的分类和语法
|
||
|
||
#### 目标
|
||
|
||
1. 能够掌握SQL的概念和作用
|
||
|
||
#### 讲解
|
||
|
||
##### 什么是SQL
|
||
结构化查询语言(**S**tructured **Q**uery **L**anguage)简称SQL。
|
||
|
||
SQL语句就是对数据库进行操作的一种语言。
|
||
|
||
##### SQL作用
|
||
通过SQL语句我们可以**方便**的操作数据库、表、数据。
|
||
SQL是数据库管理系统都需要遵循的规范。不同的数据库生产厂商都支持SQL语句,但都有特有内容。
|
||

|
||
|
||
##### SQL语句分类
|
||
1. DDL(Data Definition Language)数据定义语言
|
||
用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter等
|
||
|
||
2. DML(Data Manipulation Language)数据操作语言
|
||
用来对数据库中表的数据进行增删改。关键字:insert, delete, update等
|
||
|
||
3. DQL(Data Query Language) 数据查询语言
|
||
对数据库进行数据查询,关键字select。
|
||
|
||
4. DCL(**Data Control Language**)数据控制语言(了解)
|
||
|
||
是用来设置或更改数据库用户或角色权限的语句,这个比较少用到。
|
||
|
||
##### SQL通用语法
|
||
1. SQL语句可以单行或多行书写,以分号结尾。
|
||
|
||
2. 可使用空格和缩进来增强语句的可读性。
|
||
|
||
3. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
|
||
```sql
|
||
SELECT * FROM student;
|
||
```
|
||
|
||
4. 3种注释
|
||
单行注释: -- 注释内容
|
||
多行注释: /* 注释 */
|
||
|
||
**\#** 注释内容(mysql特有的单行注释)
|
||
#### 小结
|
||
|
||
1. SQL的作用?对数据库进行操作的语句,增删改查
|
||
2. SQL的分类?
|
||
DDL:操作数据和表
|
||
DML:对表中的记录进行增删改
|
||
DQL:对表中的记录进行查询
|
||
3. SQL的语法特点?
|
||
可以写一行,也可以写成多行,最好是以;结尾
|
||
关键字建议大写
|
||
可以任意缩进
|
||
单行注释: -- 开头 # 开头
|
||
多行注释: /* */
|
||
|
||
## 第二章 DDL操作数据库
|
||
|
||
#### 目标
|
||
|
||
能够掌握创建数据库的三种语法
|
||
|
||
#### 讲解
|
||
|
||
##### 创建数据库
|
||
|
||
1. 直接创建数据库
|
||
|
||
```sql
|
||
CREATE DATABASE 数据库名;
|
||
```
|
||
|
||
2. 判断是否存在并创建数据库
|
||
|
||
```sql
|
||
CREATE DATABASE IF NOT EXISTS 数据库名;
|
||
```
|
||
|
||
3. 创建数据库并指定字符集(编码表)
|
||
|
||
```sql
|
||
CREATE DATABASE 数据库名 character set 字符集;
|
||
```
|
||
|
||
4. 具体操作:
|
||
* 直接创建数据库db1
|
||
```sql
|
||
CREATE DATABASE db1;
|
||
```
|
||

|
||
|
||
* 判断是否存在并创建数据库db2
|
||
```sql
|
||
CREATE DATABASE IF NOT EXISTS db2;
|
||
```
|
||

|
||
|
||
* 创建数据库db3并指定字符集为gbk
|
||
```sql
|
||
CREATE DATABASE db2 CHARACTER SET gbk;
|
||
```
|
||

|
||
|
||
##### 查看数据库
|
||
1. 查看所有的数据库
|
||
```sql
|
||
SHOW DATABASES;
|
||
```
|
||

|
||
2. 查看某个数据库的定义信息
|
||
```sql
|
||
SHOW CREATE DATABASE 数据库名;
|
||
```
|
||

|
||
|
||
#### 小结
|
||
|
||
1. 创建数据库语法:CREATE DATABASE 数据库名;
|
||
2. 查看有哪些数据库:SHOW DATABASES;
|
||
|
||
### DDL修改和删除数据库
|
||
|
||
#### 目标
|
||
|
||
1. 能够修改数据库的字符集
|
||
2. 能够删除数据库
|
||
|
||
#### 讲解
|
||
|
||
##### 修改数据库字符集
|
||
|
||
```sql
|
||
ALTER 表示修改
|
||
ALTER DATABASE 数据库 default character set 新的字符集;
|
||
```
|
||
|
||
具体操作:
|
||
* 将db3数据库的字符集改成utf8
|
||
```sql
|
||
ALTER DATABASE db3 DEFAULT CHARACTER SET utf8;
|
||
```
|
||

|
||
##### 删除数据库
|
||
|
||
```sql
|
||
drop --表示删除数据库或表
|
||
DROP DATABASE 数据库名;
|
||
```
|
||
|
||
具体操作:
|
||
* 删除db2数据库
|
||
```sql
|
||
DROP DATABASE db2;
|
||
```
|
||

|
||
|
||
#### 小结
|
||
|
||
1. 修改数据库的字符集格式?alter database 数据库 character set 新的字符集;
|
||
2. 删除数据库格式?drop database 数据库名;
|
||
|
||
### DDL使用数据库
|
||
|
||
#### 目标
|
||
|
||
1. 能够掌握切换数据库语法
|
||
2. 能够查看正在使用的数据库
|
||
|
||
#### 讲解
|
||
|
||
1. 查看正在使用的数据库
|
||
|
||
```sql
|
||
select -- 查询
|
||
SELECT DATABASE();
|
||
```
|
||
|
||
2. 使用/切换数据库
|
||
|
||
```sql
|
||
USE 数据库名;
|
||
```
|
||
|
||
具体操作:
|
||
* 查看正在使用的数据库
|
||
```sql
|
||
SELECT DATABASE();
|
||
```
|
||

|
||
* 使用db1数据库
|
||
```sql
|
||
USE db1;
|
||
```
|
||

|
||
|
||
#### 小结
|
||
|
||
| DDL语句操作 | 关键字 |
|
||
| ----------- | ------------------------------------ |
|
||
| 创建 | create database 数据库名; |
|
||
| 修改 | alter database character set 字符集; |
|
||
| 查看 | show databases; |
|
||
| 删除 | drop database 数据库名; |
|
||
|
||
|
||
|
||
### DDL创建表
|
||
|
||
#### 目标
|
||
|
||
1. 能够掌握SQL创建表
|
||
|
||
#### 讲解
|
||
|
||
>**前提先使用某个数据库**(db1)
|
||
##### 创建表
|
||
```sql
|
||
CREATE TABLE 表名 (字段名1 字段类型1, 字段名2 字段类型2...);
|
||
```
|
||
|
||
建议写成如下格式:
|
||
```sql
|
||
CREATE TABLE 表名 (
|
||
字段名1 字段类型1,
|
||
字段名2 字段类型2
|
||
);
|
||
```
|
||
关键字说明:
|
||
```sql
|
||
CREATE -- 表示创建
|
||
TABLE -- 表示表
|
||
```
|
||
##### MySQL数据类型
|
||
|
||
MySQL中的我们常使用的数据类型如下:
|
||

|
||
|
||
详细的数据类型如下(不建议详细阅读!)
|
||
|
||

|
||
|
||
具体操作:
|
||
|
||
创建student表包含id,name,birthday字段
|
||
|
||
```sql
|
||
CREATE TABLE student (
|
||
id INT,
|
||
name VARCHAR(20),
|
||
birthday DATE
|
||
);
|
||
```
|
||
|
||
#### 小结
|
||
|
||
1. 创建表语句:CREATE TABLE 表名 (字段名 类型, 字段名 字段类型...);
|
||
2. 常用数据类型:int, double, varchar, date
|
||
|
||
### DDL查看表
|
||
|
||
#### 目标
|
||
|
||
1. 能够查看某个数据库中的所有表
|
||
2. 能够查看表结构
|
||
|
||
#### 讲解
|
||
|
||
1. 查看某个数据库中的所有表
|
||
|
||
```sql
|
||
SHOW TABLES;
|
||
```
|
||
|
||
2. 查看表结构
|
||
|
||
```sql
|
||
DESC 表名;
|
||
```
|
||
|
||
3. 查看创建表的SQL语句
|
||
|
||
```sql
|
||
SHOW CREATE TABLE 表名;
|
||
```
|
||
|
||
具体操作:
|
||
* 查看mysql数据库中的所有表
|
||
```sql
|
||
SHOW TABLES;
|
||
```
|
||

|
||
|
||
* 查看student表的结构
|
||
```sql
|
||
DESC student;
|
||
```
|
||

|
||
* 查看student的创建表SQL语句
|
||
```sql
|
||
SHOW CREATE TABLE student;
|
||
```
|
||

|
||
|
||
#### 小结
|
||
|
||
1. 查看某个数据库中的所有表:show tables;
|
||
2. 查看表结构:desc 表名;
|
||
3. 查看创建表的SQL语句:show create table 表名;
|
||
|
||
### DDL删除表
|
||
|
||
#### 目标
|
||
|
||
1. 能够掌握删除表语法
|
||
2. 能够掌握快速创建一个表结构相同的表
|
||
|
||
#### 讲解
|
||
|
||
##### 快速创建一个表结构相同的表
|
||
|
||
```sql
|
||
CREATE TABLE 表名 LIKE 其他表;
|
||
```
|
||
|
||
具体操作:
|
||
|
||
- 创建s1表,s1表结构和student表结构相同
|
||
|
||
```sql
|
||
CREATE TABLE s1 LIKE student;
|
||
```
|
||
|
||
|
||
##### 删除表
|
||
|
||
1. 直接删除表
|
||
|
||
```sql
|
||
DROP TABLE 表名;
|
||
```
|
||
|
||
2. 判断表是否存在并删除表
|
||
|
||
```sql
|
||
DROP TABLE IF EXISTS 表名;
|
||
```
|
||
|
||
具体操作:
|
||
* 直接删除表s1表
|
||
```sql
|
||
DROP TABLE s1;
|
||
```
|
||

|
||
* 判断表是否存在并删除s1表
|
||
```sql
|
||
DROP TABLE IF EXISTS s1;
|
||
```
|
||

|
||
|
||
#### 小结
|
||
|
||
1. 快速创建一个表结构相同的表:CREATE TABLE 表名 LIKE 其他表;
|
||
2. 删除表语法:DROP TABLE 表名;
|
||
|
||
### DDL修改表结构
|
||
|
||
#### 目标
|
||
|
||
能够掌握修改表结构的语法
|
||
|
||
#### 讲解
|
||
|
||
> 修改表结构使用不是很频繁,只需要了解,等需要使用的时候再回来查即可
|
||
1. 添加表列
|
||
|
||
```sql
|
||
ALTER TABLE 表名 ADD 字段名 类型;
|
||
```
|
||
|
||
具体操作:
|
||
* 为学生表添加一个新的字段remark,类型为varchar(20)
|
||
```sql
|
||
ALTER TABLE student ADD remark VARCHAR(20);
|
||
```
|
||

|
||
|
||
2. 修改列类型
|
||
|
||
```sql
|
||
ALTER TABLE 表名 MODIFY 字段名 新的类型;
|
||
```
|
||
|
||
具体操作:
|
||
|
||
* 将student表中的remark字段的改成varchar(100)
|
||
```sql
|
||
ALTER TABLE student MODIFY remark VARCHAR(100);
|
||
```
|
||

|
||
|
||
3. 修改列名
|
||
|
||
```sql
|
||
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型;
|
||
```
|
||
|
||
具体操作:
|
||
|
||
* 将student表中的remark字段名改成intro,类型varchar(30)
|
||
```sql
|
||
ALTER TABLE student CHANGE remark intro varchar(30);
|
||
```
|
||

|
||
|
||
4. 删除列
|
||
|
||
```sql
|
||
ALTER TABLE 表名 DROP 字段名;
|
||
```
|
||
|
||
具体操作:
|
||
|
||
* 删除student表中的字段intro
|
||
```sql
|
||
ALTER TABLE student DROP intro;
|
||
```
|
||

|
||
|
||
5. 修改表名
|
||
|
||
```sql
|
||
RENAME TABLE 表名 TO 新表名;
|
||
```
|
||
|
||
具体操作:
|
||
|
||
* 将学生表student改名成student2,再删除student2表
|
||
```sql
|
||
RENAME TABLE student TO student2;
|
||
DROP TABLE student2;
|
||
```
|
||

|
||
|
||
6. 修改字符集
|
||
|
||
```sql
|
||
ALTER TABLE 表名 character set 字符集;
|
||
```
|
||
|
||
具体操作:
|
||
|
||
* 将sutden2表的编码修改成gbk
|
||
```sql
|
||
ALTER TABLE student2 character set gbk;
|
||
```
|
||

|
||
|
||
#### 小结
|
||
|
||
1. 所有修改表前面的语法都是相同的?ALTER TABLE 表名
|
||
|
||
2. 添加一列:add 字段名 类型
|
||
3. 修改类型:modify 字段名 新的类型
|
||
4. 修改字段名和类型:change 旧字段名 新字段名 类型
|
||
5. 删除一列:drop 字段名
|
||
## 第三章 DML操作数据表
|
||
### DML插入记录(重点)
|
||
|
||
#### 目标
|
||
|
||
能够掌握往表中添加记录
|
||
|
||
#### 讲解
|
||
|
||
创建student表包含id,name,birthday,sex,address字段。
|
||
|
||
```sql
|
||
CREATE TABLE student (
|
||
id INT,
|
||
name VARCHAR(20),
|
||
birthday DATE,
|
||
sex char(2),
|
||
address varchar(50)
|
||
);
|
||
```
|
||
|
||
##### 插入全部字段
|
||
* 所有的字段名都写出来
|
||
|
||
```sql
|
||
INSERT -- 表示往表里插入记录
|
||
INSERT INTO 表名 (字段名1, 字段名2...) VALUES (字段值1, 字段值2...);
|
||
```
|
||
|
||
* 不写字段名
|
||
|
||
```sql
|
||
INSERT INTO 表名 VALUES (字段值1, 字段值2...);
|
||
```
|
||
|
||
##### 插入部分数据
|
||
```sql
|
||
INSERT INTO 表名 (字段名1, 字段名2...) VALUES (字段值1, 字段值2...);
|
||
```
|
||
|
||
|
||
没有添加数据的字段会使用NULL
|
||
|
||
1. 关键字说明
|
||
```sql
|
||
INSERT INTO 表名 – 表示往哪张表中添加数据
|
||
(字段名1, 字段名2, …) -- 要给哪些字段设置值
|
||
VALUES (值1, 值2, …); -- 设置具体的值
|
||
```
|
||
|
||
2. 具体操作:
|
||
|
||
* 插入部分数据,往学生表中添加 id, name, age, sex数据
|
||
```sql
|
||
INSERT INTO student (id, NAME, age, sex) VALUES (1, '张三', 20, '男');
|
||
```
|
||

|
||
|
||
* 向表中插入所有字段
|
||
* 所有的字段名都写出来
|
||
```sql
|
||
INSERT INTO student (NAME, id, age, sex, address) VALUES ('李四', 2, 23, '女', '广州');
|
||
```
|
||

|
||
|
||
* 不写字段名
|
||
```sql
|
||
INSERT INTO student VALUES (3, '王五', 18, '男', '北京');
|
||
```
|
||

|
||
|
||
|
||
|
||
##### 注意
|
||
|
||
> - 值与字段必须对应,个数相同,类型相同
|
||
> - 值的数据大小必须在字段的长度范围内
|
||
> - 除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)
|
||
> - 如果要插入空值,可以不写字段,或者插入null
|
||
|
||
#### 小结
|
||
|
||
1. 向表中添加一条完整记录:
|
||
所有的字段都写出来: INSERT INTO 表名 (字段1, 字段2, ....) VALUES (值1, 值2, ...);
|
||
不写字段名: INSERT INTO 表名 VALUES (值1, 值2, ...);
|
||
2. 向表中添加一条记录部分列:必须写字段名,否则不知道添哪个字段.
|
||
INSERT INTO 表名 (字段1, 字段2, ....) VALUES (值1, 值2, ...);
|
||
|
||
### DOS命令窗口操作数据乱码问题
|
||
|
||
#### 目标
|
||
|
||
能够理解DOS命令行乱码的原因
|
||
|
||
#### 讲解
|
||
|
||
>当我们使用DOS命令行进行SQL语句操作如有有中文会出现乱码,导致SQL执行失败
|
||
>
|
||
>错误原因:因为MySQL的客户端设置编码是utf8,而系统的DOS命令行编码是gbk,编码不一致导致的乱码
|
||
>
|
||
|
||
|
||
|
||
解决方案:
|
||
1. 快捷设置
|
||
```sql
|
||
在DOS命令行输入:set names gbk;
|
||
```
|
||
> 注意:以上方式为临时方案,退出DOS命令行就失效了,需要每次都配置
|
||
|
||
2. 修改MySQL安装目录下的my.ini文件,重启服务所有地方生效。此方案将所有编码都修改了[**不建议**]
|
||

|
||
|
||
#### 小结
|
||
|
||
如何解决DOS命令行乱码:set names gbk;
|
||
|
||
|
||
### DML更新表记录
|
||
|
||
#### 目标
|
||
|
||
能够掌握更新表记录
|
||
|
||
#### 讲解
|
||
|
||
1. 不带条件修改数据
|
||
|
||
```sql
|
||
UPDATE 表名 SET 字段名=新的值;
|
||
```
|
||
|
||
2. 带条件修改数据
|
||
|
||
```sql
|
||
UPDATE 表名 SET 字段名=新的值 WHERE 条件
|
||
```
|
||
|
||
3. 关键字说明
|
||
```sql
|
||
UPDATE: 表示修改记录
|
||
SET: 要改哪个字段
|
||
WHERE: 设置条件
|
||
```
|
||
|
||
4. 具体操作:
|
||
* 不带条件修改数据,将所有的性别改成女
|
||
```sql
|
||
UPDATE student SET sex='女';
|
||
```
|
||

|
||
|
||
* 带条件修改数据,将id号为2的学生性别改成男
|
||
```sql
|
||
UPDATE student SET sex='男' WHERE id=2;
|
||
```
|
||

|
||
|
||
* 一次修改多个列,把id为3的学生,年龄改成26岁,address改成北京
|
||
```sql
|
||
UPDATE student SET age=26, address='北京' WHERE id=3;
|
||
```
|
||

|
||
|
||
#### 小结
|
||
|
||
1. 不带条件的更新数据库记录:UPDATE TABLE SET 字段名=新的值;
|
||
2. 带条件:UPDATE TABLE SET 字段名=新的值 WHERE 条件;
|
||
|
||
### DML删除表记录
|
||
|
||
#### 目标
|
||
|
||
能够掌握删除表记录
|
||
|
||
#### 讲解
|
||
|
||
1. 不带条件删除数据
|
||
|
||
```sql
|
||
DELETE -- 删除记录
|
||
DELETE FROM 表名;
|
||
```
|
||
|
||
2. 带条件删除数据
|
||
|
||
```sql
|
||
DELETE FROM 表名 WHERE 条件;
|
||
```
|
||
|
||
3. truncate删除表记录
|
||
|
||
```sql
|
||
TRUNCATE TABLE 表名;
|
||
```
|
||
|
||
>truncate和delete的区别:
|
||
>* delete是将表中的数据一条一条删除
|
||
>* truncate是将整个表摧毁,重新创建一个新的表,新的表结构和原来表结构一模一样
|
||
> 
|
||
|
||
4. 具体操作:
|
||
* 带条件删除数据,删除id为3的记录
|
||
```sql
|
||
DELETE FROM student WHERE id=3;
|
||
```
|
||
|
||

|
||
|
||
* 不带条件删除数据,删除表中的所有数据
|
||
```sql
|
||
DELETE FROM student;
|
||
```
|
||

|
||
|
||
#### 小结
|
||
|
||
1. 指定条件删除:DELETE FROM 表名 WHERE 条件;
|
||
2. 没有条件删除所有的记录:DELETE FROM 表名;
|
||
3. 删除表结构再创建表:TRUNCATE TABLE 表名;
|
||
|
||
## 第四章 DQL查询数据记录
|
||
### DQL没有条件的简单查询
|
||
|
||
#### 目标
|
||
|
||
能够掌握简单查询
|
||
|
||
#### 讲解
|
||
|
||
>注意:查询不会对数据库中的数据进行修改,只是一种显示数据的方式。
|
||
##### 查询表中所有列数据
|
||
1. 写出查询每列的名称
|
||
```sql
|
||
SELECT -- 表示查询
|
||
SELECT 字段名1, 字段名2, ... FROM 表名;
|
||
```
|
||
具体操作:
|
||
|
||
```sql
|
||
SELECT id, NAME ,age, sex, address FROM student;
|
||
```
|
||

|
||
|
||
2. 使用*表示所有列
|
||
|
||
```sql
|
||
SELECT * FROM 表名;
|
||
```
|
||
|
||
具体操作:
|
||
|
||
```sql
|
||
SELECT * FROM student;
|
||
```
|
||

|
||
|
||
##### 查询表中指定列数据
|
||
|
||
查询指定列的数据,多个列之间以逗号分隔
|
||
```sql
|
||
SELECT 字段名1, 字段名2 FROM 表名;
|
||
```
|
||
|
||
具体操作:
|
||
查询student表中的name 和 age 列
|
||
|
||
```sql
|
||
SELECT NAME, age FROM student;
|
||
```
|
||

|
||
|
||
##### 别名查询
|
||
1. 查询时给列、表指定别名需要使用AS关键字
|
||
2. 使用别名的好处是方便观看和处理查询到的数据
|
||
`SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名;`
|
||
`SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名 AS 表别名;`
|
||
注意:
|
||
|
||
>查询给表取别名目前还看不到效果,需要到多表查询的时候才能体现出好处
|
||
>AS关键字可以省略
|
||
|
||
3. 具体操作:
|
||
* 查询sudent表中name 和 age 列,name列的别名为”姓名”,age列的别名为”年龄”
|
||
```sql
|
||
SELECT NAME AS 姓名, age AS 年龄 FROM student;
|
||
```
|
||

|
||
|
||
##### 清除重复值
|
||
1. 查询指定列并且结果不出现重复数据
|
||
|
||
```sql
|
||
SELECT DISTINCT 字段名 FROM 表名;
|
||
```
|
||
|
||
2. 具体操作:
|
||
* 查询address列并且结果不出现重复的address
|
||
```sql
|
||
SELECT DISTINCT address 城市 FROM student;
|
||
```
|
||

|
||
|
||
##### 查询结果参与运算
|
||
1. 某列数据和固定值运算
|
||
|
||
```sql
|
||
SELECT 列名1 FROM 表名;
|
||
SELECT 列名1 + 固定值 FROM 表名;
|
||
```
|
||
|
||
2. 某列数据和其他列数据参与运算
|
||
|
||
```sql
|
||
SELECT 列名1 + 列名2 FROM 表名;
|
||
```
|
||
|
||
>注意: 参与运算的必须是数值类型
|
||
|
||
3. 需求:
|
||
* 添加数学,英语成绩列,给每条记录添加对应的数学和英语成绩
|
||
* 查询的时候将数学和英语的成绩相加
|
||
|
||
4. 实现:
|
||
|
||
* 修改student表结构,添加数学和英语成绩列
|
||
```sql
|
||
ALTER TABLE student ADD math INT;
|
||
ALTER TABLE student ADD english INT;
|
||
```
|
||
* 给每条记录添加对应的数学和英语成绩
|
||

|
||
* 查询math + english的和
|
||
```sql
|
||
SELECT math + english FROM student;
|
||
```
|
||

|
||
|
||
>结果确实将每条记录的math和english相加,但是效果不好看
|
||
|
||
* 查询math + english的和使用别名”总成绩”
|
||
```sql
|
||
SELECT math + english 总成绩 FROM student;
|
||
```
|
||

|
||
|
||
* 查询所有列与math + english的和并使用别名”总成绩”
|
||
```sql
|
||
SELECT *, math + english 总成绩 FROM student;
|
||
```
|
||

|
||
|
||
* 查询姓名、年龄,将每个人的数学增加10分
|
||
```sql
|
||
SELECT name, math + 10 FROM student;
|
||
```
|
||
|
||
#### 小结
|
||
|
||
1. 简单查询格式:SELECT 字段名 FROM 表名;
|
||
2. 定义别名:SELECT 字段名 AS 别名 FROM 表名;
|
||
3. 去除重复行:SELECT DISTINCT 字段名 FROM 表名;
|
||
4. 数值列,可以进行计算,不会影响表中数据
|
||
|
||
| DML语句操作 | 关键字 |
|
||
| ----------- | -------------------------------------------- |
|
||
| 添加 | INSERT INTO 表名 (字段名...) VALUES (值...); |
|
||
| 修改 | UPDATE 表名 SET 字段名=新的值 WHERE 条件; |
|
||
| 删除 | DELETE FROM 表名 WHERE 条件; |
|
||
| 查询 | SELETE 字段名 FROM 表名; |
|
||
|
||
|
||
## 第五章 蠕虫复制
|
||
|
||
#### 目标
|
||
|
||
了解蠕虫复制
|
||
|
||
#### 讲解
|
||
|
||
什么是蠕虫复制:在已有的数据基础之上,将原来的数据进行复制,插入到对应的表中
|
||
语法格式:
|
||
|
||
```sql
|
||
INSERT INTO 表名1 SELECT * FROM 表名2;
|
||
```
|
||
|
||
作用:将`表名2`中的数据复制到`表名1`中
|
||
|
||
具体操作:
|
||
* 创建student2表,student2结构和student表结构一样
|
||
```sql
|
||
CREATE TABLE student2 LIKE student;
|
||
```
|
||
* 将student表中的数据添加到student2表中
|
||
```sql
|
||
INSERT INTO student2 SELECT * FROM student;
|
||
```
|
||
>注意:如果只想复制student表中name,age字段数据到student2表中使用如下格式
|
||
>`INSERT INTO student2(NAME, age) SELECT NAME, age FROM student;`
|
||
>
|
||
|
||
|
||
### 总结
|
||
|
||
1. 能够理解数据库的概念
|
||
存储数据的仓库
|
||
2. 能够安装MySQL数据库
|
||
一直下一步:解压,复制
|
||
配置MYSQL服务器:下一步
|
||
3. 能够启动,关闭及登录MySQL
|
||
在服务里面找到MySql,右键启动/关闭
|
||
登录MySQL: mysql -uroot -proot
|
||
4. 能够使用SQL语句操作数据库
|
||
创建数据库: CREATE DATABASE 数据库名;
|
||
查看所有数据库: SHOW DATABASES;
|
||
删除数据库: DROP DATABASE 数据库名;
|
||
切换数据库: USE 数据库名;
|
||
5. 能够使用SQL语句操作表结构
|
||
创建表: CREATE TABLE 表名 (字段名 类型, 字段名 类型, ...);
|
||
查看所有表: SHOW TABLES;
|
||
修改表: ALTER TABLE 表名;
|
||
添加一列: ADD 字段名 类型
|
||
修改字段类型: MODIFY 字段名 新的类型;
|
||
修改字段名: CHANGE 旧字段名 新字段名 新的类型;
|
||
删除一列: DROP 字段名;
|
||
修改表名: REANME TABLE 表名 TO 新表名
|
||
删除表: DROP TABLE 表名;
|
||
6. 能够使用SQL语句进行数据的添加修改和删除的操作
|
||
添加数据: INSERT INTO 表名 (字段名) VALUES (值);
|
||
修改数据: UPDATE 表名 SET 字段名=新的值 WHERE 条件;
|
||
删除数据: DELETE FROM 表名 WHERE 条件;
|
||
7. 能够使用SQL语句简单查询数据
|
||
SELECT 字段名1, 字段名2, ... FROM 表名; |