表级操作、约束(键)说明

数据表:

数据表的创建:

    CREATE  TABLE  [IF NOT EXISTS]  table_name (

        column_name data_type,

        ...

    )


    $$:  CREATE TABLE IF NOT EXISTS names_tb(  

                id SMALLINT UNSIGNED NOT NULL PRIMARY KEY,

                name VARCHAR(20) NOT NULL DEFAULT ''

             );

查看数据库列表: SHOW  TABLES  [FROM db_name]  [LIKE  'pattern'  |  WHERE  expr]

        $$:SHOW TABLES FROM test2_db;

查看数据表结构: SHOW  COLUMNS FROM tb_name

        $$:SHOW COLUMNS FROM names_tb;

约束:

    1.约束保证数据的完整性和一致性;

    2.约束分为表级约束和列级约束;

    3.约束类型包括: NOT NULL(非空约束)、PRIMARY KEY(主键约束)、UNIQUE KEY(唯一约束)、DEFAULT(默认约束)、FOREIGN  KEY(外键约束)


        表级约束与列级约束:

        对一个数据列建立的约束,称为列级约束;对多个数据列建立的约束,称为表级约束;列级约束可以在列定义时声明,也可以在列定义后声明;表级约束只能在列定义后声明。


空值与非空:NULL,字段值可以为空;  NOT  NULL, 字段值禁止为空。

AUTO_INCREMENT:  自动编号,且必须与主键组合使用;默认情况下,起始值为1,每次的增量为1。

PRIMARY  KEY:  主键约束;每张数据表只能存在一个主键;主键保证记录的唯一性;主键自动为 NOT  NULL。


UNIQUE  KEY:  唯一约束;唯一约束可以保证记录的唯一性;唯一约束的字段可以为空值(NULL);每张数据表可以存在多个唯一约束。

DEFAULT: 默认值;当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。

FOREIGN  KEY: 保持数据一致性,完整性;实现一对一或一对多关系。


        外键约束的要求:

1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表; 

2.数据表的储存引擎只能为InnoDB;  

3.外键列和参照列必须具有相似的数据类型,其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同;

4.外键列和参照列必须创建索引,如果外键列不存在索引的话,MySQL将自动创建索引。

        外键约束的参照操作

1.CASCADE:  从父表删除或更新且自动删除或更新子表中匹配的行;

2.SET NULL: 从父表删除或更新行,并设置子表中的外键列为NULL, 如果使用该选项,必须保证子表列没有指定NOT NULL;

3.RESTRICT: 拒绝对父表的删除或更新操作。

4.NO ACTION: 标准SQL的关键字,在MySQL中与RESTRICT相同。


引擎设置

设置数据库的默认引擎:?

查看默认存储殷勤:  SHOW VARIABLES LIKE '%storage_engine%'

        $$:SHOW VARIABLES LIKE '%storage_engine%'


数据表的修改:

添加单列: ALTER TABLE tb_name ADD  [COLUMN]  col_name  column_definition  [FIRST  |  AFTER  col_name]

        $$:ALTER TABLE names_tb ADD nick_name VARCHAR(32) NOT NULL DEFAULT '' AFTER name;

添加多列:ALTER TABLE tb_name ADD  [COLUMN]  (col_name column_definition, ...)

        $$:ALTER TABLE names_tb ADD (sex TINYINT UNSIGNED NOT NULL DEFAULT 0, age TINYINT UNSIGNED NOT NULL DEFAULT 10);

删除列:ALTER TABLE tb_name  DROP [COLUMN] col_name

        $$: ALTER TABLE names_tb DROP nick_name;

添加主键约束:ALTER TABLE tb_name ADD [CONSTRAINT [symbol]] PRIMARY  KEY [index_type] (index_col_name, ...)

        $$:ALTER TABLE users ADD PRIMARY KEY (id);    

添加自增约束: ALTER TABLE tb_name MODIFY col_name col_definition AUTO_INCREMENT

    $$: ALTER TABLE info_tb MODIFY id SMALLINT(5) UNSIGNED auto_increment;

a添加唯一约束:ALTER TABLE tb_name ADD [CONSTRAINT [symbol]] UNIQUE  [INDEX  |  KEY] [index_name] [index_type] (index_col_name, ...)

        $$:ALTER TABLE users ADD UNIQUE KEY (token);

添加外键约束:ALTER TABLE tb_name ADD [CONSTRAINT [symbol]] FOREIGN KEY  [index_name]  (index_col_name, ...)  reference_definition

        $$:ALTER TABLE users_info ADD FOREIGN KEY (u_id) REFERENCES users (id);

添加/删除默认约束:ALTER TABLE tb_name ALTER  [COLUMN]  col_name  {SET  DEFAULT literal  |  DROP  DEFAULT}

        $$:ALTER TABLE users_info ALTER token SET DEFAULT '';

        $$:ALTER TABLE users_info ALTER token DROP DEFAULT;

删除主键约束:  ALTER TABLE tb_name DROP PRIMARY KEY

        $$:ALTER TABLE names_tb DROP PRIMARY KEY;

删除唯一约束:ALTER TABLE tb_name DROP {INDEX | KEY} index_name

        $$:ALTER TABLE names_tb DROP INDEX token;

删除外键约束:ALTER TABLE tb_name DROP FOREIGN KEY  fk_symbol

        $$:ALTER TABLE users_info DROP FOREIGN KEY users_info_ibfk_1;

        删除建立外键时子表外键列建立的索引的key:

        $$: ALTER TABLE users_info DROP KEY u_id;

修改列定义: ALTER TABLE tb_name MODIFY  [COLUMN] col_name  column_definition   [FIRST |  AFTER  col_name]

        $$: ALTER TABLE names_tb MODIFY token VARCHAR(32) NOT NULL DEFAULT '' AFTER id;

修改列名称: ALTER TABLE tb_name CHANGE  [COLUMN] old_col_name  new_col_name  column_definition   [FIRST |  AFTER  col_name]

        $$: ALTER TABLE names_tb CHANGE name nick_name VARCHAR(20) NOT NULL DEFAULT '';

数据表更名:

    1.ALTER  TABLE tb_name RENAME  [TO|AS]  new_tb_name

        $$: ALTER TABLE names_tb RENAME AS test_tb;

    2.RENAME TABLE tb_name  TO new_tb_name [, tb_name 2 TO new_tb_name2]...

        $$:RENAME TABLE test_tb TO info_tb;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容