数据之表操作

1.创建表

  1. 语法:CREATE TABLE table_name (column_name column_type);
  2.  
  3. create table student(
  4. -> id INT NOT NULL AUTO_INCREMENT,
  5. -> name CHAR(32) NOT NULL,
  6. -> age INT NOT NULL,
  7. -> regiiter_date DATE,
  8. -> PRIMARY KEY(id)
  9. -> );
  10.  
  11. auto_increment 表示:自增1。写入内容为空时,默认从1,2,3...往下填充写入表格中。primary key 表示约束(不能重复且不能为空); 加速查找not null: 不为空
  12.  
  13. 查看表
    show tables; -->查看有哪些表
    desc student; --> 查看student表的信息
    show create table student; -->查看表student创建的信息

2.删除表

  1. #drop table 表名
  2.  
  3. drop table student;

3.修改表

  1. 添加列:alter table 表名 add 列名 类型
  2. 删除列:alter table 表名 drop column 列名
  3. 修改列:
  4. alter table 表名 modify column 列名 类型; -- 类型
  5. alter table 表名 change 原列名 新列名 类型; -- 列名,类型
  6.  
  7. 添加主键:
  8. alter table 表名 add primary key(列名);
  9. 删除主键:
  10. alter table 表名 drop primary key;
  11. alter table 表名 modify 列名 int, drop primary key;
  12.  
  13. 添加外键:alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
  14. 删除外键:alter table 表名 drop foreign key 外键名称
  15.  
  16. 修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
  17. 删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

方法

  1. 1.增加
  2. ALTER TABLE student ADD sex CHAR(32); #-->增加一列
  3.  
  4. 2.删除
  5. ALTER TABLE student DROP sex; #-->删除一列
  6.  
  7. 3.修改表名
  8. ALTER TABLE student RENAME TO students; #-->重命名
  9.  
  10. 4.修改列名
    ALTER TABLE students CHANGE regisiter_date register_date DATE;
  11.  
  12. #change 字段名,类型都可以改,modify只能改类型

表内容操作

1.插入数据

  1. 语法:
  2. INSERT INTO table_name ( field1, field2,...fieldN )
  3. VALUES
  4. ( value1, value2,...valueN );
  5.  
  6. 插入数据:
  7.  
  8. mysql> INSERT INTO student(name,age,regisiter_date)
  9. -> VALUES('derek',22,'2017-01-01');

 mysql> INSERT INTO student(name,age,regisiter_date)
         -> VALUES('jack',20,'2017-03-03');

  1. INSERT INTO student(name,age,regisiter_date) VALUES('Tom',25,'2017-05-05');
    INSERT INTO student(name,age,regisiter_date) VALUES('David',25,'2017-07-07');
  2.  
  3. SELECT * FROM student; -->看表里面的内容

2.查看数据

  1. 语法
  2.  
  3. 1.SELECT column_name,column_name
  4. 2.FROM table_name
  5. 3.[WHERE Clause]
  6. 4.[OFFSET M ][LIMIT N]
  7.  
  8. 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
  9. SELECT 命令可以读取一条或者多条记录。
  10. 你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
  11. 你可以使用 WHERE 语句来包含任何条件。
  12. 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0
  13. 你可以使用 LIMIT 属性来设定返回的记录数。

语法

  1. 1.SELECT * FROM student LIMIT 2 OFFSET 2;
  2.  
  3. #limit: 查几条数据
  4. #offset: 从第几个开始查
  5.  
  6. 2.SELECT * FROM student where id>1;
  7.  
  8. #条件判断
  9.  
  10. 3.SELECT * FROM student where id>1 and age<22;
  11.  
  12. #多个条件
  13.  
  14. 4.SELECT * FROM student where name like "De%";
  15.  
  16. #like模糊查询

3.修改

  1. update students set name = "Eric" where id=3;

4.删除

  1. delete from students where id>3;

5.排序

  1. 排序
  2. select * from order by asc - 根据 “列” 从小到大排列
  3. select * from order by desc - 根据 “列” 从大到小排列
  4. select * from order by 1 desc,列2 asc - 根据 “列1 从大到小排列,如果相同则按列2从小到大排

方法

  1. select * from students order by id desc;
  2.  
  3. #--->按id倒叙排列

6.分组

  1. 1.按名字分组后,并且统计名字出现的次数
  2. select name,count(*) from students group by name;
  3.  
  4. 2.按名字分组后,把年龄加起来
  5. select name,sum(age) from students group by name;
  6.  
  7. select name,sum(age) as rename_sumage from students group by name;
  8. #加as,可以自定义sum(age)的名字

Mysql 连接

JOIN 按照功能大致分为如下三类:

  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

  1. 交集
  2. select * from A inner join B on A.a=B.b;
  3.  
  4. 差集
  5. select * from A left join B on A.a=B.b;
  6. select * from A right join B on A.a=B.b;
  7.  
  8. 并集
  9. select * from A left join B on A.a=B.b union select * from A right join B on A.a=B.b;

事务

MySQL 事务主要用于处理操作量大,复杂度高的数据。

特性: 

  • 1、事务的原子性:一组事务,要么成功;要么撤回。
  • 2、稳定性 : 有非法数据(外键约束之类),事务撤回。
  • 3、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。
  • 4、可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit选项 决定什么时候吧事务保存到日志里。
  1. begin -->开启
  2.  
  3. insert into ...... -->要写入的内容
  4.  
  5. rollback; -->回滚到原来状态
  6.  
  7. commit; -->确认提交

外键

MySQL支持外键的存储引擎只有InnoDB , 在创建外键的时候 , 要求父表必须有对应的索引 , 子表在创建外键的时候也会自动创建对应的索引

14.MySQL(二)的更多相关文章

  1. 转载:Centos7 从零编译Nginx+PHP+MySql 二

    序言 这次玩次狠得.除了编译器使用yum安装,其他全部手动编译.哼~ 看似就Nginx.PHP.MySql三个东东,但是它们太尼玛依赖别人了. 没办法,想用它们就得老老实实给它们提供想要的东西. 首先 ...

  2. python Mysql (二)

    Mysql (二) 一. 事务 a.数据库开启事务命令 1 2 3 4 #start transaction 开启事务 #Rollback 回滚事务,即撤销指定的sql语句(只能回退insert de ...

  3. MySQL二进预编译制安装

    +++++++++++++++++++++++++++++++++++++++++++标题:MySQL二进预编译制安装时间:2019年2月25日内容:MySQL二进制预编译安装重点:MySQL二进制预 ...

  4. MySQL(二) 数据库数据类型详解

    序言 今天去健身了,感觉把身体练好还是不错的,闲话不多说,把这个数据库所遇到的数据类型今天统统在这里讲清楚了,以后在看到什么数据类型,咱度应该认识,对我来说,最不熟悉的应该就是时间类型这块了.但是通过 ...

  5. 【千纸诗书】—— PHP/MySQL二手书网站后台开发之知识点记录

    前言:使用PHP和MySQL开发后台管理系统的过程中,发现有一些通用的[套路小Tip],这里集中记录一下.结合工作中ing的后台业务,我逐渐体会到:除了技术知识外.能使用户体验好的“使用流程设计”积累 ...

  6. MYSQL 二次筛选,统计,最大值,最小值,分组,靠拢

    HAVING 筛选后再 筛选 SELECT CLASS,SUM(TOTAL_SCORES) FROM student_score GROUP BY CLASS HAVING SUM(TOTAL_SCO ...

  7. mysql 二十余种报错注入姿势

    1.floor()  floor 和group by 搭配使用 利用group by 的key唯一性 和mysql 编码执行顺序导致二次执行产生不同key ))) ) 数值型注入时 不用闭合‘  进行 ...

  8. MYSQL(二)

    上一篇文章讲的是mysql的基本操作,这一篇会有一点难以理解,本节主要内容mysql视图,存储过程,函数,事务,触发器,以及动态执行sql 视图view 视图是一个虚拟表,其内容由查询定义.同真实的表 ...

  9. Linux Ubuntu从零开始部署web环境及项目 -----tomcat+jdk+mysql (二)

    上一篇介绍如何在linux系统下搭建ssh环境 这篇开始将如何搭建web服务器 1,下载文件 在官网下载好 tomcat.jdk.mysql的linux压缩包 后缀名为.tar.gz 并通过xftp上 ...

随机推荐

  1. ofBiz-groovy-freemarker

    ofBiz-groovy-freemarker根据浏览器的地址不同进入不同的页面 第一步:(2选一)创建groovy文件,或者java文件.在文件中定义变量 要放在 request.setAttrib ...

  2. Java设计模式之职责链设计模式

    1.什么是-职责链设计模式 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求.发出这个请求 ...

  3. 购买DigtalOcean VPS 安装Wordpress 攻略

    前言:用虚拟主机用的有点不爽了.刚好DigitalOcean的VPS这么廉价,这次来玩下"高大上"的VPS. 1. 购买VPS 基于国内的VPS价格比較贵,加上要备案.就选择了国外 ...

  4. 开发指南专题六:JEECG微云高速开发平台代码生成

    开发指南专题六:JEECG微云高速开发平台代码生 1.1. 代码生成扫描路径配置 用代码生成器生成代码后.须要进行相关配置配置,扫描注入control.service.entity等; 具体操作过程例 ...

  5. LDA主题模型学习笔记5:C源代码理解

    1.说明 本文对LDA原始论文的作者所提供的C代码中LDA的主要逻辑部分做凝视,原代码可在这里下载到:https://github.com/Blei-Lab/lda-c 这份代码实现论文<Lat ...

  6. C++ - 复制容器(container)的元素至还有一个容器

    复制容器(container)的元素至还有一个容器 本文地址: http://blog.csdn.net/caroline_wendy C++复制容器(container)元素, 能够使用标准库(ST ...

  7. 对使用多个swiper下标有时显示不出来的问题

    这久写了一个网页,其中有很多的轮播图及tab页面切换,就使用了swiper框架,有时一个网页要用到6-8个,如此就出现了下图这种问题: 有时刷新看不到,有时又能看到,tab切换过去的页面也看不到,其实 ...

  8. Redis 订阅发布 - Jedis实现

    Redis 订阅发布 - Jedis实现 我想到使用Redis的订阅发布模式是用来解决推送问题的-. 对于概念性的叙述,多多少少还是要提一下的: ​ 什么是Redis发布订阅?Redis发布订阅是一种 ...

  9. 解决iOS手势冲突问题

    今天在做一个效果的时候,由于子视图和父视图都有响应的事件,子视图的事件理所当然被父视图拦截掉了,接下来就做分析解决 1.  tableviewcell可以触发点击,同时tableview的父视图有点击 ...

  10. ES6之Symbol

    ES6中Symbol是为了防止属性名冲突而引入的,是独一无二的.Symbol值是通过Symbol函数生成.Symbol值不能与其他类型的值运算否则会报错且Symbol的值可以转换为字符串或者是布尔值但 ...