MySql-第一章-基础部分

xiaoxiao2021-02-28  24

1.mysql介绍

    mysql 的前身是一家瑞典的mysqlab公司,08年被sun公司收购,09年sun被oracle公司收购

    mysql的优点:

        1.开源、免费、成本低

        2.性能高   

        3.移植性好   

        4.体积小,便于安装

    mysql的语法规范:

        1.不区分大小写,建议关键字大写

        2.sql语句按条执行

        3.注释: #    --_    /* */

    mysql的语言分类

        DQL:数据查询语言    select

        DML:数据操纵语言    insert update delete

        DDL:数据定易语言    create alter drop

        DCL:数据控制语言    commit rollback

2.SQL常见命令

    select version()    显示当前的数据库版本

    show databases    显示当前的数据库

    use  数据库名    切换数据库

    show tables    显示当前库所有的表

    show tables from 库名    跨库查看表

    desc 表名    查看表的结构

3.常见函数

    1.字符函数    concat    substr    upper    lower    trim    ltrim    rtrim    lpad    rpad    length    instr

   2.数字函数    round(第二个参数指定保留几位有效数字)    rand(0<=rand()<1)    floor    ceil    mod    truncate(阶段,保留几位有效数字)

    3.日期函数    now curdate    curtime    str_to_date    date_format    datediff

%Y四位的年份%y2位的年份%m月份(01,02...12)%c月份(1,2,...12)%d日(01,02...)%H小时(24小时制)%h小时(12小时制)%i分钟(00,01...59)%s秒(00,01...59)  

    4.流程控制函

        if表达式:if(expr1,expr2,expr3)

        case 比较表达式 when 值1 then 表达式1 when 值2 then 表达式2 else 表达式3 end

        ifnull(expr1,expr2)    如果expr1不为null,则ifnull()的返回值为expr1,否则为expr2

        if 比较表达式 then 表达式1 elseif 比较表达式2 then 表达式2 else 表达式3 end if       只能放在begin end 中

        (标签:)while 循环条件 do 循环体 end while(标签)

        跳转:if 条件 then leave 标签

    5.分组函数

        sum    max    min    avg    count

        以上五个函数都忽略了null值(除了count(*);sum和avg一把用于数值型;都可以搭配distinct使用

    6.其他函数

        version    版本        database    当前库        user   当前连接用户

4.DQL数据查询语言

    可以查询常量值、表达式、单个字段、多个字段

    起别名: first_name As “名称”    其中as可以省略

    去重    distinct

    条件查询    where

    条件运算符    >     <    >=    <=    !=    =    <>    <=>

    逻辑运算符    and    or    not    优先级not>and>or

    模糊查询    like % _    between and    in    is null

    排序查询    order by (asc|desc)        

    +运算符只能充当运算符,当+左右两边有字符类型时,会试着将其转为字符型,失败则为0;null与任意字符做+运算结果都为null    

    分组查询 group by

    分页查询     limit A,B

    多表连接查询

        92语法:等值连接    select * from 表1 别名1,表2 别名2 where 别名1.A=别名2.B

        99语法:select 字段 from 表1 (inner|left outer|right outer|cross) join 表2 on 条件

        内连接:select 字段 from 表1 (inner) join 表2 on 连接条件

        外连接:select 字段 from 表1 letf|right (outer) join 表2 on连接条件

        自连接:将一个表当成两个表进行连接

        联合查询: union

        子查询:一条查询语句中有嵌套了领一条完整的select语句

5.DML语言

    插入语句

        insert into 表名(字段名,..) values (值1,..)

        insert into 表名 set 字段名=值,字段名=值

        insert into 表名 select ... from 表

    修改语句

        update 表名 set 字段=新值,字段=新值 where 条件

        update 表1别名1,表2 别名2 set 字段=新值,字段=新值 where 连接条件 and 筛选条件

        update 表1 别名1 left outer join 表2 别名2 on 连接条件 set 字段=新值,字段=新值 where 筛选条件

    删除语句

        delete from 表名where 筛选条件

        delete 别名1.* ,别名2.*(删哪个写哪个) from 表1别名1,表2 别名2 where 连接条件 and 筛选条件

        truncate table 表名

6.DDL语言

    创建库:create database(if not esists) 库名

    删除库: drop database (if esists) 库名

    创建表:create table 表名(字段名 数据类型 约束)

    修改表

        alter table 表名 add column 字段名 字段类型        增加字段

        alter table 表名 drop column 字段名        删除字段|约束

        alter table 表名 modify column 字段名 类型 约束         修改字段类型和列级约束

        alter table 表名 rename to 新表名        修改表名

        alter table 表名 change clumn 字段名 类型        修改字段名及类型

    自增长列:auto_increment

    常见约束:

        not null    非空

        unique    唯一

        primary key 主键

        default    默认

        check     检查

        foreign key     外键    references 定义关联外键

7.mysql的数据结构

    1.整形    tingint 1    smallint 2    mediumint 3    int|integer 4    bigint 8

    2.小数    浮点型 float(M,D)    double(M,D)    定点型  Decimal(M,D)

        M=整数+小数的总长度    D=小数部位的位数

    3.字符型

        char 和 varchar        用于保存较短的字符

        binary和varbinary        用于保存二进制字符串

        enum        用于保存枚举值

        set        用于保存结合列表

        text        用于保存较大的文本类型

       char和varchar的区别:char的长度可选,默认为1,varchar的长度必须指定;char是固定长度的,耗空间,varchar是可变的字符,节省空间;char的效率比varchar高一些

    4.日期型

        date:保存日期

        time:保存时间

        year:保存年份

        tiemstamp:日期+时间    4个字节    1970-1-1~2038-12-31    收时区影响

        datetime:日期+时间    8个字节    1000-1-1~9999-12-31    不受时区影响

8.mysql的约束

    含义:通过一组逻辑操作单元(一组DMLsql语句),将数据从一种状态切换到另一种状态

    特点:ACID

        原子性:事务是一个不可分割的整体,事务中的操作要么都完成,要么都不完成

        一致性:事务必须是数据从一个一致性状态变化到另一个一致性状态。数据的状态在操作前后要保持一致

        隔离性:一个事务的执行不能被其他事务干扰

        持久性:一旦事务被提交,他对数据的操作就是永久性的

    步骤:

        1.开启事务:set auto_commit=0    start transaction

        2.编写一组逻辑操作单元

        3.提交事务或回滚事务    commit|rollback

    隔离级别

        read uncommitted:什么也解决不了

        read committed:之允许读取已经被其他事务提交的变更,可以解决藏独

        repeatable read:确保事务可以多次从一个字段中读到相同的值,可以避免脏读,不可重复读

        serializable:在一个事务持续期间,禁止其他事务对该表执行插入等更新。可以避免所有并发问题,但性能十分低下

    mysql 的默认隔离级别为 repeatable read

    查看当前隔离级别  select @@tx_isolation

    设置当前的隔离级别    set session|global transaction isolation level 隔离级别

    级联删除: 在外键后面加 on delete cascade

    级联质控: 在外键后面加 on delete set null

9.mysql的变量

    1.全局变量    show variables like '%char%'

    2.用户变量    

        set @变量名=值

        set @变量名:=值

        select @变量名:=值

        select 字段 into @变量名 from 表    

        特点:作用范围为当前的会话窗口,比较大,可以在begin,end里面,也可以在begin外面 

    3.局部变量

        declare 变量名 变量类型 (default 初始值)

        set 变量名=值

        set 变量名:=值

        select 变量名:=值

        select 字段名或表达式 into 变量 from 表

        特点:作用范围比较小,仅仅限定于该变量的begin end 中 只能在begin end 中定义

转载请注明原文地址: https://www.6miu.com/read-1450030.html

最新回复(0)