美文网首页
MySQL笔记

MySQL笔记

作者: MikleLi | 来源:发表于2017-11-07 16:37 被阅读0次

    /*
    创建数据库
    create database 数据库名;
    */
    CREATE DATABASE mybase;


    /*
    使用数据库
    use 数据库名
    */
    USE mybase;


    /*
    创建数据表的格式

      create table 表名(
          列名1 数据类型 约束,
          列名2 数据类型 约束,
          列名3 数据类型 约束
      );
      创建用户表,用户编号,姓名,用户的地址
      将编号列,设置为主键约束,保证列的数据唯一性,非空性
      primary key AUTO_INCREMENT
      让主键列数据,实现自动增长
    

    */
    CREATE TABLE users (
    uid INT PRIMARY KEY AUTO_INCREMENT ,
    uname VARCHAR(20),
    uaddress VARCHAR(200)
    );


    /*show tables 显示所有数据表
    desc users 查看表中结构
    drop table users 删除数据表
    */这三个用的不多


    CREATE TABLE users (
    uid INT PRIMARY KEY AUTO_INCREMENT,
    uname VARCHAR(20),
    uaddress VARCHAR(200)
    );
    /*
    添加列,添加字段
    alter table 表名 add 列名 数据类型 约束
    */
    ALTER TABLE users ADD tel INT ;

    /*
    修改列, 在原有的列上修改
    修改列名,数据类型约束
    alter table 表名 modify 列名 数据类型 约束
    */
    ALTER TABLE users MODIFY tel VARCHAR(50);

    /*
    修改列名
    alter table 表名 change 旧列名 新列名 数据类型 约束
    */
    ALTER TABLE users CHANGE tel newtel DOUBLE;

    /*
    删除列
    alter table 表名 drop 列名
    */
    ALTER TABLE users DROP newtel;

    /*
    修改表名
    rename table 表名 to 新名
    */
    RENAME TABLE users TO newusers

    CREATE TABLE product(
    -- 主键列,自动增长
    id INT PRIMARY KEY AUTO_INCREMENT,
    -- 商品名字,可变字符,非空
    pname VARCHAR(100) NOT NULL,
    -- 商品的价格,double
    price DOUBLE
    );


    /*
    向数据表中添加数据 insert
    格式:
    insert into 表名(列名1,列名2,列名3) values (值1,值2,值3)
    注意:
    列名,表名问题
    对应问题,
    个数,数据类型
    */

    INSERT INTO product (id,pname,price) VALUES (1,'笔记本',5555.99);
    INSERT INTO product (id,pname,price) VALUES (2,'智能手机',9999);

    /*
    添加数据格式,不考虑主键
    格式:
    insert into 表名 (列名) values (值)
    */
    INSERT INTO product (pname,price) VALUES('洗衣机',800);

    /*
    添加数据格式,所有值全给出
    格式:
    insert into 表名 values (全列值)
    */
    INSERT INTO product VALUES (4,'微波炉',300.25);

    /*
    添加数据格式,批量写入
    格式:
    insert into 表名 (列名1,列名2,列名3) values (值1,值2,值3),(值1,值2,值3)
    */
    INSERT INTO product (pname,price) VALUES
    ('智能机器人',25999.22),
    ('彩色电视',1250.36),
    ('沙发',5899.02)

    -- insert into product (pname,price) values ('热水器',485.02)
    -- INSERT INTO product (id,pname,price) VALUES (7,'空调',485.02)


    /*
    对数据进行更新操作
    数据在原有的基础上修改
    格式:
    update 表名 set 列1=值1,列2=值2 where 条件
    where 条件: 数据中的唯一性
    */

    -- 修改智能手机,价格上调到15999
    UPDATE product SET price = 15999 WHERE id=2

    -- 修改彩色电视,名字改为黑白电视机,价格,100
    UPDATE product SET pname='黑白电视机', price=100 WHERE id = 6

    /*
    修改条件的写法
    id=6
    id<>6 不等于
    id<=6
    与或非 && || ! 这是java里的
    && and SQL里的
    || or
    ! not

    id in (1,3,4,5,6) 包含
    

    */
    -- 将笔记本的价格,和空调的价格,全部修改为2000
    UPDATE product SET price = 2000 WHERE id = 1 OR id = 7;

    /*
    删除表中的数据
    格式:
    delete from 表名 where 条件

    drop table 表名 删除整个数据表
    

    */
    -- 删除热水器
    DELETE FROM product WHERE id=8;

    面试题:
    删除表中所有记录使用delete from 表名; 还是用truncate table 表名;
    删除方式:delete 一条一条删除,不清空auto_increment记录数。
    truncate 直接将表删除,重新建表,auto_increment将置为零,从新开始。


    聚合函数:
    1,count:统计指定列布为NULL的记录行数;
    2,sum:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
    3,max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
    4,min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算
    5,avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;


    反引号(“`”)

    保留字不能用于表名,比如desc,此时需要加入反引号来区别,但使用表名时可忽略反引号。
    create table desc报错
    create table desc成功
    create table test成功
    drop table test成功

    保留字不能用于字段名,比如desc,此时也需要加入反引号,并且insert等使用时也要加上反引号。
    create table testdesc varchar(255))成功
    insert into test(desc) values('fxf')失败
    insert into test(desc) values('fxf')成功


    使用双字符:
    插入时 库中
    'aa''b''cc' aa'b'cc
    "aa"b""cc" aa"b"cc

    使用转义字符():
    插入时 库中
    'aa'b'cc' aa'b'cc
    "aa"b"cc" aa"b"cc

    在单引号包裹的字符串中使用双引号、在双引号包裹的字符串中使用单引号 不需要使用双引号或转义字符。
    插入时 库中
    "aa'b'cc" aa'b'cc
    'aa"b"cc' aa"b"cc


    相关文章

      网友评论

          本文标题:MySQL笔记

          本文链接:https://www.haomeiwen.com/subject/lfjjmxtx.html