MySQL基础语法

目录

一、建库、删库、查看库 

二、建表、删表、修改表、查看表

1、建表

2、删除表

3、修改表--增加列

4、修改表--删除列

5、修改表--修改列字段类型、默认值

6、修改表--修改列字段名称

7、修改表--修改主键

8、修改表--重命名数据表

9、查看表

三、增删改查

四、数据处理

1、时间处理

2、字符串处理


一、建库、删库、查看库

create database testdb;  --相当于创建一个存放表文件的文件夹
drop database testdb;
show databases;

二、建表、删表、修改表、查看表

1、建表

create table testA(
id int(5) primary key,
name varchar(20),
age int(5)
) ENGINE ='INNODB' DEFAULT ='utf8';

2、删除表

drop TABLE testA;

3、修改表--增加列

ALTER TABLE testA ADD COLUMN sex VARCHAR(5);

4、修改表--删除列

ALTER TABLE testA DROP COLUMN sex ;

5、修改表--修改列字段类型、默认值

ALTER TABLE testA MODIFY age VARCHAR(5) ;
ALTER TABLE testA MODIFY age VARCHAR(6) DEFAULT 'female' ;
ALTER TABLE testA MODIFY age VARCHAR(6) NULL ;
ALTER TABLE testA MODIFY age VARCHAR(6) NOT NULL ;

6、修改表--修改列字段名称

ALTER TABLE testA CHANGE age birth VARCHAR(15) ;

7、修改表--修改主键

--主键要同时创建,同时删除,有自增先删除自增,才能删除主键;

ALTER TABLE testA drop PRIMARY KEY
ALTER TABLE testA add PRIMARY KEY(id,name)

--创建主键有两种方式

--单主键

create table testA(
id int(5) primary key,
name varchar(20),
age int(5)
) ENGINE ='INNODB' DEFAULT CHARSET='utf8';

--复合主键

create table testB(
id int(5) ,
name varchar(20),
primary key(id,name)
) ENGINE ='INNODB' DEFAULT CHARSET ='utf8';

8、修改表--重命名数据表

ALTER TABLE testA RENAME to testC 

9、查看表

describe testA;--表结构
SHOW TABLE STATUS LIKE 'testC';--表属性

三、增删改查

1、 --查看数据,通过where条件来缩小查询范围
SELECT * FROM customers  where customer_id = 1  
2、--删除数据,通过where条件来锁定删除数据的范围
DELETE FROM customers  where customer_id = 1      
3、 --更新数据,通过where 条件来限制更新数据的范围
UPDATE customers set level = 'VIP'  where customer_id = 2   
4、--增加数据,注意列和列值的映射关系,如果不指定列名的顺序,则默认按表中列的顺序插入数据。
INSERT INTO customers(customer_id,customer_name,level,score) VALUES (6,'vivi','SVIP',200)   

四、数据处理

1、时间处理

--获取当前时间
SELECT CURRENT_TIME,CURRENT_DATE,CURRENT_TIMESTAMP/now()    
--13:57:24;2022-06-20;2022-06-20 13:57:24

1.1 获取年月日

SELECT CURRENT_DATE,YEAR(CURRENT_DATE),MONTH(CURRENT_DATE),DAY(CURRENT_DATE)
--2022-06-20;2022;6;20   

1.2 时间加减

SELECT DATE_ADD(CURRENT_DATE,INTERVAL 1 day)   --时间单位可以是year、month、day,当时间为负值是就相当于做减法
SELECT DATE_SUB(CURRENT_DATE,INTERVAL 1 day)

1.3 求时间差

SELECT DATEDIFF(CURRENT_DATE,DATE_ADD(CURRENT_DATE,INTERVAL 1 month))  --时间单位是天
SELECT TIMESTAMPDIFF(month,CURRENT_DATE,DATE_ADD(CURRENT_DATE,INTERVAL 1 month))  --时间单位,年月日时分秒

1.4 时间格式转换

SELECT date_FORMAT(now(),'%y-%m-%d')
--2022-06-21
SELECT DATE_FORMAT('20220621','%Y-%m-%d')     --字符串转时间格式,要求字符串是8位的字符串
--2022-06-21
select str_to_date('11/11/2020','%m/%d/%Y');
select  UNIX_TIMESTAMP(),FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y-%m-%d')
--1655782742;2022-06-21
select  CURRENT_TIMESTAMP,UNIX_TIMESTAMP(CURRENT_TIMESTAMP),FROM_UNIXTIME(UNIX_TIMESTAMP(CURRENT_TIMESTAMP))
--2022-06-21 11:44:13;1655783053;2022-06-21 11:44:13

1.5 时间节点计算

SELECT WEEKDAY(CURRENT_DATE)  --当前周第几天,0为第一天
SELECT DAYOFMONTH(CURRENT_DATE)   --当前月第几天
SELECT DAYOFYEAR(CURRENT_DATE)     --本年第几天
SELECT WEEKOFYEAR(CURRENT_DATE)  --每年第几周
--获取每月最后一天
--获取每月第一天
SELECT LAST_DAY(CURRENT_DATE)
--2022-06-30
select DATE_ADD(CURRENT_DATE,interval -DAY(CURRENT_DATE)+1 day)
--每周第一天
SELECT DATE_ADD(CURRENT_DATE,INTERVAL -WEEKDAY(CURRENT_DATE) DAY)
--每周第二天
SELECT DATE_ADD(CURRENT_DATE,INTERVAL -WEEKDAY(CURRENT_DATE)+1 DAY)

1.6 求每月天数

select day(last_day(date_format(CONCAT('2023-01','-01'),'%Y-%m-%d')))

2、字符串处理

coalesce(value1,value2,value3,…) --取第一个不为空的值

SELECT REPLACE('惊天*动地*泣鬼神','*','!') --替换

select REGEXP(str1,'') --正则

LPAD(c.n,2,0) --显示两位数字,不足向左补0

-----持续更新

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值