日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql数据库和数据表的创建和信息更改的常用指令

發布時間:2023/12/20 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql数据库和数据表的创建和信息更改的常用指令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 數據庫和數據表的創建和信息更改
      • 后續小實驗做準備
      • 一. 關于數據庫和數據表的其它操作
        • 1)數據庫
          • ①創建數據庫
          • ②顯示目前所有的數據庫
          • ③數據庫重命名
            • 2.1 先創建新庫:
            • 2.2 使用`RENAME TABLE` 命令修改表名,將表移動到新的庫里:
            • 2.3 完成后刪除舊庫:
          • ④更改當前使用的數據庫
          • ⑤更改當前使用的數據庫
        • 2)數據表
          • ①數據表的創建
            • 字段數據類型
            • 字段設置
          • ②數據表信息修改
            • a. 修改表名
            • b. 增加或刪除或修改列
            • d. 獲取表的基本信息
          • ③數據表信息修改

數據庫和數據表的創建和信息更改

后續小實驗做準備

  • 創建數據庫

    語句:

    create database experiment;
  • 通過:show databases;查看創建結果

  • 創建基本表

    創建基本表時,為不同的列選擇合適的數據類型,正確創建表級和列級完整性約束,如列值是否允許為空、主碼和外碼等。

    創建表的代碼如下:

    • student表

      create table student (sno char(9) primary key, sname char(20) unique, ssex char(2), sage smallint, sdept char(20));
    • course表

      create table course (sno char(4) primary key, cname char(40) not null, cpno char(4), ccredit smallint, foreign key(cpno) references course(cno));
    • SC表

      create table SC (Sno char(9), Cno char(4), Grade smallint, primary key(Sno,Cno), foreign key(Sno) references Student(Sno), foreign key(Cno) references Course(Cno));

    查看創建表的就結果

    上面創建SC的時候屬性是大寫開頭,二student表和cource表中的全是小寫,創建成功,說明win10下mysql不區分大小寫

  • 向基本表中加入數據

    student表數據隨便輸,course表中有坑,因為course表的參照表是自身,所以要先輸入需要的先行課程,CS表依賴student表和course表。最后輸入。

    • student

    • course表

      向輸入cpno為null的元組,再選擇cpno為已經輸入元組cno值相同的元組輸入。不然會出現參照不完整的報錯。

    • CS表

      這個表的數據是查看cource表和student表中的數據

  • 一. 關于數據庫和數據表的其它操作

    1)數據庫

    ①創建數據庫

    create database 數據庫名;

    ②顯示目前所有的數據庫

    show databases

    ③數據庫重命名

    rename database olddbname to newdbname

    MySQL 5.1.23 之前的舊版本中,我們可以使用 RENAME DATABASE來重命名數據庫,但此后版本,因為安全考慮,刪掉了這一條命令。

    大于這個版本修改數據庫名字基本上是不行的,采用新建數據庫,然后進行數據遷移。

    2.1 先創建新庫:
    create database new_db;
    2.2 使用RENAME TABLE 命令修改表名,將表移動到新的庫里:
    rename table old_db.tb to new_db.tb;
    2.3 完成后刪除舊庫:
    drop database old_db;

    上面的方法是通過重命名表的方式實現數據遷移。

    也可以使用dump工具導出數據庫的sql文件,更改數據庫sql文件中創建數據庫的名字。再用source指令引入sql文件實現數據庫的數據遷移。

    ④更改當前使用的數據庫

    use 數據庫名字

    ⑤更改當前使用的數據庫

    drop database 數據庫名

    2)數據表

    ①數據表的創建
    create table <表名> (<列名><數據類型>[列級約束條件],<列名><數據類型>[列級約束條件], [表級約束條件])

    列級約束:只能應用于一列上。

    表級約束 :可以應用于一列上,也可以應用在一個表中的多個列上。

    字段數據類型


    字段設置

    主鍵: 被設置為主鍵的列,值不能為空,且列中不能出現重復的值

    外鍵: 被設置成外碼的列,值只能是參考列值中的數據,可以為空(在沒有設置該列只非空的情況下)

    這里不說那些上面約束條件,太抽象,只說怎么設置列的屬性。

    • 列值不能為空

      <列名><屬性值> not null

    • 設置列為主鍵

      主鍵不能為空,被設置為主鍵的列值不能重復

      • 只有一個主鍵是可以直接

        <列名><屬性值> primary key標識主鍵

        course中的sno為主鍵

      • 多個主鍵時需要在創建表的末尾添加主鍵信息

        這里SC表中Sno和Cno為主鍵

      • 創建表后追加主鍵

        alter TABLE <表名> MODIFY <列名> <列的數據類型> PRIMARY KEY
    • 設置為外鍵

      外鍵必須是參照表的某個key,可以說主鍵(primary key)也可以是唯一鍵(unique key)

      有外鍵時創建數據表,必須要先創建出被參考的表,不然會報錯

      • 在創建時設置

        FOREIGN KEY (<外鍵>) REFERENCES <被參考的數據表>(<被參考的列>)

        這里外鍵是cpno,參考的列的course表中的cno列,cpno列的值只能是cno列中出現過的值,不然會報錯

        多個外鍵 :

      • 在創建表后追加

        -- 已存在表增加外鍵 ALTER TABLE Products ADD FOREIGN KEY products_vendors_fk_1 (vend_id) REFERENCES Vendors (vend_id);
      • 外鍵的約束模式

        • RESTRICT

          嚴格模式(默認的),**父表不能刪除或者更新一個已經被子表引用的記錄數據(**外鍵對應的父表被引用的字段,其他字段可以更改)。即,當父表字段數據已經被子表引用時,不能再刪除或者更新父表被引用的字段數據。

        • Cascade

          級聯模式;針對父表的操作,對應子表關聯的數據也跟著被操作。

          • 更新父表被引用的字段,如果該數據被子表外鍵使用,則子表外鍵隨之更新;
          • 刪除父表被引用的字段記錄,如果該數據被子表外鍵使用,子表對應外鍵所屬記錄隨之刪除。
        • Set null

          置空模式,父表字段操作之后,如果該數據被子表外鍵使用,子表對應的外鍵字段被置空。

          外鍵置空的前提是對應字段允許為空,否則外鍵創建不成功。

        刪除的時候子表置空,更新的時候子表級聯:

    • 自動增長
      自增列只能有一個,并且必須設置為key

      如果沒有指定就取當前id最大值+1,如果指定了就直接插入或者更新數據子

      自增值在數據庫操作失敗后也會發生改變,從而影響后續自增列的值

      <列名><屬性值> auto_increment

      • 如果有多個自增列會報錯
      Incorrect table definition; there can be only one auto column and it must be defined as a key 表定義不正確;只能有一個自動列,必須將其定義為鍵

      在IDEA可視化工具中創建多個自增列出現報錯

      • 自增鍵自增詳解

        自增值修改機制

        假設數據表當前的自增值是 Y,在插入一行數據的時候,數據庫的執行情況如下:

        • 如果插入數據時自增字段指定了具體的值 X,就直接使用值 X 填到該自增字段,該表的自增值是否修改的判斷如下:
          • 若 X<Y,則該表的自增值不變;
          • 若 X≥Y,則需要修改該表的自增值為 X + auto_increment_increment(步長)。
        • 如果插入數據時自增字段未指定值或指定為 0、null,則把該表當前的自增值(即 Y)填到自增字段,并修改該表的自增值為 Y + auto_increment_increment(步長)。

        實際上,MySQL 維護著兩個系統參數:auto_increment_offset 和 auto_increment_increment,分別用來表示自增的初始值和步長,默認值都為 1。MySQL 修改數據表自增值是從 auto_increment_offset 開始,以 auto_increment_increment 為步長,持續疊加,直到找到第一個大于 X 的值,作為新的自增值。

        自增值的修改時機

        **數據表的自增值修改實際上是在真正插入數據的操作之前。如果沒有插入成功,MySQL 也不會將自增值再改回去。也就是說,自增主鍵有可能會出現不連續的情況。**比如在插入數據時出錯(如違反唯一鍵約束),或者事務回滾的情況下,都會導致自增主鍵不連續。

      • 設置自增鍵的初始值

      • 自增列的自增步長是可以改變的, 不常用所以不贅述了。

    • 列中的值唯一

      一張表往往有很多字段需要唯一性,數據不能重復;但是一張表只能有一個字段為主鍵,那么唯一鍵(unique key),就可以解決表中有多個字段需要唯一性約束的問題。

      使用unique key標識

    • 插入列數據前進行條件檢查
      check(列值需要符合的條件),符和條件時插入數據。當插入的數據符合列的條件時插入數據

    ②數據表信息修改
    a. 修改表名

    ? alter table 表名 rename 新表名

    b. 增加或刪除或修改列
    • 增加

      ALTER TABLE table ADD [COLUMN] column_name_1 column_1_definition [FIRST|AFTER existing_column], ADD [COLUMN] column_name_2 column_2_definition [FIRST|AFTER existing_column], ···;
    • 刪除

      ALTER TABLE <表名> DROP COLUMN column_1, DROP COLUMN column_2,
    • 修改列

      • 修改列名
      ALTER TABLE 表名 CHANGE 原字段名 新字段名 字段類型 約束條件
      • 還可以設置列的默認值,是否是主鍵,唯一鍵,外碼等
    d. 獲取表的基本信息

    show columns from <表名>

    ③數據表信息修改

    drop table 表名

    總結

    以上是生活随笔為你收集整理的Mysql数据库和数据表的创建和信息更改的常用指令的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。