当前位置: 首页 > news >正文

MySQL列的默认值主键索引与自增 删除增加与修改

1. 某些列不插入内容,值是多少?
  自动填充NULL
2. NOT NULL是干嘛的?
  不能为NULL类型,因为NULL类型查询的时候需要加语句 IS NULL 或者IS NOT NULL
  效率低,查询速度慢,开发中我们一般不可以设置为默认的能插入NULL类型。
  所以会使用NOT NULL来限制使用NULL类型。

3. 既然没有默认值了,我们如何手动设置默认值?
  使用哪个DEFAULT

 1 -- 设置两个列id和name
 2 -- id内容不能为NULL 默认值0
 3 -- name内容不能为NULL 默认值空字符串
 4 CREATE TABLE t14 (
 5 id INT NOT NULL DEFAULT 0,
 6 name CHAR(10) NOT NULL DEFAULT ''
 7 );
 8 INSERT INTO t14 VALUES (1,'listi');
 9 INSERT INTO t14 (id) VALUES (2);
10 SELECT * FROM t14;
11 SELECT * FROM t14 WHERE name='';

1. 什么是主键?
PRIMARY KEY,能够区分每一行的列
以会员为例
我们为了区分他们,往往给每一个会员加一个独一五二的会员号,这个会员号就是主键,主要在唯一
的号码上加。

2. 设置主键后一定不能重复
不重复的是不是都可以是主键?比如说手机号,email,也不重复。
当然不是,它还具备这么几个特征,有顺序,并且递增或者递减的一般才会加主键。
一张表中,不声明主键也可以,取决于你表中数据有没有有顺序递增或者递减的列数据。

3. 两种声明主键的方式:

 1 -- 在需要加主键的后面跟着主键语句
 2 CREATE TABLE t15 (
 3 id INT PRIMARY KEY,
 4 name CHAR(5)
 5 );
 6 -- 在语句的最后再声明一行声明哪个列名要加主键
 7 CREATE TABLE t16 (
 8 id INT,
 9 name CHAR(5),
10 PRIMARY KEY(id)
11 );
12 -- 不可以添加重复的信息
13 INSERT INTO t15 VALUES (3,'list');
14 INSERT INTO t15 VALUES (3,'list');

4.主键往往和 AUTO_INCREMENT 一起使用
这并不意味着,他们两个必须要绑定在一起使用,我们一般会把自增的列加上主键,提升效率。
但有时候,我们非要用email做主键,让email这一个列提高效率,也是可以的。

5.AUTO_INCREMENT不可单独使⽤
使用自增选项,必须要有索引设置,否则会报错。
索引还有,普通索引INDEX,唯一UNIQUE,全文索引FULLTEXT。

表创建完毕后,能否添加 1 个列?删除 1 个列?修改一个列?
新增一个列,或者删除修改一个列,这属于 DDL 操作,数据库定义语言。
区分数据的增删改,插⼊数据是指表中的数据,不会影响到表的结构。
新建user_info 表:

1 -- id,名字,性别,体重
2 CREATE TABLE user_info(
3 id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
4 username CHAR(20) NOT NULL DEFAULT '',
5 gender TINYINT UNSIGNED NOT NULL DEFAULT 0,
6 weight TINYINT UNSIGNED NOT NULL DEFAULT 0
7 )ENGINE=MyISAM DEFAULT CHARSET=utf8;

语法:
ALTER TABLE 表名 ADD 列名 列类型 列属性... (新列 默认在表的最后)
ALTER TABLE 表名 ADD 列名 列类型 列属性... AFTER 列名 (新列出现指定列后)
ALTER TABLE 表名 ADD 列名 列类型 列属性... FIRST (新列为第 1 列)

ALTER TABLE 表名 CHANGE 旧列名 新列名 新类型 列属性....
ALTER TABLE 表名 MODIFY 列名 新属性....
ALTER TABLE 表名 DROP [COLUNM] 列名

 1 -- 1.添加一个列,默认新增列追加在表的最后
 2 ALTER TABLE user_info ADD height TINYINT UNSIGNED NOT NULL DEFAULT 0;
 3 -- 查看表结构
 4 DESC user_info;
 5 -- 2.删除身高列
 6 ALTER TABLE user_info DROP height;
 7 DESC user_info;
 8 -- 3.再增加身⾼列,放在username后面
 9 ALTER TABLE user_info ADD height TINYINT NOT NULL DEFAULT 0 AFTER username;
10 DESC user_info;
11 -- 4.现在人的身高越来越高,255的TINYINT已经不够存了,我们需要改变列类型,改成SMALLINT
12 -- 使用CHANGE可以将列名一起修改了.
13 ALTER TABLE user_info CHANGE height shengao SMALLINT NOT NULL DEFAULT 0;
14 DESC user_info;
15 -- 5.MODIFY 也可以修改列,跟CHANGE区别在于,MODIFY不可以修改列名
16 ALTER TABLE user_info MODIFY shengao TINYINT NOT NULL DEFAULT 0;
17 DE

 

转载于:https://www.cnblogs.com/zhony/p/10210862.html

相关文章:

  • DoraemonKit,一款功能齐全的客户端 (iOS、Android) 研发助手,你值得拥有。
  • 欧美斯项目签到功能,实时获取当前所在位置的经纬度
  • 云原生的浪潮下,为什么运维人员适合学习Go语言?
  • HDU 2122 Ice_cream’s world III
  • 九、IIC驱动原理分析
  • mongodb安装
  • H5(WebView)跳Native(UIView)
  • poj 2888 Magic Bracelet
  • 导入【 http://ip.qq.com/js/geo.js】外部省市县三级地区到Mysql数据库
  • 前端代码风格自动化系列(二)之Commitlint
  • SharePoint 2013 Designer 入门教程
  • SparkStreaming的实战案例
  • const let
  • 冷启动问题:如何构建你的机器学习组合?
  • hive报错 Another instance of Derby may have already booted the database
  • 30秒的PHP代码片段(1)数组 - Array
  • create-react-app做的留言板
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • docker容器内的网络抓包
  • ES6 ...操作符
  • FastReport在线报表设计器工作原理
  • JavaScript实现分页效果
  • Lucene解析 - 基本概念
  • Mysql优化
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • pdf文件如何在线转换为jpg图片
  • spring cloud gateway 源码解析(4)跨域问题处理
  • vue:响应原理
  • Vue--数据传输
  • 服务器之间,相同帐号,实现免密钥登录
  • 优秀架构师必须掌握的架构思维
  • RDS-Mysql 物理备份恢复到本地数据库上
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (4)Elastix图像配准:3D图像
  • (三)mysql_MYSQL(三)
  • (十)c52学习之旅-定时器实验
  • (转)fock函数详解
  • .form文件_SSM框架文件上传篇
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET Remoting学习笔记(三)信道
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .sh
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • /bin/bash^M: bad interpreter: No such file or directory
  • /etc/skel 目录作用
  • ::
  • @Not - Empty-Null-Blank
  • [ vulhub漏洞复现篇 ] Hadoop-yarn-RPC 未授权访问漏洞复现
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [100天算法】-实现 strStr()(day 52)
  • [2]十道算法题【Java实现】
  • [20161101]rman备份与数据文件变化7.txt