前言
DML【数据操纵语言】
DML(data manipulation language)数据操纵语言:就是我们最经常用到的 SELECT、UPDATE、INSERT、DELETE。 主要用来对数据库的数据进行一些操作。
SELECT 列名称 FROM 表名称
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
DELETE FROM 表名称 WHERE 列名称 = 值
1.SELECT - retrieve data from the a database 查询
2.INSERT - insert data into a table添加
3.UPDATE - updates existing data within a table 更新
4.DELETE - deletes all records from a table, the space for the records remain 删除
5.CALL - call a PL/SQL or Java subprogram
6.EXPLAIN PLAN - explain access path to data
Oracle RDBMS执行每一条SQL语句,都必须经过Oracle优化器的评估。所以,了解优化器是如何选择(搜索)路径以及索引是如何被使用的,对优化SQL语句有很大的帮助。Explain可以用来迅速方便地查出对于给定SQL语句中的查询数据是如何得到的即搜索路径(我们通常称为Access Path)。从而使我们选择最优的查询方式达到最大的优化效果。
7.LOCK TABLE - control concurrency 锁,用于控制并发
DDL【数据库定义语言】
DDL(data definition language)数据库定义语言:其实就是我们在创建表的时候用到的一些sql,比如说:CREATE、ALTER、DROP等。DDL主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化工作上
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)
ALTER TABLE table_name
ALTER COLUMN column_name datatype
DROP TABLE 表名称
DROP DATABASE 数据库名称
1.CREATE - to create objects in the database 创建
2.ALTER - alters the structure of the database 修改
3.DROP - delete objects from the database 删除
4.TRUNCATE - remove all records from a table, including all spaces allocated for the records are removed
TRUNCATE TABLE [Table Name]。
5.COMMENT - add comments to the data dictionary 注释
6.GRANT - gives user access privileges to database 授权
7.REVOKE - withdraw access privileges given with the GRANT command 收回已经授予的权限
DCL【数据库控制语言】
DCL(Data Control Language)数据库控制语言:是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。这个比较少用到。
1.COMMIT - save work done 提交
2.SAVEPOINT - identify a point in a transaction to which you can later roll back 保存点
3.ROLLBACK - restore database to original since the last COMMIT 回滚
4.SET TRANSACTION - Change transaction options like what rollback segment to use 设置当前事务的特性,它对后面的事务没有影响
一.表添加字段
语法:在 tableName 表 column1 字段后边增加 ’新增字段‘ 字段默认值 0
ALTER TABLE tableName ADD pro_amount DECIMAL (20, 2) DEFAULT 0 COMMENT '项目合同金额' AFTER column1;
示例:在 sys_user 表 status 字段后边增加 ’账户余额‘ 字段默认值 0
ALTER TABLE sys_user ADD balance DECIMAL (20, 2) DEFAULT 0 COMMENT '账户余额' AFTER status;
MySQL8大表快速添加字段
ALTER TABLE sys_user ADD balance DECIMAL (20, 2) DEFAULT 0 COMMENT '账户余额' AFTER status, algorithm=instant;
表增加字段注释、默认值及指定位置,语法:
ALTER TABLE table_name ADD column_name data_type(32) DEFAULT value COMMENT '注释' AFTER appoint_column;
table_name-表名;column_name-字段名;data_type(32)-数据类型及长度; value-默认值;appoint_column-指定列;AFTER/BEFORE-指定字段后/前;
表增加字段注释、默认值及指定位置,示例:
ALTER TABLE pro_invoice_details ADD pre_tax_total DECIMAL ( 16, 2 ) DEFAULT 0 COMMENT '未税总价:含税总价/(税率+1)' AFTER valorem_total;
二.表删除字段
语法:tableName-表名、field-字段名
ALTER TABLE tableName DROP COLUMN field;
示例:删除 sys_user表 desc字段
ALTER TABLE sys_user DROP COLUMN desc;
三.表增加索引
1.INDEX(普通索引):
语法:table_name-表名;index_name-索引名称;column-索引字段
ALTER TABLE table_name ADD INDEX index_name (`column`);
示例:
ALTER TABLE expense_bulk_payment_details ADD INDEX idx_batch_payment_id (`batch_payment_id`);
2.PRIMARY KEY(主键索引)
语法:table_name-表名;column-索引字段
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) ;
示例:
ALTER TABLE expense_bulk_payment_details ADD PRIMARY KEY (`id`);
3.UNIQUE(唯一索引)
语法:table_name-表名;column-索引字段
ALTER TABLE `table_name` ADD UNIQUE (`column` ) ;
示例:
ALTER TABLE expense_bulk_payment_details ADD UNIQUE (`batch_payment_id`);
4.FULLTEXT(全文索引)
语法:table_name-表名;column-索引字段
ALTER TABLE `table_name` ADD FULLTEXT ( `column` );
示例:
ALTER TABLE expense_bulk_payment_details ADD FULLTEXT (`batch_payment_id`);
5.(联合索引/多列索引)
语法:table_name-表名;index_name-索引名称;column1-索引字段1; column2-索引字段2……
ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` );
示例:
ALTER TABLE expense_bulk_payment_details ADD INDEX idx_union (`id`,`batch_payment_id`);
四、查询指定数据库空表
SELECT table_name FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'ltws3_0_0' AND TABLE_ROWS = 0;
五、分析行锁
语法:
show status like 'innodb_row_lock%';
示例:
Variable_name value
Innodb_row_lock_current_waits 0
Innodb_row_lock_time 346140
Innodb_row_lock_time_avg 1989
Innodb_row_lock_time_max 51004
Innodb_row_lock_waits 174
六、查看锁表
语法:
show processlist;
示例:
Id User Host db Command Time State Info
11523 root 127.0.0.1:52107 xxyw Sleep -2512038
11524 root 127.0.0.1:52108 xxyw Sleep -2511558
11525 root 127.0.0.1:52109 xxyw Sleep -2511558
12956 root 127.0.0.1:53985 test Sleep 777
13019 root 127.0.0.1:64393 Sleep 14082
13079 root 127.0.0.1:61692 test Sleep 1
13108 root 127.0.0.1:55766 test Sleep 8414
13109 root 127.0.0.1:55767 test Sleep 7498
13119 root 127.0.0.1:55927 test Sleep 7498
13121 root 127.0.0.1:55950 test Sleep 7840
13126 root 127.0.0.1:56117 test Sleep 1
13127 root 127.0.0.1:56119 test Sleep 7846
13134 root 127.0.0.1:64613 test Sleep 6885
13140 root 127.0.0.1:50200 test Sleep 6885
13141 root 127.0.0.1:50201 test Sleep 6709
13142 root 127.0.0.1:61027 test Query 0 init show processlist
13143 root 127.0.0.1:61053 test Sleep 778
13144 root 127.0.0.1:57194 test Sleep 515
13146 root 127.0.0.1:57196 test Sleep 511
解锁:
kill 13141
查询指定数据库空表:
SELECT table_name FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'nacos' AND TABLE_ROWS = 0;