mysql的常用操作和修改,会一直补充(参考官方)

1.创建表结构

CREATE TABLE table_name (column_name column_type)

2.删除数据表

DROP TABLE table_name 

3.插入数据

INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN )

 4.查询数据

SELECT column_name,column_name FROM table_name [WHERE Clause] [LIMIT N] [ OFFSET M]

5.where条件

SELECT field1, field2,...fieldN FROM table_name1, table_name2... [WHERE condition1 [AND [OR]] condition2.....

6.update更新数据

UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]

7. delete删除数据

DELETE FROM table_name [WHERE Clause]

8.like子句

SELECT field1, field2,...fieldN FROM table_name WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'

8.union 语句

SELECT expression1, expression2, ... expression_n FROM tables 
[WHERE conditions] UNION [ALL | DISTINCT] SELECT expression1, expression2, ... expression_n
FROM tables [WHERE conditions]

 9.排序

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]

10.分组

SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value
GROUP BY column_name

11.连接

  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a INNER JOIN tcount_tbl b ON a.runoob_author = b.runoob_author

SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a LEFT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author

SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a RIGHT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author

12.null值处理

select * , columnName1+ifnull(columnName2,0) from tableName

13.正则

查找name字段中以'st'为开头的所有数据
SELECT name FROM person_tbl WHERE name REGEXP '^st'

14 限制只取第一个,类似于top 1

SELECT * FROM
(
    SELECT paused_time as end_time FROM production_time WHERE created_time = curdate()
    UNION 
    SELECT resumed_time as end_time FROM  pause_timer WHERE created_time = curdate()
    UNION
    SELECT end_time as end_time FROM  timer_idle WHERE created_time = curdate()
) as end_time
ORDER BY end_time DESC 
LIMIT 1

15   列出常见MYSQL数据存储引擎

InnoDB:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。 

MyISAM:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比 较低,也可以使用。

MEMORY:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。

16  mysql 获取两个时间相差年,天,秒等等
 

SELECT 
TIME_TO_SEC(TIMEDIFF('2018-09-30 19:38:45', '2018-08-23 10:13:01')) AS DIFF_SECOND1, -- 秒
UNIX_TIMESTAMP('2018-09-30 19:38:45')-UNIX_TIMESTAMP('2018-08-23 10:13:01') AS DIFF_SECOND2, -- 秒
TIMESTAMPDIFF(SECOND,'2018-08-23 10:13:01','2018-09-30 19:38:45') AS DIFF_SECOND3, -- 秒
TIMESTAMPDIFF(MINUTE,'2018-08-23 10:13:01','2018-09-30 19:38:45') AS DIFF_MINUTE, -- 分
TIMESTAMPDIFF(HOUR,'2018-08-23 10:13:01','2018-09-30 19:38:45') AS DIFF_HOUR, -- 小时
TIMESTAMPDIFF(DAY ,'2018-08-23 10:13:01','2018-09-30 19:38:45') AS DIFF_DATE1, -- 天
DATEDIFF('2018-09-30 19:38:45','2018-08-23 10:13:01') AS DIFF_DATE2, -- 天
TIMESTAMPDIFF(MONTH,'2018-08-23 10:13:01','2018-09-25 19:38:45') AS DIFF_MONTH, -- 月
TIMESTAMPDIFF(YEAR,'2018-08-23 10:13:01','2020-07-25 19:38:45') AS DIFF_YEAR -- 年
FROM TABLE;

17  获取近三年的数据

select year(max(statistic_date))-3 from chinatimes_db.t_fund_nav_cal_pre where  fund_id = 'GSF000109762'  order by statistic_date

select DATE_SUB(max(statistic_date), INTERVAL 3 YEAR) as start_date  from chinatimes_db.t_fund_nav_cal_pre where  fund_id = 'GSF000109762'  order by statistic_date

18第一个是复制表结构第二个是复制内容

CREATE TABLE new_fund_nav LIKE chinatimes_db.t_fund_nav;
INSERT INTO  new_fund_nav SELECT * FROM chinatimes_db.t_fund_nav;

19  数据库字段替换某一些关键字

UPDATE 表名 SET 字段名 = REPLACE(替换前的字段值, '替换前关键字', '替换后关键字');

20 增加字段

ALTER TABLE 表名 ADD COLUMN 字段名 VARCHAR(20) DEFAULT NULL COMMENT '字段名'

 指定在某个字段之后加AFTER字段名

ALTER TABLE research_report_bak ADD COLUMN report_date varchar(200) DEFAULT NULL COMMENT '研报发布日期'  AFTER size

21 取某字段的后几位

select  SUBSTRING(title, -6) from  research_report_bak 

22数据表 从一个数据库存到另一个数据库

CREATE TABLE 表名称 LIKE 数据库.表名称;
INSERT 表名称 SELECT * FROM 数据库.表名称;

23删除某列

ALTER TABLE table_name DROP COLUMN field_name

24更改某个字段里的某个字符串

update state_statistical_bureau set content=REPLACE (content,',','')

25  MySQL死锁解决

show full processlist;
select * from information_schema.innodb_trx;
kill id

26  修改字段的注释

alter table tablename modify column field_name varchar(200) NOT NULL COMMENT '注释'
字段名和字段类型在后面照写保持一致,就注释换掉就行

27删除唯一索引:

ALTER TABLE `operate_abnormals` DROP INDEX `index_rec_id`

28从另一张表更新到一个表

UPDATE   e_listed_shareholder e,listed_company_table l set  e.stock_code  =   l.stock_code   where e.entname  = l.corporate_name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值