1. 程式人生 > 資料庫 >4.資料庫級別和資料表級別SQL語句

4.資料庫級別和資料表級別SQL語句

資料庫級別

SHOW DATABASES;   顯示所有的資料庫
CREATE DATABASE 資料庫名稱;   新建資料庫
CREATE DATABASE 資料庫名稱 DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 設定資料庫的編碼方式為utf8(推薦使用)
CREATE DATABASE 資料庫名稱 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; 設定資料庫的編碼方式為gbk

USE 資料庫名稱;                進入資料庫

drop database 資料庫名稱;   刪除資料庫

資料表級別

show tables;
desc tb1; 檢視資料表的基本結構資訊
delete from 表名; 清除表內容,自增列表在原來的基礎上增加
truncate table 表名; 清除表內容,速度快,自增列表回到原點從新開始增加
drop table 表名; 直接刪除表
select * from 表名;  查詢資料表中的資料

建立資料表

1.create table tb1(nid int, name varchar(10));


2.create table 表名(
列名 型別 是否可以為空
列名 型別 是否可以為空
)engine=innodb default charset=utf8;
engine=innodb 資料庫引擎 default charset=utf8;

   charset=utf8;設定表級別的編碼方式

  # innodb支援事務,原子操作,回滾
一個事務中的所有任務都要完成後,事務才算完成。如果一個完成而其他的沒有完成,就會發生回滾,整個事務回到初始狀態

舉例:銀行轉錢

  #null 資料可空 not null資料不可空

 a. 預設值

建立列時,可以指定資料的預設值,當插入時如果沒有主動設定,則自動新增預設值

create table tb1{
                nid int not null default 2,   設定nid列的值不可為空,如果不進行設定,值預設為2
                num int not null,     設定num列的值不可為空
}engine=innodb default charset=utf8;

b.自增列

(一張表只能有一個,數字,必須是索引-主鍵)

自增列必須為表格索引主鍵,因此要在後面加上primary key
在建立表時,在某一列的後面新增auto_increment,該列的數值就是自增的

create table tb1{
                nid int not null auto_increment primary key,設定該列的值不為空,且數值自增
}engine=innodb default charset=utf8;

c.主鍵索引

一個數據表只能由一個主鍵索引,建立表的時候在列的後面加上primray key,該列就是表的主鍵,唯一不能重複,不能為null,- 一般情況下,自增列設定主鍵

新增主鍵的方法:

 nid int auto_increment primary key,

create table xxx(
                nid.... auto_increment primary key,
                ....
);

或者:

alter table 表名 add primary key(列名)

刪除主鍵:

alter table 表名 drop primary key;

或者:

alter table 表名 modify 列名 int,drop primary key;

如下是建立一個數據表的去邊寫法:

create table tb5(
                    nid int not null auto_increment primary key,
                    name varchar(16),
                    age int default 19
 )engine=innodb default charset=utf8;
                

外來鍵:

兩張表建立約束,來限制從表某一列插入資料值必須為主表某列中已經存在的資料

從表:需要被限制的表格
主表:被其他表格引用的表
注意使用外來鍵時,被限制的列和限制列中的資料型別要相同

 增加外來鍵:

alter table 從表 add constraint 外來鍵名稱(一般是FK_從表_主表) foreign key 從表(外來鍵欄位 ) references 主表(主鍵欄位)

或者在建立表時新增外來鍵:

onstraint FK_從表_主表 foreign 從表(外來鍵欄位 ) references 主表(主鍵欄位  #新增語句,建立兩表之間的外來鍵來約束class的新增值

 

刪除外來鍵:

alter table 從表 drop foreign key 外來鍵名稱

舉例如下:

1.  create table userinfo(
            -> student_num int not null auto_increment primary key,
            -> age int,
            -> class int)engine=innodb default charset=utf8;
2.create table class_info(
            -> nid int not null auto_increment primary key,
            -> class varchar(20))engine=innodb default charset=utf8;
給表userinfo 中的class列限制插入值為class_info中的資料。就需要使用外來鍵:
alter table userinfo add constraint FK_userinfo_class_info foreign key userinfo(nid) references class_info(nid);
或者直接建立表1時新增外來鍵:

create table userinfo(
-> student_num int not null auto_increment primary key,
-> age int,
-> class int,
-> constraint FK_userinfo_class_info foreign key (class) references class_info(class) #新增語句,建立兩表之間的外來鍵來約束class的新增值
)engine=innodb default charset=utf8;

修改表結構,新增列,刪除列,修改列:
新增列:alter table 表名 add 列名 型別
刪除列:alter table 表名 drop column 列名
修改列:
alter table 表名 modify column 列名 型別 (只能改型別)
alter table 表名 change 原列名 新列名 型別 (可以修改列名和型別)
新增,刪除外來鍵,主鍵:
修改預設值: ALTER TABLE 表名 ALTER 列名 SET DEFAULT 預設值;
刪除預設值:ALTER TABLE 表名 ALTER 列名 drop default;