SQL语法

前言

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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值