创建数据库:

CREATE DATABASES 数据库名;

选择数据库:

USE 数据库名;

删除数据库:

DROP DATAVBASE 数据库名;

创建表:

CREATE TABLE IF NOT NULL EXISTS 表名 (字段1 数据类型 【字段属性|约束|索引|注释】,
.............); 字段的约束及属性
CREATE TABLE IF NOT NULL 表名(字段1 数据类型 PRIMARY KEY //单字段主键);

多字段联合主键:

CREATE TABLE IF NOT NULL 表名
  ( 字段1 数据类型 ,
   字段2 数据类型
   PRIMARY KEY (字段1,字段2)//多联合复合主键
);

注释:

 CREATE TABLE TEXT ( `id` int(11) UNSIGNED COMMENT'编号')COMMENT'测试表';

编码格式设置:

CREATE TABLE TEXT( `id` int(11) UNSIGNED COMMENT'编号')CHARSET=字符集名;

查看表:

SHOW TABLES;

查看表定义:

DESCRIBE 表名;或 DESC 表名;

如果是在DOC窗口下执行,最好先执行 SET NAMES gbk;避免产生乱码

删除表:

DROP TABLE IF EXISTS 表名;

查看默认存储引擎:

SHOW VARIABLES LIKE `storage_engine%`;

指定表的存储引擎:

CREATE TANLE 表名(#省略代码)ENGINE=存储引擎;

常用引擎:InnoDB 和 MyISAM
安装板MySQL5.5默认存储引擎是InnoDB

常用修改语法:

#修改表名:

ALTER TABLE 旧表明 RENAME [TO] 新表明; TO:可选项

#添加字段:

ALTER TABLE 表名 ADD 字段名 数据类型 [属性]; 属性:可选项

#修改字段:

ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型 [属性];

#删除字段:

ALTER TABLE 表名 DROP 字段名;

mysql中replace函数直接替换mysql数据库中某字段中的特定字符串:

UPDATE `ts_weibo` SET

 `weibo_id` = replace (`weibo_id`,'19782687','14204277'),
`uid` = replace (`uid`,'19782687','14204277'
.....
WHERE
`weibo_id` LIKE '%19782687%' or
`uid` LIKE '%19782687%'

非空约束(NOT NULL):添加非空约束

1)建表时直接添加

CREATE TABLE t_user(user_id INT(10) NOT NULL);

2)通过ALTER 语句

ALTER TABLE t_user MODIFY user_id INT(10) NOT NULL;
ALTER TABLE t_user CHANGE user_id user_id INT(10) NOT NULL;

删除非空约束

1):ALTER TABLE t_user MODIFY user_id INT(10);
2):ALTER TABLE t_user CHANGE user_id user_id INT(10);

删除主键和唯一约束:在mysql中删除主键需要两步

(1):如果有auto_increment自增,先删除之;

(2):删除主键约束 primary key;

首先要删除auto_increment语法如下:

alter table 表名 modify id int(11);

这里用的modify,只改变数据类型,也可以用change,改变列名的同时输入新的数据类型。

下一步就是删除主键:语法如下:

alter table 表名 drop primary key;

 添加唯一约束:

1)建表时直接添加

CREATE TABLE t_user(user_id INT(10) UNIQUE);

CREATE TABLE t_user(
  user_id INT(10),
  user_name VARCHAR(30),
  CONSTRAINT UN_PHONE_EMAIL UNIQUE(user_id,user_name)#复合约束
); CREATE TABLE t_user (user_id INT(10),UNIQUE KEY(user_id) );

通过ALTER语句添加:

ALTER TABLE t_user MODIFY user_id INT(10) UNIQUE;

ALTER TABLE t_user CHANGE user_id user_id INT(10) UNIQUE;

这里用的modify,只改变数据类型,也可以用change,改变列名的同时输入新的数据类型。

删除唯一性约束:

ALTER TABLE t_user DROP INDEX user_id;//指定要删除的字段名称

ALTER TABLE `a` DROP INDEX UN_Name ;//指定要删除的索引名称

注:唯一但是可以为空(空和空不相等)

PRIMARY KEY(主键约束):

1)建表时直接添加
CREATE TABLE text(`user_id` INT(10) PRIMARY KEY);
CREATE TABLE `text`
(`user_id` INT(10),
user_name` VARCHAR(30),
CONSTRAINT PK_ID_NAME PRIMARY KEY(user_id,user_name)#复合约束
);
CREATE TABLE `text`
(`user_id` INT(10),
PRIMARY KEY(user_id)
);

通过ALTER语句添加:

ALTER TABLE t_user MODIFY user_id INT(10) PRIMARY KEY;

ALTER TABLE t_user CHANGE user_id user_id INT(10) PRIMARY KEY;

ALTER TABLE t_user ADD PRIMARY KEY(user_id);

ALTER TABLE t_user ADD CONSTRAINT PK_ID PRIMARY KEY(user_id);

这里用的modify,只改变数据类型,也可以用change,改变列名的同时输入新的数据类型。

ALTER TABLE  text  ADD  CONSTRAINT  pk_textId  PRIMARY KEY  `text`(`textId`); 

删除主键约束:

ALTER TABLE  `text`  DROP PRIMARY KEY

FOREIGN KEY(外键约束):

首先创建两张表:A,B
从表A
CREATE TABLE `A`
(
`textId` INT PRIMARY KEY,
`textId1` INT(30),
`textName` NVARCHAR(30)
CONSTRAINT FK_A_B FOREIGN KEY(`textId1`) REFERENCES `b`(`textId1`)#添加外键约束
); 主表B
CREATE TABLE `B`
(
`textId1` INT PRIMARY KEY,
`textName` NVARCHAR(30)
);

另外一种写法:

ALTER TABLE `a` ADD CONSTRAINT fk_a_b FOREIGN KEY (`textId1`) REFERENCES `b`(`textId1`);

删除外键约束:

第一步:
ALTER TABLE `a` DROP FOREIGN KEY fk_a_b; 第二步:
DROP INDEX fk_a_b ON `a`;

注意事项: 删除外键约束的时候需要先删除外键约束,在删除索引才可以

键中的级联关系有以下几种情况:

#ON DELETE CASCADE 删除主表中的数据时,从表中的数据随之删除

#ON UPDATE CASCADE 更新主表中的数据时,从表中的数据随之更新

#ON DELETE SET NULL 删除主表中的数据时,从表中的数据置为空

#默认 删除主表中的数据前需先删除从表中的数据,否则主表数据不会被删除

CREATE TABLE students(
  stu_id INT(10) AUTO_INCREMENT PRIMARY KEY,
  stu_name VARCHAR(30) NOT NULL,
  stu_score FLOAT(5,2) DEFAULT 0.0,
  cla_id INT(10),
  CONSTRAINT FK_CLA_ID FOREIGN KEY(cla_id) REFERENCES class(cla_id) ON DELETE CASCADE
);
CREATE TABLE students(
  stu_id INT(10) AUTO_INCREMENT PRIMARY KEY,
  stu_name VARCHAR(30) NOT NULL,
  stu_score FLOAT(5,2) DEFAULT 0.0,
  cla_id INT(10),
  CONSTRAINT FK_CLA_ID FOREIGN KEY(cla_id) REFERENCES class(cla_id) ON UPDATE CASCADE
);
CREATE TABLE students(
  stu_id INT(10) AUTO_INCREMENT PRIMARY KEY,
  stu_name VARCHAR(30) NOT NULL,
  stu_score FLOAT(5,2) DEFAULT 0.0,
  cla_id INT(10),
  CONSTRAINT FK_CLA_ID FOREIGN KEY(cla_id) REFERENCES class(cla_id) ON DELETE SET NULL
);

注:插入数据时,先插入主表中的数据,再插入从表中的数据。删除数据时,先删除从表中的数据,再删除主表中的数据

AUTO_INCREMENT(自增长):

在创建表的时候添加:

CREATE TABLE t_user(user_id INT(10) AUTO_INCREMENT PRIMARY KEY); 

通过ALTER语句:

ALTER TABLE t_user MODIFY user_id INT(10) AUTO_INCREMENT;

ALTER TABLE t_user CHANGE user_id user_id INT(10) AUTO_INCREMENT;

删除自增长:

ALTER TABLE t_user MODIFY user_id INT(10);

ALTER TABLE t_user CHANGE user_id user_id INT(10);

注意:每张表只能有一列自增列,这里用的modify,只改变数据类型,也可以用change, 改变列名的同时输入新的数据类型。

DEFAULT(默认属性值) :

1)在创建表的时候添加

CREATE TABLE t_user(user_id INT(10) DEFAULT  3); 

2)通过ALTER语句

ALTER TABLE t_user MODIFY user_id INT(10) DEFAULT  2;

ALTER TABLE t_user CHANGE user_id user_id INT(10) DEFAULT  2;

删除默认约束:

ALTER TABLE t_user MODIFY user_id INT(10);

ALTER TABLE t_user CHANGE user_id user_id INT(10);

这里用的modify,只改变数据类型,也可以用change, 改变列名的同时输入新的数据类型。

UNSIGNED(无符号位):

1)在创建表的时候添加

CREATE TABLE t_user(user_id INT(10) UNSIGNED); 

2)通过ALTER语句

ALTER TABLE t_user MODIFY user_id INT(10) UNSIGNED;
ALTER TABLE t_user CHANGE user_id user_id INT(10) UNSIGNED;

删除无符号:

ALTER TABLE t_user MODIFY user_id INT(10);
ALTER TABLE t_user CHANGE user_id user_id INT(10);

无符号作用于数值类型

ZEROFILL(零填充):

添加零填充

1)在创建表的时候添加

CREATE TABLE t_user(user_id INT(10) ZEROFILL);

2)通过ALTER语句

ALTER TABLE t_user MODIFY user_id INT(10) ZEROFILL;
ALTER TABLE t_user CHANGE user_id user_id INT(10) ZEROFILL;

3)删除零填充:

ALTER TABLE t_user MODIFY user_id INT(10);
ALTER TABLE t_user CHANGE user_id user_id INT(10);

注:零填充会将未将有效位以外的位用零来显示,比如某字段数据类型为INT(5),而插入的值为2,那么零填充会显示00002;但是,这个效果在Navicat for MySQL中显示不出来,只有在DOS窗口下才能显示

 

分享知识-快乐自己:MySQL中的约束,添加约束,删除约束,以及一些其他修饰的更多相关文章

  1. 使用sql语句实现添加、删除约束

    --主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空. --唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个空值. ...

  2. ylb:使用sql语句实现添加、删除约束

    ylbtech-SQL Server:SQL Server-使用sql语句实现添加.删除约束 --主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空. -- ...

  3. MySQL中添加、删除约束

    MySQL中6种常见的约束:主键约束(primary key).外键约束(foreign key).非空约束(not null).唯一性约束(unique).默认值约束(defualt).自增约束(a ...

  4. LINUX中查看、添加、删除PATH以及永久添加PATH

    1.查看PATH变量 echo $PATH 会出现: 路径1:路径2:路径3 2.添加PATH变量 export PATH=$PATH:新添加的路径 用此方法添加的PATH,在关闭或者重启LINUX后 ...

  5. 给MySQL中数据表添加字段

    添加一个char字段: mysql> alter table stock add src char(20); Query OK, 3766 rows affected (0.65 sec) Re ...

  6. mysql中给表添加字段

    添加字段: 格式:alter table 表名 add 字段名 字段类型 ; 如:给表stu_info 添加一个字段type,类型为varchar(30) alter table stu_info a ...

  7. mysql中注释的添加修改

    1 创建表的时候写注释,在使用comment关键字语法:create table 表名 (字段名 类型 comment '字段的注释' )comment='表的注释'; 查看一下 2 修改表的注释al ...

  8. viewpager中彻底性动态添加、删除Fragment

    为了解决彻底删除fragment,我们要做的是:1.将FragmentPagerAdapter 替换成FragmentStatePagerAdapter,因为前者只要加载过,fragment中的视图就 ...

  9. 为SQL Server表中的列添加/修改/删除注释属性(sp_addextendedproperty、sp_updateextendedproperty、sp_dropextendedproperty)

    本篇基本完全参考:sql--sp_addextendedproperty和sp_updateextendedproperty (Transact-SQL) 三个存储过程用法一样,以sp_addexte ...

  10. oracle表中字段的添加、删除

    在oracle数据库中为一张表添加一个字段: alter table tableName add ClIENT_OS varchar2(20) default '0' not null ; 在orac ...

随机推荐

  1. iptables和DNS

    1.iptables防火墙 表→链→规则 filter表 数据过滤表 NAT表---内网和外网的地址转换 Mangle-----数据流量,通过防火墙设置流量.特殊数据包标记.太复杂,一般不用.限速工具 ...

  2. 理解支持向量机(三)SMO算法

    在支持向量机模型的求解中,我们用到了SMO算法来求解向量α. 那么什么是SMO算法?在讲SMO算法之前.我们须要先了解下面坐标上升法. 1.坐标上升法 如果有优化问题: W是α向量的函数.利用坐标上升 ...

  3. css样式控制元素固定在底部

    回复固定在底部:css样式用到了 box-sizing属性 box-sizing:border-box; -moz-box-sizing:border-box; /* Firefox */ -webk ...

  4. 总结java编程常用的快捷键

    Eclipse 常用快捷键 Eclipse的编辑功能非常强大,掌握了Eclipse快捷键功能,能够大大提高开发效率.Eclipse中有如下一些和编辑相关的快捷键. 1. [ALT+/] 此快捷键为用户 ...

  5. Linux在中国正在走向没落

    在中国,Linux正在走向没落,一片萧条景象. 在这样的大背景下.居然有人愿意接手中科红旗,令人佩服! 在中国,没有一个关于国际Linux的官方刊物(或站点)反映国际Linux运动的真实声音.Linu ...

  6. spring学习六----------Bean的配置之Aware接口

    © 版权声明:本文为博主原创文章,转载请注明出处 Aware Spring提供了一些以Aware结尾的接口,实现了Aware接口的bean在被初始化后,可以获取相应的资源 通过Aware接口,可以对S ...

  7. Xenomai 3 POSIX

    Xenomai 3在架构设计上确实优先Xenomai 2,至少对开发者来说,少维护了不少东西,看下面两张图就知道了 第一张图是Xenomai2的,第二张图是Xenomai3的,Xenomai3在内核中 ...

  8. emacs 简记

    简介 Emacs作为神的编辑器,不用介绍了吧,说点感受. 用了一段时间了,总体感觉其实Emacs是很简单的,甚至比vim还简单,因为在X环境下,打开后可以就像记事本一样使用.但是,使用Emacs的人一 ...

  9. JavaScript读书笔记(6)-Function

    Function类型 ECMAScript中函数是对象,每个函数都是Function类型的实例,也有属性和方法,函数是对象,函数名实际上市一个指向函数对象的指针,不会与某个函数绑定: function ...

  10. TP 自动验证规则

    #自动验证 protected $_validate=array( #参数最后代表1 表示必须验证,0表示当这个字段存在的时候验证 array('username','require','账号不能为空 ...