数据库定义
语法形式
(1)创建数据库
  create database [if not exists ] 数据库名 [charset 字符集] [collate 字符排序规则];
  if not exists:用于判断是否存在该数据库名,如果存在则不执行该语句

  1. create database if not exists z_0705;

  Show charset :查看字符集
  Show collate :查看排列规则
(2)修改数据库
  alter database 数据库名 character set=新字符集 collate=新校对

  1. alter database z_0705 character;

(3)删除数据库:
  drop database 数据库名;

  1. drop database z_0705;

表定义语句
  1)字段属性设置
    not null: 不为空,表示该字段不能放“null”这个值。不写,则默认是可以为空
    auto_increment: 设定int类型字段的值可以“自增长”,即其值无需“写入”,而会自动获得并增加
    此属性必须随同 primary key 或 unique key 一起使用。
    [primary] key: 设定为主键。是唯一键“加强”:也不能重复并且不能使用null,并且可以作为确定任意一行数据的“关键值”,最常见的类似:where id= 8; 或 where         user_name =   ‘zhangsan’;
    通常,每个表都应该有个主键,而且大多数表,喜欢使用一个id并自增长类型作为主键。
    但:一个表只能设定一个主键。
    unique [key] : 设定为唯一键:表示该字段的所有行的值不可以重复(唯一性)。
    default ‘默认值’: 设定一个字段在没有插入数据的时候自动使用的值。
    comment ‘字段注释’:
  2)索引设置
    什么是索引:
    索引是一个“内置表”,该表的数据是对某个真实表的某个(些)字段的数据做了“排序”之后的存储形式。
    其作用是:极大提高表查找数据的速度!——其效率(速度)可以匹敌二分查找。
    注意:索引在提供查找速度的同时,降低增删改的速度。
    对创建(设计)表来说,建立索引是非常简单的事,形式如下:
    索引类型 (字段名1,字段名2, .... ) //可以使用多个字段建立索引,但通常是一个
    有以下几种索引:
    普通索引:key(字段名1,字段名2, .... ):它只具有索引的基本功能——提速
    唯一索引:unique key (字段名1,字段名2, .... )
    主键索引:primary key (字段名1,字段名2, .... )
    全文索引:fulltext (字段名1,字段名2, .... )
  3)约束设置
    什么叫约束:约束就是一种限定数据以符合某种要求的形式(机制)
    约束主要有:
    主键约束:primary key (字段名1,字段名2, .... )
    其实就是主键索引,也是主键属性。即primary key有3个角度的理解(说法):字段属性设置为主键,或建立的主键索引,或设定一个主键约束,但他们的本质是一样
    唯一约束:unique key (字段名1,字段名2, .... ),其实也是“3体合一”(类似primary key)
    外键约束:
    什么叫外键:就是设定一个表中的某个字段的值,必须“来源于”另一个表的某个主键字段的值。
    语法形式:
    foreign key (字段名1,字段名2, .... ) references 表名2(字段名1,字段名2, .... )
    说明:
    对某个(些)字段设定外键,则其相对应的其他表的对应字段需要设置为主键。
  4)表选项
    表选项就是对一个表的有关属性的设定,通常都不需要。如果不设定,则有其默认值。
    有以下几个可用:
    comment = ‘表的注释’;
    charset = 字符编码名称; //跟数据的字符编码设定一个意思。
    字符编码设定的范围及继承关系:
    系统级设定:安装时确定了。
    库级设定:建库时设定;
    表级设定:就是这里的charset = 字符编码名称
    字段级设定:作为字段属性出现。
    他们都只对“字符类型”的字段有效。每一级如果没有设定,就会“继承使用”其上一级的设定。
    auto_increment = 起始整数; //自增长类型值的初值,默认是1
    engine = “表的存储引擎名”; //
    存储引擎就是将数据存入硬盘(或其他媒介)的方式方法。通常就几个可用,默认是InnoDB
    存储引擎决定一个数据表的各方面的信息:功能和性能。
(1)创建表
    create table [if not exists] 表名(字段列表, [约束或索引列表]) [表选项列表];
    说明:列表都是表示“多个”,相互之间用逗号分开。
    字段基本形式: 字段名 类型 [字段修饰属性];

  1. create table student(
  2. sno varchar(20) not null comment'学号',
  3. sname varchar(20) not null comment '学生姓名',
  4. ssex varchar(20) not null comment '学生性别',
  5. sbirthday datetime comment '学生出生年月',
  6. class varchar(20) comment '学生所在班级',
  7. primary key(sno)
  8. );

(2)修改表:
  一般概述
    通常,创建一个表,能搞定(做到)的事情,修改表也能做到。大体来说,就可以做到:
  增删改字段:
  增:alter table 表名 add [column] 字段名 字段类型 字段属性;
  删: alter table 表名 drop 字段名
  改:alter table 表名 change 原字段名 新字段名 新字段类型 新字段属性;
  增删索引:
  增删约束:
  修改表选项:
(3)删除表:
  drop table [if exists] 表名;

  1. drop table student;

数据操作语言(DML)
  数据库设计3范式(3NF):
    范式,就是规范,就是指设计数据库需要(应该)遵循的原则。
    每个范式,都是用来规定某种结构或数据要求——后一范式都是在前一范式已经满足的情况用来“加强要求”
    1)第一范式(1NF),原子性
      原子性: 存储的数据应该具有“不可再分性”。
    2)第二范式(2NF)唯一性
      需要实现每一行数据具有唯一可区分的特性,并不能有部分依赖关系。
      通常,给一个表加主键(也是推荐做法),就可以做到“唯一可区分”。
      但主键有这样情况:
      设定一个字段为主键:此时,表示该一个字段的值就可以明确确定一行数据。
      设定多个字段为主键:表示只有这多个字段的值都确定后才能确定一行数据。此时也称为“联合主键”
      什么叫依赖:
      如果确定一个表中的某个数据(A),则就可以确定该表中的其他另一个数据(B),则我们说:B依赖于A。
      实际上,一个表只要有主键,则其他非主键一定是依赖于主键的。

      什么叫“部分依赖”:
      如果确定一个表中的某个数据组合(A,B),则就可以确定该表中的其他另一个数据(C),则我们说:C依赖于(A,B)(此时A,B通常就是做出主键)。
      但:如果某个数据D,它只依赖于数据A,或者说,A一确定,则D也可以确定,此时我们就称为“数据D部分依赖于数据A——可见部分依赖是指某个非主键字段,
      依赖于联合主键字段的其中部分字段。
    3)第三范式(3NF):独立性,消除传递依赖
      在一个具有主键的表中,假设主键为A,其必然其他非主键都依赖于该主键,比如:B依赖于A,C依赖于A,D依赖于A。。。。。。
      但同时:如果该表中的某个字段B的值一确定,就能够确定另一个字段的值C,则我们称为C依赖于B。
      那么,就出现了:
      C依赖B,B依赖A——这就是传递依赖。
      则消除该传递依赖的的通常做法,就是将C依赖于B的数据,分离到另一个表中。
(1)数据插入(添加数据)
    有3种形式
    形式1:
    insert into 表名(字段名1,字段名2,....) values (值a1,值a2, .....), (值b1,值b2, .....),..... ;
    形式2:
    insert into 表名1(字段名1,字段名2,....)select 字段名1,字段名2,.... from 表名2;
    形式3:
    insert into 表名 set 字段名1=值1,字段名2=值2, ..... ;

  1. insert into student values
  2. ('100','李华','男','1977-09-01','95033');
  3. ('108','曾华','男','1977-09-01','95033'),
  4. ('105','匡明','男','1975-10-02','95031'),
  5. ('107','王丽','女','1976-01-23','95033'),
  6. ('101','李军','男','1976-02-20','95033'),
  7. ('109','王芳','女','1975-02-10','95031'),
  8. ('103','陆君','男','1974-06-03','95031');

(2)删除数据
    基本语法形式:
    delete from 表名 [where条件] [order排序] [limit限定];

  1. delete from student where sname="王丽";

(3)修改数据
    基本语法:
    update 表名 set 字段名1=值表达式1,字段名2=值表达式2,....[where条件] [order排序] [limit限定];

  1. uodate student set sname="王丽" where ssex="女";

mysql 库、表、数据的增删改的更多相关文章

  1. Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查

    本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...

  2. PreparedStatement实现表数据的增删改 & 封装数据库链接和关闭操作

    PreparedStatement实现表数据的增删改 PreparedStatementUpdateTest package com.aff.PreparedStatement; import jav ...

  3. Mysql入门-对表数据的增删改查

    这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mysql的时候, ...

  4. 《MySQL必知必会》[03] 表数据的增删改

    1.增:插入数据 INSERT关键字可以插入新的行到数据库表中: 插入完整的行 插入行的一部分 插入多行 插入某些查询的结果 基本的INSERT语句是: INSERT INTO R(A1, A2, . ...

  5. MySQL表数据的增删改查

    1.增 INSERT INTO tb VALUES(v1,v2,v3...); INSERT INTO tb (field1,field2...) VALUES(v1,v2...); INSERT I ...

  6. mysql--对库,表基本操作语句,增删改查

    1.对数据库的操作 1.选择数据库 USE 数据库名 2.创建数据库 create database 数据库名 charset utf8; 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不 ...

  7. MySQL学习8 - 数据的增删改

    一.介绍 二.插入数据 INSERT 三.更新数据UPDATE 四.删除数据DELETE 一.介绍 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现 ...

  8. MySQL语句之数据的增删改查

    1.插入记录insert语法:INSERT INTO tablename (field1,field2,……fieldn) VALUES(value1,value2,……valuesn); 也可以一次 ...

  9. java 读取mysql库表数据

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...

  10. Python操作MySQL数据库完成简易的增删改查功能

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 目录 一丶项目介绍 二丶效果展示 三丶数据准备 四丶代码实现 五丶完整代码 一丶项目介绍 1.叙述 博主闲暇之余花了10个小时写的 ...

随机推荐

  1. 使用Django实现发邮件功能

    django实现发送邮件功能   django实现邮件发送功能 1)首先注册一个邮箱,这里以163邮箱为例 2)注册之后登录,进行如下修改 找到设置,设置一个授权码,授权码的目的仅仅是让你有权限发邮件 ...

  2. Kafka 幂等生产者和事务生产者特性(讨论基于 kafka-python | confluent-kafka 客户端)

    Kafka 提供了一个消息交付可靠性保障以及精确处理一次语义的实现.通常来说消息队列都提供多种消息语义保证 最多一次 (at most once): 消息可能会丢失,但绝不会被重复发送. 至少一次 ( ...

  3. golang-复习1

    结构体: 是一种数据类型 type Person struct{  //l类型定义,地位等价与 int byte boo string ……通常放在全局位置 name string sex byte ...

  4. 一次docker镜像的迁移

    docker 镜像迁移 背景,本地测试环境要切到线上测试,镜像下载或编译都需要时间. 所以直接scp镜像过去来节省时间. save 相对于export会占用更多存储空间 被迁移服务器导出所有镜像 do ...

  5. java学习笔记(3)数据类型、源码、反码、补码、精度损失、基本数据类型互相转换

    关于java中的数据类型: 1.数据类型的作用是什么? 程序当中有很多数据,每一个数据都是有相关类型的,不同数据类型的数据占用的空间大小不同. 数据类型的作用是指导java虚拟机(JVM)在运行程序的 ...

  6. ERROR 1067 (42000): Invalid default value for 'time'

    修改sql_mode,去掉NO_ZERO_IN_DATE,NO_ZERO_DATE这两个参数 查看 root@:: [hmda]> show variables like 'sql_mode'; ...

  7. PHP连接MySQL创建表

    源代码: <?php header("Content-Type:text/html;charset=utf8");//声明编码格式 $conn=mysqli_connect( ...

  8. 【caffe I/O】数据读取层 代码中文注释

    caffe.proto中DataParameter部分 message DataParameter { //输入数据使用的DB类型 enum DB { LEVELDB = ;//使用LEVELDB L ...

  9. vgg16中的函数

    1.inspect.getfile(文件名)文件名一般与类名相同,返回文件目录包含文件名 import inspect class os测试: def __init__(self): path = i ...

  10. CMU Database Systems - Indexes

    这章主要描述索引,即通过什么样的数据结构可以更加快速的查询到数据 介绍Hash Tables,B+tree,SkipList 以及索引的并行访问 Hash Tables hash tables可以实现 ...