zoukankan      html  css  js  c++  java
  • 《MYSQL必知必会2

    select top distinct column_name from tbl where id>0 group by name having count(*)>10 order by dtime desc age asc limit 1

    60、NULL是没有值,空串是一个有效值
    61、主键只能使用不允许未NULL值的列
    62、每个表只允许一个auto_increment列
    63、不允许使用函数作为默认值,只支持常量
    64、InnoDB 支持事务的引擎,可靠;MEMORY 快,数据存储在内存,适合临时表;MyISAM 快,支持全文搜索
    65、修改表定义:alter table 表名
    66、删除表:drop table 表名
    67、重命名表:rename table 表名 to 新表名
    68、视图本身不包含数据,仅仅是用来查看存储在别处的数据的一种措施
    69、视图的作用:1)简化负责sql语句的编写2)重新格式化检索出的数据
    70、可以通过更新视图来更新基表,但不是所有视图都能更新
    71、存储过程就是为以后的使用而保存的一条或多条MYSQL语句的集合。可以视为批文件,虽然他的作用不限于批处理
    72、使用存储过程的好处:简单(使用者不用写复杂的sql);安全(限制了使用者对基本数据的访问,防止误操作);高性能(存储过程比单独的SQL语句快)
    73、执行存储过程用CALL
    CALL product(@pricelow,@pricehigh,@priceaverage);
    存储过程实际上是一个函数
    74、创建存储过程:create procedure 过程名()
    Begin
    Select * from tbl_order;
    End;
    75、删除存储过程:drop procedure 存储过程名 ---不加()
    存在时才删除:drop procedure if exists
    76、所有的mysql变量都必须以@开始
    Create procedure ordertotal(
    In onumber int,
    In taxable Boolean
    Out ototal decimal(8,2)
    )
    Begin
    Declare total decimal(8,2);
    Declare taxrate int default 6;
    Select sum(item_price*quantity)
    For orderitems
    Where order_num=onumber
    Into total
    If taxable then
    Select total+(total/100*taxrate) into total
    End if;
    Select total into ototal;
    End;
    ================++++++++++
    Call ordertotal(2005.1.@total);
    Select @total
    77、游标只能用于存储过程,存储过程执行完后,游标就消失(因为它仅限于存储过程)
    78、存储过程里也可以建表,可以call其他的存储过程
    79、触发器是MYSQL相应增删改时自动执行的一条MYSQL语句(包括存储过程里位于begin end之间的语句)
    80、只有表才支持触发器,视图不支持,临时表也不支持
    81、每个表最多支持6个触发器(insert update delete 之前与之后)
    82、MYSQL触发器不能调用call,所以不能调用存储过程
    83、并非所有引擎都支持事务,MYISAM不支持事务,InnoDB就支持
    84、事务可以用来管理insert update delete
    85、若起来事务,想使修改生效,需要执行commit命令
    86、Commit或rollback后,事务自动关闭
    87、为了支持回退部分事务,需要使用“保留点”
    88、MYSQL默认是自动提交更改,若不想自动提交,set autocommit =0即可
    Autocommit是针对每个链接的,不是服务器
    89、27章未看:全球化和本地化
    若你对sql里有多个or,那就改成用联合union,这样性能会大大提升

    =============

    mysql 用limit sqlserver 用top

    检索控制 where name is NULL

    SQL(像多数语言一样) 在处理OR操作符前, 优先处理AND操作符

    IN操作符后跟由逗号分隔的合法值, 这些值必须括在圆括号

    NOT IN

    LIKE 'FISH%'
    %表示任何字符出现任意次数
    下划线的用途与%一样, 但它只匹配单个字符, 而不是多个字符。
    方括号([]) 通配符用来指定一个字符集, 它必须匹配指定位置(通配符的位置) 的一个字符

    在确实需要使用通配符时, 也尽量不要把它们用在搜索模式的开始处。 把通配符置于开始处, 搜索起来是最慢的。

    两列拼接:SQL Server使用+号。postgre sqllite用|| 。mysql需要使用函数concat

    别名用AS

    作为子查询的SELECT语句只能查询单个列。 企图检索多个列将返回错误

    内链接:传递给on的语句和传递给where的相同
    select tbl1.name tbl2.age tbl2.salary from tbl1,tbl2 where tbl1.id=tlb2.id
    select name,age salary from tbl1 inner join tbl2 on tbl1.id=tbl2.id

    给一个表起两个别名:
    select c1.name,c1.age,c2.salary from tbl as c1,tbl as c2 where c1.id=c2.id

    外联结:left outer join right outer join
    select customers.cust_id,order.order_num from customers left outer join order on customers.cust_id=order.cust_id

    利用UNION, 可给出多条SELECT语句, 将它们的结果组合成一个结果集;UNION中的每个查询必须包含相同的列、 表达式或聚集函数

    UNION从查询结果集中自动去除了重复的行;如果想返回所有的匹配行, 可使用UNION ALL而不是UNION。

    在用UNION组合查询时, 只能使用一条ORDER BY子句, 它必须位于最后一条SELECT语句之后

    count(*)会包括null,count(column_name)不会包括null
    avg、sum max min不包括null
    所有聚集函数都可用来执行多个列上的计算:如sum(price*quality)
    avg(distinct(price))
    GROUP BY子句必须出现在WHERE子句之后, ORDER BY子句之前
    除聚集计算语句外, SELECT语句中的每一列都必须在GROUP BY子句中给出
    WHERE过滤行, 而HAVING过滤分组,WHERE在数据分组前进行过滤, HAVING在数据分组后进行过滤,HAVING支持所有WHERE操作符

    插入检出的数据:
    insert into tbl1(v1,v2) select vv1,vv2 from tbl2 where vv3=1
    select * into tb2 from tb1

    insert select 是将数据插入已存在的表中;select into是将数据插入一个新表中

    INSERT通常只插入一行。 要插入多行, 必须执行多个INSERT语句。 INSERT SELECT是个例外

    要删除某个列的值, 可设置它为NULL(假如表定义允许NULL值)
    update tbl1 set name=NULL where id=1

    DELETE删除整行而不是删除列。 要删除指定的列, 请使用UPDATE语句

     ======连接数据库:

    mysql -h mysql-svc.aves2-dev -P 3306 -u root -p
    show databases;
    use hubmanager_dev;
    show tables;
    select * from jupyter_resource_record;

  • 相关阅读:
    vue 监听变量或对象
    同行span标签设置display:inline-block;overflow:hidden垂直对齐问题
    vue style 的scoped 使用
    判断两个对象是否相等
    js call 和 apply方法记录
    接口联调遇到的坑 总结
    onclick或者其他事件在部分移动端无效的问题
    js 迭代方法
    原生js实现类的添加和删除,以及对数据的add和update、view ,ajax请求 ,页面离开的操作,获取url中参数等方法
    input 的radio checkbox 和 select 相关操作
  • 原文地址:https://www.cnblogs.com/testzcy/p/6821065.html
Copyright © 2011-2022 走看看