设为首页 收藏本站
查看: 848|回复: 0

[经验分享] MySQL表操作及字段数据类型

[复制链接]

尚未签到

发表于 2018-10-6 10:45:02 | 显示全部楼层 |阅读模式
  1、查看当前数据库所有表
  mysql> show tables;
  2、创建表,id字段为整型无符号,不能有负数并且是主键(主键唯一),引擎为InnoDB,字符集是utf8,注释信息为"学生表",int括号中的3表示字段的宽度为3,以100开始自增,zerofill意思是自动补零
  mysql> create table student(
  id int(3) unsigned  zerofill not null auto_increment,
  name varchar(30) not null,
  primary key(id)
  )engine=InnoDB auto_increment=100  comment="学生表";
  3、删除表
  mysql> drop table if exists student;
  4、查看表结构
  mysql> desc student;
  5、查看建表代码
  mysql> show create table student;
  6、插入数据
  mysql> insert into student(name) values ("jack"),("王五"),("赵六");
  7、简单查询数据
  mysql> select * from student;
  8、显示表的所有列,比desc要详细
  mysql> show full columns from student;
  9、删除多个表,表名用逗号分隔
  mysql> drop table if exists stu,a,b;
  字段数据类型
  1>整型:tinyint(1字节,0-255)、smallint(2字节,0-65535)、mediumint(3字节,0-16777215)、int(4字节,0-4294967295)、bigint(5字节,0-18446744073709551615)
  tinyint:最多能存到255,比如创建表的时候用tinyint的话,在存256的时候会报错,这种类型存年龄、部门编号比较合适,例如:
  mysql> create table stu(

  ->>  -> name varchar(30),
  -> age tinyint(2) zerofill,
  -> primary key(id)
  -> )engine=InnoDB default charset=utf8;
  Query OK, 0 rows affected (0.02 sec)
  mysql> insert into stu(name,age) values ("张三",256);           //如果插入数据超过了tinyint范围就会报错,存小数的话会四舍五入
  ERROR 1264 (22003): Out of range value for column 'age' at row 1
  2>小数类型:decimal(p,s)、numeric(p,s),两个选一即可,例如
  mysql> create table stu(
  id int(3) unsigned auto_increment,
  name varchar(30),
  money decimal(4,2),     //money字段用小数类型,(4,2)代表4位数字,其中2位整数和2位小数,也就是说最高存99.99
  primary key(id)
  )engine=InnoDB default charset=utf8;
  mysql> insert into stu (name,money) values ("李四",200);
  ERROR 1264 (22003): Out of range value for column 'money' at row 1
  mysql> show errors;     //查看错误
  3>字符串类型:char()、varchar()、text()、longtext()
  char()为固定长度字符串(如果存1个字符会补5个0),最大为255,手机号、身份证号可以使用char类型,例如
  mysql> create table stu(

  ->>  -> name char(6)                        //如果char范围超过255会报错,(6)代表6个字符,超出6会报错
  -> )engine=InnoDB default charset=utf8;
  varchar()为可变长度字符串,最大为65535,例如:
  mysql> create table stu(
  id int unsigned not null auto_increment primary key,
  name varchar(2)                      //采用varchar类型
  )engine=InnoDB default charset=utf8;
  mysql> insert into stu (name) values ("张三");
  Query OK, 1 row affected (0.00 sec)
  mysql> insert into stu (name) values ("齐天大圣");
  ERROR 1406 (22001): Data too long for column 'name' at row 1
  注意:以上插入数据四个字也会报错,可变长字符串并不是说想变多长变多长,比如定义char(3),存入一个字符a,系统会自动补两个空位,结果是一个a和两个空格补齐了三个字符;而定义varchar(3),存入a后,不会自动补齐空位,就是实实在在存入了一个字符,但是存入的最大字节数还是3,存入4个字符也会报错。大家注意两个概念。
  text()也是可变长的,最大为65535;longtext()最大为4G,存文章可以使用。。。
  简单说以下enum参数,这个参数代表枚举,比如我要存一个性别,除了男就是女,例如:
  mysql> create table stu(
  id int unsigned not null auto_increment primary key,
  name varchar(5) not null,
  gender enum("男","女")
  )engine=InnoDB default charset=utf8;
  mysql> insert into stu (name,gender) values ("张三","中");              //必须存enum()内定义的选项
  ERROR 1265 (01000): Data truncated for column 'gender' at row 1
  mysql> insert into stu (name,gender) values ("张三","男");
  4>二进制类型:blob、longblob,比如我要存一个MP3格式的文件,就需要用到此类型,一般没有往数据库直接存这些东西的,数据库存的只是这些文件的地址。
  5>日期时间类型:date、datetime,date只能存年月日,而datetime能存年月日时分秒
  mysql> create table stu(
  id int unsigned not null auto_increment primary key,
  name varchar(5) not null,gender enum("男","女"),
  birthday datetime                       //出生日期采用datetime类型
  )engine=InnoDB default charset=utf8;
  mysql> insert into stu (name,gender,birthday) values ("张三","男","2018-02-26 00:00:00");
  如果字段类型有注册时间,而且我们想要自动添加怎么办?如下:
  mysql> create table stu(
  id int unsigned not null auto_increment primary key,
  name varchar(5) not null,
  gender enum("男","女"),
  registered datetime default now()
  )engine=InnoDB default charset=utf8;
  mysql> insert into stu (name,gender) values ("张三","男");       //再添加数据时就不需要再添加registered字段信息了
  注意:datetime类型的数据在修改数据时,时间不会改变,而时间戳类型会改变,例如:
  mysql> create table stu(
  id int unsigned not null auto_increment primary key,
  name varchar(5) not null,
  gender enum("男","女"),
  registered timestamp                 //时间戳类型,这时使用update语句修改数据时,时间戳会改变,如果不想它改变,应该写成registered timestamp default current_timestamp()
  )engine=InnoDB default charset=utf8;


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-613595-1-1.html 上篇帖子: 11.1 LAMP架构介绍11.2 MySQL_MariaDB介绍11.3-11.5 MySQL安装 下篇帖子: mysql导出导入数据
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表