=================================【建表】==============================
分三部分:
1.指定表名
2.定义列(),列名 数据类型 约束
3.选项 字符集 存储引擎
Create table Course
(cid CHAR(3) PRIMAARY KEY,
CNAME varchar(20) not null,
Ccredit int null,
Climit int null default 60)
Default charset=gbk engine=innodb
ps:列于列之间用 “,”隔开
ps:"null"可以不写 , 最后一行不加" ,"
列级约束:null not null default auto_increment
表级约束:foreign key 符合主码
==============================【主码约束--实体完整性】==============================
1,实体完整性又称行完整性,要求在表中不能存在完全相同的行,而且每行都要具有一个非空且又不重复的字段值。
2,主码(PRIMARY KEY)约束
(1)一个表可以有多个候选码,但是每个表只能定义一个主码。
(2)主码值必须唯一标识表中的每一行,且不能为 NULL。唯一且非空
主码约束实现了实体完整性。(主码是从候选码中选出来的)
3,唯一性(UNIQUE)约束。
(1)每个表可以定义多个唯一键。
(2)唯一性约束确保在某一列或多个列的组合上不出现重复值。
唯一键可为空,但是最多只有一个出现NULL值。
4,空(NULL)约束和非空(NOT NULL)约束。
NULL约束是指属性的取值可以为空。
NOT NULL约束是指字段的取值不能为空。
5,自增(AUTO_INCREMENT)约束。(只能定义为列级约束)
通过自增约束,即可为新记录自动生成唯一的ID,从而实现实体完整性约束。
自增字段应该遵守下面的规则:
(1)每张表只能定义一个字增型字段。
(2)自增字段必须为数值型。
(3)自增字段必须定义为键(主键或者唯一键或者外键均可)。
(4)主码只写自增和主码,不能写unique和not null。
=============================【外码约束--参照完整性】=========================
1,含外码的表称为子表;
父表的主码和子表的外码必须定义在同一个域上。
2,外码取值:
(1)要么取空值,表示不知道不清楚。
(2)要么取对应元组中的主码值。
(3)外码的值可以重复。
3,实现:
外码约束使用的关键字是FOREIGN KEY 。
创建外码(FOREIGN KEY)之前,必须为父表定义主码。
***表与表之间用外键联系。
4,创建表-带外码约束:
[CONSTRAINT约束名] FOREIGN KEY (字段名) REFERENCES 父表(主码字段名)
外码约束的定义需要确定两件事情:
第一:哪个字段是外码,用关键字FOREIGN KEY指定;
第二:引用哪张表的主码,用关键字REFERENCES指定。
5,当两表既是对方的父表又是对方的子表时,要想创建成功,应该先取消外键检查约束。
步骤一:选择数据库: USE registration;
步骤二:取消外键约束检查: SET FOREIGN_KEY_CHECKS=0;
步骤三:建表:
CREATE TABLE Department (
DId char(3),
DName varchar(10) NOT NULL UNIQUE,
DHeader char(4),
PRIMARY KEY (DId),
CONSTRAINT fk_dheader FOREIGN KEY (DHeader) REFERENCES teacher (TId)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
步骤四:设置外键约束检查: SET FOREIGN_KEY_CHECKS=1;
6,外码(FOREIGN KEY)约束(只能定义为表级约束。)
字段之间用逗号隔开,表级约束也用逗号与字段定义隔开并作为独立项来定义,
最后一项后面没有逗号,以反括号定界。
选项的定义放在括号外,选项之间用空格隔开。
=============================【用户自定义完整性】================================
1,用户自定义的完整性是针对某个特定关系数据库的约束条件,它反映某一具体应用必须满足的语义要求。
用户自定义的完整性可以通过唯一性(UNIQUE)约束、非空(NOT NULL)、
默认值(DEFAULT)约束和检查(CHECK)约束实现。
2,默认值约束用来指定某字段的默认值,一个表可以设置多个默认值约束。默认值约束用关键字DEFAULT来实现。
为某张表的某字段设置默认值约束后,向该表中插入记录时,如果没有为该字段指定取值,该字段则采用默认值插入。
注意:有默认值约束的字段如果是字符串类型或者日期时间类型,默认值需要加单引号。
包括如下: char varchar date time datetime
3,检查约束是指对字段取值范围的约束,检查约束用关键字CHECK来实现。
MySQL不直接支持CHECK约束,在MySQL中需要用触发器来实现CHECK约束。
=============================【MySQL数据库表的命令与操作】=========================
1,MySQL作为一个专门的RDBMS,有属于自己的MySQL命令,
也支持关系数据库的标准语言——SQL(Structured query language)。
SQL语言包含4个部分:
数据定义语言(DDL),包括CREATE、DROP、ALTER语句。
数据操作语言(DML),包括INSERT、UPDATE、DELETE语句。
数据查询语言(DQL),SELECT语句。
数据控制语言(DCL),包括GRANT、REVOKE、COMMIT、ROLLBACK等语句。
2,MySQL命令。
MySQL命令是指由MySQL团队开发的只能在MySQL平台运行的命令。
a.MySQL安装的命令
初始化MySQL:mysqld –initialize
安装MySQL:mysqld –install
移除MySQL:mysqld –remove
b. mysql服务的启动和停止
启动MYSQL服务:net start mysql
停止MYSQL服务:net stop mysql
c.登陆mysql
mysql -u root -p
注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP。
d.查看存储引擎:
查看MySQL支持的存储引擎:SHOW ENGINES;
查看到默认引擎:SHOW VARIABLES LIKE '%storage_engine%';
e.修改默认存储引擎。
MySQL命令:SET default_storage_engine=存储引擎名;
f.字符集和字符序的MySQL命令(前一节)
g.关于数据库的MySQL命令
显示所有数据库:SHOW DATABASES;
选择当前数据库:USE 数据库名;
显示指定数据库的信息:SHOW CREATE DATABASE 数据库名;
h.关于数据库表的MySQL命令
显示所有表:show tables;
显示某个表的信息 : show create table 表名;
查看某个表的表结构:desc 表名;
删除表:DROP TABLE 表名; (ps:注意外码)
复制表:
第一种:CREATE TABLE 新表名 LIKE 源表名;
ps:只能复制表结构,不能复制表中的记录。
第二种,(这种方法不建议使用):CREATE TABLE 新表名 SELECT * FROM 源表名 [WHERE 条件表达式]
ps:可以复制表结构和表中的记录,但是不能复制约束!
注:如果在【复制表结构的同时还要复制表中的所有记录】就不要WHERE 条件语句。
如果【只复制表结构,不复制表中的记录】,就在WHERE 中写一个不成立的条件,如1=2或2=3等。
若一个条件成立只复制一条记录!!!