MySQL语法总结

目录

对数据库的操作

对表的操作

对数据/记录的操作

字段约束

基础函数

全转小写:lower

全转大写:upper

获取长度:length

concat:拼接字符串

substr:截取字符串

replace:替换字符

ifnull:判断是否为空

round:四舍五入

ceil 向上取整

floor 向下取整

时间函数:

条件查询

distinct:去重

where条件:

模糊查询:like

null操作空数据

区间范围:between...and...是包含的关系

分页:limit

排序:order by

聚合函数

查最大值:max

查最小值:min

查平均值:avg

求和:sum

统计个数count

分组: group by

having:完成分组后过滤

事务

开始事务

结束事务之提交事务

结束事务之回滚事务

索引

查看索引

创建单值索引

创建唯一索引

创建复合索引

删除索引

使用普通索引,唯一索引

使用复合索引

多表联查

笛卡尔积

连接查询

子查询

视图

创建视图

使用视图


对数据库的操作

  • 连接数据库:mysql -u root -p

    mysql -u root -p 
  • 创建数据库:

    create database database_name default character set utf8;
  • 查看数据库:

    show databases;
  • 用数据库:

    use database_name ;
  • 删除数据库:

    drop  database database_name ;

对表的操作

  • 创建表:

    create table tablename(字段名1 字段类型1(字段长度),字段名2 字段类型2(字段长度));
  • 查看表:

    show tables;
  • 查看表结构

    desc tablename;
  • 删除表

    drop table tablename;
  • 修改表

    alter table tablename xxx(操作)
  • 修改列名

    alter table tablename change 原列名 想改成的列名 列类型;
  • 修改表的名字

    alter table tablename rename 新表名 ;
  • 修改列的类型

    alter table tablename modify  列名 想改的类型;
  • 增加某列

     alter table tablename add 列名 类型;
  • 删除某列

    alter table tablename drop 列名;

对数据/记录的操作

  • 查询记录

    select * from 表名;
  • 插入表记录

    insert into tablename values(值1,值2,...);	#值的个数、顺序要和字段的个数、顺序一样
    insert into tablename.列名1,tablename.列名2 values(值1,值2);#给某一列添加数据
  • 修改表记录

    update tablename set 字段名 = 值;
  • 删除表记录

    delete from tablename;---删除全部表记录(表还在)
  • 防止中文乱码

    set name gbk;

字段约束

  • 主键约束

    create table tablename(字段名1 字段类型1(字段长度) primary key auto_increment,
                    字段名2 字段类型2(字段长度));
  • 非空约束

    create table tablename(字段名1 字段类型1(字段长度),
                    字段名2 字段类型2(字段长度) not null );
  • 唯一约束

    create table tablename(字段名1 字段类型1(字段长度),
                    字段名2 字段类型2(字段长度) unique );
  • 默认约束

    sex CHAR(2) DEFAULT '男'
  • 检查约束

    create table tablename(
    age INT, 
    CHECK (age>0 AND age<=200)
       );
  • 外检约束

    FOREIGN KEY (本表(子表)主键) REFERENCES 外表(主表)名(外表主键)

基础函数

全转小写:lower

SELECT lower(ename) FROM emp;

全转大写:upper

SELECT upper(ename) FROM emp;

获取长度:length

一个字母、数字长度为1,一个汉字为3。跟底层编码表有关

SELECT dname,LENGTH(dname) FROM dept;

concat:拼接字符串

SELECT concat(dname,'hello') FROM dept;
	

substr:截取字符串

substr(1,2) 1:字段名	2:从那个字符开始
	SELECT substr(dname,3) FROM dept;---------从第三个字母后开始截取,直到结束
	substr(1,2,3) 1:字段名	2:从那个字符开始 3:截取长度
	SELECT substr(dname,3,2) FROM dept;-------从第三个字母后开始截取,截取两个字母

replace:替换字符

### replace(1,2,3):替换字符 1:字段名  把2替换成3
SELECT dname,REPLACE(dname,'a','666') FROM dept;

ifnull:判断是否为空

#ifnull(1,2)----判断1是否为null,为null,替换为2.不为null,不管
SELECT comm,IFNULL(comm,200) FROM emp;
	

round:四舍五入

SELECT comm,ROUND(comm)FROM emp;

ceil 向上取整

SELECT comm,CEIL(comm) FROM emp;

floor 向下取整

	SELECT comm,FLOOR(comm) FROM emp;

时间函数:

  • now()----------------获取当前时间(年月日时分秒)

  • year(now())--------获取当前时间的年份

  • month(now())------获取当前时间的月份

  • day(now())---------获取当前时间的日份

  • hour(now())--------获取当前时间的时份

  • minute(now())-----获取当前时间的分份

  • second(now())-----获取当前时间的秒份

条件查询

distinct:去重

SELECT distinct 字段名 FROM tablename;

where条件:

SELECT * FROM tablename WHERE 字段名1 = 条件1 and 字段名2 = 条件2;
SELECT * FROM tablename WHERE 字段名1 = 条件1 or 字段名2 = 条件2;
SELECT * FROM tablename WHERE 字段名 in (条件1,条件2)

模糊查询:like

SELECT * FROM tablename WHERE 字段名 LIKE '%o%';#低效
SELECT * FROM tablename WHERE 字段名 LIKE 'o%';#最高效
SELECT * FROM tablename WHERE 字段名 LIKE '%o';#高效
SELECT * FROM tablename WHERE 字段名 LIKE'l__';

null操作空数据

SELECT * FROM tablename WHERE 字段名 IS NULL;
SELECT * FROM tablename WHERE 字段名 IS  not NULL;

区间范围:between...and...是包含的关系

SELECT * FROM tablename WHERE 字段名 BETWEEN 3000 AND 10000;#等效包含3000、10000

分页:limit

#查询表中前两条信息
	SELECT * FROM tablename limit 2;	
#从第二行,展示两条信息
	SELECT * FROM tablename LIMIT 1,2;#从n+1行开始展示,要展示的行数

排序:order by

SELECT * FROM tablename ORDER BY 字段名;#默认升序
SELECT * FROM tablename ORDER BY 字段名 DESC;#降序
#查询的是数字---按照数字排序
#查询的是字母---按照字母的顺序
#查询的是生日---按照数值排序
#查询的是汉字---按照汉字对应在utf8编码表中数字进行排序

聚合函数

查最大值:max

SELECT MAX(字段名)  FROM tablename;

查最小值:min

SELECT MIN(字段名)  FROM tablename;

查平均值:avg

SELECT AVG(字段名) 平均工资 FROM tablename;

求和:sum

SELECT SUM(字段名) 求和 FROM tablename;

统计个数count

SELECT COUNT(1) FROM tablename;

分组: group by

查询时,出现了混合列(聚合列跟非聚合列)的现象是不行的,必须分组

#查询每个部门的最高薪---部门编号deptno---薪水sal	
SELECT deptno, MAX(sal) FROM emp GROUP BY deptno;
#		非聚合列,聚合列

having:完成分组后过滤

#查询每个部门的人数,人数>1的部门
SELECT deptno,COUNT(1) FROM emp GROUP BY deptno HAVING COUNT(1) >1;

事务

开始事务

start transaction

结束事务之提交事务

commit

结束事务之回滚事务

rollback

索引

查看索引

show index from 表名;

创建单值索引

create index 索引名字 on 表名(字段名);

创建唯一索引

create unique index indexname on tablename(字段名);

创建复合索引

create index indexname on tablename(字段名1, 字段名2);

删除索引

alter table tablename drop index indexname; 

使用普通索引,唯一索引

explain	select * from tablename where 字段名 = 字段值;

使用复合索引

explain	select * from tablename where 字段名1 = 字段值  and 字段名2 = 字段值;

多表联查

笛卡尔积

select * from tablename1,tablename2 
				where tablename1.字段名 = tablename2.字段名#表关系
                and tablename1.字段名2 = 字段值;#业务关系

连接查询

  • 内连接-----inner join: 取两个表的交集

    SELECT * FROM tablename1 INNER JOIN tablename2 
    						ON  tablename1.`deptno` = tablename2.`deptno`#表关系
    						where tablename1.字段名2 = 字段值;#业务关系

  • 外左连接-----left join :左表的所有和右表满足条件的,不满足是null

    SELECT * FROM tablename1 left JOIN tablename2 
    						ON  tablename1.`deptno` = tablename2.`deptno`#表关系
    						where tablename1.字段名1 = 字段值;#业务关系

  • 外右连接-----right join :右表的所有和左表满足条件的,不满足是null

    SELECT * FROM tablename1 right JOIN tablename2 
    						ON  tablename1.`deptno` = tablename2.`deptno`#表关系
    						where tablename1.字段名2 = 字段值;#业务关系

子查询

SELECT * FROM tablename1 WHERE 字段名1 IN (SELECT 字段名1 FROM tablename2 WHERE 字段名2 = '字段值');

视图

创建视图

create view view_name as SQL查询语句

使用视图

select * from view_name;

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL有许多冷门的语法和功能,其中一些包括: 1. 正则表达式操作符:MySQL中可以使用REGEXP或NOT REGEXP运算符(或RLIKE和NOT RLIKE)来操作正则表达式。这使得我们可以在查询中使用正则表达式来匹配特定的模式。例如,可以使用REGEXP运算符来选择以特定字符或字符集开头的所有网站,如引用所示。 2. REPLACE INTO语法MySQL的REPLACE INTO语法可以在插入数据时执行替换操作。当新的数据产生时,用新的数据替换已存在的数据(根据主键进行匹配)。这样可以确保数据库中关于该主键的信息始终是最新的数据。 3. 存储过程和触发器:MySQL支持存储过程和触发器,它们可以在数据库中实现更复杂的逻辑和业务流程。存储过程是一组预编译的SQL语句,可以通过存储过程名字来调用执行。触发器则是与特定表相关联的脚本,可以在插入、更新或删除数据时自动执行。这些功能可以帮助开发人员更好地管理和控制数据库操作。 4. 分析函数:MySQL提供了各种分析函数,例如SUM,AVG,COUNT等,用于对数据进行汇总和分析。这些函数可以对查询结果进行计算,以生成汇总数据或执行其他数学运算。 总结起来,MySQL的冷门语法包括正则表达式操作符、REPLACE INTO语法、存储过程和触发器,以及分析函数等。这些功能可以提供更灵活和强大的数据处理和分析能力。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [mysql比较冷门的语法](https://blog.csdn.net/a1264716408/article/details/122319922)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [mysql冷门](https://blog.csdn.net/m0_37871355/article/details/120690823)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值