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

[经验分享] MySQL的数据类型和表结构

[复制链接]

尚未签到

发表于 2018-10-3 07:00:22 | 显示全部楼层 |阅读模式
  MySQL的数据类型和表结构
  DB,DataBase
  -数据库:依照某种数据模型进行组织并存放到存储器的数据集合。
  DNMS,DataBase Management System
  -数据库管理系统:用来操纵和管理数据库的大型服务软件。
  DBS,DataBase System
  -数据库系统:即DB+DBMS,指带有数据库并整合了数据库管理软件的计算机系统。
  Oracle(甲骨文):Oracle Database 、 MySQL
  Microsoft(微软):SQL Server 、Access
  IBM: DB2
  Sybase: Sybase
  MySQL主要特点:
  -关系型数据库
  -支持Linux/Unix、Windows等多种操作系统
  -使用C和C++编写,可移植性强
  -通过API支持Python/Java/Perl/PHP等语言
  应用环境:
  -LAMP平台,与Apache HTTP Server组合
  -LNMP平台,与Nginx组合
  关系型数据库服务软件(RDBMS):按照规定的结果存储数据,并且数据(values)之间可以做关联操作。
  例:Oracle MySQL DB2  SQL  Server
  非关系型数据库软件(NOSQL):以键值对的形式,一一对应,数据(values)之间没有关联。
  例:Redis  mongdb
  一、安装MySQL
  yum  -y install perl-Data-Dumper  Perl-JSON perl-Time-HiRes  #依赖包
  tar -xf mysql-5.7.17-1.el7.x86_64.rpm-bundle.tar
  rpm -Uvh mysql-conmmunity-*.rpm   #U升级安装,可替换冲突文文件。
  二、启动服务
  /usr/lib/systemd/system/mysqld.service
  或
  systemctl start mysql
  systemctl enable mysql
  三、登录
  默认的数据库管理员账号root,允许从localhost访问。
  首次登录密码在安装时随机生成,存储在错误日志文件里。
  grep 'temporary password' /var/log/mysql.log
  .....@localhost: matoa>AVAV
  四、修改密码
  0 or LOW   长度
  1 or MEDIUM(默认)  长度,数字,小写/大写,和特殊字符
  2 or STRONG     长度,数字,小写/大写和特殊字符,字典文件
  通过客户端工具mysql连接本地服务器,使用alter user重设置口令。
  mysql>set global validate_password_policy=0;  #只验证密码长度
  mysql>set global validate_password_length=6;  #修改密码长度为6个字符,默认是8个字符。

  mysql>alter user user()>  mysql>quit #退出
  mysql -uroot  -p123456  #使用新密码登录
  要想实现永久生效需修改配置文件:
  vim /etc/my.cnf
  .....
  validate_password_policy=0
  validate_password_length=6
  服务相关文件
  /etc/my.cnf     配置文件
  /var/lib/mysql  数据库目录
  默认端口        3306
  进程名          mysqld
  传输协议        TCP
  进程所有者      mysql
  进程所属组      mysql
  使用mysql命令:
  mysql  -h服务器ip   -u用户名  -p密码 [数据库库名]
  指令类型:
  MySQL指令:环境切换,看状态,退出等控制
  SQL指令:数据库定义/查询/操纵/授权语句

  DDL 数据定义语言(create>  DML 数据操作语言(insert updata delect)
  DCL 数据控制语言(grant revoke)
  DTL 数据事物语言(commit rollback savepoint)
  基本注意事项:
  1.指令不区分大小写(密码、变量值除外)
  2.每条SQL指令以";"结束或分隔。
  3.c\可废弃当前编写错的指令。
  命令:
  show  databases;          查看所有的库
  use     库名;                   进入到指定库
  show   tables;                列出当前库内的所有表
  describe   表名;             查看表的字段结构
  create  datebases  库名;    创建指定库
  select   database();            查看当前所在的库
  drop  databas   库名;          删除指定的库
  create table 库名.表名(    #创建指定的表
  字段名1   字段类型(宽度) 约束条件;
  字段名2   字段类型(宽度) 约束条件;
  ...........
  );
  

例建表:  
mysql>create   table   gamedb.stu(
  
mysql>name    char(10),
  
mysql>age      int
  
mysql>);
  

  drop  table  库名.表名;   删除指定库下的表
  insert into  库名.表名  values(值列表);   #插入表记录
  

例:  
insert into  gamedb.stu  values("jim",21),("tom",29);
  

  select   *   from  库名.表名;  查看表的所有记录
  delete  from  库名.表名;       删除表的所有记录
  常见类型的信息
  数值型:体重、身高、成绩、工资、价格等
  字符型:姓名、工作单位、地址等
  枚举型:兴趣爱好、性别等
  日期时间型:出生日期、注册时间等
  1.数值型
  类型               大小        范围(有符号)   范围(无符号)   用途
  TINYINT        1字节      -128~127              0~255            微小整数
  SMALLINT     2字节     -32768~32767      0~65535          小整数
  MEDUIMINT  3字节     -(2^23)~(2^23)-1   0~(2^24)-1       中整数
  INT                4字节      -(2^31)~(2^31)-1  0~(2^32)-1       大整数
  BIGINT          8字节      -(2^63)~(2^63)-1  0~(2^64)-1      极大整数
  FLOAT          4字节                                                   单精度浮点数
  DOUBLE       8字节                                                  双精度浮点数
  DECIMAL    对DECIMAL(M,D),其中M为有效位数、D为小数位数,M应大于D,占用M+2字符
  1.1整数型
  使用UNSIGED修饰时,对应的字段只保存正数(无符号)。
  数值不够指定宽度时,默认是在左边填空格补位。
  宽度仅是显示宽度,存数据值的大小有类型决定。
  使用关键字ZEROFILL时,填0代替空格补位。
  数值超出范围时,报错。
  1.2浮点型
  定义格式:float(总宽度,小数位数)
  当字段值与类型不匹配时,字段值作为0处理。
  数值超出范围时,仅保存最大/最小值。
  浮点型:根据存储数值的范围分为 单精度 双精度
  单精度float(n,m)
  双精度double(n,m)
  n表示总位数
  m表示小数位的位数
  2.字符类型
  2.1定长:char(字符数)
  最大长度255字符。
  不够指定字符数时默认在右边用空格补齐。
  字符数超出时,无法写入数据。
  2.2变长:varchar(字符数)
  按数据实际大小分配存储空间。
  字符数超出时,无法写入数据。
  缺点:每次都要计算,消耗资源。
  2.3大文本类型:text/blob
  字符数大于655535存储时使用。
  

例:  
mysql>create  database ku;
  
mysql>create  table  ku.biao(
  
>name   char(7) ,
  
>age    tinyint(3)  unsigend,
  
>high   float(3,2)
  
>);
  

  
mysql>desc  ku.biao;
  
Fied   Type          Null     key       Default  Extra
  
字段名 字段类型     是否为空 索引类型    默认值   描述信息
  

  3.日期时间类型
  3.1日期时间,DATETIME
  占用8个字节。
  范围:1000-01-01 00:00:00.000000  ~ 9999-12-31  23:59:59.999999
  例:2017-12-31  23:59:59
  3.2日期时间,TIMESTAMP
  占用4个字节。
  范围:1970-01-01  00:00:00.000000  ~ 2038-01-19  03:14:07.999999
  例:2017-12-31  23:59:59
  3.3日期,DATE
  占用4个字节。
  范围:0001-01-01 ~ 9999-12-31
  3.4年份,YEAR
  占用1个字节。
  范围:1901~2155
  3.5时间,TIME
  占用3个字节。
  格式:HH:MM:SS
  关于日期时间字段,当未给TIMESTAMP字段赋值时,自动以当前系统时间赋值,而DATETIME字段默认值为NULL。
  YEAR年份的处理,默认用4位数字表示,当只用2位数字赋值时,01~69视为2000~2069,而70~99视为1970~1999。
  

例:  
mysql>create table  ku.biao2(
  
>name  varchar(8),
  
>starty  year,
  
>birthy  date,
  
>abc     time
  
>);
  

  时间函数:
  now()      获取调用此函数时的系统日期
  sysdate()  执行时间动态获得系统时间
  sleep(N)   休眠N秒
  curdate()  获取当前的系统时间
  curtime()  获取当前的系统时刻
  month()    获取指定时间中的月份
  date()     获取指定时间中的日期
  time()     获取指定时间中的时刻
  

例:  
mysql>select now();
  
mysql>select date(now());
  
mysql>select time(now());
  

  4.枚举类型
  4.1从给定值集合中选择单个值,ENUM。
  格式:enum(值1,值2,值N)
  4.2从给定值集合中选择一个或多个值,SET。
  格式:set(值1,值2,值N)
  

例:  
mysql>create table ku.biao3(
  
>name  char(5),
  
>gen   enum("boy","girl"),
  
>likes  set("book","music","pingpang","sleep")
  
>);
  

  约束条件
  Null         允许为空,默认设置
  NOT NULL     不允许为空
  key          索引类型
  Default      设置默认值,缺省为NULL
  

例:  
mysql>create table  ku.tbiao5(
  
>name  varchar(4) not null,
  
>gen   enum("boy","girl") default "boy",
  
>age   int(3)  not null  default 22,
  
>);
  

  
mysql>desc ku.biao5;
  

  修改表的字段
  基本用法:
  ALTER  TABLE 表名  执行动作;
  执行动作:
  1.添加新字段
  ADD  字段名  类型(宽度)  约束条件;
  ADD  字段名  类型(宽度)  约束条件  FIRST; //添加字段到最前面
  ADD  字段名  类型(宽度)  约束条件  AFTER  字段名2;  //添加字段到字段2后面
  2.修改字段类型
  MODIFY  字段名  类型(宽度)  约束条件;
  3.修改字段名
  CHANGE  源字段名 新字段名 类型(宽度)  约束条件;
  4.删除指定字段
  DROP 字段名;
  

例:  
mysql>alter table ku.biao5 add
  
>kuki   varchar(5) not null ;



运维网声明 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-607719-1-1.html 上篇帖子: mysql系列之8------读写分离 下篇帖子: mysql提示performance_schema缺表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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