数据库第二节课:DML语言

数据库第二节课:DML语言

一.DML:数据操作语言,增删改查

1.插入数据

insert into 表名(列名1,列名2,... ... )values (值1,值1,... ...)
注:插入所有列值时列名可省略,但各列所对应的值要逐一对应

2.修改:

-- 把departments中department_id的类型修改成int
alter table departments1 MODIFY department_id INT;
-- 修改列名
ALTER TABLE users change age birthday date SHOW TABLES

update 表名 set 列名1 = 新值1 ... ... where 筛选条件(一般选用唯一性条件)

3.删除语句:

delete from 表名 where 筛选条件(一般选用唯一性条件)

4.查询:

select 列名1,列名2...from 表名 [where 条件,groub by 分组列 having 分组列条件 order by 列排序 limit 截取]

5.运算符:

1)算数运算符:+ - * /
2)比较运算符: = ,!= ,<>,>,>=,<,<=,in,between A and B (A和B之间)
like,not like

例 : where  列名   (not)like  '_夯烎%'/'%夯烎%'   _匹配一个字符,%匹配0到n个字符

3)逻辑运算符: and or not

6.分组函数:

1).group by 使用方法

select 分组列,分组函数 from 表名 group by 分组列   -- (1)

2).分组函数:count()/avg()/sum()/max()/min()
3).分组后条件:(1)having (分组后筛选,与where不同 ,where分组前筛选)

7.排序 order by:

select 列名1,列名2... ... from 表名
order by 列名 ASC/DESC(升序/降序,默认为升序)

8.limit 截取:

select 列名1,列名2... ... from 表名
条件  limit 起始位置,数量(由哪开始取几个)

注:where ,group by ,having , order by , limit 联合使用的时候顺序不能乱

二. 时间函数:

系统当前时间:			NOW()   在执行开始时就获取了值
						SYSDATE()	在执行到这儿的时候才获取到值

休眠:		    		SLEEP(以秒为单位的时间)

当前时间戳:				CURRENT_TIMESTAMP()

日期格式化转换:			data_format('2021-01-19 10:19:36','%Y%m%d%H%i%s')
						TIME_FORMAT('10:19:36','%H%i%s')

字符串转时间:			STR_TO_DATE('08/08/2008','%Y%m%d')

日期,天数转换函数:		TO_DAYS(日期)  从公元元年到今天的天数
						TIME_TO_SEC('01:00:05')
						SEC_TO_TIME(3605)

日期时间拼凑函数:		MAKEDATE(2021,31)-->2021_01_31 2021年第31天
						MAKETIME(,,)

只能在MySQL中用的函数:
			为日期增加一个时间间隔:	data_add(日期,interval 数量 单位)
			
			为日期减少一个时间间隔:	data_sub(日期,interval 数量 单位)
			
			时间,日期相减:			DATEDIFF(日期1,日期2)
									TIMEDIFF(时间1,时间2)
			
			所在月份最后一天:  		LAST_DAY(列名)
			
			提取年份:				YEAR( )

注:日期能直接减,日期数据最好用日期函数处理

三.字符串函数:

字符串拼接:  			CONCAT(列名1,列名2,...)

替换:					INSTR(列名,起始,数量)  下标由1开始

转大小写:				UPPER(str)/LOWER(str)

左右取值:				LEFT(str,len)/RIGHT(str,len)

填充: 					RPAD(str,len,填充的字符)/LPAD(str,len,填充的字符)

去空格:					LTRIM(str)/RTRIM(str)

将列值重复x次:			REPEAT(str,count)

用y替换x:				REPLACE(str,x,y)

比大小:					STRCMP(列名1,列名2)

截取:					SUBSTRING(str,起始位置,len)

长度:					LENGTH(str)

四.多表查询:

1.嵌套查询

select 列名1... ... from 表名 where 列名 = (select 列名 from 表名2 where 条件)

2.笛卡尔积:

select 表名1.列名1,表名2.列名... ... from 表名1,表名2... where 唯一性条件

3.左/右外链接:

以左/右表为主,左/右表中匹配不上的会有空值

select 表名1.列名1,表名2.列名... ... from 表名1  LEFT/RIGHT  JOIN 表名2  on 条件 LEFT/RIGHT  JOIN 表名3  on 条件... ... 

4.内链接:

以两(多)表匹配为主,能匹配上的显示

select  表名1.列名1,表名2.列名... ...from 表名1  INNER JOIN 表名2 INNER JOIN 表名3 on 条件

去重函数: DISTINCT 例:select distinct 列名 from 表名

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值