• MYSQL学习笔记_1


    一、基本SQL语句

    1. 增、删、改、查及排序:

    ① 插入:insert into table(field1,field2) values(value1,value2)

    ② 删除:delete from table where 范围

    ③ 更新:update table set field1=value1 where 范围

    ④ 查询:select * from table where 范围

    ⑤ 排序:select * from table1 order by field1,field2 [desc]   -- desc为降序

    2. 聚合函数:

    ① 总数:select count * as totalcount from table1

    ② 求和:select sum(field1) as sumvalue from table1

    ③ 平均:select avg(field1) as avgvalue from table1

    ④ 最大:select max(field1) as maxvalue from table1

    ⑤ 最小:select min(field1) as minvalue from table1

    3. 基础语句:

    ① 创建数据库:CREATE DATABASE database-name

    ② 删除数据库:drop database dbname

    ③备份sql server,创建 备份数据的 device

    USE master
    EXEC sp_addumpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_1.dat'

    开始备份:BACKUP DATABASE pubs TO testBack

    ④ 创建新表:create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

    根据已有的表创建新表:

    A:create table tab_new like tab_old (使用旧表创建新表)
    B:create table tab_new as select col1,col2… from tab_old definition only

    ⑤ 删除新表:drop table tabname

    ⑥ 增加一个列:Alter table tabname add column col type

    注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

    ⑦主键:

    添加主键:Alter table tabname add primary key(col)

    删除主键:Alter table tabname drop primary key(col)

    ⑧ 索引:

    创建索引:create [unique] index idxname on tabname(col….)

    删除索引:drop index idxname

    注:索引是不可更改的,想更改必须删除重新建。

    ⑨视图:

    创建视图:create view viewname as select statement

    删除视图:drop view viewname

    二、特殊查询

    1. 带in关键字查询:select 字段1,字段2 frome 表名 where 字段 [not]in(元素1,元素2);

    例:select * from t_student where age in (18,20);

      select * from t_student where age not in (18,20);

    2. 带between and的范围查询:select 字段1,字段2 frome 表名 where 字段 [not]between 取值1 and 取值2;

    例:select * frome t_student where age between 21 and 29;

    select * frome t_student where age not between 21 and 29;

    3. 带like的模糊查询:select 字段1,字段2… frome 表名 where 字段 [not] like ‘字符串’;

    “%”代表任意字符;

    “_”代表单个字符;

    例:select * frome t_student where stuName like ‘张三”;

    select * frome t_student where stuName like ‘张三%”;

    select * frome t_student where stuName like ‘%张三%”;//含有张三的任意字符

    select * frome t_student where stuName like ‘张三_”

    4. 空值查询:select 字段1,字段2…frome 表名 where 字段 is[not] null;

    5. 带and的多条件查询:

    select 字段1,字段2…frome 表名 where 条件表达式1 and 条件表达式2 [and 条件表达式n]

    例:select * frome t_student where gradeName=’一年级’ and age=23;

    6. 带or的多条件查询

    select 字段1,字段2…frome 表名 where 条件表达式1 or 条件表达式2 [or 条件表达式n]

    例:select * frome t_student where gradeName=’一年级’ or age=23;//或者,条件只要满足一个

    7. distinct去重复查询:select distinct 字段名 from 表名;

    8. 对查询结果排序order by:select 字段1,字段2…from 表名 order by 属性名 [asc|desc]

    例:select * frome t_student order by age desc;//降序,从大到小

    select * frome t_student order by age asc;//升序,asc默认可以不写

    9.limit 分页查询:select 字段1,字段2,…from 表名 limit 初始位置,记录数;

    例:select * from t_student limit 0,5;

    10. 分组查询:group by (先排序后分组)

    ① 举例说明:如果要用到group by 一般用到的就是“每这个字” 例如说明现在有一个这样的表:每个部门有多少人 就要用到分组的技术

    例:select DepartmentID as '部门名称' COUNT(*) as '个数' from BasicDepartment group by DepartmentID

    ② 当同时含有where子句、group by 子句 、having子句及聚集函数时,执行顺序如下:

    -- 执行where子句查找符合条件的数据;

    -- 使用group by 子句对数据进行分组;对group by 子句形成的组运行聚集函数计算每一组的值;最后用having 子句去掉不符合条件的组。

    -- having 子句中的每一个元素也必须出现在select列表中。有些数据库例外,如oracle.

    -- having子句和where子句都可以用来设定限制条件以使查询结果满足一定的条件限制。

    -- having子句限制的是组,而不是行。where子句中不能使用聚集函数,而having子句中可以

    ③ having 和 where的区别:

    where :是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚合函数,使用where条件过滤出特定的行

    having :是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚合函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组

    11. 特殊语句:

    ① 随机取出10条数据:select top 10 * from tablename order by newid()

    ② 随机选择记录:select newid()

    ③ 删除重复记录:Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)

    ④ 列出数据库里所有的表名:select name from sysobjects where type='U'

    ⑤ 列出表里的所有的:select name from syscolumns where id=object_id('TableName')

    ⑥ 选择从10到15的记录:select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc

    三、多表连接查询

    注意:多表查询时,一定要找到两个表中相互关联的字段,并且作为条件使用

    语法:select field1,field2 from table1 inner | left | right join table2 on table1.field1 = table2.field2 and 其他条件;

    ① 内连接查询:内连接查询和多表连接查询效果是一样的

    ② 左外连接查询:左边表中的数据会优先显示,右边表中的数据符合条件才会显示,不符合条件的会以null进行填充

    ③ 右外连接查询:右边表中的数据优先全部显示,与左连接正好相反

    ④ 全连接查询:显示左右表中全部数据,是在内连接的基础上增加“左右两边没有显示的数据”(Mysql不提供full JOIN关键字,使用UNION实现)

    四、合并查询

    1.union:使用union关键字是,数据库系统会将所有的查询结果合并到一起,然后去掉相同的记录;

    2.union all:使用union all,不会去除掉重复的记录;

    六、子查询

    1.带in关键字的子查询(一个查询语句的条件可能落在另一个select语句的查询结果中)

    2.带比较运算符的子查询(子查询可以使用比较运算符:> = <)

    3.带exists关键字的子查询(加入子查询查询到记录,则进行外层查询,否则,不执行外层查询)

    4.带any关键字的子查询(any关键字表示满足其中任一条件)

    5.带all关键字的子查询(all关键字表示满足所有条件)


     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    Leetcode 1349 参加考试的最大学生数
    卡特兰数小结
    Leetcode 76 最小覆盖字串 (滑动窗口)
    Leetcode 5331.跳跃游戏
    实现对properties文件的有序读写
    Android日志框架darks-logs使用教程
    Android入门-Service-start,end,bind,unbind之间的区别
    Android实用代码七段(一)
    [转帖]自动调整TextView字体大小以适应文字长度
    apk,task,android:process与android:sharedUserId的区别
  • 原文地址:https://www.cnblogs.com/annie1226/p/10790050.html
Copyright © 2020-2023  润新知