首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL Server 資料表操作語法大全:建立、修改、約束、備份與 PHP 整合範例

     編輯:MySQL 資料庫相關知識

從建立資料庫、資料表,到欄位增減、約束管理、資料匯入匯出,再到 PHP 動態修改結構,本文彙整 SQL Server 資料表全生命週期的核心 T-SQL 語法,附上可直接執行的範例與 PHP 整合程式碼,適合開發人員速查與複製部署。

資料庫與資料表基礎操作

-- 建立/切換資料庫
CREATE DATABASE school;
USE school;

-- 建立資料表
CREATE TABLE student (
  id INT,
  name VARCHAR(20),
  sex CHAR(2),
  age INT,
  date DATETIME,
  info TEXT,
  bak VARCHAR(500)
);

-- 檢視結構
EXEC sp_help student;

-- 修改欄位
ALTER TABLE student ADD tel VARCHAR(20);           -- 新增
ALTER TABLE student DROP COLUMN bak;               -- 刪除
EXEC sp_rename 'student.sex', 'sex2';              -- 重命名
ALTER TABLE student ALTER COLUMN age CHAR(20);     -- 變更型別

-- 刪除資料表
DROP TABLE student;

資料完整性約束完整範例

CREATE TABLE biao (
  id INT PRIMARY KEY,
  name VARCHAR(20),
  sex CHAR(2) CHECK (sex='男' OR sex='女'),
  age INT,
  date DATETIME,
  info TEXT,
  tel CHAR(16) UNIQUE,
  bak VARCHAR(500) DEFAULT '我是學生'
);

-- 動態新增約束
ALTER TABLE grade ADD CONSTRAINT aa PRIMARY KEY (id);
ALTER TABLE grade ADD CONSTRAINT bb UNIQUE (tel);
ALTER TABLE grade ADD CONSTRAINT cc CHECK (sex='男' OR sex='女');
ALTER TABLE grade ADD CONSTRAINT dd DEFAULT '我是好學生' FOR bak;

-- 查看/刪除約束
EXEC sp_helpconstraint grade;
ALTER TABLE grade DROP CONSTRAINT dd;

外鍵關聯範例(三表關聯)

CREATE TABLE shop_jb (
  id INT PRIMARY KEY,
  namel VARCHAR(20),
  spec VARCHAR(20),
  stock INT,
  price FLOAT,
  datel DATETIME DEFAULT '2010-7-6'
);

CREATE TABLE shop_yw (
  ywid INT PRIMARY KEY,
  name2 VARCHAR(20),
  sex CHAR(2) CHECK (sex='男' OR sex='女'),
  age INT,
  tel VARCHAR(18) UNIQUE,
  address VARCHAR(20)
);

CREATE TABLE shop_xs (
  id INT NOT NULL,
  sale CHAR(20),
  quantity CHAR(20),
  date2 DATETIME DEFAULT '2010-5-3',
  ywid INT,
  FOREIGN KEY (id) REFERENCES shop_jb(id),
  FOREIGN KEY (ywid) REFERENCES shop_yw(ywid)
);

MySQL 專用語法對照(常見移植差異)

操作SQL ServerMySQL
新增欄位ALTER TABLE t ADD col INTALTER TABLE t ADD COLUMN col INT
修改欄位名/型別EXEC sp_rename / ALTER COLUMNALTER TABLE t CHANGE old new INT
修改預設值ADD CONSTRAINT ... DEFAULTALTER TABLE t ALTER col SET DEFAULT 'v'
新增自增主鍵IDENTITY(1,1) + PKALTER TABLE t ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY
備份單表BACKUP DATABASE...mysqldump -u root -p db tbl > file.sql
匯出資料BCP / SELECT INTO OUTFILESELECT ... INTO OUTFILE '/path/file.txt'
匯入資料BULK INSERT / BCPLOAD DATA INFILE '/path/file.txt' INTO TABLE t

PHP 動態新增欄位範例

<?php
$link = mysql_connect($server, $user, $pass);
if (mysql_select_db($dbname, $link)) {
  if ($link) {
    echo "connect succeed";
    // 新增 keywords 欄位
    mysql_query("ALTER TABLE `article` ADD `keywords` VARCHAR(100) NOT NULL DEFAULT ''") 
      or die(mysql_error());
    echo "Add succeed";
  } else {
    echo "connect failed";
  }
  mysql_close($link);
}
?>
注意: 範例使用已棄用的 mysql_* 函式,生產環境請改用 mysqli 或 PDO 並採用預處理語句。

實用技巧:字串拼接插入

-- 將 t1.com2 與 t2.com1 拼接後插入 tx
INSERT INTO tx 
SELECT t1.com1, CONCAT(t1.com2, t2.com1) 
FROM t1, t2;

熟練這些 DDL/DML 與約束語法,能大幅加速結構變更、資料遷移與跨平台移植作業,減少人為錯誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved