前言

  MySQL 是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。
MYSQL的标准结构为:库 > 表 > 字段 > 值。

MySQL数据类型

数字

    类型            占用空间            无符号取值范围      有符号
    tinyint(N)           1                 0-255              -128 - 127
    int(N)                4                 2的32次方-1         折半
    bigint(N)            8
    N : 显示宽度,可以不给,不给就走默认值,和数据的取值范围没有关系
    float          按照用户输入数据的精度存储,根据环境而定
    doublu
    decimal        默认存储整数部分,需要额外指定 精度与标度
    decimal(10,2)  整个长度10位  小数部分2位

字符串

    M : 最大长度
    char(M)      特点:定长   效率高
    varchar(M)   可变长   特点:实际占用空间是按照内容长度来的,效率略低
    text      存储大段文本使用  一般用于接收 textarea 提交的内容
    enum(值1,值2,值3)   在所列出的值中选择一个
    set(值1,值2,值3)   在所列出的值中选择多个

属性罗列

    unsigned
    zerofill
    auto_increment (必须有主键索引或者唯一索引)
    not null
    default

库的操作

查看数据库

        show databases;

创建一个数据库

        create database [if not exists] 数据库名;
        例:create database if not exists wp;      //如果数据库已经存在,可以避免报错

选择一个数据库

        use 数据库名;
        例: use wp;

删除一个数据库

        drop database [if exists] 数据库名;
        例:drop database wp;

表的操作

查看所有表

        show tables;

查看表结构

        desc 表名;
        例:desc user;

查看建表语句

        show create table 表名;
        列:show create table user;

创建表

        CREATE TABLE [IF NOT EXISTS] 表名(
            字段1 数据类型 [属性] [索引],
            字段2 数据类型 [属性] [索引],
            字段3 数据类型 [属性] [索引],
            字段n 数据类型 [属性] [索引]
        )ENGINE=表引擎 DEFAULT CHARSET=utf8;
       列:
        CREATE TABLE user(
            id INT UNSIGNED(无符号) NOT NULL(非空) AUTO_INCREMENT(自增) PRIMARY KEY(主键),
            name VARCHAR(50) NOT NULL DEFAULT '',
            age TINYINT UNSIGNED,
            mail VARCHAR(255) NOT NULL unique,
            sex TINYINT NOT NULL DEFAULT 2,
            address VARCHAR(255) NOT NULL
        )ENGINE = MyISAM DEFAULT CHARSET=utf8;

删除表

        drop table [if exists] 表名;
        列:drop table user;

重命名

        alter table 表名 rename [to] 新表名;
        列:alter table user rename users;

修改表引擎

        alter table 表名 engine InnoDB;
        列:alter table user engine InnoDB;

修改字符集

        alter table 表名 default charset 字符集;
        alter table user default charset UTF8

字段的操作

添加字段

    alter table 表名 add 字段名 数据类型 [属性] [索引];
    列:alter table stu add age tinyint unsigned not null;

删除字段

    alter table 表名 drop 字段名;
    例:alter table stu drop sex;

修改字段属性

    alter table 表名 modify 字段名 数据类型 [属性] [索引] [first | after 字段];
    列:alter table stu modify age tinyint unsigned not null default 18;

重命名字段

    alter table 表名 change 字段名 新字段名 数据类型 [属性] [索引] [first | after 字段];
    列:alter table user change name stu_name varchar(50) not null;

数据操作

        1.为所有字段插入数据

        INSERT INTO 表名 VALUE(值1,值2,值3);
        列:INSERT INTO user VALUE('测试',admin@otokaze.cn,'保密','17091955564');

        2.为列出的字段插入

        INSERT INTO user(name,mail,sex,address) VALUE('测试',admin@otokaze.cn,'保密','17091955564');

        3.同时插入多条数据

        INSERT INTO user(name,mail,sex,address) VALUES('测试',admin@otokaze.cn,'保密','17091955564'),
        ('测试',admin@otokaze.cn,'保密','17091955564'),
        ('测试',admin@otokaze.cn,'保密','17091955564'),
        ('测试',admin@otokaze.cn,'保密','17091955564');

        DELETE FROM 表名  条件;
        列:DELETE FROM user WHERE id= 1;
        #这样操作可以删除所有数据,等同于清空表,但是自增ID不会复位
        #清空表的专用操作  truncate 表名;

        UPDATE 表名 SET 字段1=值1[, 字段2=值2] 条件
        列:UPDATE user SET name='admin',age='9' WHERE name='administrators';

        SELECT 字段列表 FROM 表名 [WHERE[表达式]] [GROUP BY 字段] [ORDER BY 字段] [LIMIT N,M]

        1.查询所有数据

        SELECT * FROM user;

        2.查询指定字段

        SELECT name,age FROM user;

        WHERE

        SELECT id,name,age FROM user WHERE id > 5;
        SELECT id,name,age FROM user WHERE id >= 5;
        SELECT id,name,age FROM user WHERE id != 5;

        指定范围  [NOT] BETWEEN 值1 AND 值2

        SELECT id,name,xibie FROM stu WHERE id BETWEEN 5 AND 8;
        SELECT id,name,xibie FROM stu WHERE id NOT BETWEEN 5 AND 8;

        指定集合

        SELECT id,name,xibie FROM stu WHERE id IN(1,7,8);
        SELECT id,name,xibie FROM stu WHERE id NOT IN(1,7,8);

        模糊查询

        % :匹配任意长度
        _ :匹配一个长度
        SELECT id,name,xibie FROM stu WHERE name LIKE 'a%';
        SELECT id,name,xibie FROM stu WHERE tel '%mi%';
        SELECT id,name,xibie FROM stu WHERE tel LIKE '170%';
        SELECT id,name,xibie FROM stu WHERE tel = '1709999999';

        查询空值

        SELECT id,name,xibie FROM stu WHERE name IS NULL;
        SELECT id,name,xibie FROM stu WHERE name IS NOT NULL;

        多条件查询  AND OR

        SELECT id,name,xibie FROM stu WHERE id > 5 AND id < 8 AND age = 18;
        SELECT id,name,xibie FROM stu WHERE id < 5 OR id > 8;

生きて生きて生きて生きて生きて。