2-SQL

发布时间 2023-04-22 17:41:29作者: 念念念北

1. SQL

全称 Structured Query Language,结构化查询语言。操作关系型数据库的编程语言,定义了 一套操作关系型数据库统一标准 。

2. SQL 通用语法

1). SQL 语句可以单行或多行书写,以分号结尾。

2). SQL 语句可以使用空格/缩进来增强语句的可读性。

3). MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。

4). 注释:

单行注释:-- 注释内容 或 # 注释内容

多行注释:/_ 注释内容 _/

3. SQL 分类

SQL 语句,根据其功能,主要分为四类:DDL、DML、DQL、DCL。

分类 全称 说明
DDL Data Definition Language 数据定义语言,用来定义数据库对象(数据库,表, 字段)
DML Data Manipulation Language 数据操作语言,用来对数据库表中的数据进行增删改
DQL Data Query Language 数据查询语言,用来查询数据库中表的记录
DCL Data Control Language 数据控制语言,用来创建数据库用户、控制数据库的 访问权限

4. DDL

Data Definition Language,数据定义语言,用来定义数据库对象(数据库,表,字段) 。

4.1 数据库操作

查询所有数据

语法:

show databases;

结果显示

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| student            |
| sys                |
+--------------------+
5 rows in set (0.02 sec)

查询当前数据库

语法:

select database();

结果显示

mysql> select database();
+------------+
| database() |
+------------+
| student    |
+------------+
1 row in set (0.00 sec)

创建数据库

语法:

create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序规则 ] ;

案例:

创建一个 itcast 数据库, 使用数据库默认的字符集。

create database itcast;

结果显示

mysql> create database itcast;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| itcast             |
| mysql              |
| performance_schema |
| student            |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

在同一个数据库服务器中,不能创建两个名称相同的数据库,否则将会报错。(也就是同一个数据库创建两遍会报错)

报错的结果显示

mysql> create database itcast;
ERROR 1007 (HY000): Can't create database 'itcast'; database exists
mysql> create database if not exists itcast;

可以通过 if not exists 参数来解决这个问题,数据库不存在, 则创建该数据库,如果存在,则不创建。

语法:

 create database if not extists itcast;

使用结果显示

mysql> create database if not exists itcast;
Query OK, 1 row affected, 1 warning (0.00 sec)

创建一个 north 数据库,并且指定字符集

语法:

 create database north default charset utf8mb4 ;

结果显示

mysql> create database north default charset utf8mb4
    -> ;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| itcast             |
| mysql              |
| north              |
| performance_schema |
| student            |
| sys                |
+--------------------+
7 rows in set (0.00 sec)

删除数据库

语法:

drop database [ if exists ] 数据库名 ;

如果删除一个不存在的数据库,将会报错。此时,可以加上参数 if exists ,如果数据库存在,再 执行删除,否则不执行删除。

结果显示

mysql> drop database if exists north;
Query OK, 0 rows affected (0.02 sec)

image-20230422173017680

切换数据库

语法:

use 数据库名;

我们要操作某一个数据库下的表时,就需要通过该指令,切换到对应的数据库下,否则是不能操作的。 比如,切换到 itcast 数据,执行如下 SQL:

use itcast;

结果显示

mysql> use itcast
Database changed