資料庫&表結構
一、資料庫操作
show databases; //列出資料庫
use database_name //使用database_name資料庫
create database data_name //建立名為data_name的資料庫
drop database data_name //删除一個名為data_name的資料庫
二.表結構操作
1.show tables //列出所有表
2.建立一個名為regist的新表
create table regist(id int(10) not null auto_increment primary key,name varchar(40),pwd varchar(40)) ;
3.drop table tab_name 删除名為tab_name的資料表
4.describe tab_name //顯示名為tab_name的表的資料結構
5.show columns from tab_name //同上
6.删除表内容:删除表不是特别常用,特别是對于存在外鍵關聯的表,删除更得小心。但是在開發過程中,發現Schema設計的有問題而且要删除現有的資料庫中所有的表來重新建立也是常有的事情;另外在測試的時候,也有需要重新建立資料庫的所有表。
delete from tab_name //将表tab_name中的記錄清空
或 TRUNCATE table_name;
如果沒外鍵引用直接删除就可以了。
說明:如果有外鍵,會報錯,是以在删除這個表(父表)之前必須先删除具有外鍵的表(子表)。也就是說,删除表的過程需要和建立表的過程一緻。
但是這往往不可接受,一方面如果表太多了,手動排序有點不可接受;另一方面,現在還沒有自動的工具對進行排序(其實也不是不能實作)。是以,MySQL中提供了一個變量FOREIGN_KEY_CHECKS來設定是否在必要的時候檢查外鍵限制。一般比較推薦這樣做:
首先,自動生成所有的DROP語句,将其中的MyDatabaseName替換成你的資料庫名稱:
SELECT concat('DROP TABLE IF EXISTS ', table_name, ';')
FROM information_schema.tables
WHERE table_schema = 'MyDatabaseName';
然後,在生成的代碼前後添加下面設定FOREIGN_KEY_CHECKS變量的語句:
SET FOREIGN_KEY_CHECKS = 0
-- DROP語句
SET FOREIGN_KEY_CHECKS = 1;
7.顯示表tab_name中的記錄
select * from tab_name
三.修改表結構
1.更改表得的定義把某個欄位設為主鍵。
ALTER TABLE tab_name ADD PRIMARY KEY (col_name)
2.把主鍵的定義删除
ALTER TABLE tab_name DROP PRIMARY KEY (sid)
3.在tab_name表中增加一個名為col_name的字段且類型為varchar(20)
alter table tab_name add col_name varchar(20);
4.在tab_name中将col_name字段删除
alter table tab_name drop col_name
5.修改字段屬性,注若加上not null則要求原字段下沒有資料
alter table tab_name modify col_name varchar(40) not null
//SQL Server200下的寫法是:Alter Table table_name Alter Column col_name varchar(30) not null;
6.如何修改表名:以下兩種我是第二種可以
alter table new_tab_name rename to new_name
7.修改字段名
alter table 表名稱 change 舊字段名稱 新字段名稱 新字段的類型 [是否允許非空];
alter table 表名稱 modify 字段名稱 字段類型 [是否允許非空];
例:alter table studentexam change transactor newfiled varchar(15);
alter table tab_name change old_col new_col varchar(40); //必須為目前字段指定資料類型等屬性,否則不能修改
8.相當于複制表結構:
create table new_tab_name like 舊表名 //用一個已存在的表來建新表,但不包含舊表的資料
9.删除表
DROP table_name;
DROP TABLE IF EXISTS table_name;