MySQL必学4种语言
本篇文章记录的是MySQL中常用的4种语言:
DDL
DDL,data defination language
,指的是数据定义语言,其主要作用是创建数据库,对库表的结构进行删除和修改等操作。
进入数据库
1 | mysql -uroot -p -- 使用这种方式,接下来需要输入密码。密码是暗文 |
参数解释:
-
u:指定用户
-
p:指定密码
全部命令
1 | 1. 数据库操作 |
数据库操作
1 | show databases; // 显示所有的数据库 |
表操作
1 | // 1、创建表 |
- 最后的分号不能忘记😢
1 | mysql> use school; // 使用一个数据库 |
创建表
- 主键
primary key
和auto_increment
必须连在一起使用 - 书写规范:每个字段的语句最好分行写,容易检查
- 最后的分号不能忘记
1 | # 创建user表:6种字段+1个主键 |
查看表结构
1 | mysql> desc user; |
查看创建表的SQL
语句
1 | show create table user; |
字段操作
关键词是alter
,先选中需要操作的表。
modify
:修改change
:改变名字- add:添加字段
- 默认是末尾
- 指定位置添加
1 | // 修改字段信息 |
DML
DML,data manipulation language
,指的是数据操作语言。主要是对数据库中的表记录进行操作的语言,包含往表中插入数据、表中数据的更新、表的删除等
- 表中插入数据
- 表中数据更新
- 删除表
表中插入数据
1 | -- 将字段名和字段的值一一对应起来,可以只插入部分字段 |
- 字符串字段必须用引号括起来
- 密码需要使用函数
Password()
- 语句末尾加分号
- 利用只插入部分字段
- 可以省去字段名,此时需要加上
id
,而且必须填写所有的字段信息,不能只添加部分数据
数据更新
数据更新update
使用最多的是where
语句,指定某个条件下执行;如果不加where
,则所有的字段都会被更改(慎重)
- 指定
id
号 - 指定字段的具体值
- 字段允许有多个,用逗号隔开
1 | mysql> update user set name="nangying" where id=6; // 通过id指定 |
删除
删除表有两种情况:
delete
:删除表,插入数据从上一次结束
的id
号开始继续插入;删除的记录仍存在truncate
:清空表,重新插入数据id
从1开始;不占内存空间
1 | delete table user; |
- 删除
delete
表中的某条记录
1 | delete from user where id=7; // 删除记录 |
关于truncate
1 | # 删除数据 |
DCL
data control language,DCL
,指的是数据控制语言,主要是对数据库中的登录和用户的权限进行控制的语言,包含
- 用户登录
MySQL
数据库 - 修改用户密码及忘记密码如何解决
- 创建普通用户及授权
- 撤销权限
revoke
- 查看权限及删除用户
全部命令
1 | 1. 查看数据库中的用户及信息 |
关于root
账户
默认情况下,MySQL
数据库是指允许root
账户登录并且在本机上登录的。
-uroot
表示root
账户-p
表示需要密码- 没有
-h
表示默认是本机localhost
或者127.0.0.1
登录
登录查看账户
MySQL
数据库的服务端口号是3306
,通过在mysql
数据库的user
表中查看登录数据库用户信息:
1 | mysql> show databases; # 查看所有的数据库 |
删除用户
需要注意的是删除了某个用户之后必须进行权限的刷新:
1 | mysql> delete from user where host="%"; # 删除host为%的用户 |
注意:当在实际的开发项目中,项目和数据库服务器不再同一个地方,可以指定ip连接进行访问。
1 | mysql> update user set host="192.168.1.10" where user="root"; |
当退出mysql
重新进入,需要指定IP
地址,就是上面设置的IP
:
密码问题
1、修改密码
同样需要进入mysql
数据库的user
表中
1 | mysql>update user set password=PASSWORD("admin") where user="root"; # 将root账户的密码改为admin |
2、忘记密码
- 如果忘记了密码,需要进入配置文件中
1 | ubuntu@peter:~$ vim /etc/mysql/mysql.conf.d/mysqld.cnf |
-
找到下图中的
skip-grant-tables
,将前面的#去掉,就是取消注释:取消权限认证,后台开启新的进程免密进入MySQL
-
重启
MySQL
服务:systemctl restart mysql
-
通过
MySQL
直接进入:
- 然后按照上面的步骤重新设置密码即可
1 | mysql> show databases; |
DQL
DQL(data query language)
,指的是数据查询语言,主要的作用是对数据库中的数据进行查询的操作,也是最常见和最重要的功能。
查询的方法也是多种多样:联合查询、分组查询、内连查询、子查询
等,还可以限制查询的条数
等,下面介绍几种常见的查询
格式:
1 | select |
简单查询
1 | select |
过滤查询
过滤查询的关键字是distinct
,去掉字段中的重复值
1 | -- 过滤重复字段 |
连接查询
连接查询的关键字是concat
- 直接使用系统默认的连接方式,将原来的字段通过下划线进行连接
- 使用
concat...as...
,as
后面自己指定连接的新字段名 - 带上连接符号的查询
concat_ws("+", 列名1,列名2)
;其中"+"就是指定连接符
1 | select concat(name, email) from user; # 结果中显示concat(name_email) |
模糊查询
模糊查询的关键字是like
,中文翻译成像
:
1 | mysql> select user_name from student where user_name like "peter"; # 像peter |
排序查询
对表中的记录进行升序asc
或者降序desc
的排列,默认的是升序asc
,同时需要使用order by
关键字:
- 升序:
asc
,默认情况 - 降序:
desc
1 | select * from student order by user_age asc; # 年龄的升序 |
聚合函数
1 | select count(*) from student; # 总记录 |
限制查询结果
限制查询的条数使用的是limit
关键字
- 直接使用
limit
- 使用
limit ... offset ...
:指定从哪里开始显示,显示多少行 - 简写:
limit 5, 4
:表示从第5行开始,显示4行数据
1 | select name, age from user limit 5; -- 只显示5行数据 |
MySQL中的DQL应该是最常用的,请参考《MySQL经典50题》