MatrixOne 的 SQL 基本操作
MatrixOne 兼容 MySQL,你可以使用 MySQL 客户端或其他方式连接 MatrixOne。参加 MySQL 兼容性和客户端连接 MatrixOne 服务。
什么是 SQL 语言?
SQL (Structured Query Language: 结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。
MatrixOne 的 SQL 都分为哪几类?
SQL 语言通常按照功能划分成以下的 6 个部分:
- DDL (Data Definition Language):数据定义语言,用来定义数据库对象,包括库、表、视图等。例如,
CREATE,ALTER,和DROP等。 - DML (Data Manipulation Language):数据修改语言,用来修改和业务相关的记录。例如,
SELECT,DELETE,或INSERT等。 - DQL (Data Query Language):数据查询语言,用来查询经过条件筛选的记录。例如,
SELECT...FROM...[WHERE]这种多个子句组合而成的 SQL 语句。 - TCL(Transaction Control Language):事务控制语言,用于事务管控。例如,
COMMIT,ROLLBACK,或SET TRANSACTION等。 - DCL (Data Control Language):数据控制语言,用来分配与回收资源,创建和阐述用户与角色,授权和回收权限。例如,
CREATET ACCOUNT,DROP ACCOUNT,或GRANT等。 - 其他:其他类型的管理语言在 MatrixOne 中,与数据没有直接关联,对数据库参数、资源分配的获取与修改的总称。例如,
SHOW,SET variable,或KILL等。
查看、创建和删除数据库
MatrixOne 中的数据库是表的集合。
- 查看数据库列表,使用
SHOW DATABASES语句:
1. SHOW DATABASES;
- 新建一个名称为 dbdemo 的数据库,使用
CREATE DATABASE db_name [options];语句,例如:
1. CREATE DATABASE dbdemo;
或:
1. CREATE DATABASE IF NOT EXISTS dbdemo;
添加 IF NOT EXISTS 条件可以防止错误。
- 使用命名为 dbdemo 的数据库,使用如下语句:
1. USE dbdemo;
- 使用
SHOW TABLES语句查看数据库中所有的表,例如:
1. SHOW TABLES FROM dbdemo;
- 删除数据库,使用
DROP DATABASE语句:
1. DROP DATABASE dbdemo;
创建、查看和删除表
- 创建表,使用
CREATE TABLE语句:
1. CREATE TABLE table_name column_name data_type constraint;
例如,要创建一个名为 person 的表,包括编号、名字、生日等字段,可使用以下语句:
1. CREATE TABLE person (
2. id INT(11),
3. name VARCHAR(255),
4. birthday DATE
5. );
- 查看新建的表,使用
SHOW CREATE语句:
1. SHOW CREATE table person;
结果如下所示:
1. +--------+-----------------------------------------------------------------------------------------------------------------+
2. | Table | Create Table |
3. +--------+-----------------------------------------------------------------------------------------------------------------+
4. | person | CREATE TABLE `person` (
5. `id` INT DEFAULT NULL,
6. `name` VARCHAR(255) DEFAULT NULL,
7. `birthday` DATE DEFAULT NULL
8. ) |
9. +--------+-----------------------------------------------------------------------------------------------------------------+
10. 1 row in set (0.01 sec)
- 删除表,使用
DROP TABLE语句:
1. DROP TABLE person;
增价、删出、修改表记录
通用的 DML 即增删改表记录,基本的语句为 INSERT,UPDATE 和 DELETE。
- 向表中插入数据,使用
INSERT语句:
1. INSERT INTO person VALUES(1,'tom','20170912');
- 向表内插入包含部分字段数据的表记录,使用
INSERT语句,例如:
1. INSERT INTO person(id,name) VALUES('2','bob');
- 向表内修改表记录的部分字段数据,使用
UPDATE语句,例如:
1. UPDATE person SET birthday='20180808' WHERE id=2;
- 向表内删除部分表记录,使用
DELETE语句,例如:
1. DELETE FROM person WHERE id=2;
Note
UPDATE 和 DELETE 操作如果不带 WHERE 过滤条件则是对全表进行操作。
查询数据
DQL 用于从一个表或多个表检索所需的数据行。
- 查看表内数据,使用
SELECT语句:
1. SELECT * FROM person;
结果如下所示:
1. +------+------+------------+
2. | id | name | birthday |
3. +------+------+------------+
4. | 1 | tom | 2017-09-12 |
5. +------+------+------------+
6. 1 row in set (0.00 sec)
- 查询某一列,使用
SELECT语句加上要查询的列名:
1. SELECT name FROM person;
2. +------+
3. | name |
4. +------+
5. | tom |
6. +------+
7. 1 rows in set (0.00 sec)
使用 WHERE 子句,对所有记录进行是否符合条件的筛选后再返回。例如:
1. SELECT * FROM person where id<5;
结果如下所示:
1. +------+------+------------+
2. | id | name | birthday |
3. +------+------+------------+
4. | 1 | tom | 2017-09-12 |
5. +------+------+------------+
6. 1 row in set (0.00 sec)
创建、授权和删除用户
如果你安装部署单机版的 MatrixOne,连接登录 MatrixOne 时,你本身便具有最高权限,你可以参考下面的内容创建用户并授权,以便体验 MatrixOne 集群的权限管理功能。
- 使用
CREATE USER语句创建一个用户 mouser,密码为 111:
1. > CREATE USER mouser IDENTIFIED BY '111';
2. Query OK, 0 rows affected (0.10 sec)
- 创建角色 role_r1 测试是否能够创建成功:
1. > CREATE ROLE role_r1;
2. Query OK, 0 rows affected (0.05 sec)
- 将角色 role_r1 赋予用户 mouser:
1. > GRANT role_r1 to mouser;
2. Query OK, 0 rows affected (0.04 sec)
- 授权角色 role_r1 可以在 dbdemo 数据库里建表的权限:
1. > GRANT create table on database * to role_r1;
2. Query OK, 0 rows affected (0.03 sec)
- 查询用户 mouser 的权限:
1. > SHOW GRANTS for mouser@localhost;
2. +-------------------------------------------------------+
3. | Grants for mouser@localhost |
4. +-------------------------------------------------------+
5. | GRANT create table ON database * `mouser`@`localhost` |
6. | GRANT connect ON account `mouser`@`localhost` |
7. +-------------------------------------------------------+
8. 2 rows in set (0.02 sec)
你可以看到你已经成功把在 dbdemo 数据库里建表的权限授予给了 mouser。
- 删除用户 mouser:
1. DROP USER mouser;
权限管理是数据库中体系庞大但是非常有用的功能,如果你想了解更多,参见权限管理。
