資料庫基本操作1

2021-09-26 00:26:22 字數 3753 閱讀 2567

1.建立資料庫:create database [if not exists] db-name [charset=…] [collate…]:不指定的話預設charset是utf8 預設效驗規則是utf8_general_ci(不區分大小寫) utf8_bin區分大小寫

2.檢視資料庫:show database; 檢視表:show create table tablename;

3.修改資料庫:(主要是修改字符集(不能隨便改 -造成亂碼)和效驗規則)

alter database db-name charset=…;

4.資料庫刪除:drop database [if exists] db-name;

執行後的結果:①資料庫內部看不到對應的資料庫 ②對應的資料庫資料夾被刪,級聯刪除,裡面的資料表全被刪除

檢視資料庫的連線情況:show processlist;

建立表:

create table db_name(id int,name varchar(長度) comment』…』,password char(32) comment』…』) charset=utf8 engine …;

5.檢視表結構:desc 表名;

檢視表內容:select * from 表名;

修改表在專案實際開發中,經常修改某個表的結構,比如欄位名字,字段大小,字段型別,表的字符集型別,表的儲存引擎等等。我們還有需求,新增字段,刪除字段等等。這時我們就需要修改表。

①alter table tablename add 名稱 型別 ;新增

e.g. alter table users add asset varchar(100) comment』路徑』 after birthday;–另乙個路徑的名稱

②alter table tablename modify (column datatype [default expr][,column datatype]…); 修改

e.g. alter table uers modify name varchar(60);

③新增insert into users values (…)

④刪除 alter table tablename drop (column);

⑤修改表名為:employee;

alter table name1 rename (to) name2;

⑥修改列名:alter table employee change n1 n2 type(…);

e.g.alter table employee change name xingming varchar(60);

刪除表操作:drop table[if is exists] tb-name;

bit[(m)] : 位欄位型別。m表示每個值的位數,範圍從1到64。如果m被忽略,預設為1,這時只能存放0或1.,在顯示時,是按照ascii對應顯示的。

float,decimal預設都是有符號的。decimal比float的精度更高。float:最大為7位精度,decimal支援

30位。若m和d被省略,被預設是10,0。

varchar長度可以指定為0到65535之間的值,但是有1 - 3 個位元組用於記錄資料大小,所以說有效位元組數是65532。

當我們的表的編碼是utf8時,varchar(n)的引數n最大值是65532/3=21844[因為utf中,乙個字元占用3個位元組],如果編碼是gbk,varchar(n)的引數n最大是65532/2=32766(因為gbk中,乙個字元占用2位元組)。

時間戳:常用的日期有如下三個:

datetime 時間日期格式 『yyyy-mm-dd hh:ii:ss』 表示範圍從1000到9999,占用八字節

date:日期 『yyyy-mm-dd』,占用三位元組

timestamp:時間戳,從2023年開始的 yyyy-mm-dd hh:ii:ss格式和datetime完全一致,占用四位元組

4.5 enum和set

語法:enum:列舉,「單選」型別;

enum(『選項1』,『選項2』,『選項3』,…);

該設定只是提供了若干個選項的值,最終乙個單元格中,實際只儲存了其中乙個值;而且出於效率考慮,這些值實際儲存的是「數字」,因為這些選項的每個選項值依次對應如下數字:1,2,3,…最多65535個;當我們新增列舉值時,也可以新增對應的數字編號。

set:集合,「多選」型別;

set(『選項值1』,『選項值2』,『選項值3』, …);

該設定只是提供了若干個選項的值,最終乙個單元格中,設計可儲存了其中任意多值;而且出於效率考慮,這些值實際儲存的是「數字」,因為這些選項的每個選項值依次對應如下數字:1,2,4,8,16,32,… 最多64個。

說明:不建議在新增列舉值,集合值的時候採用數字的方式,因為不利於閱讀。

查詢:1 select * from votes where hobby=『登山』;–不能查詢出所有符合的人

集合查詢使用find_ in_ set函式:find_in_set(sub,str_list) :如果 sub 在 str_list 中,則返回第乙個下標;如果不在,返回0; str_list 是用逗號分隔的字串。

表的約束:1.null(預設)和not null,若指定不是空,在沒有給相應字段賦值時會報錯。

2.default預設值

3.comment:列描述,用來描述字段。

4.zerofill:用來補全0;

主鍵::primary key用來唯一的約束該欄位裡面的資料,不能重複,不能為空,一張表中最多只能有乙個主鍵;主鍵所在的列通常是整數型別。

再建立表的時候直接加主鍵:

1.mysql> create table tt13 (

-> id int unsigned primary key comment 『學號不能為空』,

-> name varchar(20) not null);

query ok, 0 rows affected (0.00 sec)

2.復合主鍵:

mysql> create table tt14(

-> id int unsigned,

-> course char(10) comment 『課程**』,

-> score tinyint unsigned default 60 comment 『成績』,

-> primary key(id, course) );-- id和course為復合主鍵

3.追加主鍵:alter table 表名 add primary key(欄位名);

4.刪除主鍵:alter table 表名 drop primary key;

自增長:

auto_increment:當對應的字段,不給值,會自動的被系統觸發,系統會從當前欄位中已經有的最大值+1操作,得到乙個新的不同的值。通常和主鍵搭配使用,作為邏輯主鍵。

自增長的特點:

任何乙個欄位要做自增長,前提是本身是乙個索引(key一欄有值)

自增長字段必須是整數

一張表最多只能有乙個自增長

在插入後獲取上次插入的 auto_increment 的值(批量插入獲取的是第乙個值)

唯一鍵 unique

一張表中有往往有很多字段需要唯一性,資料不能重複,但是一張表中只能有乙個主鍵:唯一鍵就可以解決表中有多個字段需要唯一性約束的問題。

唯一鍵的本質和主鍵差不多,唯一鍵允許為空,而且可以多個為空,空字段不做唯一性比較。

外來鍵外來鍵用於定義主表和從表之間的關係:外來鍵約束主要定義在從表上,主表則必須是有主鍵約束或unique約束。當定義外來鍵後,要求外來鍵列資料必須在主表的主鍵列存在或為null。

foreign key (欄位名) references 主表(列)

MySQL的基本操作 1 資料庫的基本操作

2019 10 17 最近跟著書本在學習mysql,整理了一下重點部分供日後自己回顧。本人所用版本為8.0.17 mysql 5.7從入門到精通 劉增傑 mysql安裝完後,會在其data目錄下自動建立幾個必須的資料庫 檢視當前所有存在的資料庫,輸入語句 建立資料庫 建立好資料庫後,使用 show ...

mysql資料庫的基本操作1

建立資料庫 if not exists 在建立資料庫前先進行判斷資料庫是否存在 如果資料庫存在則不進行建立但是不會報錯 mydb為資料庫名 create database ifnot exists mydb 檢視資料庫 這裡使用的是databases而不是database 展示的是目前所有的資料庫 ...

資料庫表的基本操作1

create table mytable myid char 10 myname varchar2 10 default myname myage number 3,0 desc mytable create table newtable newid,newname,newage as select...