一 SQL语句

  1. 数据库级别(*)

  •     显示全部数据库:show databases;
  •     创建数据库:create database '数据库名字’;
  •     使用数据库:use '数据库名字';
  •     删除数据库:drop database 's数据库名字‘;
  •     导出数据库:mysqldump -uroot -p 数据库名 > 导出文件名
  •     导入数据库:mysql -uroot -p 数据库名 < 文件路径.数据表

  2.数据表级别(*)

  •     显示全部数据表:show tables;
  •     显示数据表列:desc '数据表名';
  •     创建表:create table '数据表名'(nid 类型,name 类型);
  •     删除表:drop table '数据表名';
  •     清空表内容:elete from '数据表名';
  •     清空表内容:truncate table '数据表明'; 速度快,自增回到原点;
  •     添加列:lter table '表名' add ‘列名’ 类型;
  •     删除列:alter table '表名' drop column '列名';
  •     修改列类型:alter table '表名' modify column '列名' 类型;
  •     修改列名和类型:alter table '表名' change '原列名' '新列名' 类型;
  •     添加主键:alter table '表名' add primary key;
  •     删除主键:alter table '表名' drop primary key;
  •     添加外键:alter table '主表名' add constraint '外键名' foreign key '从表名'('外键字段') references '主表'(字段');
  •     删除外键:alter table '表名' drop foreign key '外键名';

    create table '表名'('Field名' 'Field类型' '是否为空' 默认值,'Field名' 'Field类型' '是否为空' 默认值)engine=innodb charset=utf8;

    例:

      

    创建表tb2成功。

    create table '表名'('Field名' 'Field类型' '是否为空' 默认值 auto_increment primary key,'Field名' 'Field类型' '是否为空' 默认值)engine=innodb charset=utf8; auto_increment代表自增(只能数值类型,所引,主键,一张表只能由一个自增列),加它时后面一定要由primary key(一张表只能由一个主键,不能为NULL,一般情况下把自增列设为主键,可以两列一起作为主键,查找速度非常快)

    例:

      

      

      可以看到,我只查了num的值,但是id的value是随着递增的。

    a. delete from '数据表'与truncate table '数据表'的区别

      (1) 用delete from tb2;清空数据表tb2后,然后重新插入两行数据,结果:

      

      可以看到id是在原来的基础上递增的。

      (2) truncate table tb2; 然后再重新插入数据,结果:

      

      可以看到表中id列是从1开始递增了。

    b. 外键

      把两个表中的两列进行了关联,加了约束。

      (1) 创建friInfo的表:

      

      创建department的表:

      

      向department表中插入数据,显示:

      

      将friInfo表中的departmentId和department表中的id建立关联:

      

      fk_f_d是外键的名字;外键建立成功。

      我们看看能否在friInfo表中的departmentId中插入在department表id列中没有的数字,结果:

      

      提示我们不可以插入数据,那我们插入符合要求的,结果:

      

      可以看到插入成功。

      friInfo表中的departmentId列的数据只能从department中的id列选取。

      (2)可以在创建表的时候直接添加约束

      例:

        create table department(
        id int not null auto_increment primary key,
         name varchar(20))engine=innodb default charset=utf8;         create table friInfo(
         id int not null auto_increment primary key,
        name varchar(20),
        departmentId int,
        constraint fk_f_d foreign key(departmentId) referneces department(id))engine=innodb default charset=utf8;

  3.数据行级别(****)

    增:a. insert into '表名'('列名','列名') values('值','值'),('值','值'), ('值','值'); 一次插入多条数据;

      b. insert into '表名'('列名','列名') select '列名','列名' from '表名'; 把另一个表的两列中的数据插入到表的列中;

    删:delete from  '表名' where '列名'='值'; 将某一列中某一值的一行数据删掉; '列名'>'值',  '列名'<值',  '列名'!='值' 都可以;

    改:update '表名' set '列名1'='值1' where '列名2'='值2' and ...; 把'列名2'='值2的'列名1'的值改为'值1';

    查:select  '列名1', '列名2' from '数据表名' where '列名'='值'; 显示表中'列名'='值'的那行中 '列名1'和'列名2'数据;

    其他:条件,通配符,限制,排序,分组,连表,组合。参考https://www.cnblogs.com/wupeiqi/articles/5713315.html

二 SQL基本数据类型

  1. 数字

   (1) bit(m) 二进制位,m表示二进制位的长度,范围1~64,默认m=1

   (2) tinyint 相当于c++中的int8类型,默认是有符号的,创建无符号:tinyint unsigned;注意:布尔类型用 tinyint(1)表示;

   (3) smallint 相当于c++中的int16类型;

   (4) int 相当于c++中的int32类型;

   (5) bigint 相当于c++中的int64类型;

   (6) decimal(m[,d]) 精确的小数,m是数字总个数(负号不算),最大值65,d是小数点后个数,最大值30;

   (7) float(m,d) 单浮点数,m是数字总个数,d是小数点后数字个数;数值越大越不准确;

   (8) double(m,d) 双浮点数,m是数字总个数,d是小数点后数字个数;数值越大越不准确;

  2.字符串

   (1) char(m) 固定长度的字符串,最大长度255字符,m代表字符串长度,即使数据小于m,也会占用m个字符;

   (2) varchar(m) 可变长度的字符串,最大长度255字符,m代表字符串长度,只要小于m长度的字符串都可以保存在数据类型中;相比于char类型效率较低;

   (3) text 保存变长的大字符串,最大长度65535个字符;

   (4) mediumtext 保存变长的大字符串,最大长度16777215个字符;

   (5) longtext 保存变长的大字符串,最大长度4294967295个字符;

   (6) TinyBlog、Blog、MediumBlog、LongBlog 二进制数据;

  3.时间

   (1) date: YYYY-MM-DD;

   (2) time: HH:MM:SS;

   (3) datetime:  YYYY-MM-DD HH:MM:SS;

   (4) year: YYYY;

   (5) timestamp: YYYYMMDD HHMMSS;

  4.枚举

   相当于c++中的枚举。

   用法:

      create table studentInfo(
      name varchar(20),
      age int,
       class ENUM('class1', 'class2', 'class3')
      )engine=innodb default charset=utf8;
      
      insert into studentInfo(name,age,class) values('a',19,'class1'),('b',20,'class2'),('c',21,'class3');

  5.集合

   可以设置多个值。

   用法:

      create table teacher(
       name varchar(20),
       course SET('math', 'sports', 'english')
      )engine=innodb default charset=utf8;       insert into teacher(name,course) values('a', ('math', 'sports')), ('b', ('english', 'sports')), ('c', ('math', 'english'));

MySQL学习(3)的更多相关文章

  1. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  2. 我的MYSQL学习心得(二) 数据类型宽度

    我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  3. 我的MYSQL学习心得(三) 查看字段长度

    我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  4. 我的MYSQL学习心得(四) 数据类型

    我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...

  5. 我的MYSQL学习心得(五) 运算符

    我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  6. 我的MYSQL学习心得(六) 函数

    我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

  7. 我的MYSQL学习心得(七) 查询

    我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

  8. 我的MYSQL学习心得(八) 插入 更新 删除

    我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得( ...

  9. 我的MYSQL学习心得(九) 索引

    我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

  10. 我的MYSQL学习心得(十) 自定义存储过程和函数

    我的MYSQL学习心得(十) 自定义存储过程和函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心 ...

随机推荐

  1. NERDTree快捷键

    切换工作台和目录 ctrl + w + h 光标 focus 左侧树形目录ctrl + w + l 光标 focus 右侧文件显示窗口ctrl + w + w 光标自动在左右侧窗口切换ctrl + w ...

  2. 【Android TimeCat】 解决cannot resolve symbol R

    莫名其妙出现了,鬼知道怎么来的. 解决方法总结 1. 推荐 解决90%的情况: Build->Clean ProjectBuild->Rebuild Project 2. 不常见 Andr ...

  3. Hello World!(这不是第一篇)

    如题,这不是第一篇blog,但是为了表示这个闲置了1年多的blog现在被我正式启用了,我还是走个过场吧. #include <iostream> using namespace std; ...

  4. 改进"尽最大努力交付"的服务

    改进"尽最大努力交付"的服务 网络层的作用就是负责在不同的网段尽力转发数据包,但是负责中专数据包的路由器并不关心数据包的内容和优先顺序.而是先到达的数据包先处理,后到达的数据包排队 ...

  5. 我去,你写的 switch 语句也太老土了吧

    昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意.但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:& ...

  6. sys.argv的意义[转]

    sys.argv的意义 原文地址:https://www.cnblogs.com/zzliu/p/10775049.html 简单来说,sys.argv是一个参数列表,这个列表存放着从外界获取到的参数 ...

  7. FPGA小白学习之路(1) System Verilog的概念以及与verilog的对比(转)

    转自CSDN:http://blog.csdn.net/gtatcs/article/details/8970489 SystemVerilog语言简介 SystemVerilog是一种硬件描述和验证 ...

  8. .NET平台编程语言的衰败

    .NET平台编程语言的衰败 JVM上的编程语言除了Java,其它还有很多,比如最近谷歌公司力捧JVM平台上的语言Kotlin.大数据用的Scala.构建系统用的Groovy..NET平台上的编程语言曾 ...

  9. 一些常用的 CSS 技巧和知识点

    作为一名前端工程师,CSS 是必备技能之一,然而在日常开发中,总有那么些时候,面对着炫酷的效果图,脑子里的 CSS 属性却一片空白,于是只能借助搜索引擎,在一堆复杂的介绍中找到需要的内容复制粘贴.有没 ...

  10. GitHub 热点速览 vol.10:疫情下的 GitHub

    作者:HelloGitHub-小鱼干 摘要:如果说上周的 GitHub 是股市附体 star 低迷不振,那么本周的 GitHub 像极了受到疫情影响而未开学的高校们,新生 GitHub 项少,能上 G ...