Mysql常用sql语句

1.创建数据库:
create database 数据库名

2.创建表:
create table 表名(
字段1,
字段2,
字段3
)

3.删除数据库
DROP DATABASE 数据库名;

4.删除表
DROP TABLE 表名;

5.增加数据:
inset into 表名 (字段1,字段2)
values
(“值1”,“值2”),
(“值1”,“值2”),
(“值1”,“值2”);

6.删除
delete from 表名 where 条件;
删除全部
delete from 表名;会记录日志,数据可恢复,效率较低
truncate table 表名;不会记录日志,不可恢复数据,效率较高

–查询
7.select * from 表名; * 是通配符,表示查询多有列

8.select 列1 , 列2 from 表名; 查询表中指定列的数据

9.去重–select distinct s_class from t_student; distinct -去重

10.返回指定行数
返回限定行数 显示前三个学生信息
SELECT * FROM t_student LIMIT 0,3;
0表示从第一条数据
3表示显示几条数据

11.定义集合关系
in:—查询值在集合中的记录
– 查询178-179的学生
SELECT * FROM t_student WHERE s_class IN(‘J178’,‘J179’);
not in :----查询值不在集合中的记录
– 查询178-179 之外的学生
SELECT * FROM t_student WHERE s_class NOT IN(‘J178’,‘J179’);

12.模糊查询
SELECT * FROM t_student WHERE s_name LIKE ‘%七’;
%通配符,匹配0个或多个字符
_通配符,匹配一个字符

13.处理空值
不能用 = 或 != ,只能用is null 或 is not null
SELECT * FROM t_student WHERE s_grade IS NULL;

14.排序
SELECT * FROM t_student ORDER BY s_grade DESC;
asc是默认排序-升序
desc是降序
多列排序
先按第一列条件排序
如果第一列的值相等
再按第二例条件排序
– 将学生按成绩排序 如果成绩一样,按 ID排序
SELECT * FROM t_student ORDER BY s_grade DESC,s_id ASC;

15.分组
概念:将某个列值相同的记录分成一个组,在进行数据运算
select count(*) from 表名 group by 要分组的列名
多列分组: 只有两个或多个列值完全相同的记录,才分成一个组
分组查询后,查询列只能出现分组的列和聚合函数,
where 和 having的区别
where 执行在分组之前,不能使用聚合函数
having 执行在分组之后,是对分组的结果进行筛选,只能使用聚合函数

16.SQL查询语句的执行顺序
查询语句执行顺序,决定了查询关键字的书写顺序,后执行的查询语句可以使用先执行查询语句的别名
顺序
1,执行from
2.执行where进行条件过滤
3.执行group by分组
4.执行 select 投影
5.执行 having 对分组结果进行筛选
6.执行order by 排序
7.执行 limit 返回限定行

–mysql函数

***时间函数***
	select now():得到当前时间,年月日 时分秒
	select curdate():得到当前时间  年月日
	select  year(日期): 得到指定时间的年份
	select   date_add(日期,interval   100   day/hours/month/year)--参数 时间都可以
		得到日期时间 100天以后的日期
	计算今天到某一天还有几天
		select timestampdiff(day,now(),'2020-10-1')
		
***聚合函数***

	count() : 统计行的数量
		(*):统计所有符合条件的值,包括空值
		(列名):只统计非空值
		(distinct 列名):去除重复列值,统计数量
	sum()  ; 统计某个列的总和
		(列名) : 计算该列的总和
	avg()   统计某个列的平均值
		(列名) : 计算该列的平均值(只算非空的值)
	max() :  统计某个列的最大值
	min() :  统计某个列的最小值

–联表查询
将两个表中的数据,使用查询语句同时显示在查询结果中
联表查询采用笛卡尔乘积实现,将一个表中所有记录和另一个表中所有记录一一关联.

分类
	内联接
		只能查询两个表之间有联系的数据
			关键字:join on 
			select 查询列 from 表1,表2 where 主键 = 外键
			或
			select 查询列 from 表1 join 表2  on 主键 = 外键
			SELECT c.`c_type`,m.`m_name`  FROM t_car c JOIN t_man m ON c.`fk_manId` = m.`pk_id`;
			SELECT c.`c_type`,m.`m_name`  FROM  t_car c, t_man m WHERE c.`fk_manId` = m.`pk_id`;

	外连接
		可以查出一个表中所有的记录,无论该记录是否有对应的记录
			left/right   join  on
			select 查询列 from 表1   left join 表2 on 主键 = 外键
			SELECT m.*,COUNT(c.`pk_id`) FROM  t_man m LEFT JOIN t_car c ON m.`pk_id` = c.`fk_manId` GROUP BY m.`pk_id`;

多对多查询
	select 查询列  from 表1  join  中间表  on  中间表外键 = 表1主键   join 表2 on 中间表外键 = 表2 主键
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值