0x01
?
創建數據庫并指定字符集和排序規則 -- 三種實例寫法
create database temptab2 character set utf8 collate utf8_general_ci;
create database temptab3 charset utf8 collate utf8_general_ci;
create database temptab4 character set=utf8 collate utf8_general_ci;
查看字符集和排序規則的命令
?show charset;
?show collation;
刪除數據庫
?drop database temptab3;
進入數據庫
use temptab4;
顯示所有數據庫
show databases;
顯示數據庫創建過程
show create database mysql;
顯示數據庫版本號
select version();
顯示當前在哪個數據庫
select database();
?
0x02
數據類型是(略)
?
0x03
創建表
基本形式:create table [if not exists] 表名 (字段列表 [,索引或約束列表]) [表選項列表])
根據以上格式分別解說如下
1.字段列表:多個字段的定義項,相互之間用逗號隔開;
字段定義形式:字段名 字段類型 [字段屬性列表] ? ? ------ int not null auto_increment ? 等等
2.字段屬性列表由多個字段屬性構成,相互之間用空格隔開;
primary key:設定為主鍵。主鍵的本質是表示“該表中該字段值可以唯一確定某行數據”,并具有2個隱含含義:唯一性,不為空。unique [key]:設定為唯一(鍵),即表中所有行的的數據在該字段中的值不能有重復。not null|null:設定該字段是否可空(可以放置空值null),默認不設置就是表示可為空。auto_increment:設定自增長,表示一個整數類型的字段的值可以“自動遞增取值”,設置后其必須同時設置為一個主鍵或唯一鍵(即[primary] key, unique [key])。一個表只能有一個auto_increment屬性的字段。default 默認值:設定默認值,表示當插入新數據的時候如果該字段沒有給值,就會自動使用該默認值。comment '字段注釋':設置字段的注釋文字,用單引號引起來。?
3.索引列表 多個索引的定義項,相互之間用逗號隔開,可選。
什么是索引:索引就是數據庫內部對某個表的所有數據預先進行的某種排序。一 個表可以設定(添加)多個索引,則就會有多個排序。就如新華字典,是“所有漢字”的一個紙質表,其默認是按拼音的排序,同時前面還有個部首表,此部首查表 就是該新華字典所有漢字的一個“索引”。對我們程序員的應用來說,索引只是一個對某個表的“設定”,一兩個單詞而已,而在數據庫內部,數據庫管理系統會創 建并維護一個跟當前表關聯的“索引表”,該表數據已經按某種方式排好了序。給一個表建立索引的目的是加速數據的讀取。但同時加重了數據庫增刪改命令的負 擔,因而需要權衡考慮是否需要給某個表的某個字段設定索引。有如下幾種索引:普通索引:沒有特定其他作用,就只是建立索引。設定形式:index|key [索引名] (字段名1[,字段名2,...])。唯一索引:設定某字段為唯一,且建立索引。設定形式: unique [key] [索引名] (字段名1[,字段名2,...])。主鍵索引:設定某字段為主鍵,且建立索引。設定形式:primary key [索引名] (字段名1[,字段名2,...])。主鍵索引是唯一索引的特例,也是唯一索引的“加強”,主鍵索引本身就包含了“唯一性”,同時主鍵索引的字段不能為空 值(null)。有時候需要用多個字段來確定主鍵,此時稱為“聯合主鍵”。聯合主鍵的意思是多個(2個以上)的字段合在一起才算主鍵設定。比如某個學生管 理系統中有個“成績表”,記錄了一個學生整個大學所有所學課程的考試成績。則該表中至少要記錄3項信息:學生ID,課程名稱,成績。且此時我們要查到一個 成績,必須確定學生ID和課程名,才可能確定該成績。我們不能說該學生成績是多少,也不能說某門課成績是多少,而必須說某個學生的某門課成績是多少。此 時,學生ID和課程名稱合起來才能確定一個有意義的數據,這這個字段就構成“主鍵”。如果沒有主鍵,則可能會造成數據的沖突或歧義,比如:工資表,如果沒有主鍵,同名時就無法區分誰的工資是多少。成績表,如果沒有主鍵,則可能出現某個人的某門課有多個成績數據。全文索引:設定某字段可進行全文查找。 設定形式: fulltext [index][索引名] (字段名1[,字段名2,...])。4.約束列表:多個約束的定義項,相互之間用逗號隔開,可選。
什么是約束?故名思義,約束就是對表中數據的某種限制。當然此限制是我們人為加上去的為了使我們的數據更具有“合理性”和“安全性”。數據的最基 本約束是“數據類型”,比如保存工資的字段,就不應該存入字符串值(這一點來說,excel表格就做不到),此時設定其數據類型就解決了此問題。但我們這 里說的約束,是在現有已經設定好數據類型基礎上的進一步“要求”,比如,一個學校的學生學號,有一個要求就是“不能重號”,則我們可以給該字段設定“唯一 性”約束它,這就是唯一約束。mysql有如下幾項約束:主鍵約束:設定形式:[constraint] primary key (字段名1[,字段名2,...])。含義同字段的同名屬性。唯一約束:設定形式:[constraint] unique [index] (字段名1[,字段名2,...])。含義同字段的同名屬性外鍵約束:設定形式:[constraint] foreign key (字段名1[,字段名2,...]) references 表名(字段名1[,字段名2,...])。 外鍵的定義:外鍵就是關系數據庫的一個基本特征的實現,表明該字段的值是跟外部的某個表的某個字段的值“對應”的,或者也可以說來自于該外部的某個表的某 個字段值。如果給一個設定了外鍵的字段插入一個值,而該值并沒有在該外鍵所指定的外部表的對應字段中出現,則該值就會插入失敗,這也就是數據庫內部的“約 束機制”(使我們的數據更“純凈”)。非空約束:其實就是字段屬性中的“not null”,只能在字段上設置。默認約束:其實就是字段屬性中的“default 默認值”,只能在字段上設置。檢查約束:指使用一定的判斷表達式來對某個字段中的值進行“合理性”限制,比如年齡字段,雖可以設定為tinyint,但其實仍然會超出合理范圍,則可以設定檢查約束,只能輸入0-120作為“合法年齡”數據。不過,當前mysql版本尚不支持。5.表選項列表:多個表選項的設定項,相互之間用逗號或空格隔開,可選。常用表選項如下:
ENGINE=存儲引擎名存儲引擎也叫“表類型”,是指一個表中的數據以何種方式存放在文件或內存中。不同的存儲引擎(表類型)提供不同的性能特性和可用功能。沒 有一種各方面都又具有最佳性能又具有各種功能的存儲引擎。我們要做的是要根據數據的具體使用情形(需求)來選擇合適的存儲引擎,有的要讀取速度快,有的要 寫入速度快,有的要具有高安全可靠性,有的要海量存儲,等等。常用的存儲引擎是innoDB(默認)和Myisam。CHARACTER SET=要使用的編碼名 [COLLATE=要使用的校對集名 ]auto_increment = 自增長字段的起始值comment='表的注釋說明文字‘6.修改表
修改表是指修改表的結構或特性。理論上創建一個表能做到的事情,修改表也能做到。修改表有二三十項修改項,包括增刪改字段,增刪索引,增刪約束,修改表選項等等。舉例如下:添加字段:alter table 表名 add [column] 新字段名 字段類型 [字段屬性列表];修改字段(可改名):alter table 表名 change [column] 舊字段名 新字段名 新字段類型 [新字段屬性列表];?? 修改字段(只改屬性):alter table 表名 modify [column] 字段名 新字段類型 [新字段屬性列表];刪除字段:alter table 表名 drop [column] 字段名;添加普通索引:alter table 表名 add index [索引名] (字段名1[,字段名2,...]);添加主鍵索引(約束):alter table 表名 add primary key (字段名1[,字段名2,...]);添加外鍵索引(約束):alter table 表名1 add foreign key (字段1,[,字段名2,...]) references 表名2(字段1,[,字段名2,...]);添加唯一索引(約束):alter table 表名 add unique (字段名1[,字段名2,...]);添加字段默認值(約束):alter table 表名 alter [column] 字段名 set default 默認值;刪除字段默認值(約束):alter table 表名 alter [column] 字段名 drop default;刪除主鍵:alter table 表名 drop primay key;#每一個表最多只能有一個主鍵刪除外鍵:alter table 表名 drop foreign key 外鍵名;刪除索引:alter table 表名 drop index 索引名;修改表名:alter table 表名 rename [to] 新表名;修改表選項:alter table 表名 選項名1=選項值1,選項名2=選項值2,...;7.刪除表
drop table [if exists] 表名;
8.其他相關語句
顯示所有表: show tables;顯示某表的結構: desc 表名; 或:describe 表名;顯示某表的創建語句:show create table 表名;重命名表:rename table 舊表名 to 新表名;從已有表復制表結構:create table [if not exists] 新表名 like 原表名;從已有表復制表結構:create table [if not exists] 新表名 select * from 原表名 where 1<>1;創建索引:create [unique | fulltext] index 索引名 on 表名(字段名1[,字段名2,...])。這里省略unique或fulltext,那就是普通索引。實際上此創建索引語句,會在系統內部映射為一條 “alter table”的添加索引語句。刪除索引:drop index 索引名 on 表名。實際上,此語句同樣被映射為一條“alter table”的刪除索引語句9.視圖定義語句
什么是視圖?視圖是一個虛擬表,其內容由一條查詢語句來定義。也可以認為,視圖就是一條select語句的查詢結果,只是預先放在數據庫中而已。我們可以將此查詢結果(有行有列有字段名)當作一個表來使用。創建視圖: create view 視圖名 [(列名1,列名2,...)] as select語句;視圖名不能跟表名同名——因為他們都是隸屬于數據庫的“對象”;視圖的默認列名就是定義視圖的時候的select語句中設定的列名;視圖定義的時候也可以指定自己的列名,但此時指定的列名數應該跟select語句的列名數相等;select語句可以從多個表中取用數據,甚至還可以從其他視圖中取數據修改視圖: alter view 視圖名 [(列名1,列名2,...)] as select語句;刪除視圖: drop view [if exists] 視圖名;
轉載于:https://www.cnblogs.com/autopwn/p/5091622.html
總結
以上是生活随笔為你收集整理的mysql数据库-mysql数据定义语言DDL (Data Definition Language)归类(六)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。