1、字段的修改
目前創(chuàng)新互聯(lián)已為上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、巴青網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
增加字段
ALTER TABLE 表名 ADD 新字段名數(shù)據(jù)類型[約束條件]
對語法格式的說明如下:
1.表名 為數(shù)據(jù)表的名字;
2.新字段名 為所要添加的字段的名字;
3.數(shù)據(jù)類型 為所要添加的字段能存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)類型;
4.[約束條件] 是可選的,用來對添加的字段進(jìn)行約束。
SQL 默認(rèn)在表的最后位置添加新字段,如果希望在開頭位置(第一列的前面)添加新字段,那么可以使用 FIRST 關(guān)鍵字,語法格式如下:
ALTER TABLE 表名 ADD 新字段名 數(shù)據(jù)類型 [約束條件] FIRST;
-- 給actor表首位添加create_date字段
ALTER TABLE actor ADD COLUMN create_date datetime not null DEFAULT '2020-10-01 00:00:00' FIRST;
復(fù)制
刪除字段
ALTER TABLE 表名 DROP COLUMN 字段名
-- 將actor_new表的actor_id字段刪除
alter table actor_new drop column actor_id;
復(fù)制
修改字段
1.修改字段名
ALTER TABLE 表名 RENAME COLUMN A to B
-- 將actor_new表的first_name字段名修改為first_name_new
alter table actor_new rename column first_name to first_name_new;
復(fù)制
2.修改字段類型
ALTER TABLE 表名 MODIFY COLUMN 字段名 類型
-- 將last_name字段數(shù)據(jù)類型由varchar(45)修改為char(45)
alter table actor_new modify column last_name char(45) not null;
復(fù)制
3.修改字段默認(rèn)值
ALTER TABLE 表名 ALTER COLUMN 字段名 SET DEFAULT 默認(rèn)值
若字段有默認(rèn)值,則需要先刪除字段的約束,在添加新的默認(rèn)值
根據(jù)約束名稱刪除約束
alter table 表名 alter column 字段名 drop default
-- 若本身存在默認(rèn)值,則先刪除
alter table actor_new alter column last_name drop default;
-- 給last_name添加默認(rèn)值'洛'
alter table actor_new alter column last_name set default '洛';
復(fù)制
4.修改字段位置
將字段的位置修改為數(shù)據(jù)表的開頭位置,使用FIRST關(guān)鍵字將當(dāng)前字段修改為數(shù)據(jù)表的第一個(gè)字段
ALTER TABLE 表名 MODIFY 字段名 數(shù)據(jù)類型 FIRST
-- 將字段first_name調(diào)整到actor表的首位
ALTER TABLE actor modify first_name varchar(45) FIRST;
復(fù)制
將選中字段修改到某字段之后
ALTER TABLE 表名 MODIFY 字段1名稱 字段1數(shù)據(jù)類型 AFTER 字段2名稱
-- 將字段first_name調(diào)整到last_name之后
ALTER TABLE actor MODIFY first_name varchar(45) AFTER last_name;
復(fù)制
2、數(shù)據(jù)的修改
增加數(shù)據(jù)
添加數(shù)據(jù)在SQL篇-創(chuàng)建數(shù)據(jù)表中有粗略的介紹,這里進(jìn)行詳細(xì)說明
1.插入一條新的數(shù)據(jù) INSERT INTO 表名[(列1,列2,列3,…)]VALUES(值1,值2,值3,…)
-- 插入數(shù)據(jù)的sql語句
insert into tablename(col1,col2,col3) values (value1,value2,value3);
復(fù)制
2.通過子查詢插入數(shù)據(jù) INSERT INTO 表名[(列1,列2,列3,…)]子查詢
-- 把a(bǔ)ctor_id=10的用戶復(fù)制一遍
insert into tablename SELECT * FROM actor WHERE actor_id=10;
復(fù)制
刪除數(shù)據(jù)
DELETE FROM 表名 [WHERE 刪除條件]
注意:不寫刪除條件表示刪除全部!
-- 刪除演員編號是6的演員信息
delete from actor WHERE actor_id=6;
復(fù)制
更新數(shù)據(jù)
1.指定要更新數(shù)據(jù)的內(nèi)容
UPDATE 表名 SET [字段=值,字段=值…][WHERE 更新條件]
-- 將SMITH(雇員編號為7)的工資修改為3000元,并且每個(gè)月有500元的獎(jiǎng)金
update myemp set sal=3000,comm=500 where empno=7;
2.基于子查詢的更新
UPDATE 表名 SET (列1,列2,…)=(SELECT 列1,列2,…FROM 表名) [WHERE 查詢條件]
-- 將雇員7369的職位、基本工資、雇傭日期更新為與7839相同的信息
update myemp set (job,sal,hiredate) = (select job,sal,hiredate from myemp where empno=7839) where empno=7369;
3.更新替換
-- 將address字段里的 “東” 替換為 “西” ,如下
update test_tb set address=replace(address,'東','西') where id=2
4.插入替換
-- 將id=6的name字段值改為wokou
replace into test_tb VALUES(6,'wokou','新九州島','日本')
注意:插入替換時(shí),若進(jìn)行部分替換,則表其余字段要有默認(rèn)值,否則,要列出該列的所有值
總結(jié):向表中“替換插入”一條數(shù)據(jù),如果原表中沒有id=6這條數(shù)據(jù)就作為新數(shù)據(jù)插入(相當(dāng)于insert into作用),
如果原表中有id=6這條數(shù)據(jù)就做替換(相當(dāng)于update作用),對于沒有指定的字段以默認(rèn)值插入。
1、新建一個(gè)表:student,用做示例,如圖所示。
2、首先修改字段名稱,使用sql語句:“execute sp_rename '表名.字段名','新字段名'”,如圖所示。
例子修改:execute sp_rename 'student.name','nameNew'
3、然后是修改類型,使用sql語句:“alter table‘表名’ alter column‘字段名稱?類型’not null”。
例子修改:alter table?student?alter column?nameNew int?not null
擴(kuò)展資料
在修改Sql Server表結(jié)構(gòu)時(shí),常用到Alter語句,把一些常用的alter語句列舉如下。
1、向表中添加字段
Alter table [表名] add [列名] 類型
2、刪除字段
Alter table [表名]? drop column [列名]
3、修改表中字段類型 (可以修改列的類型,是否為空)
Alter table [表名] alter column [列名] 類型
4、添加主鍵
Alter table [表名] add constraint [?約束名] primary key( [列名])
5、添加唯一約束
Alter table [表名] add constraint [?約束名] unique([列名])
6、添加表中某列的默認(rèn)值
Alter table [表名] add constraint [約束名] default(默認(rèn)值) for [列名]
7、添加約束
Alter table [表名] add constraint [約束名]?check (內(nèi)容)
8、添加外鍵約束
Alter table [表名] add constraint [約束名]? foreign key(列名) referencese 另一表名(列名)
9、刪除約束
Alter table [表名] drop constraint [約束名]
10、重命名表
exec sp_rename '[原表名]','[新表名]'
11、重命名列名
exec sp_rename '[表名].[列名]','[表名].[新列名]'
12、刪除主鍵,以及主鍵上的索引
alter table table_name drop constraint clusteredName
參考資料:百度經(jīng)驗(yàn)-sql server怎么用語句更改字段名稱和類型
使用alter語法可以修改,但是需要注意,如果列中存在不可轉(zhuǎn)換到目標(biāo)類型的數(shù)據(jù),alter會(huì)失敗。
alter?table?xxx?alter?column?xxx?int
首先,修改主鍵字段的字段類型,肯定是要先刪除主鍵才能操作的
--【1.查找主鍵】
--SQLSERVER
select name as pkName from dbo.sysobjects where xtype='PK' and parent_obj=(select id from dbo.sysobjects where name='表名')
--ORACLE
SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME = UPPER('表名') AND CONSTRAINT_TYPE ='P'
--【2.刪除主鍵約束】
ALTER TABLE 表名 DROP CONSTRAINT 約束名
--ORACLE
--刪除主鍵連同索引
ALTER TABLE 表名 DROP CONSTRAINT 約束名 CASCADE DROP INDEX;
或者
ALTER TABLE 表名 DROP PRIMARY KEY CASCADE DROP INDEX;--【3.修改字段】
--【先把這一列的值備份到臨時(shí)列里,再把這一列update成null,再修改類型,再把數(shù)據(jù)拷貝回來】
--SQLSERVER
--默認(rèn)值單獨(dú)處理,關(guān)聯(lián)約束
--默認(rèn)值的變更涉及到約束,如有約束,需要先查詢出越是再進(jìn)行刪除
ALTER TABLE 表名 DROP CONSTRAINT 約束名
ALTER TABLE 表名 ALTER COLUMN 字段名 字段類型(長度精度) 是否為空
ALTER TABLE 表名 ADD CONSTRAINT 約束名 DEFAULT 默認(rèn)值 FOR 字段名
--ORACLE
--刪除默認(rèn)值:default null
ALTER TABLE 表名 MODIFY COLUMN 字段名 VARCHAR2(20) DEFAULT ' ' NOT NULL--【4.新增主鍵】
--指定主鍵名字
ALTER TABLE 表名 ADD CONSTRAINT 主鍵名 PRIMARY KEY (F1,F2);
--未指定主鍵名字
ALTER TABLE 表名 ADD PRIMARY KEY (F1,F2)
SQL語句:Alter table [表名] Alter column [列名] [列類型]
也可選中表后右鍵選設(shè)計(jì),然后修改字段類型后保存就行
如果你的sql是sql2000varchar最長長度可以是8000,
如果是sql2005以上版本可以支持varchar(max),最長可達(dá)2g的字段容量數(shù)據(jù)
你可以試試,也許你的1024還是不夠。