-- 数据库的操作
    -- 开启数据库服务器
        net start mysql
    -- 关闭数据库服务器
        net stop mysql
    -- 删除数据库
        drop database 数据库名;

    -- 链接数据库
        mysql -u root -p

    -- 退出数据库
        exit/quit

    -- SQL语句需要分号;结尾
    -- 显示数据库版本
        select version();

    -- 显示时间
        select now();

    -- 查看所有数据库
        show databases;

    -- 创建数据库
        create database 数据库名 charset=utf8;

    -- 查看数据库创建时的那个语句
        show create database 数据库名;

    -- 查看当前使用的数据库
        select database();

    -- 进入数据库
        use 数据库名;

    -- 删除数据库
        drop database 数据库名;

    -- 查看所有表
        show tables;

    -- 创建表
    -- auto_increment表示自动增长
    -- not null 表示不能为空
    -- primary key 表示主键
    -- default 默认值
    -- unsigned 表示无符号类型:(id int(11) unsigned not null auto_increment primary key)
    -- create table 数据表名字(字段 类型 约束[,字段 类型 约束]);
        create table 表名(id int, name varchar(30))       -- 新建一个表 字段:id 类型:int,字段名:name 类型:varchar 长度:30
        create table 表名2(id int primary key not null auto_increment, name int(10))      -- 给id加上主键,不能为空,自动增长
    -- 例:
        create table 表(
            id int unsigned not null auto_increment primary key,
            name varchar(30),
            age tinyint unsigned,
            high decimal(5,2),      -- 小数类型,共5位数有两位是小数.
            gender enum("男","女","中性","保密") default "保密",    -- 枚举类型,default默认值 "保密"
            );


-- 表的基本操作:
    -- 查看创建表的语句
        show create table 表名;
    -- 查看表结构
        desc 表名;
    -- 删除表
        drop table 表名;
    -- 插入数据
        insert into 表名 values(0,"王尼玛",18,150.00,"男",0);
    -- 查询数据
        select * from 表名;


-- 修改表结构
    -- 查看创建表的语句
        show create table 表名;
    -- 添加字段
        alter table 表名 add 字段名 类型 约束;
    -- 修改字段类型-不改字段名
        alter table 表名 modify 字段名 类型 约束;
    -- 修改字段名-类型
        alter table 表名 change 原名 新名 类型及约束;
    -- 删除字段
        alter table 表名 drop 字段名;


-- 增 删 改 查(curd)
    -- 增
        -- 全部插入
            insert into 表名 values("插入个数的数据和字段个数需相同")
        -- 部分插入
            insert into 表名 (字段1,...) values(值1,...)
        -- 多行插入
            -- 多行全部插入
                insert into 表名 values("第一行","的数据"),("第二行","的数据")
            -- 多行部分插入
                insert into 表名 ("name","age") values("张三",18),("李四",20)


        -- 枚举类型:下标从 1开始  1--->"男"
            insert into 表名 values(0,"name",'年龄',1,"2002-06-05")

    -- 改
        -- 修改所有行内容
            update 表名 set 字段名="改成什么";   -- 不添加条件就会把这个字段所有内容修改
        -- 修改单行内容
            update 表名 set 字段名="改成什么" where id=4;    -- where是条件,相当于if,id=4的那行
        -- 修改多行内容
            update 表名 set 字段名="改成什么",字段名="改成什么" where name="张三";

    -- 查
        -- 查询所有字段
            select * from 表名;
        -- 指定条件查询
            select * from 表名 where 条件;  -- 条件:id>6或者id<9或者 "name" = "xxx"或者 "age" ="男"
        -- 查询指定字段
            select id,name from 表名;     -- 只查询 id和 name字段
        -- 查询指定字段,并给字段取别名
            select id as 身份证,name as 姓名 from 表名;
        -- 查询的显示顺序
            select name as 姓名,id as 身份证 from 表名;        -- name 在前面所以显示在前面

    -- 删
        -- 物理删除(真的删除数据)
            -- 清空表
                delete from 表名;
            -- 条件删除
                delete from 表名 where 条件;

        -- 逻辑删除
            -- 用一个字段来接收 0和1,1代表已删除