zoukankan      html  css  js  c++  java
  • mysql增删改查

    1.回顾:
    1.MySQL默认端口号是多少? 3306
    2.MySQL中的超级用户叫什么? root
    3.创建数据库的语句? CREATE DATABASE JD CHARSET=utf8;
    4.修改数据库的语句? alter database 库名 charset=utf8;
    5.删除数据库的语句? DROP DATABASE JD;
    6.查看数据库的语句? SELECT DATABASE();


    2.数据表:
    数据库是由数据表组成的,数据是存在数据表里的。


    4.使用数据库:
    USE python;


    5.创建表:
    -- create table 表名(字段名 类型名 约束);
    create table classes(
    id int unsigned auto_increment primary key,
    name varchar(20) not null
    );

    create table students (
    id int unsigned auto_increment primary key,
    name varchar(30) not null,
    age tinyint unsigned default 0,
    high decimal(5,2),
    gender enum("男", "女", "中性", "保密") default "保密",
    cls_id int unsigned,
    foreign key(cls_id) references classes(id)
    );

    insert classes values(0,"网工1706a"),(0,"网工1705a");

    6.查看数据表:
    SHOW TABLES; --查看所有的表
    DESC students; --查看表结构
    SHOW CREATE TABLE classes; --查看创表语句


    7.删除表:
    DROP TABLE classes;


    8.增删改查(curd):

    1.插入记录:
    -- INSERT [INTO] 表名 [(列名,....)] VALUES(数据,......);

    -- 全列插入
    -- insert 表名 values (...)
    insert students values(0,"张三",20,175,"男",1);

    -- 部分插入
    -- insert into 表名(列1,...) values(值1,...)
    insert students (name,high) values ("王二", 173);

    -- 多行插入
    insert students (name, high) values ("刘备", 160),("张飞", 178);


    2.记录查找:
    -- SELECT 列名,.... FROM 表名 [ WHERE 条件]

    1.查询所有列
    -- select * from 表名;
    -- 注意 :“ * ” 号可以表示所有字段(列)
    select * from students;

    2.指定条件查询
    -- 条件可以使用 > < >= <= AND OR
    select * from students where age > 21;
    -- 查询名字中带有 "王" 字的所有人信息:
    select * from students where name like "%王%";
    -- 查询id小于3且年龄等于20的所有人信息:
    select * from students where id<3 and age=20;


    3.查询指定列
    -- select 列1,列2,... from 表名;
    select name, gender from students;
    select gender, name from students;


    4.可以使用as为列或表指定别名
    -- select 列1【 as 名字】,列2【 as 名字】,... from 表名;
    select name as '姓名', gender as '性别' from students;


    3.修改:
    -- update 表名 set 列1=值1,列2=值2... where 条件

    -- 把id为1的同学,年龄改为10,性别改为保密
    update students set age=10,gender=4 where id=1;

    -- 将所有人的年龄增加1:
    update students set age=age+1;


    4.删除:

    1.物理删除
    -- 基本用法为:
    delete from 表名称 where 删除条件;

    -- 删除id为2的行:
    delete from students where id=2;
    -- 删除所有年龄小于20岁的数据:
    delete from students where age<20;
    -- 删除表中的所有数据:
    delete from students;

    2.逻辑删除
    -- 用一个字段来表示 这条信息是否已经不能再使用了
    -- alter table students add is_delete bit default 0;
    update students set is_delete=1 where id=5;

    9.表结构的修改:

    1.添加字段
    -- alter table 表名 add 列名 列数据类型 [after 插入位置];
    -- 示例:
    -- alter table 表名 add 列名 类型;z'//'1'

    -- 在名为 age 的列后插入列 address:
    alter table students add birthday datetime after age;

    2.删除字段
    -- alter table 表名 drop 列名;
    alter table students drop high;

    3.修改字段:不重命名版
    -- alter table 表名 modify 列名 类型及约束;
    alter table students modify birthday date;

    4.修改字段:重命名版
    -- alter table 表名 change 原名 新名 类型及约束;
    alter table students change birthday birth date;

    5.表格重命名:
    基本形式:
    -- alter table 表名 rename 新表名;
    示例:
    -- 重命名 students 表为 workmates:
    alter table students rename workmates;

    10.表的约束:确保表中数据的完整性,唯一性

    常用7种约束:
    unsigned: 无符号约束,指定数字不能为负数
    -- 数字(整数,小数)

      not null: 非空约束,指定某列不为空

    auto_increment: 自动增长约束,序号自动加一
    -- 注意:必须与主键组合使用
    -- 默认情况下,初始值为1,每次增量为1

      unique: 唯一约束,指定某列和几列组合的数据不能重复
    -- 唯一约束可以保证记录的唯一性
    -- 唯一约束的字段可以为空值(NULL)
    -- 每张数据表可以存储多个唯一约束

      primary key: 主键约束,指定某列的数据不能重复、唯一
    -- 每张数据表只能存在一个主键
    -- 主键保证记录的唯一性
    -- 主键自动为NOT NULL

      foreign key: 外键,指定该列记录属于主表中的一条记录,参照另一条数据

    default 0: 当插入数据的时候,如果字段没有数据,则自动插入默认值

    11.备份和恢复:(了解)
    -- 数据库的备份
    mysqldump -uroot -p python > python.sql;
    -- 恢复
    -- 先建一个新的数据库 create database newpython charset=utf8;
    mysql -uroot -p newpython < python.sql;

    12.数据库设计:(了解)

    三范式:(数据库设计一般要遵守3范式,但不是必须要遵守)

    -- 第一范式(1NF): 强调的是列的原子性,即列不能够再分成其他几列。
    (姓名,性别,电话)
    (姓名,性别,家庭电话,公司电话)

    -- 第二范式(2NF): 首先是 1NF,另外包含两部分内容,一是表必须
    -- 有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能
    -- 只依赖于主键的一部分。
    【OrderDetail】(OrderID,ProductID,UnitPrice,Discount,Quantity,ProductName)

    【OrderDetail】(OrderID,ProductID,Discount,Quantity)
    【Product】(ProductID,UnitPrice,ProductName)


    -- 第三范式(3NF): 首先是2NF,另外非主键列必须直接依赖于主
    -- 键,不能存在传递依赖。即不能存在:非主键列A依赖于非主键列B,
    -- 非主键列B依赖于主键的情况。
    【Order】(OrderID,OrderDate,CustomerID,CustomerName,CustomerAddr,CustomerCity)

    【Orde444444444444444445555555555555555555555555555555555555555545454554544

  • 相关阅读:
    php发送http请求带json格式数据
    a标签跳转,打开一个新页面
    echarts图例多行显示,并且全部对齐
    原子性,有序性,可见性
    winds消息大全
    C#中的结构体和对象区别
    装饰者模式
    hashMapp
    linux 定时任务
    windsServer2008设置定时重启
  • 原文地址:https://www.cnblogs.com/fatzi/p/13353490.html
Copyright © 2011-2022 走看看