第三章   保证数据完整性

3.1 数据完整性的概述:实体完整性  域完整性  引用完整性  用户自定义完整性
3.2 数据完整性的实现
  3.2.1 创建非空约束  (在定义列后加上  not null )默认为 null
  3.2.2 创建主键约束-- primary key   主键列不允许储存null值。
  3.2.3 设置唯一约束   unique
  3.2.4 设置默认值  default

3.2.5 设置检查约束(MySQL不支持)

创建表:student
3.2.6 使用自动编号列:auto_increment  
1: 改变自动增长值:
 alter table  student  auto_increment=1000;
2:添加主键约束 ,唯一约束,默认约束,自动增长(自动增长只能用在主键上),都用 change
alter table student  change  id id primary key ;
alter table student  chang gender gender varchar(4) unique;
alter table student  change name name varchar(20) default "张三";
alter table student  change id id int primary key  auto_increment;

3:删除主键约束,唯一约束(删除唯一约束的时候  实际上是删除索引),默认约束,外键约束 ,都用drop

alter table student drop primary key;
alter table student drop index gender;
alter table student drop name name varchar(20);
alter table student drop primary key fk_name;

4:添加外键约束用add。

5:contraint   约束 ; references 引用 ; foreign key 外键 ;default 默认;unique 唯一;auto_increment 自动增长;

 
第四章  使用DML语句更改数据
     本章目标   使用insert语句添加数据   使用update语句修改数据   使用delete语句删除数据
4.1 添加新数据
4.1.1 插入单行记录:
                   insert into <表名> (列名列表)values (<值列表>)
  或者       insert  into <表名> values (<值列表>)    -- 简写

4.1.2 插入多行记录 :
      insert into <表名> (<列名列表>) values (<值列表>),(<值列表>),。。。。;
或者   insert  into <表名> values (<值列表>);
          insert  into <表名> values (<值列表>);
          insert  into <表名> values (<值列表>);

4.1.3 数据表的复制 
      1: 以创建新表的复制形式
create table student_bak1 select * from student;
   2:复制数据

create table student_bak2(
pk_id int primary key auto_increment,
name varchar(20) not null,
age int ,
gender char(3)  default "男",
birthday date,
phoneNo char(12)
);
insert into student_bak2_select * from student;

4.2 更改已有数据

update <表名> set <新列植列表> where <过滤条件>;
4.3 删除数据 
delete from <表名> where <过滤条件>;

删除 student_bak2的所有信息
delete from  student_bak2;  -- delete 语句删除会记录日志 删完数据以后 自动增长依然继续递增
truncate table student_bak2; -- truncate 不会在日志中记录的   删完数据以后 自动增长回到初始值 1

删除 
update student set age=null  where name="未成年";

mysql2的更多相关文章

  1. bundle install 出现 &#39;gem install mysql2 -v &#39;0.3.15&#39; succeeds before bunding &#39;

    bundle install 出现  'gem install mysql2 -v '0.3.15' succeeds before bunding ' 解决:sudo apt-get install ...

  2. MySQL2.字符集乱码

    MySQL2.字符集 此节记录下MySQL出现乱码的原因.还是参考小册子~ 字符集简介 计算机中只能存储二进制数据,建立字符与二进制数据的映射关系来存储字符. 从两方面考虑: 1.界定清楚字符范围,即 ...

  3. Gem install Mysql2的问题

    运行 ‘bundle install’ 或者 ‘gem install mysql2′ 遇到如下错误 > gem install mysql2 ERROR: Error installing m ...

  4. 关于 mysql2 -v '0.3.21'(CentOS7.3)

    个人由于没有安装mysql而是装的MariaDB,所以网上说安装mysql,故没有采用,经查阅资料后,详细情况如下: Gem时报错: [root@localhost ~]# gem install m ...

  5. windows rails new demo时候出错Make sure that `gem install mysql2 -v '0.3.15'` succeeds before bundling.

    rails new demo --database=mysql最后报错Gem files will remain installed in D:/BillFiles/rails_dev/Ruby193 ...

  6. ActiveRecord::StatementInvalid (Mysql2::Error: Incorrect string value:

    今天碰到一个相当棘手的问题,那就是ActiveRecord::StatementInvalid (Mysql2::Error: Incorrect string value . 本来在本地测试是没有任 ...

  7. ruby mysql2

    1. mysql2连接选项 Mysql2::Client.new( :host, :username, :password, :port, :database, :socket = '/path/to ...

  8. Nuxt.js 踩坑记录(2) 使用sequelize时,提示install mysql2,安装了仍然不能解决问题

    打算写一个nuxt.js+sequelize+mysql的个人博客,遇到了挺多坑,还是坚持了下来,终于解决了这个bug. 今天不知道我做了什么,页面就报错了,定位到了使用sequelize的JS文件里 ...

  9. MySQL2:四种MySQL存储引擎

    前言 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建.查询.更新和删除数据.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎,还可以 ...

  10. mysql-2 mysql客户端

    mysql 官方客户端  MySQL-Workbench 下载链接http://dev.mysql.com/downloads/workbench/ 具体安装步骤就不写了,直接一直下一步就可以了. 下 ...

随机推荐

  1. colorbox在android上由于高度太高无法scroll问题

    首先看问题截图: 我们可以看到弹出的colorbox页面的高度已经到了下面,你根本看不到"mistake cross"<=>"X". 我测试了iph ...

  2. Android-JVM中的多线程&垃圾回收

    Java语言是为数不多支持多线程技术的编程语言,而这多线程就不得不提到JVM虚拟机 先看代码案例:(JVM收垃圾) package android.java.thread; class Demo { ...

  3. Python学习-37.Python中的正则表达式

    作为一门现代语言,正则表达式是必不可缺的,在Python中,正则表达式位于re模块. import re 这里不说正则表达式怎样去匹配,例如\d代表数字,^代表开头(也代表非,例如^a-z则不匹配任何 ...

  4. Apache Geode with Spark

    在一些特定场景,例如streamingRDD需要和历史数据进行join从而获得一些profile信息,此时形成较小的新数据RDD和很大的历史RDD的join. Spark中直接join实际上效率不高: ...

  5. javac编译单文件、多文件引入jar包、-cp解决无法加载主类问题

     引言:很多人用ide集成开发环境用的多了,对dos命令编译多个java文件或引入jar包都变得陌生了,java不同于其他解释语言,如ruby.php 都有require,直接引入即可运行代码,但ja ...

  6. Netbeans8.1设置Consola字体并解决中文乱码问题

    netbeans是php非常好用的ide,并且还是免费的!但是好多字体不支持中文,会显示如下乱码: 解决方法如下: 通过修改jre的配置文件成功解决了这个问题. 1. 进入jdk安装目录下/jre/l ...

  7. Android-------------fragment的学习

    一.fragment的静态使用 1.使用步骤:    a.继承fragment   重写onCreatevVew()的回调方法 b.设置Fragment的布局 c.在Activity中声明Fragme ...

  8. Notification通知栏的使用

    一.基础的知识了解 1.pendingIntent : 它是Intent的封装,可以跳转某个Activity.给Service发送一个命令.还可以发送一个广播 2.进度条的使用方法 3.更新通知栏的信 ...

  9. jquery 中选择当前标签下众多相同子标签中的第n个

    可以用jquery选择器的:eq选择器或者jquery遍历的eq()方法,下面带那给出ul下第4个li的内容 $("ul li:eq(3)")  // 元素的index位置工0开始 ...

  10. innodb 源码分析 --锁

    innodb引擎中的锁分两种 1)针对数据结构, 如链表 互斥锁 读写锁 http://mysqllover.com/?p=425 http://www.cnblogs.com/justfortast ...