第一章
MySQL
库表操作
1.1. SQL
语句基础
1.1.1. SQL
简介
SQL:结构化查询语言
(Structured Query Language)
,在关系型数据库上执行数据操作、数据检索
以及数 据维护的标准语言。使用SQL
语句,程序员和数据库管理员可以完成如下的任务
改变数据库的结构
更改系统的安全设置
增加用户对数据库或表的许可权限
在数据库中检索需要的信息
对数据库的信息进行更新
1.1.2. SQL
语句分类
MySQL
致力于支持全套
ANSI/ISO SQL
标准。在
MySQL
数据库中,
SQL
语句主要可以划分为以下
几类
DDL(Data Definition Language):
数据定义语言,定义对数据库对象
(
库、表、列、索引
)
的操作,
如:CREATE
、
DROP
、
ALTER
、
RENAME
、
TRUNCATE
等
DML(Data Manipulation Language):
数据操作语言,定义对数据库记录的操作,如:
INSERT
、
DELETE
、
UPDATE
、
SELECT
等
DCL(Data Control Language):
数据控制语言,定义对数据库、表、字段、用户的访问权限和安
级别,如:
GRANT、
REVOKE等
Transaction Control:事务控制
COMMIT、ROLLBACK、SAVEPOINT等
1.1.3. SQL
语句的书写规范
在数据库系统中,
SQL
语句不区分大小写
(
建议用大写
)
,但字符串常量区分大小写
SQL语句可单行或多行书写,以“;”结尾。
关键词不能跨多行或简写。
用空格和缩进来提高语句的可读性。
子句通常位于独立行,便于编辑,提高可读性。
注释:
/* */ 和// 为多行注释
-- 和 # 为单行注释
1.2.
数据库操作
1.2.1.
数据库的登录及退出
登录格式
mysql -u 用户名 -h 服务器的主机地址 -p密码 -A
-u
后面跟登录数据库的用户名,这里使用
root
-h
后面的参数是服务器的主机地址,在这里客户端和服务器在同一台机器上,所以输入
localhost
或者 IP
地址
-p
后面是用户登录密码,注意:
-p
和密码之间没有空格。如果出现空格,系统将不会把后面的符
串当成密码来对待
,没有密码时不写
-A
参数:不预读数据库信息,加上该参数则不预读数据库中的表等信息,不会有表明及列名的补
全, 但读取速度会加快,不加该参数可能使用数据库时出现下列提示(不影响使用)
![](https://i-blog.csdnimg.cn/direct/ec4898c9bfac4dd7ba3ecbdbe0aa4540.png)
![](https://i-blog.csdnimg.cn/direct/e097f2e940a54d0d997b3dfaea9b1aff.png)
显示信息解释:
Commands end with; or\g
:
mysql
命令是以分号(
;
)或
“\g”
来结束的,遇到这个结束符就开始
执行命令
Your MySQL connection id is 22
:数据库的连接次数
Server version: 8.0.37 Source distribution
: 版本
Type 'help;' or '\h' for help
:输入
”help;“
或者
”\h“
可以看到帮助信息
Type '\c' to clear the current input statement
:表示遇到
”\c“
就清除前面的命令,注意不是清屏
退出:exit quit \q
![](https://i-blog.csdnimg.cn/direct/8b8d29d1e77a48feb2a964ed377d1589.png)
![](https://i-blog.csdnimg.cn/direct/b0c51928f25e4f639f87aeb68f8b5f00.png)
1.2.2.
查看数据库
格式:
![](https://i-blog.csdnimg.cn/direct/d4a0f0e675cf498b913d9382bf7440d4.png)
MySQL自带数据库
Information_schema:
主要存储了系统中的一些数据库对象信息,如:用户表信息、列信息、
权限信息、字符集信息、分区信息等。(
数据字典表
)
performance_schema
:主要存储数据库服务器的性能参数
mysql:
存储了系统的用户权限信息及帮助信息
sys: 5.7
新增,之前版本需要手工导入。这个库是通过视图的形式把
information_schema
和
performance_schema
结合起来,查询出更加令人容易理解的数据
使用条件查看
![](https://i-blog.csdnimg.cn/direct/3adb9fb33d6342a5adbdc1777be2b512.png)
带有通配符的条件
%
:匹配任意零个或多个字符
_
:匹配任意单个字符
![](https://i-blog.csdnimg.cn/direct/52bf11f540874ad2b97cbc4540e75701.png)
显示时间
![](https://i-blog.csdnimg.cn/direct/3a440adec0e94ddc916697a1f7d55f8d.png)
显示数据库版本
![](https://i-blog.csdnimg.cn/direct/9bbec2f2e1e24cabb2f67878ee1a9fe5.png)
1.2.3.
创建数据库
格式:
create database
数据库名
![](https://i-blog.csdnimg.cn/direct/5c679d1772d24b62979886855c5eeff8.png)
示例:
![](https://i-blog.csdnimg.cn/direct/ef6af5e36e1c45a1b200f47a311a5977.png)
若数据库已存在,则报错
![](https://i-blog.csdnimg.cn/direct/27e2170e871a411aadb44c79e13e70c9.png)
查看创建数据库的语句
#
格式
show create database
数据库名
![](https://i-blog.csdnimg.cn/direct/f8c8a9cd370a4acb89739b0cb03c52a5.png)
注意:在创建数据库或查看创建数据库语句时,
database
没有
s
1.2.4. mysql
中的反引号
上例中查看的sql语句有反引号,其作用可以避免一些与
SQL
语法冲突的问题,同时可以使代码更
加规范化和易读性更强
如
select name, address from table;
其中
table
若当做表名但其为关键字回报错,加上反引号可以
避免与SQL关键字的冲突:
注意:
只有保留关键字和特殊字符需要使用反引号,普通的表名和列名不需要
数据类型之间可以加或者不加反引号,但为了代码规范化,建议加上
1.2.5.
切换数据库
查看当前使用的数据库,格式:
![](https://i-blog.csdnimg.cn/direct/52cd5a3294344959b82e139b8a75bfbc.png)
注意:当前没有使用数据库,则显示空
选择数据库
,格式:
use
数据库名
![](https://i-blog.csdnimg.cn/direct/03d4fa4c05394f5abf41d6a55b34a974.png)
1.2.6.
查看当前用户
![](https://i-blog.csdnimg.cn/direct/433f79733d2c477d9c876a6e78177c4f.png)
1.2.7.
删除数据库
格式:
drop database
数据库名
示例:
![](https://i-blog.csdnimg.cn/direct/47dac5d42087411581e7606ed8c918e7.png)
1.2.8.
小结
![](https://i-blog.csdnimg.cn/direct/461568d05b9f44ed83714379d6c4f223.png)
![](https://i-blog.csdnimg.cn/direct/cd65680f180c4f3ca3fb849008c8f85c.png)