SQL刷题总结,SQL知识点总结!!!

SQL刷题后知识点总结:

  • sqlite四舍五入的函数为round
  • limit(m, n) 从第 m + 1 行开始取 n 条记录
  • order by 根据指定的列对结果集进行排序,默认按照升序,降序 order by desc
  • 当 limit和offset组合使用的时候,limit后面只能有一个参数,表示要取的的数量,offset表示要跳过的数量,例如:LIMIT 3 OFFSET 1 取三个值,跳过一个
  • 当limit后面跟两个参数的时候,第一个数表示要跳过的数量,后一位表示要取的数量 ,例如:limit 1,3 要跳过一个值,取三个值。。取得值是2,3,4
  • GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组
  • having:在 SQL 中增加 having子句原因是,where关键字无法与聚合函数一起使用。having子句可以让我们筛选分组后的各组数据。
  • 在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词 distinct用于返回唯一不同的值。
  • not in,查询非XXX select emp_no from employees where emp_no not in (select emp_no from dept_manager);
  • 查询奇偶数:select * from user where id%2=1; select * from user where id&1; id为奇数
  • rank函数用于返回结果集的分区内每行的排名,RANK()在计算排序时,若存在相同位次,会跳过之后的位次。例如,有3条排在第1位时,排序为:1,1,1,4···
  • dense_rank()函数,在计算排序时,若存在相同位次,不会跳过之后的位次。例如,有3条排在第1位时,排序为:1,1,1,2···
  • row_number()这个函数赋予唯一的连续位次。例如,有3条排在第1位时,排序为:1,2,3,4···
  • 窗口函数(上面三个为窗口函数,rank(),dense_rank(),row_number())

       用法:<窗口函数> over( [partition by <列清单> ] order by <排序用列清单> )

       注:其中[ ]中的内容可以忽略

  • concat函数:通常会运用concat函数进行字符串的拼接。但在使用该函数时,需要注意如下细节:拼接字符串:select concat(str1,str2) from t_user; 拼接字符串str1和str2,正常来说该查询语句会返回str1和str2拼接之后的值,可在实际运用过程中会出现意想不到的结果,str1为空,str2为"xxx",返回的结果为空,并不是我们期待的"xxx"。这时,我们就应该判断它的参数是否为空,只要两个参数中有一个为空,那么拼接出来的字符串就是空的,处理:select concat(ifnull(str1,"defaultvalue"),str2) from t_user
  • mysql中常用的三种插入数据的语句:
  1. insert into表示插入数据,数据库会检查主键,如果出现重复会报错;
  2. replace into表示插入替换数据,需求表中有PrimaryKey,或者unique索引,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样;
  3. insert ignore表示,如果中已经存在相同的记录,则忽略当前新据;
  • MySQL创建数据表的三种方式:
  1. 常规创建:create table if not exists 目标表
  2. 复制表格:create 目标表 like 来源表
  3. 将table1的部分拿来创建table2
    create table if not exists actor_name
    (
    first_name varchar(45) not null,
    last_name varchar(45) not null
    )
    select first_name,last_name
    from actor

  • replace:更新表,举例:将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005 sql语句:update titles_test set emp_no  =  replace(emp_no , 10001, 10005) where id = 5;
  • ALTER TABLE 表名 ADD 列名/索引/主键/外键等;
  • ALTER TABLE 表名 DROP 列名/索引/主键/外键等;
  • ALTER TABLE 表名 ALTER 仅用来改变某列的默认值;
  • ALTER TABLE 表名 RENAME 列名/索引名 TO 新的列名/新索引名;
  • ALTER TABLE 表名 RENAME TO/AS 新表名;
  • ALTER TABLE 表名 MODIFY 列的定义但不改变列名;
  • ALTER TABLE 表名 CHANGE 列名和定义都可以改变;
  • ....

上一篇:走上测试之路的第二天[MySQL_2]


下一篇:MySql 修改删除表