14.MySQL(二) 数据之表操作表内容操作Mysql 连接事务外键

数据之表操作

1.创建表

语法:CREATE TABLE table_name (column_name column_type);

create table student(
    -> id INT NOT NULL AUTO_INCREMENT,
    -> name CHAR(32) NOT NULL,
    -> age INT NOT NULL,
    -> regiiter_date DATE,
    -> PRIMARY KEY(id)         
    -> );

auto_increment 表示:自增1。写入内容为空时,默认从1,2,3...往下填充写入表格中。primary key:  表示约束(不能重复且不能为空); 加速查找not null: 不为空

查看表
show tables;      -->查看有哪些表
desc student;     --> 查看student表的信息
show create table student;    -->查看表student创建的信息

2.删除表

#drop table 表名

drop table student;

3.修改表

添加列:alter 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 表名  modify  列名 int, drop primary key;
   
添加外键:alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
删除外键:alter table 表名 drop foreign key 外键名称
   
修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
1.增加
ALTER TABLE student ADD sex CHAR(32);    #-->增加一列


2.删除
ALTER TABLE student DROP sex;     #-->删除一列


3.修改表名
ALTER TABLE student RENAME TO students;   #-->重命名

4.修改列名
ALTER TABLE students CHANGE regisiter_date register_date DATE;

#change 字段名,类型都可以改,modify只能改类型

表内容操作

1.插入数据

语法:
INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( value1, value2,...valueN );

插入数据:

mysql> INSERT INTO student(name,age,regisiter_date)
       -> VALUES('derek',22,'2017-01-01');

2.查看数据

语法
    
1.SELECT column_name,column_name
2.FROM table_name
3.[WHERE Clause]
4.[OFFSET M ][LIMIT N]

    查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
    SELECT 命令可以读取一条或者多条记录。
    你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
    你可以使用 WHERE 语句来包含任何条件。
    你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
    你可以使用 LIMIT 属性来设定返回的记录数。
1.SELECT * FROM student LIMIT 2 OFFSET 2;

#limit: 查几条数据
#offset: 从第几个开始查


2.SELECT * FROM student where id>1;

#条件判断

3.SELECT * FROM student where id>1 and age<22;

#多个条件

4.SELECT * FROM student where name like "De%";

#like模糊查询

3.修改

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

4.删除

delete from students where id>3;

5.排序

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

#--->按id倒叙排列

6.分组

1.按名字分组后,并且统计名字出现的次数
select name,count(*) from students group by name;

2.按名字分组后,把年龄加起来
select name,sum(age) from students group by name;

select name,sum(age) as rename_sumage from students group by name;
#加as,可以自定义sum(age)的名字

Mysql 连接

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

  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
交集
select * from A inner join B on A.a=B.b;

差集
select * from A left join B on A.a=B.b;
select * from A right join B on A.a=B.b;

并集
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选项 决定什么时候吧事务保存到日志里。
begin     -->开启

insert into  ......    -->要写入的内容

rollback;             -->回滚到原来状态

commit;             -->确认提交

外键

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据和云

层层升入:SQL极限调优之一次更新操作的N种优化可能

杨廷琨,网名 yangtingkun 云和恩墨技术总监,Oracle ACE Director,ACOUG 核心专家 最近进行了一次更新操作,整个处理和优化的过...

34180
来自专栏WindCoder

Discuz数据库security_failedlog错误及修复

最近跑了之前的论坛转了转,发现一直在报数据库中表security_failedlog错误,百度了好久,最终找到解决方案。

58010
来自专栏王磊的博客

MS SQL查询库、表、列数据结构信息汇总

前言 一般情况我们下,我们是知道数据库的表、列信息的(因为数据库是我们手动设计),但特殊情况下,如果你只能拿到数据库连接信息,也就是知道的一个数据库名的情况下,...

45040
来自专栏算法channel

MySQL|索引应用

可以先看下这篇理论介绍: MySQL|索引背后 01 MySQL的几种KEY PRIMARY KEY 有两个作用,一是约束作用(constraint),用来...

35570
来自专栏极客慕白的成长之路

SQL Sever基本知识

create table tablename(col_name1 type,col_name2 type,...) 在数据库school下创建一个student...

6020
来自专栏撸码那些事

MySQL——索引实现原理

在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式。

9620
来自专栏java达人

oracle、mysql 分页查询比较

1、 Oracle的分页查询语句 分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * ...

43490
来自专栏java达人

oracle、mysql 分页查询比较

1、 Oracle的分页查询语句 分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * ...

32480
来自专栏左瞅瞅,右瞅瞅

SaltStack——小叙(远程执行)

想要返回结果返回mysql 库中,返回是salt-minion 返回,所有的salt-minion 需要安装Mysql-python 依赖包:

23740
来自专栏Java修行之道

四种简单的sql语句(增删改查语句)

55140

扫码关注云+社区

领取腾讯云代金券