1.1 SQL结构化查询语言
1.1.1 什么是SQL?
SQL
,英文全称为
Structured Query Language
,中文意思是结构化查询语言,
它是一种对【关系数据库】中的数据进行定义和操作的语言,
是大多数关系数据库管理系统所支持的工业标准语言。
1.1.2 SQL分类?
DDL
DDL
全拼
Data Definition Language
,中文数据【定义语言】,
主要关键字为
CREATE
(创建)、
ALTER
(修改)、
DROP
(删除)等,
负责管理数据库的基础数据(不会对表的内容修改),
例如:增删库、表、索引、用户等,这部分知识【运维人员和开发人员】都要熟悉。
执行
MariaDB> ? Data Definition
,可查相关帮助
DCL
DCL
全拼
Data Control Language
,中文数据控制语言,
主要关键字为
GRANT
(用户授权)、
REVOKE
(权限回收)、
COMMIT
(提交)、
ROLLBACK
(回滚),上文的
TPL
被这里的
DCL
包含了,
这部分知识需要运维人员熟练。执行
MariaDB> ? Account Management
,可查相关帮助
DML
DML
全拼
Data Manipulation Language
,中文数据操作语言,
主要关键字为、
INSERT
(增)、
DELETE
(删)、
UPDATE
(改),
主要针对数据库里的表里的数据进行操作,
上文的
DQL
被这里的
DML
包含了,这部分知识开发人员要熟练,运维人员熟悉即可。
DQL
Data Query Language
, 数据查询语言
SELECT
(查),对表内容的查询
1.13 SQL帮助
MariaDB> ?
或者
help
MariaDB> ? contents
执行
MariaDB> ? Data Manipulation
,可查相关帮助
重要
:
mysql
帮助
:
打鱼 捕鱼
:
? Data Definition DDL
? Data Manipulation DML
? Account Management
账户管理
DCL
数据库官方网站:
https://dev.mysql.com/doc/refman/8.0/en/
1.2 修改表中的数据
##1.命令语法为:
update
表名
set
字段
=
新值
,… where
条件;
##2.进入并查看数据
MariaDB [(none)]> use oldboy
MariaDB [oldboy]> select * from stu1;
##3.
把
id
为
6
的行的名字改为
zhangsan
update stu1 set name='zhangsan' where id=6;
##4.
把名字为
oldboy
的行的年龄改为
25
update stu1 set age=25 where name='oldboy';
##5.
练习
1
:把名字为
littleoldboy
的行的专业改成
python
。
update stu1 set dept='python'
where name='littleboy';
##6.
练习
1
:把名字为
oldgirl
的行的年龄改成
18
。
update stu1 set age=18 where name='oldgirl';
##7.
练习
3
:把
id
小于
5
的行的专业统一改为
Linux
。
update stu1 set dept='linux' where id<5;
##
提示:想可视化修改,通过海豚客户端。
##
主键
( PRIMARY KEY (
id
))
和自增
(AUTO_INCREMENT)
CREATE TABLE
stu2
(
id
int(10) NOT NULL
AUTO_INCREMENT,
name
varchar(64) NOT NULL,
age
tinyint(3) NOT NULL DEFAULT '0',
dept
varchar(16) DEFAULT NULL,
PRIMARY KEY (
id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1.3 删除表中的数据
#0.备份数据
use oldboy;
drop table stu1;
create table stu1(
id int(10) PRIMARY KEY not null AUTO_INCREMENT,
name varchar(20) not null,
age tinyint(2) NOT NULL default
'0'
,
dept varchar(16) default NULL
);
insert into stu1 values(1,
'oldboy'
,35,
'net sec'
);
insert into stu1 values(2,
'oldgirl'
,25,
'linux'
);
insert into stu1 values(3,
'littlegirl'
,5,
'net sec'
),(4,
'littleboy'
,2,
'Linux'
);
MariaDB [oldboy]> select * from stu1;\
+
----
+
------------
+
-----
+
---------
+
| id | name | age | dept |
+
----
+
------------
+
-----
+
---------
+
|
1
| oldboy |
35
| net sec |
|
2
| oldgirl |
25
| linux |
|
3
| littlegirl |
5
| net sec |
|
4
| littleboy |
2
| Linux |
+
----
+
------------
+
-----
+
---------
+
MariaDB [oldboy]> quit
[root@oldboy ~]# mysqldump -uroot -poldboy123 -B oldboy >/opt/bak.sql
[root@oldboy ~]# egrep -v "*|^$|--" /opt/bak.sql
USE
oldboy
;
DROP TABLE IF EXISTS
stu1
;
CREATE TABLE
stu1
(
id
int(10) NOT NULL AUTO_INCREMENT,
name
varchar(20) NOT NULL,
age
tinyint(2) NOT NULL DEFAULT '0',
dept
varchar(16) DEFAULT NULL,
PRIMARY KEY (
id
)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4;
INSERT INTO
stu1
VALUES (1,'oldboy',35,'net sec'),(2,'oldgirl',25,'linux'),(3,'littlegirl',5,'net sec'),
(4,'littleboy',2,'Linux');
#1.命令语法为:
delete from
表名
where
表达式;
#2.删除id为6的行
delete from stu1 where id=6;
#3.删除id小于3的行
delete from stu1 where id<3;
#4.删除年龄为2或1的行
delete from stu1 where age=2 or age=1;
#5.delete删除所有行
delete from stu1;
#6.恢复数据
source /opt/bak.sql
#7.总结:
DQL
语句:表内容查询
select
DML
语句:表内容增删改:
insert,delete,update
DDL
语句:库表本身:
create,drop,alter
DCL
语句:用户权限:
grant,revoke
补:revoke回收权限
语法:
REVOKE INSERT ON
.
FROM 'jeffrey'@'localhost';
创建用户:
grant insert,select on
.
to littleboy@'localhost' identified by '123';
#
回收
insert
revoke insert ON
.
from 'littleboy'@'localhost';
#
查看
show grants for littleboy@'localhost';