一 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. Selenium自动化测试实例-基于python

    一.Selenium介绍 Selenium是一个Web开源自动化测试框架,具有页面级操作.模拟用户真实操作.API从系统层面触发事件等特点. 1.版本 Selenium 1.0  Sever/Clie ...

  2. sql问题处理

    批量杀死MySQL连接 select concat('KILL ',id,';') from information_schema.processlist where Info like 'selec ...

  3. STM32 一个初始化EXTI的例子

    23 May 2017 » Hardware 注:STM32F407VGT6 with STM32F4 DSP and standard peripherals library v1.8.0 外部中断 ...

  4. vue 打包体积过大 实现懒加载 ????

    import Vue from ‘vue’ import Router from 'vue-router' //把路由对应的组件定义成异步组纪检 const hello = resolve => ...

  5. base64编码的图片在网页中显示

    <img @error="changeImgSrc(user)" :src="user.src" width="42" height= ...

  6. AI广度优先搜索算法,项目实战北京地图/贪心学院

    广度优先搜索算法详解地铁路线 北京很大,附上地铁图,不要迷路!!! 作为一个程序员,在北京,你很有可能住在回龙观地区,经常从龙泽上地铁,然后畅游北京. 当有一天,你老家的朋友来北京了,希望你能够带她去 ...

  7. Gorm 预加载及输出处理(一)- 预加载应用

    单条关联查询 先创建两个关联模型: // 用户模型 type User struct { gorm.Model Username string `gorm:"type:varchar(20) ...

  8. 转:标签中的href如何调用js

      在HTML中,<a>标签的href属性用于指定超链接的目标的URL.在所有浏览器中,链接的默认外观是: 未被访问的链接带有下划线而且是蓝色的 已被访问的链接带有下划线而且是紫色的 活动 ...

  9. HTML实体符号代码

    1. 特色的 © © © 版权标志 |   | 竖线,常用作菜单或导航中的分隔符 · · · 圆点,有时被用来作为菜单分隔符 ↑ ↑ ↑ 上箭头,常用作网页“返回页面顶部”标识 € € € 欧元标识 ...

  10. frida的简单实用

    一.环境 1.环境 1.手机运行服务端 2. 电脑端运行客户端3.进行端口转发 adb forward tcp:27042 tcp:27042 adb forward tcp:27043 tcp:27 ...