为了账号安全,请及时绑定邮箱和手机立即绑定

与MySQL的零距离接触

平然 学生
难度入门
时长 8小时29分
学习人数
综合评分9.67
950人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰
删除了pid字段上的外键约束以后,通过输入SHOW CREATE TABLE user2;看见了这个:KEY 'pid' ('pid') 。老师说:这个字段还存在着索引,当然这个索引也不想要,就可以通过刚才的ALTER TABLE user2 DROP INDEX pid;删除pid上的索引。以上是老师的原话。以下是我的想法:删除索引的语句和删除唯一约束的语句一模一样,我大胆断定“一个字段有唯一约束,它就有索引功能。反过来,一个字段有索引功能,他一定有唯一约束。”另外pid删除了外键约束,还有索引功能,我得出结论:“一个字段若有外键约束,那么他也就有了索引功能,同样也有了唯一约束。”
若要删除数据表user2上的外键,那么就得知道外键约束的名称,怎么查询呢?通过 SHOW CREATE TABLE user2;可以得知,这个外键约束的名字user2_ibfk_1是系统赋予的,那么输入ALTER TABLE user2 DROP FOREIGN KEY user2_ibfk_1;就可以删除数据表user2上的外键。这是老师的原话,以下是我自己想的:要知道数据表上外键约束的名字,就要这样查SHOW CREATE TABLE user2而要知道数据表里某个字段上唯一约束的名字,就输入SHOW INDEXES FROM user2同样是约束,为什么查询的方式不一样呢,我陷入了深思。
若删除username这个字段上的唯一约束,我们得知道约束的名字是谁。还有我们要清楚删除的是字段上的唯一约束,而并不是这个字段本身。我们首先查看约束的名字,通过SHOW INDEXES FROM user2;看到:key_name:username;这句的意思是在username字段上创建了一个名为username的约束。而其中的key_name中的key是索引。另外,查看字段在不在数据表里用这句:SHOW COLUMNS FROM user2;而查看数据表中约束存不存在的情况用这个:SHOW INDEXES FROM user2; 上面这段话是老师的原话,意思是:唯一约束就是索引??
删除唯一约束:ALTER TABLE user2 DROP INDEX index_name;为什么这里有索引的名字,原因在于一张表可以有多个唯一约束,一个字段有索引功能,那么这个字段就具有唯一约束。只有指定了索引的名字(也是字段名),才能确定是删除哪个字段的唯一约束。
删除主键约束:ALTER TABLE user2 DROP PRIMARY KEY;因为一个表只有一个字段能有主键约束,所以没必要指定字段名。
查看索引:SHOW INDEXES FROM user2;
删除索引和删除唯一约束是一样的。删除索引:ALTER TABLE user2 DROP INDEX index_name;
老师 纠正一一个错误 你没发现自己每次在以网格形式呈现的时候都会出现一个ERROR:
No query specified吗? 因为在\G后面是不需要加;的哈哈
添加外键约束:ALTER TABLE users2 ADD FOREIGN KEY(pid) REFERENCES provinces (id);
添加默认约束:ALTER TABLE users2 ALTER age SET DEFAULT 15;
删除默认约束:ALTER TABLE users2 ALTER age DROP DEFAULT;
数据表的修改操作:无非就是添加列,删除列,添加约束,删除约束。用的是ALTER,而INSERT是对数据表添加插入记录用的。
添加单列:ALTER TABLE users2 ADD age TINYINT UNSIGNED NOT NULL;
添加多列: ALTER TABLE users2 ADD (col_name column_definition,...);
删除列:ALTER TABLE users2 DROP age;
添加主键约束:ALTER TABLE users2 ADD CONSTRAINT PK_users2_id PRIMARY KEY (id);
添加唯一约束:ALTER TABLE users2 ADD UNIQUE (username);
创建数据表:CREATE TABLE [IF NOT EXISTS] table_name(
column_name data_type,
...
);
显示索引:SHOW INDEXES FROM province;SHOW INDEXES FROM province\G;(以网格呈现)
打开数据表test:USE test;
查看创建命令:SHOW CREATE TABLE province;
查看数据表结构:SHOW COLUMNS FROM tb3;
插入记录:INSERT [INTO] tb1_name [(col_name,...)] VALUES (val,...);
查看数据表列表:SHOW TABLES [FROM db_name] [LIKE 'pattern'|WHERE expr];
删除列:ALTER TABLE tb1_name DROP[COLUMN] col_name;
添加多列:ALTER TABLE tb1_name ADD[COLUMN] (col_name column_definition,...);
添加单列:ALTER TABLE tb!_name ADD[COLUMN] col_name column_definition [FIRST|AFTER col_name];
删除记录:DELETE FROM province WHERE id=3;
验证表中是否有相应的记录:SELECT * FROM province;
对于一个列所创建的约束,称之为列级约束,而对于两个或两个以上的列所创建的约束,我们称之为表级约束,列级约束在使用的时候,既可以在列定义的时候声明,也可以在列定义以后声明,而表级的约束只能在列定义以后来声明,在实际开发中,用列级约束比较多,表级约束很少用,除此之外,在所有的约束中,并不是说每种约束都存在着表级或列级约束,其中,NOT NULL 非空约束,DEFAULT约束这两种约束就不存在表级约束,它们只有列级约束,而对于其他的三种,像主键,唯一,外键,它们都可以存在表级和列级约束。
线程同步 synchronized
在外键约束当中,在实际的开发过程中,我们很少使用物理的外键约束,很多都去使用逻辑的外键约束,因为物理的外键约束只有INNODB这种引擎才会支持,像我们另外的一种引擎MYISAM的引擎则不支持,反过来说,如果我想创建的数据表,假设存储引擎为MYISAM,而且又想使用外键约束的话,其实是不可能实现的,所以说,我们在实际的项目开发中,我们不去定义物理的外键,所谓的逻辑外键指的是就是我们在定义两张表的结构的时候,我们是按照存在的某种结构的方式去定义,但是不去使用FOREIGN KEY这个关键词来定义。
32位的官网下载地址:
http://dev.mysql.com/downloads/file/?id=461390
32位window 安装步骤:
http://wenku.baidu.com/view/47c29746cc22bcd126ff0cf4.html?from=search
课程须知
要想学习本课程,你只需要知道数据库是个什么东东就足够了,是不是很easy?!
老师告诉你能学到什么?
1、MySQL安装与配置 2、数据类型 3、流程控制与运算符 4、DDL、DCL、DQL、DML 5、常用函数 6、表类型(存储引擎) 7、图形化工具

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消