MySQL笔记(一)之新建数据库和数据表
创建数据库
CREATE DATABASE database_name
创建数据表
CREATE TABLE table_name
(
列1 数据类型,
列2 数据类型,
列3 数据类型,
....
)
#常见的数据类型
integer(size) 整型
int(size) 整型
numeric(size,d) 浮点型
char(size) 固定长度字符型
varchar(size) 可变长度字符型
date(yyyymmdd) 日期类型
数据表的约束
NOT NULL
强制列不接受 NULL 值
CREATE TABLE Persons
(
Id_P int NOT NULL,
City varchar(255)
)
DEFAULT
用于向列中插入默认值。
- 创建时添加约束
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT 'Sandnes'
OrderDate date DEFAULT GETDATE() # 可以使用函数
)
- 创建后添加约束
ALTER TABLE Persons
ALTER City SET DEFAULT 'SANDNES'
- 撤销约束
ALTER TABLE Persons
ALTER City DROP DEFAULT
UNIQUE
唯一标识数据库表中的每条记录,一个数据表中可以有多个UNIQUE约束。
- 创建时添加UNIQUE约束
CREATE TABLE table_name
(
Id_P int NOT NULL,
City varchar(255),
UNIQUE (Id_P) # 为一列指定UNIQUE约束
CONSTRAINT uc_PersonID UNIQUE (Id_P,City) # 命名UNIQUE 约束,并且为多列指定UNIQUE约束
)
- 创建后添加约束
#添加一个约束
ALTER TABLE Persons
ADD UNIQUE (Id_P)
#命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束
ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
- 撤销UNIQUE约束
ALTER TABLE table_name
DROP INDEX uc_PersonID
PRIMARY KEY
主键必须包含唯一的值,主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。
- 创建时添加PRIMARY KEY约束
CREATE TABLE Persons
(
Id_P int NOT NULL,
City varchar(255),
PRIMARY KEY (Id_P) # 为一列指定UNIQUE约束
CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,City) #命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束
)
- 创建后添加PRIMARY KEY 约束
ALTER TABLE Persons
ADD PRIMARY KEY (Id_P)
ALTER TABLE Persons
ADD CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
- 撤销 PRIMARY KEY 约束
ALTER TABLE Persons
DROP PRIMARY KEY
FOREIGN KEY
指向另一个表中的 PRIMARY KEY
- 创建时添加FOREIGN KEY约束
CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P) # 一个约束
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P) REFERENCES Persons(Id_P) # 命名约束且指定多个约束
)
- 创建后添加PFOREIGN KEY 约束
ALTER TABLE Orders
ADD FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
- 撤销 FOREIGN KEY 约束
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
CHECK
束用于限制列中的值的范围
- 创建时添加CHECK约束
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (Id_P>0)
CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
)
- 创建后添加CHECK约束
ALTER TABLE Persons
ADD CHECK (Id_P>0)
ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
- 撤销 CHECK 约束
ALTER TABLE Persons
DROP CHECK chk_Person
MySQL笔记(一)之新建数据库和数据表的更多相关文章
- MySQL基础(2) | 数据库、数据表
MySQL基础(2) | 数据库.数据表 基本语法 数据库 #创建 CREATE DATABASE IF NOT EXISTS test_db_char DEFAULT CHARACTER SET u ...
- MySQL 笔记整理(13) --为什么数据表删掉一半,表文件大小不变?
笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> (本篇内图片均来自丁奇老师的讲解,如有侵权,请联系我删除) 13) --为什么数据表删掉一半,表文件大小不变? 我们还是以MySQL ...
- MySQL数据库 | 数据库和数据表的基本操作
第一篇博文,一个小小的纪念仪式^-^ 以下正文 一.数据库的基本操作 --数据库的操作 --连接数据库 mysql -uroot -p密码 mysql -uroot -pmysql --退出数据库 e ...
- MySql中添加用户,新建数据库,用户授权,删除用户,修改密码
1.新建用户 登录MYSQL: @>mysql -u root -p @>密码 创建用户: mysql> insert into mysql.user(Host,User,Passw ...
- 【mysql元数据库】使用information_schema.tables查询数据库和数据表信息
概述 对于mysql和Infobright等数据库,information_schema数据库中的表都是只读的,不能进行更新.删除和插入等操作,也不能加触发器,因为它们实际只是一个视图,不是基本表,没 ...
- mysql 导入导出数据库、数据表
Linux下 均在控制台下操作. 导入数据库: 前提:数据库和数据表要存在(已经被创建) (1)将数据表 test_user.sql 导入到test 数据库的test_user 表中 [root@te ...
- mysql 关于数据库和数据表的基本操作
-- 备注: -- .每一条mysql语句后面都需要加上半角分号 -- .可以用``符号(1键旁边的那个键)将字段名称引用起来,如`Name` -- .mysql在windows下不区分大小写,在li ...
- C# 利用mysql.data 在mysql中创建数据库及数据表
C# 利用mysql.data 在mysql中创建数据库及数据表 using System; using System.Collections.Generic; using System.Linq; ...
- mysql 导入导出数据库、数据表的方法
mysql 导入导出数据库.数据表的方法. Linux操作系统中,均在控制台下操作.1,导入数据库:前提:数据库和数据表要存在(已经被创建)(1)将数据表 test_user.sql 导入到test ...
随机推荐
- JAVA多线程提高八:线程锁技术
前面我们讲到了synchronized:那么这节就来将lock的功效. 一.locks相关类 锁相关的类都在包java.util.concurrent.locks下,有以下类和接口: |---Abst ...
- R0—New packages for reading data into R — fast
小伙伴儿们有福啦,2015年4月10日,Hadley Wickham大牛(开发了著名的ggplots包和plyr包等)和RStudio小组又出新作啦,新作品readr包和readxl包分别用于R读取t ...
- LintCode 394: First Will Win
LintCode 394: First Will Win 题目描述 有n个硬币排成一条线.两个参赛者轮流从右边依次拿走1或2个硬币,直到没有硬币为止.拿到最后一枚硬币的人获胜. 请判定 第一个玩家 是 ...
- 【CodeForces】889 C. Maximum Element 排列组合+动态规划
[题目]C. Maximum Element [题意]给定n和k,定义一个排列是好的当且仅当存在一个位置i,满足对于所有的j=[1,i-1]&&[i+1,i+k]有a[i]>a[ ...
- 简易安装sqoop
版本 :hive-0.13.1-cdh5.3.6.tar.gz 1:解压 然后 进到 conf 目录 修改 sqoop-env.sh 2:如果使用mysql 数据库 要将 mysql驱动包拷贝到 ...
- C语言实现线性表(链式存储方式)
#include <stdio.h> #include <stdlib.h> //提供malloc()原型 typedef struct LNode *List; typede ...
- 大聊Python----迭代器
迭代器 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str等: 一类是generator,包括生成器和带yield的ge ...
- vsts 自动部署到Azure
如果要部署到中国区的Azure ,请先阅读 http://www.cnblogs.com/cnryb/p/7867275.html 前置条件,我把代码托管在vsts(放在GitHub上也没问题,这里不 ...
- [How to] 使用HBase协处理器---基本概念和regionObserver的简单实现
1. 简介 对于HBase的协处理器概念可由其官方博文了解:https://blogs.apache.org/hbase/entry/coprocessor_introduction 总体来说其包含两 ...
- 使用常见的网络命令查看当前网络状态——Mac OS X篇
转载自:http://blog.csdn.net/zkh90644/article/details/50539948 操作系统拥有一套通用的实用程序来查明本地主机的有线或者无线链路状态和IP的连接情况 ...