Mysql增加、刪除和修改列屬性和約束,和一些有用的查詢語句


     最近在整理關於MySql的東西,把一些需要記錄的東西寫下來,以便以后查詢和瀏覽,以下是一些操作技巧。


如果【某數據庫】存在就刪除【某數據庫】

DROP DATABASE IF EXISTS db;

如果【某數據庫】不存在就創建【某數據庫】

CREATE DATABASE IF NOT EXISTS db;

使用【某數據庫】

USE db;

如果【某表】存在就刪除【某表】

DROP TABLE IF EXISTS tb;

如果【某表】不存在就創建【某表】

CREATE TABLE IF NOT EXISTS tb


添加表字段

alter table` 表名稱` add transactor varchar(10) not Null;

alter table  `表名稱` add id int unsigned not Null auto_increment primary key

修改某個表的字段類型及指定為空或非空

alter table `表名稱` change 字段名稱 字段名稱 字段類型 [是否允許非空];

alter table `表名稱` modify 字段名稱 字段類型 [是否允許非空];

修改某個表的字段名稱及指定為空或非空

alter table `表名稱` change 字段原名稱 字段新名稱 字段類型 [是否允許非空

刪除某一字段

ALTER TABLE `表名稱` DROP 字段名;

添加唯一鍵

ALTER TABLE `表名稱` ADD UNIQUE ( `userid`)

修改主鍵

ALTER TABLE `表名稱` DROP PRIMARY KEY ,ADD PRIMARY KEY ( `id` )

增加索引

ALTER TABLE `表名稱` ADD INDEX ( `id` )

ALTER TABLE `表名稱` MODIFY COLUMN `id`  int(11) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (`id`);

查看表的字段信息

desc 表名;

show columns from `表名`;

查看表的所有信息

show create table `表名`;

添加主鍵約束

alter table `表名` add constraint 主鍵名稱(形如:PK_表名) primary key 表名(主鍵字段);

alter table  `表名` add 列名 列類型 unsigned 是否為空 auto_increment primary key;


添加外鍵約束

alter table `從表` add constraint 外鍵(形如:FK_從表_主表) foreign key 從表(外鍵字段) references 主表(主鍵字段);

(alter table `主表名` add foreign key (字段 ) references 從表名(字段) on delete cascade)

添加唯一約束

ALTER table `表名` add unique key 約束名 (字段);

刪除主鍵約束

alter table `表名` drop primary key;

刪除外鍵約束

alter table `表名` drop foreign key 外鍵(區分大小寫);

修改表名

alter table `表名稱` rename to bbb;

修改表的注釋

ALTER TABLE `表名稱` COMMENT '學生表2.0';

查看表的詳細信息

SHOW CREATE TABLE `表名稱`

修改字段的注釋信息

ALTER TABLE `表名` MODIFY COLUMN `列名` `數據類型` COMMENT '備注信息';

查看字段的詳細信息

SHOW FULL COLUMNS  FROM `表名稱`;

查看字段的簡要信息

SHOW COLUMNS FROM `表名稱`;

查詢當前數據庫中所有表

select table_name from information_schema.tables where table_schema='當前數據庫';

查詢當前數據庫中所有表的約束(詳情)

select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where Constraint_Schema='test_StringEntityTest';

查詢當前數據庫中所有表的約束(簡單)

select * from information_schema.Table_Constraints where Constraint_Schema='test_StringEntityTest';
 
修改主鍵的sql語句塊如下:


declare @defname varchar(100)

declare @cmd varchar(500)

declare @tablename varchar(100)

declare @keyname varchar(100)

Set @tablename='Temp1'

Set @keyname='id' --需要設置的key,分隔

select @defname= name

   FROM sysobjects so

   JOIN sysconstraints sc

   ON so.id = sc.constid

   WHERE object_name(so.parent_obj) = @tablename

   and xtype='PK'

if @defname is not null

begin

select @cmd='alter table '+ @tablename+ ' drop constraint '+ @defname

--print @cmd

   exec (@cmd)

 end

else

 set @defname='PK_'+@keyname

select @cmd='alter table '+ @tablename+ ' ADD constraint '+ @defname +' PRIMARY KEY CLUSTERED('+@keyname+')'

   exec (@cmd)

如何取主鍵字段名稱及字段類型--得到主鍵字段名

1:
SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE

WHERE TABLE_NAME<>'dtproperties'

2:
EXEC sp_pkeys @table_name='表名'

3:
select o.name as 表名,c.name as 字段名,k.colid as 字段序號,k.keyno as 索引順序,t.name as 類型

from sysindexes i

join sysindexkeys k on i.id = k.id and i.indid = k.indid

join sysobjects o on i.id = o.id

join syscolumns c on i.id=c.id and k.colid = c.colid

join systypes t on c.xusertype=t.xusertype

where o.xtype = 'U' and o.name='要查詢的表名'

and exists(select 1 from sysobjects where xtype = 'PK' and parent_obj=i.id and name = i.name)

order by o.name,k.colid

以上就是關於如何修改MySql數據表的字段類型,默認值和增加新的字段。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM