分享知识-快乐自己:MySQL中的约束,添加约束,删除约束,以及一些其他修饰
创建数据库:
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中的约束,添加约束,删除约束,以及一些其他修饰的更多相关文章
- 使用sql语句实现添加、删除约束
--主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空. --唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个空值. ...
- ylb:使用sql语句实现添加、删除约束
ylbtech-SQL Server:SQL Server-使用sql语句实现添加.删除约束 --主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空. -- ...
- MySQL中添加、删除约束
MySQL中6种常见的约束:主键约束(primary key).外键约束(foreign key).非空约束(not null).唯一性约束(unique).默认值约束(defualt).自增约束(a ...
- LINUX中查看、添加、删除PATH以及永久添加PATH
1.查看PATH变量 echo $PATH 会出现: 路径1:路径2:路径3 2.添加PATH变量 export PATH=$PATH:新添加的路径 用此方法添加的PATH,在关闭或者重启LINUX后 ...
- 给MySQL中数据表添加字段
添加一个char字段: mysql> alter table stock add src char(20); Query OK, 3766 rows affected (0.65 sec) Re ...
- mysql中给表添加字段
添加字段: 格式:alter table 表名 add 字段名 字段类型 ; 如:给表stu_info 添加一个字段type,类型为varchar(30) alter table stu_info a ...
- mysql中注释的添加修改
1 创建表的时候写注释,在使用comment关键字语法:create table 表名 (字段名 类型 comment '字段的注释' )comment='表的注释'; 查看一下 2 修改表的注释al ...
- viewpager中彻底性动态添加、删除Fragment
为了解决彻底删除fragment,我们要做的是:1.将FragmentPagerAdapter 替换成FragmentStatePagerAdapter,因为前者只要加载过,fragment中的视图就 ...
- 为SQL Server表中的列添加/修改/删除注释属性(sp_addextendedproperty、sp_updateextendedproperty、sp_dropextendedproperty)
本篇基本完全参考:sql--sp_addextendedproperty和sp_updateextendedproperty (Transact-SQL) 三个存储过程用法一样,以sp_addexte ...
- oracle表中字段的添加、删除
在oracle数据库中为一张表添加一个字段: alter table tableName add ClIENT_OS varchar2(20) default '0' not null ; 在orac ...
随机推荐
- http协议(转http://www.cnblogs.com/guguli/p/4758937.html)
一. HTTP协议的应用简单概况 HTTP协议的主要特点可概括如下: 1.支持客户/服务器模式.2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径.请求方法常用的有GET.HEAD.POST ...
- iOS - 贝塞尔曲线,折线,曲线,波浪线
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZHlsYW5fbHdiXw==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...
- [读书笔记] learn python the hard way书中 有关powershell 的一些小问题
ex46中,创建自己的python, 当你激活环境时 .\.venvs\lpthw\ Scripts\activate 会报一个错误 此时需要以管理员身份运行PowerShell,(当前的PS不用关 ...
- MySql(六):影响 MySQL Server 性能的相关因素
MySQL 最多的使用场景是WEB 应用,那么我们就以一个WEB 应用系统为例,逐个分析其系统构成,进行经验总结,分析出数据库应用系统中各个环境对性能的影响. 一.商业需求对性能的影响 这里我们就拿一 ...
- ngui 输入事件处理
NGUI不仅提供了图形接口,还提供了输入事件接口!事件接口是通过UICamera来实现的. Unity3d 为我们提供的原装的input尽管非常方便,但真正跨平台使用时(尤其是跨手机与Pc机时)仍然不 ...
- MVC总结--MVC简单介绍以及和WebForm差别
什么是MVC MVC(Model-View-Controller.模型-视图-控制器模式)用于表示一种软件架构模式.它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Cont ...
- 【打CF,学算法——一星级】Codeforces Round #313 (Div. 2) A. Currency System in Geraldion
[CF简单介绍] 提交链接:http://codeforces.com/contest/560/problem/A 题面: A. Currency System in Geraldion time l ...
- 【C语言】一句printf代码——{ a[0] ? 0[a] }
这是前段时间做的http://fun.coolshell.cn/中的一道题,很有意思,涉及的其实是C的基础,不过当时第一次看见这行代码确实把我弄懵了: printf(&unix["\ ...
- 【BZOJ】1003 Cards
[解析]Burnside引理+背包dp+乘法逆元 [Analysis] 这道题卡了好久,就是没想懂置换跟着色是不一样的. 依据burnside引理.在一个置换群作用下不等价类的个数为每一个置换作用下不 ...
- 成为高级Java工程师,你必须要看的技术书籍
学习的最好途径就是看书 "学习的最好途径就是看书",这是我自己学习并且小有了一定的积累之后的第一体会.个人认为看书有两点好处: 1.能出版出来的书一定是经过反复的思考.雕琢和审核的 ...