MySQL—概念,用戶的建立,主鍵,外鍵,數據類型,表格建立

MySQL

 

DBMS,MySQL的概念,數據庫分類,之前MySQL的部署中的一些概念html

#DBMS:數據庫管理系統,用於管理數據庫的大型軟件。mysql就是dbms的一種
#Mysql:是用於管理文件的一個軟件
        #服務端軟件
            #socket服務端
            #本地文件操做
            #解析指令(sql語句)
        #客戶端軟件(各類各樣)
            #socket客戶端
            #發送指令
            #解析指令(sql語句)

#除了mysql,還有其餘相似軟件:
#語法大致上都是sql語句
        #關係型數據庫:sqllite,db2,Oracle,access,sql server,MySQL
                #有比較多約束,好比字段類型啊,表和表,字段和字段間依賴呀
        #非關係型數據庫:MongoDB,redis
                #沒這麼多約束


#MySQL安裝:
    # bin目錄下 mysql是客戶端,mysqld是服務端
    #初始化: 初始化數據庫mysqld --initialize --console。前者沒密碼
            # 5.7版本須要初始化data目錄 : mysqld --initialize -insecure
    #若是不添加環境變量:每次啓動都要先告訴系統所在bin目錄,因此須要添加環境變量
            # cmd1  啓動服務端:E:\wupeiqi\mysql - 5.7.16 - winx64\mysql - 5.7.16 - winx64\bin\mysqld
            # cmd2  客戶端鏈接:E:\wupeiqi\mysql - 5.7.16 - winx64\mysql - 5.7.16 - winx64\bin\mysql - u root - p

    #windows服務:每個window上都有不少windows服務,默默在後臺跑着 (若是不行試一下用絕對路徑)
        #因此能夠把 mysqld這個服務端製做爲,windows服務,就能夠不用多開一個cmd了。首先cd到 bin目錄,輸入如下命令
                # 命令爲 mysqld install 或者 mysqld --install。server.msc裏就有了個mysql
                #移除服務:mysqld --remove
        #再經過命令 : net start mysql  就能夠啓動了,也能夠從系統服務端裏找到,右鍵啓動
        #中止服務: net stop mysql

#總結:解壓壓縮包---MySQL路徑具體到bin添加到環境變量---打開cmd---切換到bin目錄---初始化【命令】---製做windows服務【mysqld install】---啓動【net start mysql】--【mysql -u root -p】


#一些指令:
    #show databases;
    #create database 【db名】;
mysql初識
#sql語句:
    #DDL: 定義語言  好比 create  drop  alter
    #DML: 操做語言  好比 insert  update  delete  select
    #DCL:控制語言  好比  grant revoke
# 註釋
#     單行註釋: --
#     多行註釋: /* ....*/
#建議 命令大寫  表名,庫名都小寫

#windows下區分大小寫的設置:
#在[mysqld] 設置lower_case_table_names = 0


# 在Linux下:
# 一、數據庫名與表名是嚴格區分大小寫的;
# 二、表的別名是嚴格區分大小寫的;
# 三、列名與列的別名在全部的狀況下均是忽略大小寫的;
# 四、變量名也是嚴格區分大小寫的;

#規範是建議大寫,可是主要看公司規範
註釋,大小寫規範

建議命令大寫,表名庫名小寫mysql

    #那在終端要怎麼備份呢?
        #用 mysqldump
        #備份:數據表結構和數據
            #打開cmd 輸入命令: mysqldump -u root db1 > db1.sql -p 回車輸入密碼便可
            #保存位置在 cmd行輸入時候的路徑,文件名爲 db1.sql
        #只備份:數據表結構:
            #mysqldump -u root -d db1 > db1.sql -p  #多了個  -d
    #那備份的怎麼導入呢?
        #首先建立一個數據庫 create database db_name;
        #命令: mysqldump -uroot -p密碼 db_name < 文件路徑
MySQL dump—備份數據庫

 

 

用戶的建立,刪除,受權,取消權限,密碼修改redis

'''
mysql -h localhost(或者是想鏈接的服務器的 IP)  -u (主機上有的帳號) -p
'''
#http://www.cnblogs.com/wupeiqi/articles/5713315.html  數據庫操做
#一些指令:
    #show databases;
    #create database 【db名】defalut charset utf8;
            # CREATE DATABASE 數據庫名稱 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    #drop database 【db_name】
        #數據庫沒有修改一說
    #show tables;
    # drop table table_name;
    #select user from user

#建立用戶:
    #create user 'username'@'ip' identified by 'password'
    #create user 'gkx'@'192.168.0.1' identified by 'gkx123'
    #create user 'gkx2'@'192.168.0.%' identified by 'gkx123'
    #create user 'gkx2'@'%' identified by 'gkx123'
    #用戶受權:
        #grant select,insert,update on db1.* to 'gkx'@'%'
        #grant all privileges on *.* to 'gkx'@'%'
    #取消權限:
        #revoke all privileges from db1.* to 'gkx'@'%'

#修改密碼:
    #ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼'
    # 修改密碼另外一種方式:
            # use mysql;
            # ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密碼';
            # FLUSH PRIVILEGES;

# 刪除用戶
#     drop user '用戶名'@'IP地址';
# 修改用戶
#     rename user '用戶名'@'IP地址'  to '新用戶名'@'IP地址';
#         修改用戶名,能夠經過操做user數據庫,可是不建議這麼作
#         mysql> use mysql;  選擇數據庫
#         Database changed
#         mysql> update user set user="dns" where user="root";    將用戶名爲root的改成dns
# 修改密碼
#     set password for '用戶名'@'IP地址' = Password('新密碼') #8.04後開始不能用了


#可是實際生產過程當中,這些都不用咱們建立,DBA(database administrator)來操做,咱們拿到用戶名及密碼便可

# show databases;
# use 數據庫名稱;
# show tables;
#select * from 表名;  or  select field1,field2 from talbename
用戶建立

 

外鍵的定義,建立,刪除,約束條件,做用,以及外鍵的變種sql

# select now(); 顯示時間
# 定義:若是一張表中有一個非主鍵的字段指向了別一張表中的主鍵,就將該字段叫作外鍵。
        #若是父表的主鍵是複合主鍵,那麼子表也須要指定兩列對應     constraint fk_fkname foreign key (id1,id2) references table_name(pid1,pid2)
# 父表:外表,主鍵被指向的表, 子表:設置外鍵的那張表
#   外鍵的默認做用有兩點:
#   1.對子表(外鍵所在的表)的做用:子表在進行寫操做的時候,若是外鍵字段在父表中找不到對應的匹配,操做就會失敗。
#   2.對父表的做用:對父表的主鍵字段進行刪和改時,若是對應的主鍵在子表中被引用,操做就會失敗。
#外鍵設置: 取名: 用表名就不會重複了   fk_table1_table2
    #1.節省空間
    #2.約束字段取值
    #命令: constraint foreign_key_name  foreign key (想綁定的本表ID) references table_name(外表id);
    #******在建立好的表後 alter table my_tab1 add [constraint 外鍵名] foreign key(外鍵字段名) references mytab2(主鍵字段名);
            # (3) 查看外鍵:
            # SHOW CREATE TABLE ***;能夠查看到新建的表的代碼以及其存儲引擎.也就能夠看到外鍵的設置.
            # 刪除外鍵:
            # alter table drop foreign key '外鍵名'.
            # 注意:
            # 只有在定義外鍵時,用constraint 外鍵名 foreign key .... 方便進行外鍵的刪除.
            # 若不定義,則能夠:
            # 先輸入:alter table drop foreign key -->會提示出錯.此時出錯信息中,會顯示foreign key的系統默認外鍵名.--->用它去刪除外鍵.
            #對於非InnoDB表,FOREIGN KEY子句會被忽略掉。

        #···建立多個外鍵: 約束規則默認是 restrict
            #··因此要想操做外表,必須把子表修改好了
# create table score(sid int not null auto_increment primary key,
#   number int,
#   student_id int,
#   corse_id int,
#   constraint fk_sid_student foreign key (student_id) references student(sid),
#   constraint fk_cid_course foreign key (corse_id) references course(cid)
# [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}] 可選
# [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]  可選
# )engine=innodb default charset=utf8;
'''
# 好比
# create table score(sid int not null auto_increment primary key,
#   number int,
#   student_id int,
#   corse_id int,
#   constraint fk_sid_student foreign key (student_id) references student(sid),
#   constraint fk_cid_course foreign key (corse_id) references course(cid) on delete cascade on update cascade
# )engine=innodb default charset=utf8;
'''

# 關鍵字
# CASCADE  刪除包含與已刪除鍵值有參照關係的全部記錄
# SET NULL 修改包含與已刪除鍵值有參照關係的全部記錄,使用NULL值替換(只能用於已標記爲NOT NULL的字段)
# RESTRICT 拒絕刪除要求,直到使用刪除鍵值的輔助表被手工刪除,而且沒有參照時(這是默認設置,也是最安全的設置)
# NO ACTION  InnoDB拒絕刪除或者更新父表。

# 外鍵的定製做用----三種約束模式:
# restrict:嚴格模式(默認), 父表不能刪除或更新一個被子表引用的記錄。
# cascade:級聯模式, 父表操做後,子表關聯的數據也跟着一塊兒操做。
# set null:置空模式,前提外鍵字段容許爲NLL,  父表操做後,子表對應的字段被置空。
'''
# 使用外鍵的前提:
# 1. 表儲存引擎必須是innodb,不然建立的外鍵無約束效果。
# 2. 外鍵的列類型必須與父表的主鍵類型徹底一致。
# 3. 外鍵的名字不能重複。
# 4. 已經存在數據的字段被設爲外鍵時,必須保證字段中的數據與父表的主鍵數據對應起來。
'''

# 建立外鍵語法:
# [CONSTRAINT[symbol]]
# FOREIGN KEY [index_name](index_col_name, ...)
# REFERENCES
# tbl_name(index_col_name, ...)
# [ON DELETE reference_option]
# [ON UPDATE reference_option]
#
# reference_option:
# RESTRICT | CASCADE | SETNULL | NOACTION
MySQL-外鍵

在多對多中,若是子表外鍵多列,那麼父表主鍵也要多列數據庫

# 定義:若是一張表中有一個非主鍵的字段指向了別一張表中的主鍵,就將該字段叫作外鍵。
        #若是父表的主鍵是複合主鍵,那麼字表也須要指定兩列對應     constraint fk_fkname foreign key (id1,id2) references table_name(pid1,pid2)
# 父表:外表,主鍵被指向的表, 子表:設置外鍵的那張表

#普通外鍵:
    #父表對子表  是1對多

#惟一索引外鍵:
    #父表對子表  是1對1
    #博客表對用戶表,一個用戶只有一個博客
        #好比公司用戶中有個系統
            #用戶表
            #管理表
                #用戶表中只有少數幾個管理崗才能登錄系統
                #因此就在管理表中,設置一個 惟一索引外鍵 ,把管理者的用戶id 放到管理表中
                #圖在有道詞典181006

#多對多
    # 不要求聯合惟一
            #圖在有道詞典181006  相親用戶表
    #要求聯合惟一
            # 用戶和主機也是多對多,用戶主機關係表中能夠 user和hostid能夠聯合惟一。
            #有道筆記20181006 mysql

#若是外鍵要兩列,那麼父表的主鍵也要兩列
外鍵的變種

 

主鍵的概念,建立,刪除,多列主鍵windows

# 表中的每一行都應該具備能夠惟一標識本身的一列(或一組列)。而這個承擔標識做用的列稱爲主鍵。
#   若是沒有主鍵,數據的管理將會十分混亂。好比會存在多條如出一轍的記錄,刪除和修改特定行十分困難。

# primary key:  加速查找 (保證數據的惟一性),一張表只能有一個主鍵
                #可是一個主鍵能夠爲一列,或者兩列


#主鍵還能夠這麼寫  : 爲了能更準確的表示數據惟一性,有時候須要用到複合主鍵
# create table score(sid int not null auto_increment ,
#   number int,
#   student_id int,
#   corse_id int,
#  primary key (sid,student_id) #表示由這兩列設置爲一個主鍵
                                #且記得主鍵不能爲空
#   constraint fk_sid_student foreign key (student_id) references student(sid),
#   constraint fk_cid_course foreign key (corse_id) references course(cid)
# )engine=innodb default charset=utf8;


#   刪除主鍵:
    # alter table t1 drop primary key;
    # 刪除後建立
          # alter table t1 add primary key(id1);
主鍵

 

數據類型,分紅三大類數字類型,字符串,時間類型安全

#分紅三大類

#數字類型:
    #bit 二進制
    #tinyint
    # int
    # bigint
    #float 數值越多越不許確
    #double 數值越多越不許確
    #decimal 小數推薦用這個,可是 decimal(m,d) 這裏的m是指包括小數在內的總位數

# 字符串:
    #char  char(10) 無論字段值多少個,存儲一定是10個位置,可是速度快,由於在搜索的時候,固定只要每10個,10個位置找就好了,不用顧慮字段值多大
    #varchar  varchar(10) 好比輸入root,就只佔用4個空間,可是速度慢
         # char(20) 和 varchar(20) 都只能最多存儲20個字符。超過20個字符會自動截掉
         #sql優化手段,建立數據表字段的時候,把定長的放前面用char,相似地址要放最後,採用varchar
    #Varchar(m) 最大字節65535 可變長度  m取0-65535 只保存須要字符數,另加一個字節來聲明長度
    #Char(m)   最大字節數255  定長類型  m可取0-255 它的右邊填充空格以達到指定長度,當檢索到char值時,尾部的空格被刪除掉
    #text
    #mediumtext
    #longtext
    #若是比longtext還大,就不要用數據庫存了,寫成文件的格式,而後把路徑存到數據庫
    #對於上傳文件,要把文件存硬盤,只把路徑存數據庫
        # 有4種text類型:tinytext、text、mediumtext和longtext。這些對應4種blob類型,有相同的最大長度和存儲需求。
        # blob 列被視爲二進制字符串(字節字符串)。
        # text列被視爲非二進制字符串(字符字符串)。
        # blob列沒有字符集,而且排序和比較基於列值字節的數值值。
        # text列有一個字符集,而且根據字符集的 校對規則對值進行排序和比較。

#時間類型:
    #datatime

#其餘類型:
    #枚舉 enum
    #集合 set
    # 集合類型
    # A SET column can have a maximum of 64 distinct members.
    # 示例:
    # CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
    # INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');
    # SET 的值,裏面只能填 abcd這四個值的任意組合
數據類型—經常使用必須記住
#總覽
# 【1】bit[(M)]
#     二進制位(101001),m表示二進制位的長度(1-64),默認m=1
#
# 【2】tinyint[(m)] [unsigned] [zerofill]
# 小整數,數據類型用於保存一些範圍的整數數值範圍:
# 有符號: -128 ~ 127.
# 無符號:0 ~ 255
# 特別的: MySQL中無布爾值,使用tinyint(1)構造。
#
# 【3】int[(m)][unsigned][zerofill]
# 整數,數據類型用於保存一些範圍的整數數值範圍:
# 有符號:-2147483648 ~ 2147483647
# 無符號:0 ~ 4294967295
# 特別的:整數類型中的m僅用於顯示,對存儲範圍無限制。例如: int(5),當插入數據2時,select 時數據顯示爲: 00002
#
# 【4】bigint[(m)][unsigned][zerofill]
# 大整數,數據類型用於保存一些範圍的整數數值範圍:
# 有符號:-9223372036854775808 ~ 9223372036854775807
# 無符號:0  ~  18446744073709551615
#
# 【5】decimal[(m[,d])] [unsigned] [zerofill]
#  準確的小數值,m是數字總個數(負號不算),d是小數點後個數。 m最大值爲65,d最大值爲30。
# 特別的:對於精確數值計算時須要用此類型decaimal可以存儲精確值的緣由在於其內部按照字符串存儲。
#
# 【6】FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
# 單精度浮點數(非準確小數值),m是數字總個數,d是小數點後個數。
# 有符號:-3.402823466E+38 to -1.175494351E-38,0,1.175494351E-38 to 3.402823466E+38
# 無符號: 0,1.175494351E-38 to 3.402823466E+38
#  **** 數值越大,越不許確 ****
#
# 【7】DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
# 雙精度浮點數(非準確小數值),m是數字總個數,d是小數點後個數。
# 有符號:-1.7976931348623157E+308 to -2.2250738585072014E-308,0,2.2250738585072014E-308 to 1.7976931348623157E+308
# 無符號:0,2.2250738585072014E-308 to 1.7976931348623157E+308
# **** 數值越大,越不許確 ****
#
#
# 8】char (m)
# char數據類型用於表示固定長度的字符串,能夠包含最多達255個字符。其中m表明字符串的長度。
# PS: 即便數據小於m長度,也會佔用m長度
#
# 【9】varchar(m)
# varchars數據類型用於變長的字符串,能夠包含最多達255個字符。其中m表明該數據類型所容許保存的字符串的最大長度,只要長度小於該最大值的字符串均可以被保存在該數據類型中。
# 注:雖然varchar使用起來較爲靈活,可是從整個系統的性能角度來講,char數據類型的處理速度更快,有時甚至能夠超出varchar處理速度的50%。所以,用戶在設計數據庫時應當綜合考慮各方面的因素,以求達到最佳的平衡
#
# 【10】text
# text數據類型用於保存變長的大字符串,能夠組多到65535 (2**16 − 1)個字符。
#
# 【11】mediumtext
# A TEXT column with a maximum length of 16,777,215 (2**24 − 1) characters.
#
# 【12】longtext
# A TEXT column with a maximum length of 4,294,967,295 or 4GB (2**32 − 1) characters.
#
#
# 【13】enum
# 枚舉類型,
# An ENUM column can have a maximum of 65,535 distinct elements. (The practical limit is less than 3000.)
# 示例:
# CREATE TABLE shirts (
# name VARCHAR(40),
# size ENUM('x-small', 'small', 'medium', 'large', 'x-large')
# );
# INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'),('polo shirt','small');
#
# 【14】set
# 集合類型
# A SET column can have a maximum of 64 distinct members.
# 示例:
# CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
# INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');
#
# 【15】DATE
# YYYY-MM-DD(1000-01-01/9999-12-31)
#
# 【16】TIME
# HH:MM:SS('-838:59:59'/'838:59:59')
#
# 【17】YEAR
# YYYY(1901/2155)
#
# 【18】DATETIME
# YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59    Y)
#
# 【19】TIMESTAMP
# YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某時)
數據類型-詳細描述

 

表格的建立,表格的約束:字段名,數據類型,是否爲null,默認值,是否自增,主鍵,以及表格的增刪改查,字段的操做。服務器

查看錶格結構的兩個語句 show create table table table_name \G;   desc table_name;session

#因爲咱們在 my.ini中已經配置了默認信息,因此 default信息能夠不用寫
# engine=innodb default charset=utf8
        #mysql中的引擎:
            #innodb:事務功能和行級鎖,好比原子性操做,表示一條操做若是有一部分失敗了,那麼整條操做會回滾
            #myisam: 全局索引,存儲速度快

#create database 【db名】defalut charset utf8;
#建立表
    #create table table_name(字段1 類型,字段2 類型...) default charset=utf8;

        #!!字段後能夠跟 類型,是否null(默認不爲空),默認值,auto_increment,primary key
    #create table table_name( 字段1 類型  null,
                            # 字段2 類型  not null,
                            # 字段3 類型 not null default=1,
                            # 字段3 類型 not null auto_increment primary key...
                            # )engine=innodb default charset=utf8;
    # auto_increment 表示:自增   #與primarykey綁定使用,一張表只能有一個自增  (id int auto_increment primary key,)
    # primary key:  表示 約束(不能重複且不能爲空); 加速查找 (保證數據的惟一性),一張表只能有一個主鍵
    #刪除表: drop table table_name;
        #查看建立表的語句 show create table table_name;

    #修改字段類型:
        # alter table t1 change id1 id1 int;

#插入
    #insert into table_name(字段1,字段2..) values (列值1,列值2...),(列值1,列值2...) 可插入多行
    #insert into table_name values (列值1,列值2...)要按順序每列都要
    #INSERT INTO uses SET name = '姚明', age = 25; (很差用,仍是用上面的)

#查看
    #select * from table_name where 字段 = '字段值';

#清空表:
    # delete from table_name where 字段 = '字段值';
    #delete from table_name; 刪除表所有值  #讓id從刪除的項開始自增
    #truncate table table_name;            #id會從最原始開始i自增

#更新:
    #update table_name  set 字段 = '新字段值' where 字段 = '字段值';

'''
#修改表的列屬性
# alter table 表名 change 原列名 新列名 類型;   --修改表的列屬性名
# alter table 表名 modify 列名 類型 ;          --修改表的類類型
# alter table 表名 drop 列名;                    --刪除表的某一列
# alter table 表名 add  列名 類型;               --添加某一列
# alter table 表名 rename 新表名;                 --修改表名
'''
表格的建立及操做
# Mysql增長主鍵或者更改表的列爲主鍵的sql語句

# 添加表字段
    # alter table table1 add transactor varchar(10) not Null;
    # alter table table1 add id int unsigned not Null auto_increment primary key

# 修改某個表的字段類型及指定爲空或非空
    # alter table 表名稱 change 字段名稱 字段名稱 字段類型 [是否容許非空];
    # alter table 表名稱 modify 字段名稱 字段類型 [是否容許非空];

# 修改某個表的字段名稱及指定爲空或非空
    # alter table 表名稱 change 字段原名稱 字段新名稱 字段類型 [是否容許非空

# 刪除某一字段
    # ALTER TABLE mytable DROP 字段 名;
#
# 添加惟一鍵
    # ALTER TABLE `test2` ADD UNIQUE ( `userid`)

# 修改主鍵
    # ALTER TABLE `test2` DROP PRIMARY KEY ,ADD PRIMARY KEY ( `id` )
#
# 增長索引
    # ALTER TABLE `test2` ADD INDEX ( `id` )

#修改字段類型,並設置主鍵
    # ALTER TABLE `category ` MODIFY COLUMN `id`  int(11) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (`id`);


#建表後建立惟一索引:
#         create unique index UK_student_name on student (name);
# 建表後添加約束
#         alter table student add constraint uk_student_name unique (name);

#1. select now();  打印當前時間

#2. desc table_name; 查看字段的屬性
#3. show create table table_name ; 查看錶的建立代碼
#3. show create table table_name \G ; 豎着看,查看錶的建立代碼
ALTER命令
# desc table_name; 查看列的屬性

#自增列的起始值修改:
# show create table table_name \G ; 豎着看,查看錶的建立代碼
    # 能夠看到auto_increment = 數值
    #這個就是自增數列此時下一個要自增的id數
    #修改自增列的值:
            #aler table table_name auto_increment = 你想要的數值;
    #取消自增列:
            #alter table table_name change id id int;

#自增列的步長:
    # 1. mysql : 基於會話級別,一次mysql登錄使用,就是一次會話
        #show session variables like 'auto_inc%'; 查看步長
        #set session auto_increment_increment=2;  #設置步長
        #set session auto_increment_offset=10;    #設置起始值

            #基於全局級別的,應用於全部會話全部表,【儘可能別使用】
            #shwo global  variables like 'auto_inc%';
            #set global auto_increment_increment=2;
            #set global auto_increment_offset=10;

    #2.sql server: 基於表級別能夠在表最後
        #)engine=inndb auto_increment=4,步長=5 default charset=utf8;
自增列步長

自增列步長,起始值的修改cors

#有道筆記20181006 mysql
#惟一索引  : 看到索引立刻想到是 加速查找
                #惟一 : 約束,不能重複
                #約束功能: 主鍵,外鍵

#create table t1( id int auto_increment primary key,
                 # num int,
                 # name char(10),
                 #unique 索引名 (num)  #單列惟一索引
                 #index 索引名 (num)  #建立普通索引
                 #unique 索引名 (num,name) #聯合惟一索引: 不能由兩行如出一轍的 num和name
#

#建表後建立惟一索引:
#         create unique index UK_student_name on student (name);
# 建表後添加約束
#         alter table student add constraint uk_student_name unique (name);
        #要先建聯合索引,乖乖刪除原來的索引,再操做吧
#刪除索引:
        # ALTER TABLE t1 DROP INDEX uq_name;

# ERROR !!! :needed in a foreign key constraint問題
        #要先乖乖刪除外鍵,才能繼續操做索引


#惟一索引和主鍵的區別:
        #惟一索引 能夠爲空
        #主鍵 不能爲空
惟一索引

 

武老師博客目錄:http://www.cnblogs.com/wupeiqi/articles/5729934.html

相關文章
相關標籤/搜索