not null约束,需设置默认值

sex enum('male','female') not null default 'male'

unique 约束,值唯一

单列唯一:

create table department(

  id int unique,

  name char(10) unique);

或者

create table department(

  id int,

  name char(10),

  unique(id),

  unique(name));

联合唯一:

create table department(

  id int,

  name char(10),

  unique(id,name));

primary key

满足 not null,unique

对innodb存储引擎来说,一张表内必须有一个主键,当不指定主键时,会默认选一列满足not null和unique的列做主键,如果没有,会设一个隐藏列做主键。

单列主键和复合主键。

primary key(id1,id2)

auto_increment

create table t20(

  id int primary key auto_increment,    #如果不指定id值,id会自动自增,如果指定则按指定的id值

  name char(16))

  AUTO_INCREMENT = 4;     # 设定id起始值为4

alter table set auto_increment = 1   # 修改起始值

补充:

  show variables like 'auto_inc%'  # 查询变量

  auto_increment_increment     # 步长,默认为1

  auto_increment_offset       # 起始偏移量,默认为1

  set session auto_increment_increment=5;  # 该步长基于会话级别,会话关闭,步长失效。而sql server可以给表设置步长  

  set global auto_increment_increment=5; # 设置所有会话,会话关闭后再开启,步长还是5

  清空表要用truncate,如truncate t20,能置自增的序列为初始状态,而delete不能,delete宜和where配合删除具体一行。

foreign key

先建被关联的表,并保证被关联的字段唯一。

再建关联表:

dept_id int,

foreign key(dept_id)  references dept(id) on delete cascade on update cascade

或 CONSTRAINT fk_dept foreign key(dept_id) REFERENCE dept(id)

# cascade会导致删除和更新被关联的表时,同步删除关联表中相应外键下的记录,否则不能删除被关联表,除非先删除关联表或修改关联表中外键

实际应用中,尽量少用foreign key

可以有复合外键,前提是引用的是复合主键

sql语句之约束条件的更多相关文章

  1. 3 - SQL Server 2008 之 使用SQL语句删除约束条件

    基本语法为: ALTER TABLE 表名 DROP CONSTRAINT 约束名1,约束名2…… 如果删除一个约束,不需要逗号后的约束名,如果删除两个及两个以上的约束,必须以逗号隔开. 使用上一节中 ...

  2. MySQL - 在sql语句执行时是先执行触发器再检查约束条件的

    在sql语句执行时是先执行触发器再检查约束条件的

  3. MySQL数据库:SQL语句基础、库操作、表操作、数据类型、约束条件、表之间的关系

    数据库相关概念: 1. 数据库服务器:运行数据库管理软件的计算机 2. 数据库管理软件:MySQL.Oracle.db2.slqserver 3. 库:文件夹,用来组织文件/表 4. 表:文件(类似于 ...

  4. MySQL学习(二)SQL语句的总结

    1.连接查询和关联查询连接查询:把两个表中相同的元素的连接就可以查询,使用:where里,select table1.*,table2.* from table1,table2 where table ...

  5. MySQL常用SQL语句

    一.数据库操作 1.创建数据库: Mysql> CREATE DATABASE databaseName; Mysql数据库的数据文件默认存放在/usr/local/mysql/var/目录下, ...

  6. 常用Oracle SQL语句(汇总版)

    Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象 一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, ...

  7. oracle常用SQL语句(汇总版)

    Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, ...

  8. oracle sql语句

    一.ORACLE的启动和关闭1.在单机环境下要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下su - oracle a.启动ORACLE系统oracle>svrmgrlSVRM ...

  9. MySQL用户管理及SQL语句详解

    1.1 MySQL用户管理 1.1.1 用户的定义 用户名+主机域 mysql> select user,host,password from mysql.user; +--------+--- ...

随机推荐

  1. css-装饰

    css -在标签上设置style样式 background-color:#2356a1 height:48px -编写样式方法 1.标签的style属性 2.鞋子head里面,style标签中编写 - ...

  2. java模拟而一个电话本操作

    哈哈.大家平时都在使用电话本.以下使用java来模拟而一个简单的电话本吧... 首先给出联系人的抽象类 package net.itaem.po; /** * * 电话人的信息 * */ public ...

  3. 解压 boot.img

    ./split_bootimg.pl boot.img Page size: 2048 (0x00000800) Kernel size: 7062084 (0x006bc244) Ramdisk s ...

  4. iperf3 测试路由器吞吐率

    mini newifi 电脑端: iperf3 -s 路由器: root@OpenWrt:/# iperf3 -c 10.10.10.3 -t 20 Connecting to host 10.10. ...

  5. linux快捷键及主要命令(转载)

    作者:幻影快递Linux小组 翻译 2004-10-05 22:03:01 来自:Linux新手管理员指南(中文版) 5.1 Linux基本的键盘输入快捷键和一些常用命令 5.2 帮助命令 5.3 系 ...

  6. Xcode5.1.1+ios 7.1.2 免证书真机调试

    Xcode假设不破解.无法真机调试, 也无法编译真机Release文件.仅仅有付费开通Apple开发人员账号,才干申请真机调试.而Xcode进行破解后,结合越狱的iPhone或iPad, 就可以免官方 ...

  7. Javascript学习之Date对象详解

    1.定义 创建 Date 实例用来处理日期和时间.Date 对象基于1970年1月1日世界协调时起的毫秒数 2.语法 构造函数 new Date() new Date(value) value代表自世 ...

  8. 常用git命令和工具

    0. ln -s src_dir  //一个参数即可在当前目录下生成一个软链接   1.git command --clone/push a branch      git clone <url ...

  9. Ubuntu增加Swap分区大小

    参考:http://blog.csdn.net/mznewfacer/article/details/7334592 以下摘自上述地址内容,并做了点小修改: 1.首先用命令free查看系统内 Swap ...

  10. 《编程之美》之如何控制CPU的暂用率固定在50%

    <编程之美>第一章 让CPU暂用率听你指挥的粗糙实现,如何控制CPU的暂用率固定在50% #include <stdio.h> #include <Windows.h&g ...