MySQL是一种开源代码的关系型数据库管理系统,并因为器速度、可靠性和适用性备受中小型企业的青睐。

注意:数据库命令都是以分号;结尾的,表示结束。

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

输入密码,即可登录

tinyint:取值范围:-128--127

varchar(n):可变长度

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

date:yyyy-mm-dd 例如:2018-10-01

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

select * from 表名

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

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

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

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

into   新表名                              ------------查询的时候创建一个新的表

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

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

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

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

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

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

注意: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;

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

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

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

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

select ... from ... where ... like '_x';   -----_一个下滑线占一个位,可以匹配任意字符串,但只能匹配一个,可以用来匹配身份证号,电话号码等。

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

select distinct 字段名 from  表名;

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

语法: select   min(字段名)  from  表名;

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());     ------------获取系统当前几日

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

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

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;               -----获取学号的长度

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

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

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

注:先写左表,后写右表,匹配不到,自动补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.字段;

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

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

逻辑运算符:and、or、not

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

列表运算符:in、not in

字符通配符:like、notlike

推荐阅读

本公众号会不定期给大家发福利,包括学习资源等,敬请期待吧!