MySql教程

MySQL丨理论丨(四)MySQL 语法

本文主要是介绍MySQL丨理论丨(四)MySQL 语法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

同步发布:Hedon丨MySQL丨理论丨(四)MySQL 语法 (排版更佳!)

参考:https://www.cnblogs.com/fantastic-21/p/9736220.html

1、Linux 命令

mysql -u root (用户名) -p;

输入密码,即可登录

显示当前的数据库:show databases;

使用数据库:use 数据库名称;

查看数据表:show tables;

显示表的基本属性:describe 表名;

2、常用的字段类型有哪些?

1)整形(整数):

int:取值范围:-2147483648–2147483647

tinyint:取值范围:-128–127

2)字符串:

varchar(n):可变长度

char(n):不可变长度,相对于 varchar 来说,char 占用空间,但它也是有优点的,就是存取速度要优于 varchar

3)日期时间:

date:yyyy-mm-dd  例如:2021-01-12

time:hh:mm:ss 例如:10:20:45

datetime:yyyy-mm-dd hh:mm:ss

4)浮点型:(m:代表总位数,n:代表小数的位数)

float(m,n)例如:float(5,2) 就可以存储:123.22、345.98

double(m,n)和 float 的区别是精度较高,即存储的精确度较高

decimal(m,n)三种类型中,精度最高。

3、如何创建表?

(注意:MySQL中,写完语句后要加分号;,表示结束,表名和字段名最好用字母或字母加数字来标识,最好能是见名知意的单词)

​ 场景:创建一个表,id为主键,名字的类型为varchar,并且不能为空,编码是:utf8

语法:

create table 表名 (id int primary key,name varchar(10) not null,字段名3 类型,...)DEFAULT CHARSET=utf8;

4、如何批量插入数据?

注意:字段名和值是一一对应的。

insert  into 表名 (字段名1,字段名2)  values (值1,值2); 

5、如何更新数据?

1)无条件更新

update 表名 set 字段1=值1,字段2=值2,...,字段N=值N;

2)条件更新

update 表名 set  字段1=值1,...,字段N=值N where 条件A and(or) 条件B and(or) ...;

6、如何删除?(慎用)

1)条件删除

delete from 表名 where 条件A and(or) 条件2,...;  

2)无条件删除

delete from 表名            ------------ 删除的是表的数据

drop table 表名             -------------删除整个表,包括表的结构

drop database  数据库名     ------------删除数据库

7、如何查询?

1)查询特定字段

select 字段1,字段2,...,字段N from 表名;

2)查寻所有字段

select * from 表名

3)条件查询

select ... from 表名 where 条件A and(or) 条件B and(or) ...;

4)多表查询(注意:查询的字段名要带表名加一个点,查询才能够识别并查找)

select A.字段名,B.字段名 from 表A,表B,...,表N  where 关联条件 and 过滤条件;

8、如何对查询到的结果进行排序?-------asc升序(默认,可以不写),desc降序

select  字段名  from 表名 where 条件 order by 字段X asc(desc);

9、查询语句结构,或者说先写什么,再写什么?

  select  字段名              -------------查询什么字段

  from 表名                   ------------来自什么表

  where     条件语句          ---------条件

  group by                   ----------按什么字段分组

  having                     -----------过滤条件

  order by                   -------------排序

  limit m,n                  -----------分页(索引从m开始,第一条索引为0,第2条索引为1;n表示每页显示的数据条数)

10、怎么分组?----group by

注意:group by 必须和聚合函数结合使用。常见聚合函数:sum(), count(), avg(), min(), max() 等。

group by 后边的分组字段要与 select 后边的字段保持一致。

如果过滤分组,则使用 having+过滤条件 来完成。

场景:查询每个年级的总人数

语法:

select 年级,sum(人数) from 表 group by 年级;

having 相当于 where 语句,但 having 可以包含聚合函数,但 where 不可以。

having 常常与 group by 一起使用。

例如:

select 学号,sum(成绩) from 成绩表 group by 学号 having sum(成绩)>600;

11、怎么分页?

select 字段名 from 表名 limit m,n;

12、范围查询?

select 字段名 from 表名 where 字段名 between 值1 and 值2;

13、in not in的用法?------查询的结果是集合,in是在什么集合内,not in则相反。

select 字段名 from 表名 where 条件字段  in (值1,值2,...,值N);

14、模糊查询?

%用来匹配任意长度的字符串,可以放你想放的位置(前,中,后),放在前面,说明前面可以是任意字符串,但结尾是xx

select ... from ... where ... like '%xx' ; 

一个下滑线_占一个位,可以匹配任意字符串,但只能匹配一个,可以用来匹配身份证号,电话号码等。

select ... from ... where ... like '_x';

15、count() 的用法?------------统计

select count(*)from 表名 where 条件;

16、去重?--------distinct

select distinct 字段名 from 表名;  

17、数值类型函数的用法?

min() :最小值 max() :最大值 avg():平均值 sum():求和

语法:

select  min(字段名) from 表名;

18、日期类型函数?

sysdate() :系统时间函数 , yyyy-mm-dd hh:mm:ss。 语法:select sysdate();

curdate() :系统时间函数 ,yyyy-mm-dd。 语法:select curdate();

year():获取年份 ,如:2018。 语法:select year (curdate()); ------------获取系统当前年份

month():获取月份。 语法:select month(curdate()); -----------获取系统当前月份

day():获取当月第几天。 语法:select day(curdate()); ------------获取系统当前几日

date_add():增加一个时间间隔。 语法:date_add(curdate(),interval 5 day); -----------在系统当前日期上加5天

date_sub():减去一个时间间隔。 语法:date_sub(curdate(),interval 5 day);------------在系统当前日期减去5天

19、字符串函数?

concat():多个字段数据拼接。语法:select concat(字段1,字段2) from 表名;

substr():截取数据函数。

​ str–要操作的字符串,

​ pos–开始截取的位置,

​ len–截取的长度,如未指定,则截取到最后一位。

1)select substr(str,pos);

2)select substr(str,pos,len) ; —select substr(id,1,2) from student; 从student表中查询id的前两位。

length():获取一个值的长度,一般用在字符串类型字段上的情况较多。

1)select length(‘hello’); ----------得到的结果为5

2)select length(id)from student; -----获取学号的长度

20、内连接?

内连接的特点:只返回满足关联的条件,两个表都存在的数据。

select 表1.字段名,表2.字段名 from 表1,表2 where 表1.字段=表2.字段;

或者:

select 表1.字段名,表2.字段名 from 表1 inner join 表2 on 表1.字段=表2.字段;

21、外部连接?

注:先写左表,后写右表,匹配不到,自动补null。

1、左外连接:左边的表不加限制:left outer join 匹配不到,右表为null

2、右外连接:右边的表不加限制:right outer join 匹配不到,左表为null

3、全外连接:所有两个表中的行都会包含在集合中,如果匹配不上,在各自的对应的位置显示null。 full outer join

场景:显示表1所有的行,与右表匹配,如果左表的行没有匹配到,对应右表的行为null。

语法:

select 表1.字段名,表2.字段名 from 表1 left outer join 表2 on 表1.字段=表2.字段;

22、在查询的基础上创建新表?

select 字段名 into 新表名 from 表名;  

23、where 字句可以用的条件?

比较运算符:=、<、>、>=等

逻辑运算符:and、or、not

范围运算符:between … and …、not between …and…

列表运算符:in、not in

字符通配符:like、notlike

这篇关于MySQL丨理论丨(四)MySQL 语法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!