• 数据库小结(1)


    创建数据库  CREATE DATABASE [IF NOT EXISTS] 数据库名
    除数据库  DROP DATABASE 数据库名
    使用指定数据库  USE 数据库名
    查看数据库下包含的表  SHOW TABLES

    查看表结构  DESC 表名

    MySQL两种存储机制:

    MylSAM:MySQL早期存储机制,对事务支持不友好

    InnoDB:提供事务安全的存储机制,通过建立行级锁来保证事务完整性,并以共享锁来处理Select语句

    ENGINE=MylSAM:强制使用MylSAM存储机制

    ENGINE=InnoDB:强制使用InnoDB存储机制

    SQL语句的基础

    查询语句:主要由select关键字完成,是sql中最复杂,功能最丰富的语句。

    DML(数据库操作语言)语句:主要由insert、update和delete三个关键字完成

    DDL(数据库定义语言)语句:主要由create、alter、drop和truncate四个关键字完成

    DCL(数据库控制语言)语句:主要由grant和revoke两个关键字完成。——用于为用户授权或回收指定用户权限

    事务控制语句:主要由commit、rollback和savepoint三个关键字完成

        

    DDL语句

    DDL语句主要是操作数据库对象的语,包括创建(create)、删除(drop)、修改(alter)数据库对象,最基本的数据库对象是数据表,数据表是存储数据的逻辑单元。



    DML语句

    DML主要操作数据表里的数据,使用DML可以完成一下三个任务:

    插入新数据(insert into)、修改已有数据(update)、删除不需要的数据(delete from)

    insert into语句

    insert into 表名(column1、column2----)values(value1、value2----)

    某些不确定的值使用null,主键也需要设置

    带子查询的插入语句:

    insert into table_name( select table_name from teacher);

    同时插入多条语句:

    insert into table_name values(value1,value2----),(value1,value2----);

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

    update语句

    update table_name set column = value,column2 = value2  where ---

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

    delete from语句

    delete from table_name where ----

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

    select语句

    select * from table_name where ----

    可以在查询语句中使用算术表达式,如:

    select  id*2+3 from table_name where sq*4;

    可以使用concat()函数进行字符串连接运算

    select concat("xxx","yyy") from table_name

    使用别名

    select Y y(小y就是别名) from ------


    select * from table where id between 2 and 4;

    select * from table where id in(1,3,4,5);

    select * from table where name like "%哈哈%"


    select * from table  where (id >3 and id<10) or  org_id <20;

    order by--      按照---排序,默认按照升序,使用desc则是倒序

    select * from table where id>3 order by name DESC;

    数据库函数

    单行函数:

    CHAR_LENGTH()找出s_name的字符长度

    SELECT CHAR_LENGTH(s_name) FROM t_supplier;

    sin()——三角函数,如sin(1.57)

    获取当前时间:SELECT CURDATE()

    MD5加密:SELECT MD5(123)

    处理null的函数:

    IFNULL(x1,x2)——如果x1为null,返回x2;否则返回x1

    NULLIF(x1,x2)——如果x1==x2,返回null;否则返回x1

    IF(x1,x2,x3)——类似三目运算,如果x1为true,不等于0,不为null,则返回x2,否则返回x3

    ISNULL(x)——判断是否为null,返回true/false

    流程控制函数case

    SELECT table CASE case_value

        WHEN when_value THEN statement_list1

        ELSE statement_list

    END CASE;

    如果case_value = when_value,返回 statement_list1;否则返回statement_list

    分组和组函数

    AVG():计算平均值,有DISTINCT表示不计算重复值

    SELECT AVG([DISTINCT] expr) FROM t_supplier

    COUNT():计算多行的条数,DISTINCT 表示不重复计算

    SELECT COUNT(DISTINCT expr) FROM--

    MAX()/MIN():求多行中的最大/小值

    SELECT MAX(expr)/MIN(expr)

    SUM():求和

    SELECT SUM([DISTINCT] expr)

    group by:分组

    SELECT AVG(IFNULL(x1,0)) FROM table WHERE id > 0 AND id <10 GROUP BY name

    多表联查

    SQL92:

    将多个表写在from之后

    SELECT u.*,s.* FROM t_user u,t_supplier s WHERE u.id = s.id

    SQL99:

    1、交叉连接(cross join)-相当于广义笛卡尔集(SELECT * FROM t_user , t_supplier)

    SELECT * FROM t_user cross join t_supplier

    2、自然连接(natural join)-以两个表中的同名列作为连接条件

    SELECT * FROM t_user NATURAL JOIN t_supplier

    3、using子句连接-显示指定两个表中的同名列作为连接条件

    SELECT * FROM t_user JOIN t_supplier USING (id)

    4、on子句连接-将连接条件放在on子句中指定,且每个on子句只能指定一个连接条件

    SELECT * FROM t_user u JOIN t_supplier s ON s.id = u.id

    5、左、右、全外连接-通过LEFT JOIN、RIGHT JOIN、FULL JOIN实现,条件用on

    SELECT * FROM t_user u LEFT JOIN t_supplier s ON s.id = u.id

    SELECT * FROM t_user u RIGHT JOIN t_supplier s ON s.id = u.id

    SELECT * FROM t_user u FULL JOIN t_supplier s ON s.id = u.id(会出错,因为MySQL不是全外连接)

    子查询

    子查询可以出现在两个地方

    1、出现在from语句之后当前数据表

    2、出现在where条件之后作为过滤条件

    注意:

    ※使用子查询用括号括起来

    ※把子查询当成数据表的时候可以为该子查询起别名

    ※把子查询当作过滤条件的时候,将子查询放在比较运算符右边

    SELECT * FROM (SELECT id FROM t_supplier) s WHERE id>1

    SELECT * FROM t_user WHERE id IN (SELECT id FROM t_supplier )

    集合运算

    select语句查询的结果是包含多条数据的结果集,类似数学里的集合,可以进行 交(intersect)、并(union)和差(minus)

    进行集合运算必须满足如下条件:

    1、两个结果集包含的数据列的数量必须相等

    2、两个结果集所包含的数据列的数据类型也必须一 一对应

    union运算

    SELECT * FROM t_user
    UNION

    SELECT * FROM t_student

    minus、intersect——mysql不支持,可以使用子查询得到同样结果

  • 相关阅读:
    数据表格
    数据表格
    数据表格
    布局
    表单
    表单
    Java知识点梳理——继承
    Java知识点梳理——抽象类和接口
    面试心得与总结—BAT、网易、蘑菇街
    Java知识点梳理——多态
  • 原文地址:https://www.cnblogs.com/huangzhe1515023110/p/9276087.html
Copyright © 2020-2023  润新知