mysql 数据库 常用sql语句

常用 SQL 语句结构

create database 数据库名 charset=utf8;  -- 创建数据库
drop database 数据库名;  -- 删除数据库
use 数据库名;  --切换数据库
select database();  --查看当前选择的数据库
show tables;  --查看当前数据库中所有表

create table 表名(  -- 创建表
id int auto_increment primary key,  -- 创建id字段 类型int 自动增加 主键
foreign key(外键列名) references 副表(主键),  -- 创建时创建外键
sname varchar(10) not null);  -- 创建sname字段 类型varchar(最多10个字符) 不可为空
ALTER TABLE 表名 add COLUMN 列名 VARCHAR(30) 其他限制条件 -- 增加一列
ALTER TABLE 表名 DROP COLUMN 列名 --删除一列
ALTER TABLE 表名 add|change|drop 列名 类型;  -- 修改表
ALTER TABLE 表名 ALTER column 列名 SET DEFAULT '默认值'  -- 给某一个列添加默认值
drop TABLE 表名;  -- 删除表
drop TABLE if EXISTS 表名;  -- 如果存在表删除
desc 表名; --查看表结构
rename TABLE 原表名 to 新表名;--更改表名称
show create TABLE 表名;--查看表的创建语句
ALTER TABLE 表名 ADD CONSTRAINT 规定的名字(随意写) FOREIGN KEY(主表外键) REFERENCES 副表(主键)       on delete restrict"默认,抛异常"|cascade"跟随副表删除"|set null"设置为空"|no action"什么都不做";--外键

insert into 表名 values(...)  -- 全列插入 默认值可以使用not null 或者 default
insert into 表名(1,...) values(1,...)	-- 缺省插入
insert into 表名 values(...),(...)...	-- 同时插入多条数据
update 表名 set1=1,... where 条件 -- 修改
delete FROM 表名 WHERE 条件  -- 删除
SELECT * FROM 表名 WHERE 条件  -- 标准查询
SELECT * FROM 表名 WHERE 列名 BETWEEN 小范围 and 大范围  -- 在某个范围之中查询
SELECT * FROM 表名 WHERE 列名>范围 -- 范围查询
SELECT * FROM 表名 WHERE 列名 in (数据1,数据2,...)  -- 在...中查询 用于非连续范围
SELECT distinct 列名 FROM 表名  -- 去掉重复的列 去重
SELECT 列名 as 别名 FROM 表名  -- 起别名
SELECT * FROM 表名 WHERE 列名 like '%张_'  -- 模糊查询 %通配符 _匹配一个
SELECT * FROM 表名 WHERE 列名 is not null  -- 查询不为空,  is null 为空
SELECT 列名,COUNT(*) FROM 表名 GROUP BY 列名 -- 分组  分组后不可用where应使用having来操作结果
SELECT * FROM 表名 LIMIT <下标开始的位置>,每页多少条  -- 第m页数据,每页n条 (m-1)*n 
SELECT * FROM 表名 ORDER BY 列名 DESC, 第二排序列; -- ORDER BY 用来排序 DESC 是倒序 ASC是正序
/*sql语句支持关系运算符 and or not(优先级与python相同),逻辑运算符> < != <> =,成员运算符in, 
支持统计学count数量avg平均max最大min最小sum和LENGTH.where操作的是表		having操作的是结果数据*/
select 列名,... from 表名1,表名2 where 表名1.id=表名2.id  -- 用where来表示多表联查
select 列名,... from 表名  -- 用JOIN来表示多表联查
INNER JOIN 关联的表名1 on 关联的表名1.关联的列=表名.关联的列 --内连接,OUTER 外连接
LEFT JOIN 关联的表名2 on 关联的表名2.关联的列=关联的表名1.关联的列 --左连接,RIGHT右连接

完整的select语句

select distinct *
from 表名
where 条件
group by 分组列
having 对查询结果的操作
order by 排序(DESC,ASC)
limit 从第几条数据开始(下标),显示几条数据

日期相关

涉及的函数

date_format(date, format) 函数,MySQL日期格式化函数date_format()

unix_timestamp() 函数

str_to_date(str, format) 函数

from_unixtime(unix_timestamp, format) 函数,MySQL时间戳格式化函数from_unixtime

时间转字符串

  1. select date_format(now(), ‘%Y-%m-%d’);
  2. #结果:2016-01-05

时间转时间戳

  1. select unix_timestamp(now());
  2. #结果:1452001082

字符串转时间

  1. select str_to_date(‘2016-01-02’, ‘%Y-%m-%d %H’);
  2. #结果:2016-01-02 00:00:00

字符串转时间戳

  1. select unix_timestamp(‘2016-01-02’);
  2. #结果:1451664000

时间戳转时间

  1. select from_unixtime(1451997924);
  2. #结果:2016-01-05 20:45:24

时间戳转字符串

  1. select from_unixtime(1451997924,’%Y-%d’);
  2. 结果:2016-01-05 20:45:24

附表

MySQL日期格式化(format)取值范围。

含义
%S、%s两位数字形式的秒( 00,01, …, 59)
%I、%i两位数字形式的分( 00,01, …, 59)
小时%H24小时制,两位数形式小时(00,01, …,23)
%h12小时制,两位数形式小时(00,01, …,12)
%k24小时制,数形式小时(0,1, …,23)
%l12小时制,数形式小时(0,1, …,12)
%T24小时制,时间形式(HH:mm:ss)
%r12小时制,时间形式(hh:mm:ss AM 或 PM)
%pAM上午或PM下午
%W一周中每一天的名称(Sunday,Monday, …,Saturday)
%a一周中每一天名称的缩写(Sun,Mon, …,Sat)
%w以数字形式标识周(0=Sunday,1=Monday, …,6=Saturday)
%U数字表示周数,星期天为周中第一天
%u数字表示周数,星期一为周中第一天
%d两位数字表示月中天数(01,02, …,31)
%e数字表示月中天数(1,2, …,31)
%D英文后缀表示月中天数(1st,2nd,3rd …)
%j以三位数字表示年中天数(001,002, …,366)
%M英文月名(January,February, …,December)
%b英文缩写月名(Jan,Feb, …,Dec)
%m两位数字表示月份(01,02, …,12)
%c数字表示月份(1,2, …,12)
%Y四位数字表示的年份(2015,2016…)
%y两位数字表示的年份(15,16…)
文字输出%文字直接输出文字内容
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值