一 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. python 常用模块介绍

    1.定义 模块:用来从逻辑上组织python代码(变量.函数.类,逻辑),本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test). 包:用来从逻辑上组织模块的,本质就是 ...

  2. Kafka配置文件及解释

    broker.id=0num.network.threads=9num.io.threads=24socket.send.buffer.bytes=102400listeners=PLAINTEXT: ...

  3. C++扬帆远航——10(求π)

    /* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:π.cpp * 作者:常轩 * 微信公众号:Worldhello ...

  4. ndarray数组的索引和切片

    索引:获取数组中特定位置元素的过程 切片:获取数组元素子集的过程 import numpy as np 一维数组 一维数组的索引和切片与python中的列表类似 索引:若元素个数为n,则索引下标可表示 ...

  5. TCP/IP协议族的四个层次

    OSI7层模型的小结 : 在7层模型中,每一层都提供一个特殊的网络功能.从网络功能的角度看:下面4层(物理层.数据链路层.网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主:第4 ...

  6. HandlerInterceptor ModelAndView null springMVC @ResponseBody

    本文来源https://blog.csdn.net/whiteforever/article/details/77457109 用了@RestController或者@ResponseBody注解之后 ...

  7. 伪元素 before 和 after 初探

    伪元素 before 和 after 初探 使用了 CodePen 做演示,欢迎点击预览 定义 首先来看 MDN 的定义: ::before 创建一个伪元素,作为已选中元素的第一个子元素,常通过 co ...

  8. c语言之学生管理系统

    0x00 学生管理系统 说到学生管理系统,对于每一个初学c语言的人都是一道不得不过的砍.不过,学习c,我觉得每个人都应该写一个学生管理系统,至于为什么,我想倘若连一个学生管理系统都写不好,哪么他的c是 ...

  9. Spring源码阅读笔记04:默认xml标签解析

    上文我们主要学习了Spring是如何获取xml配置文件并且将其转换成Document,我们知道xml文件是由各种标签组成,Spring需要将其解析成对应的配置信息.之前提到过Spring中的标签包括默 ...

  10. python之三元表达式,列表|字典推导式,函数对象

    #### 三元表达式: 就是if....else...的语法糖 # -- 1) 只能解决if...else...结构,其他if分支结构都不管 # -- 2)一个分支提供一个结果: 如果一个分支提供了多 ...