数据库——MySQL(二)(增删查改、去重,分页、模糊查询、排序)

新增所有列的记录:
●  语法:insert  into  表名称  values (值1,值2,值3,...值n);
●  例子:insert  into  user  values(‘张三’,‘演员’,22,‘男’);
注意:必须把所有列都进行新增,并且新增值的顺序需要与建表时列的顺序一致。新增值的数据类型要与列的数据类型相对应,数字型数据类型直接写,其他类型的值需要单引号引起来。replace也可以插入数据,相当于insert
------------------------------------------------------------------------------------------------------------------
新增指明列的记录:
●  语法:insert  into  表名称(列名1,列名2,...列名n)  values (值1,值2,...值n);
●  例子:insert  into  user (name,age,sex)  values (‘张三’,22,‘男’);
注意:指明列的顺序可以不和建表时的顺序相同,新增值需要和指明列相对应,未指明列为默认值(default指定的值或者null)。同时,未指明列必须满足约束条件(如:列设置了not  null,并且没有设置default)
------------------------------------------------------------------------------------------------------------------
修改列的所有记录:
●  语法:update  表名称  set  列名=值;
●  例子:update  user  set  name=‘李四’;(把name列的值全部修改为‘李四’)
注意:在set关键字后跟上需要修改的列名和值的键值对。修改的权限小于表的约束权限,修改记录时必须满足表的约束条件,否则会报错
------------------------------------------------------------------------------------------------------------------
修改指明列的记录:
●  语法:update  表名称  set  列名=值  where  条件;
●  例子:update  user  set  name=‘李四’ where  sex=‘男’;(把sex为‘男’的记录的name列的值全部修改为‘李四’)
注意:修改列为多个时使用逗号分隔。条件为多个时使用and或者or分隔。如果没有where条件则指明列的数据都会被修改
------------------------------------------------------------------------------------------------------------------
删除所有的记录:
●  语法:delete  from  表名称;
●  语法:truncate  表名称;
注意:两种方法都可以使用。但是删除记录时慎重,事物提交后无法恢复删除记录。要想恢复很复杂。truncate速度更快,占用日志更少(直接释放数据页并且在事物日志中也只记录数据页的释放)。而delete一行一行删除,在事物日志中要记录每一条记录的删除
------------------------------------------------------------------------------------------------------------------
删除指明条件的记录:
●  语法:delete  from  表名称  where  条件;
●  例子:delete  from  user  where  name=‘张三’;(删除name为‘张三’的所有记录)
------------------------------------------------------------------------------------------------------------------
查询所有的记录:
●  语法:select  *  from  表名称;
●  例子:select  *  from  user;
注意:* 表示所有的列
------------------------------------------------------------------------------------------------------------------
查询指明列的所有记录:
●  语法:select  列名  from  表名称;
●  例子:select  name  from  user;
注意:多个列时,列名与列名之间使用逗号分隔,最后一个列名不需要逗号
------------------------------------------------------------------------------------------------------------------
查询时使用别名:
●  语法:select  列名  as‘别名’ from  表名称;
●  例子:select  name  as‘姓名’ from  user;
注意:as关键字可以省略,多个列时不是所有的列都必须添加别名。别名只修改查询时列的名称,真正表的列名不会被修改
------------------------------------------------------------------------------------------------------------------
查询时使用算术运算符:+、-、*、/
●  语法:select  列名+值  from  表名称;
●  例子:select  age+20  from  user;
注意:算术运算符只作用在数值类型的列上。可以是固定值,也可以指定某列
------------------------------------------------------------------------------------------------------------------
带条件的查询:>、<、=、>=、<=、!=(另一种写法<>)
●  语法:select  *  from  表名称  where  条件;
●  例子:select  *  from  user  where  name=‘张三’;(查询name为‘张三’的所有记录)
------------------------------------------------------------------------------------------------------------------
去除重复记录:distinct
●  语法:select  distinct  列名  from  表名称;
●  例子:select  distinct  age  from  user;
注意:distinct紧跟着在select关键字之后。如果查询多个列则会把查询的所有列的值进行拼接后,在去重
------------------------------------------------------------------------------------------------------------------
分页:limit
●  语法:select  *  from  表名称  limit  m,n;
●  公式:select  *  from  表名称  limit((页码-1) * 行数),行数;
●  例子:select  *  from  user  limit  0,10;
注意:m表示从多少下标位开始(默认从0开始),n表示显示多少条记录。m如果省略掉。则默认从0下标位开始显示记录
------------------------------------------------------------------------------------------------------------------
复制查询出来的表结构及记录:
●  语法:create  table  新表名称  as  select  *  from  表名称;
●  例子:create  table  user1  as  select  *  from user ;
注意:as关键字可以省略。复制的表不会把原表中的主外键约束进行复制
------------------------------------------------------------------------------------------------------------------
只复制表结构不复制记录:
●  语法:create  table  新表名称  select  *  from  表名称  where  条件;
●  例子:create  table  user1  select  *  from user  where  1=2 ;
注意:只需where条件为假就行
------------------------------------------------------------------------------------------------------------------
多条件的查询:and、or、not
●  and:并且的意思,查询的记录必须都满足条件
●  or: 或者的意思,查询的记录只需满足其中一个条件
●  not:取条件表达式的反值
●  语法:select  *  from  表名称  where  条件;
●  例子:select  *  from  user  where  not  name=‘张三’;(查询出name不为‘张三’的所有记录)
注意:在条件与条件之间需使用and、or把条件进行连接起来
------------------------------------------------------------------------------------------------------------------
查询空值的记录:null、‘’
●  语法:select  *  from  表名称  where  列名  is  null  or  列名=‘’;
●  例子:select  *  from  user  where  name  is  null  or  name=‘’;
注意:查询空值必须两个条件都写,查询null时只用is null。查询非空is not null

------------------------------------------------------------------------------------------------------------------

查询区间记录:between

●  语法: select  *  from  表名称  where  列名  between  m  and  n;
●  例子:select  *  from  user  where  age  between  20  and  50;(查询出age>=20并且<=50的所有记录)
注意:在m、n之间的记录,并包含m、n。and前写小值,and后写大值。between相当于age>=20 and age<=50的简写
------------------------------------------------------------------------------------------------------------------
查询具体值的记录:in
●  语法: select  *  from  表名称  where  列名  in(值1,值2,....值n);
●  例子:select  *  from  user  where  age  in(20,22,23);(查询出age为20,22,23的所有记录)
注意:in相当于age=20 or age=22 or age=23的简写
------------------------------------------------------------------------------------------------------------------
模糊查询:like、not  like
●  语法: select  *  from  表名称  where  列名  like ‘条件’;
●  例子:select  *  from  user  where  name  like ‘%三%’;(查询出name含有三的所有记录)
注意:%表示任意长度的字符。_表示一个长度的字符
------------------------------------------------------------------------------------------------------------------
正则查询:rlike
●  语法: select  *  from  表名称  where  列名  rlike ‘[条件]’;
●  例子:select  *  from  user  where  name  rlike ‘[张王]三’;(查询出张三或王三的所有记录)
●  例子:select  *  from  user  where  name  rlike ‘[^张王]三’;(查询出除了张三或王三的所有记录)
注意:[...]范围也可以为[0-9][a-z],也可以写固定的值
------------------------------------------------------------------------------------------------------------------
查询出来的结果进行排序:order  by
●  语法: select  *  from  表名称  order  by  排序列名  排序要求;
●  语法: select  *  from  表名称  order  by  排序列名  排序要求,排序列名  排序要求; 多列排序
●  例子:select  *  from  user  order  by  age  desc;(查询出来的记录根据age的降序排序)
注意:排序是对整行记录进行排序。desc表示降序,asc表示升序,如果省略了asc或者desc默认为升序
------------------------------------------------------------------------------------------------------------------
自己整理,有些地方是扒拉的,如有侵犯,还望告知

你可能感兴趣的:(数据库)