码迷,mamicode.com
首页 > 数据库 > 详细

mysql数据库操作

时间:2019-03-08 11:12:56      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:传递依赖   charset   data   字段   删除   entry   一对一   ima   自动   

MySQL命令行脚本:

  数据库操作:

      操作数据库:show databases;

      使用数据库:use 数据库名;

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

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

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

  数据表操作:

      查看当前数据库中的所有表:show tables;

      查看表结构:desc 表名;

      创建表:create table 表名(........)

          

create table students(
    id int unsigned primary key auto_increment not null,
    name varchar(20) default ‘‘,
    age tinyint unsigned default 0,
    height decimal(5,2),
    gender enum(,,人妖,保密),
    cls_id int unsigned default 0
)

      修改表-添加字段:alter table 表名 add 列明 类型;

            如:alter table students add birthday datetime;

      修改表-修改字段:重命名版

              alter table 表名 change 原名 新名 类型级约束;

            如:alter table students change birthday birth datetime not null;

      修改表-修改字段:不重名版

              alter table 表名 modify 列明 类型及约束;

            如:alter table students modify birth date not null;

      修改表-删除字段:alter table 表名 drop 列明;

            如:alter table students drop birthday;

      删除表:drop table 表名;

        如:drop table students;

      查看表的创建语:show create table 表名;

            如:show create table classes;

  数据的增删改查:

      查询:

        查询所有列:select * from 表名;  例:select * from classes;

        查询指定列:select 列1,列2,... from 表名;  例:select id, name from classes;

      增加:

        格式:INSERT [INTO] tb_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),...

        说明:主键列是自动增长,但是在全列插入时需要占位,通常使用0或者 default 或者 null 来占位,插入成功后以实际数据为准

        全列插入:值的顺序与表中字段的顺序对应

            insert into 表名 values(....)    

            insert into students values(0,‘郭靖‘,1,‘蒙古‘,‘2016-1-2‘); 

        部分列插入:值的顺序与给出的列顺序对应

            insert into 表名(列1,...) values(值1,...)    

            insert into students(name, hometown, birthday) values(‘黄蓉‘, ‘桃花岛‘, ‘2016-3-2‘);

        全列多行插入:值的顺序与给出的列顺序对应

            insert into 表名 values(...),(...),(...),(...),(...)...;    

            insert into classes values(0, ‘python1‘),(0, ‘python2‘);

 

            insert into 表名(列1,...) values(值1,...),(值2,...)....;    

            insert into students(name) values(‘杨康‘),(‘杨过‘),(‘小龙女‘);

      修改:

        格式: UPDATE tbname SET col1={expr1|DEFAULT} [,col2={expr2|default}]...[where 条件判断]

        update 表名 set 列1=值1, 列2=值2... where 条件;    

        update students set gender=0, hometown=‘北京‘ where id=5;

      删除:

        DELETE FROM tbname [where 条件判断]

        delete from 表名 where 条件;    

        delete from classes where id=5;

        逻辑删除,本质就是修改操作  

        update students set isdelete=1 where id=1;

 

  数据备份和恢复:

      备份:运行mysqldump命令  mysqldump –uroot –p 数据库名 > python.sql;

      恢复:  mysql -uroot –p 新数据库名 < python.sql;

      • 连接mysql,创建新的数据库
      • 退出连接,执行如下命令

  

  数据库设计:三范式

      第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。

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

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

    

      E-R模型

      • E表示entry,实体,设计实体就像定义一个类一样,指定从哪些方面描述对象,一个实体转换为数据库中的一个表
      • R表示relationship,关系,关系描述两个实体之间的对应规则,关系的类型包括包括一对一、一对多、多对多
      • 关系也是一种数据,需要通过一个字段存储在表中
      • 实体A对实体B为1对1,则在表A或表B中创建一个字段,存储另一个表的主键值

 

        

    

mysql数据库操作

标签:传递依赖   charset   data   字段   删除   entry   一对一   ima   自动   

原文地址:https://www.cnblogs.com/eggnofaner/p/10494485.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!