mysql命令行如何建庫_MySQL心得2--命令行方式建庫和表

1.創建使用create database或create schema命令可以創建數據庫。create database 庫名create database if not exists 庫名(創建庫并檢驗創建的庫是否存在,不存在則建,存在就不建了)MySQL不允許兩個數據庫使用相同的名字,使用ifnot exists從句可以不顯示

1.創建

使用create database或create schema命令可以創建數據庫。

create database 庫名

create database if not exists 庫名(創建庫并檢驗創建的庫是否存在,不存在則建,存在就不建了)

MySQL不允許兩個數據庫使用相同的名字,使用ifnot exists從句可以不顯示錯誤信息

顯示所有數據庫: showdatabases; ?www.2cto.com

顯示創建數據庫的定義信息: show create dabasese 庫名

2. 創建了數據庫之后使用USE命令可指定當前數據庫。

語法格式:use ?db_name;

說明:這個語句也可以用來從一個數據庫“跳轉”到另一個數據庫,在用create database語句創建了數據庫之后,該數據庫不會自動成為當前數據庫,需要用這條USE語句來指定。

注意:在MySQL中,每一條SQL語句都以“;”作為結束標志。

mySQL語法中不區分大小寫。創建數據庫的必須是系統管理員,或者擁有用戶級別的create權限。在安裝MySQL的過程中已經創建了系統管理員,名為root,假設密碼為root。

3.創建庫的同時指定字符集,校對規則:

create database mydb character set utf8

collate utf8-general_ci;

character set:指定數據庫字符集(Charset),collate:指定字符集的校對規則

4.修改數據庫,只能改參數

數據庫創建后,如果需要修改數據庫的參數,可以使用alter database命令。

語法格式:

alter {database | schema} [db_name]

alter_specification [, alter_specification] ...

其中alter_specification: ?www.2cto.com

[default] character set charset_name

| [default] collate collation_name

說明:

alter database用于更改數據庫的全局特性,這些特性儲存在數據庫目錄中的db.opt文件中。用戶必須有對數據庫進行修改的權限,才可以使用 alterdatabase。修改數據庫的選項與創建數據庫相同,功能不再重復說明。如果語句中數據庫名稱忽略,則修改當前(默認)數據庫。

5.刪除數據庫

drop database 庫名

drop database if exists 庫名(避免刪除不存在的數據庫時出現的MySQL錯誤信息。)

注意:這個命令必須小心使用,因為它將刪除指定的整個數據庫,該數據庫的所有表(包括其中的數據)也將永久刪除。

6.創建表

創建表就是創建表的結構:包含哪些字段(屬性),字段名,字段類型

create table 表名

(字段名1 類型,

字段名2 ?類型,

。。。。

);

舉例:創建一個學生表

use 庫名(確定你的表建在哪個庫中,把此庫變為當前數據庫);

create table xs

www.2cto.com

(

id int,

name char(10),

sex char(2)

);

Create [temporary] table [if not exists] tbl_name

[ ( [column_definition] , ... | [index_definition] ) ]

[table_option] [select_statement];

說明:

● ?temporary:該關鍵字表示用create命令新建的表為臨時表。不加該關鍵字創建的表通常稱為持久表,在數據庫中持久表一旦創建將一直存在,多個用戶或者多個應用程序可以同時使用持久表。有時候需要臨時存放數據,例如,臨時存儲復雜的select語句的結果。此后,可能要重復地使用這個結果,但這個結果又不需要永久保存。這時,可以使用臨時表。用戶可以像操作持久表一樣操作臨時表。只不過臨時表的生命周期較短,而且只能對創建它的用戶可見,當斷開與該數據庫的連接時,MySQL會自動刪除它們。

● ?創建表時也可使用if not exists語句來判斷創建的表是否已存在,避免出現錯誤。

● ?要創建的表的表名(tbl_name)必須符合標志符規則,如果有MySQL保留字必須用單引號括起來。

● ?column_definition:列定義,包括列名、數據類型,可能還有一個空值聲明和一個完整性約束。

● ?index_definition:表索引項定義,主要定義表的索引、主鍵、外鍵等,具體定義將在后面討論。 ?www.2cto.com

● ?table_option:用于描述表的選項。

● ?select_statement:可以在create table語句的末尾添加一個select語句,在一個表的基礎上創建表

7.修改表結構:增加字段 ? 修改舊字段 ? 刪除字段

alter table 表名

add 字段名 類型(寬度) ? ? ? ? //增加字段

modify 舊字段 類型 ? ? ? ? ? ? //修改舊字段

drop 字段名 ? ? ? ? ? ? ? ? ? //刪除字段

change 舊字段名 新字段內容 ? ? //改列名

order by col_name ? ? ? ? ? ?//排序

convert ?to character set charset_name [字符集名] ? ?//將字符集轉換為二進制

[default]character set charset_name [字符集名] ? //修改默認字符集

舉例:在學生表中增加birthday字段、修改name字段、修改字段name的名;

alter table xs

add birthday date;

www.2cto.com

modify name varchar(20);

change name sname varchar(20);

8.修改表名

rename table 舊名 to 新名

分類

數據類型

說明

數值類型

bit (M)

tinint [unsigned] [zerofill]

bool,boolean

smallint [unsigned] [zerofill]

int [unsigned] [zerofill]

bigint [unsigned] [zerofill]

float[(M,D)][unsigned][zerofill]

double[(M,D)][unsigned][zerofill]

位類型。M指定位數,默認值1,范圍1-64

帶符號的范圍是-128到127。無符號0到255。

www.2cto.com

使用0或1表示真或假

2的16次方

2的32次方

2的64次方

M指定顯示長度,d指定小數位數

表示比float精度更大的小數

文本、二進制類型

char(size) char(20)

varchar(size) ?varchar(20)

blob ? ?longblob

text(clob) ? ?longtext(longclob)

固定長度字符串

可變長度字符串

二進制數據

大文本

時間日期

date/datetime/TimeStamp

日期類型(YYYY-MM-DD) ?(YYYY-MM-DD HH:MM:SS),TimeStamp表示時間戳,它可用于自動記錄insert、update操作的時間

注意: 在字符數據類型和數值數據類型之后,MySQL允許指定一個數據類型選項用來改變數據類型的屬性和功能。

對于字符數據類型,MySQL支持兩種數據類型選項:characterset和collate。如果要區分字符的大小寫情況,可以在字符類型后面加上bingary。

對于除bit以外的數值數據類型,MySQL允許添加一個或多個數據類型選項。unsigned:不允許負值。zerofill:當插入的值長度小于字段設定的長度時,剩余部分用0填補。

與int有關的類型與java中的bit、short、int、long分別對應。

varchar、bolb和text類是變長類型。每個類型的存儲需求取決于列值的實際長度。

9. ?列定義column_definition格式如下:

col_name ?type ?[not null | null] [default default_value]

[auto_increment] [unique [key] | [primary] key]

[comment 'string'] [reference_definition]

說明: ?www.2cto.com

● ?col_name:表中列的名字。列名必須符合標志符規則,長度不能超過64個字符,而且在表中要唯一。如果有MySQL保留字必須用單引號括起來。

● ?type:列的數據類型,有的數據類型需要指明長度n,并用括號括起,MySQL支持的數據類型在附錄C中介紹。

● ?auto_increment:設置自增屬性,只有整型列才能設置此屬性。當插入null值或0到一個auto_increment列中時,列被設置為value+1,在這里value是此前表中該列的最大值。auto_increment順序從1開始。每個表只能有一個auto_increment列,并且它必須被索引。

● not null | null:指定該列是否允許為空。如果不指定,則默認為null。

● ?default default_value:為列指定默認值,默認值必須為一個常數。其中,BLOB和TEXT列不能被賦予默認值。如果沒有為列指定默認值,MySQL自動地分配一個。如果列可以取NULL值,默認值就是NULL。如果列被聲明為NOT NULL,默認值取決于列類型:

(1)對于沒有聲明auto_increment屬性的數字類型,默認值是0。對于一個auto_increment列,默認值是在順序中的下一個值。

(2)對于除timestamp以外的日期和時間類型,默認值是該類型適當的“零”值。對于表中第一個timestamp列,默認值是當前的日期和時間。

(3)對于除enum的字符串類型,默認值是空字符串。對于enum,默認值是第一個枚舉值。

● ?unique key | primary key:兩者都表示字段中的值是唯一的。primary key表示設置為主鍵,一個表只能定義一個主鍵,主鍵一定要為notnull。

● ?comment 'string':對于列的描述,string是描述的內容。

● ?reference_definition:指定參照的表和列。

10. (1).復制表 : create table 表名 like 表名1

語法格式:

create [temporary] table[if not exists] tbl_name

[ ( )like old_ name [ ] ]

| [as (select_statement)] ;

說明:

使用LIKE關鍵字創建一個與old _name表相同結構的新表,列名、數據類型、空指定和索引也將復制,但是表的內容不會復制,因此創建的新表是一個空表。使用as關鍵字可以復制表的內容,但索引和完整性約束是不會復制的。select_statement表示一個表達式,例如,可以是一條select語句。

(2).刪除表 : drop table 表名(這個命令將表的描述、表的完整性約束、索引及和表相關的權限等都全部刪除) ?www.2cto.com

(3).修改表名 : rename子句,語法格式:

rename table old_name to new_name

new_tbl_name是新表名。例如,將表a改名為b:alter table ?a rename to b ;除了上面的alter table命令,還可以直接用renametable語句來更改表的名字。

● ?order by子句(以后介紹):用于在創建新表時,讓各行按一定的順序排列。注意,在插入和刪除后,表不會仍保持此順序。在對表進行了大的改動后,通過使用此選項,可以提高查詢效率。在有些情況下,如果表按列排序,對于MySQL來說,排序可能會更簡單。

● ?table_options:修改表選項,具體定義與create table語句中一樣。

可以在一個alter table語句里寫入多個add、alter、drop和chang子句,中間用逗號分開。這是MySQL相對于標準SQL的擴展。在標準SQL中,每個alter table語句中每個子句只允許使用一次。

11.說明:表中大多數的選項涉及的是表數據如何存儲及存儲在何處。多數情況下,不必指定表選項。engine選項是定義表的存儲引擎,具體在附錄E中介紹。

舉例:

USE mydb1;

CREATE TABLE XS

(

學號 ? ? ?char(6) ? ?NOTNULL ?primary KEY,

姓名 ? ? ?char(8) ? ?NOTNULL ,

專業名 ?char(10) ?NOT NULL ,

性別 ? ?tinyint(1) NOT NULL default ?1

) engine=InnoDB;

說明:“primary KEY”表示將“學號”字段定義為主鍵。“default 1”表示“性別”的默認值為1。“engine=InnoDB”表示采用的存儲引擎是InnoDB,InnoDB是MySQL在Windows平臺默認的存儲引擎,所以“engine=InnoDB”可以省略。

12.說明:

● ?ignore:是MySQL相對于標準SQL的擴展。若在修改后的新表中存在重復關鍵字,如果沒有指定ignore,當重復關鍵字錯誤發生時操作失敗。如果指定了ignore,則對于有重復關鍵字的行只使用第一行,其他有沖突的行被刪除。

● ?column_definition:定義列的數據類型和屬性,具體內容在create table的語法中已做說明。

● ?first| after col_name:表示在某列的前或后添加,不指定則添加到最后。

注意:若表中該列所存數據的數據類型與將要修改的列的類型沖突,則發生錯誤。例如,原來char類型的列要修改成int類型,而原來列值中有字符型數據“a”,則無法修改。

13. ? 1). ?空值(NULL)概念

空值通常表示未知、不可用或將在以后添加的數據。若一個列允許為空值,則向表中輸入記錄值時可不為該列給出具體值;而一個列若不允許為空值,則在輸入時必須給出該列的具體值。

注意:表的關鍵字不允許為空值。空值不能與數值數據0或字符類型的空字符混為一談。任意兩個空值都不相等。 ?www.2cto.com

2). ?列的IDENTITY(標志)屬性

對任何表都可創建包含系統所生成序號值的一個標志列,該序號值唯一標志表中的一列,可以作為鍵值。每個表只能有一個列設置為標志屬性,該列只能是decimal、int、numeric、smallint、bigint 或tinyint 數據類型。定義標志屬性時,可指定其種子(即起始)值、增量值,二者的默認值均為 1。系統自動更新標志列值,標志列不允許空值。

在下列情況下,MySQL隱含地改變在一個CREATE TABLE語句給出的一個列類型(這也可能在ALTER TABLE語句上出現)。

14.MySQL隱含地改變列類型:

(1)長度小于4的varchar被改變為char。

(2)如果在一個表中的任何列有可變長度,結果使整個行是變長。

因此,如果一張表包含任何變長的列(varchar、text或Blob),所有大于3個字符的char列被改變為varchar列。這在任何方面都不影響用戶如何使用列。在MySQL中這種改變可以節省空間并且使表操作更快捷。

(3)timestamp的顯示尺寸必須是偶數且在2~14的范圍內。如果指定0顯示尺寸或比14大,尺寸被強制為14。從1~13范圍內的奇數值尺寸被強制為下一個更大的偶數。

(4)不能在一個timestamp列里面存儲一個NULL,將它設為NULL默認為當前的日期和時間。

如果想要知道MySQL是否使用了除指定的以外的一種列類型,在創建表之后,使用一個DESCRIBE語句即可。DESCRIBE語句在3.1.4節介紹。

15 type定義如下:

說明:在字符數據類型和數值數據類型之后,MySQL允許指定一個數據類型選項用來改變數據類型的屬性和功能。

對于字符數據類型,MySQL支持兩種數據類型選項:CHARACTERSET和COLLATE。如果要區分字符的大小寫情況,可以在字符類型后面加上BINGARY。

對于除BIT以外的數值數據類型,MySQL允許添加一個或多個數據類型選項。UNSIGNED:不允許負值。ZEROFILL:當插入的值長度小于字段設定的長度時,剩余部分用0填補。

spatial_type是空間類型數據。

16. ?表選項table_option定義如下:

{engine | type} = engine_name ? ? ? ? ? ? //存儲引擎

| auto_increment = value ? ? ? ? ? ? ? //初始值

| auto_increment = value ? ? ? ? ? ? ? //表的平均行長度

| [default] charcter set charset_name [collatecollation_name] ?//默認字符集和校對

| checksum = {0 | 1} ? ? ? ? ? ? ?//設置為1表示求校驗和

| comment= 'string' ? ? ? ? ? ? ? //注釋

| connection = 'connect_string' ? ? //連接字符串

| MAX_ROWS = value ? ? ? ? ? ? ? //行的最大數

| MIN_ROWS = value ? ? ? ? ? ? ? //列的最小數

| PACK_KEYS = {0 | 1 | DEFAULT}

| password = 'string' ? ? ? ? ? ? ? //對.frm文件加密

| delay_key_write = {0 | 1} ? ? ? ? ? //對關鍵字的更新

|row_format={DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT} ? ? ? ? ? ? ? ? ? ? //定義各行應如何儲存 ?www.2cto.com

| union = (tbl_name[,tbl_name]...) ? ?//表示哪個表應該合并

| insert_method = { NO | FIRST | LAST}//是否執行INSERT語句

|data directory = 'absolute path todirectory' ? ? //數據文件的路徑

| index directory = 'absolute path todirectory’ //索引的路徑

作者 tianyazaiheruan

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/383015.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/383015.shtml
英文地址,請注明出處:http://en.pswp.cn/news/383015.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python 少兒趣味編程下載_PYTHON少兒趣味編程

章認識Python11.1編程語言和Python11.1.1程序設計和編程語言11.1.2Python簡介21.2Python的安裝41.2.1Windows下的Python安裝41.2.2MAC下的Python安裝81.3個程序HelloWorld111.4開發工具IDLE121.4.1IDLE簡介121.4.2用IDLE編寫程序121.4.3IDLE的其他功能161.5小結18第2章變量、數…

rs485數據線接反_終于有人把RS485通訊的正確接線方式講明白了,網友:這下好辦了...

RS485是一個定義平衡數字多點系統中的驅動器和接收器的電氣特性的標準,該標準由電信行業協會和電子工業聯盟定義。使用該標準的數字通信網絡能在遠距離條件下以及電子噪聲大的環境下有效傳輸信號。RS485使得廉價本地網絡以及多支路通信鏈路的配置成為可能。那么RS485通訊的正確…

騎馬與砍殺python代碼_GitHub - yunwei1237/scottish-fold: 一個關于騎馬與砍殺的劇本制作工具...

scottish-fold一個關于騎馬與砍殺的劇本簡單快速的制作工具前言?在很久以前的時候,也就是剛開始玩騎砍的時候就想著能夠制作一個自己的劇本,用于書寫自己想要的故事。當我懷著遠大的夢想去這么做的時候才發現,原來制作劇本沒有自己想象的那么…

java tomcat 監控_java程序監控tomcat實現項目宕機自動重啟并發送郵件提醒

最近由于老項目頻繁掛掉,由于項目經過多批人之手,短時間難以定位問題,所以只好寫一個監控程序。 時間比較緊半天時間,而且水平有限大神勿噴,有好的方法還請賜教。 1、問題描述:分兩種情況1.1、tomcat 徹底掛…

java靜態類和非靜態類的區別_Java中靜態內部類和非靜態內部類到底有什么區別?...

內部類(Inner Class)和靜態內部類(Static Nested Class)的區別:定義在一個類內部的類叫內部類,包含內部類的類稱為外部類。內部類可以聲明public、protected、private等訪問限制,可以聲明 為abstract的供其他內部類或外部類繼承與擴展&#x…

java寫便簽_如何編寫一個便簽程序(用Java語言編寫)

如何編寫一個便簽程序(用Java語言編寫)熱度:336 發布時間:2011-02-18 11:44:16如何編寫一個便簽程序(用Java語言編寫)因為以前沒有好好學習Java,都搞忘了,請大家原諒,也請你們指導一下,怎么編寫這個程序&…

java 生成log4j_Java log4j配置每天生成一個日志文件 - 永恒ぃ☆心 的日志 - 網易博客...

一、配置屬性文件log4j.propertieslog4j.rootLoggerINFO,stdout,Rlog4j.appender.stdoutorg.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layoutorg.apache.log4j.PatternLayout# Pattern to output the callers file name and line number.log4j.appender.stdout.layo…

java 子進程輸出流_具有輸入/輸出流的Java進程

首先,我建議更換這條線路。Process process Runtime.getRuntime ().exec ("/bin/bash");帶著線條ProcessBuilder builder new ProcessBuilder("/bin/bash");builder.redirectErrorStream(true);Process process builder.start();ProcessBuil…

java中if 運算符_[Java]Java基本語法結構(運算符,流程控制語句,if語句)

1:運算符(掌握)(1)算術運算符A:,-,*,/,%,,--B:的用法a:加法b:正號c:字符串連接符C:/和%的區別數據做除法操作的時候,/取得是商,%取得是余數D:和--的用法a:他們的作用是自增或者自減b:使用**單獨使用放在操作數據的前面和后面效果一樣。a或者a效果一樣。*…

java 變量取值范圍_JAVA中的變量及取值范圍

字節是二進制數據的單位。一個字節通常8位長。但是,一些老型號計算機結構使用不同的長度。為了避免混亂,在大多數國際文獻中,使用詞代替byte。變量:變量的數據類型;變量名變量值數據類型基本型數值型(整數)布爾型浮點型…

java object強制類型轉換_scala?object?轉Class?Scala強制類型轉換

asInstanceOf[T]將對象類型強制轉換為T類型。還是由于泛型存在類型擦除的原因,1.asInstanceOf[String]在運行時會拋出ClassCastException異常,而List(1).asInstanceOf[List[String]]將不會。packageresti.webimportorg.springframework.beans.factory.annotation.Au…

java毛玻璃_模糊效果(毛玻璃效果)

模糊效果(毛玻璃效果)效果演示:1. 使用iOS自帶的 UIImageImageEffects 文件文件中有這么幾個方法:- (UIImage *)applyLightEffect;- (UIImage *)applyExtraLightEffect;- (UIImage *)applyDarkEffect;- (UIImage *)applyTintEffectWithColor:(UIColor *)…

java程序崩潰怎么重啟_android 異常崩潰后 重啟app(進程守護方式實現)

【實例簡介】【實例截圖】【核心代碼】package com.sunfusheng.daemon.sample;import android.content.ComponentName;import android.content.Intent;import android.os.Looper;import android.util.Log;import com.blankj.utilcode.util.AppUtils;import com.sunfusheng.daem…

mysql 存儲過程 循環結構 命名_mysql存儲過程----循環結構

循環結構一共分為三種:三種循環結構分別為while、repeat、loop。while循環語法while 表達式(如果表達式為true則執行業務邏輯,否則不執行,與repeat循環相反,repeat循環滿足表達式退出循環,不滿足一直執行) do業務邏輯e…

mysql 組合索引 or_Mysql_組合索引和單列索引

一、目標什么時候使用組合索引,什么時候使用單獨索引組合索引、單獨索引區別組合索引:最左前綴匹配原則二、前期數據準備1. 建表CREATE TABLE user (uidint(11) NOT NULLAUTO_INCREMENT,namevarchar(50) DEFAULT NULL,pwdvarchar(50) DEFAULT NULL,creat…

mysql與mangodb多租戶_MongoDB多租戶(Java):如何使用MongoClient在運行時切換具有不同數據庫憑據的MongoDB數據庫?...

我正面臨一個關于MongoDB多租戶的問題.我有兩個不同的mongoDB數據庫(db1和db2).這兩者都有不同的憑據.db1憑據:userName:admin密碼:passwddb2憑據:userName:admin1密碼:passwd1我需要在運行時從一個數據庫切…

python 庫 全局變量_python局部變量和全局變量global

當你在函數定義內聲明變量的時候,它們與函數外具有相同名稱的其他變量沒有任何關系,即變量名稱對于函數來說是 局部 的。這稱為變量的 作用域 。所有變量的作用域是它們被定義的塊,從它們的名稱被定義的那點開始。使用局部變量例7.3 使用局部…

java 自省_自知 自省 自立 自信 自尊 自治 自強 自制

自知 自省 自立 自信 自尊 自治 自強 自制能知人者有智力,能自知才是真正的智者;能戰勝別人者有力量,能戰勝自己才是真正的強者;能知足者就是富有,能勤奮頑強堅持才是真正的有志者;不失其立足之地的人可以長…

java中json重復數據結構_JAVA把各種數據結構轉換為JSON格式

Java代碼import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import net.sf…

字節字符區別Java_【JAVA基礎】字符數組與字節數組的區別

String.getBytes()和String.tocharArray(),字節數組和字符數組的區別String.getBytes()是將字符串轉化為一個字節數組。而String.toCharArray()是將一個字符串轉化為一個字符數組。【例如】byte bys[] “國慶60周年”.getBytes();char chs[]“國慶60周年”.toCharAr…