文档章节

MySQL数据库操作全集

Slimane
 Slimane
发布于 2017/03/28 15:34
字数 1953
阅读 16
收藏 1

MySQL数据库操作基础

  • 显示数据库
    show databases;

  • 判断是否存在数据库database_name,有的话先删除
    drop database if exists database_name;

  • 创建数据库
    create database database_name;

  • 删除数据库
    drop database database_name;

  • 使用该数据库
    use database_name;

  • 显示数据库中的表
    show tables;

  • 先判断表是否存在,存在先删除
    drop table if exists student;

  • 创建表
    create table student(
    id int auto_increment primary key,
    name varchar(50),
    sex varchar(20),
    date varchar(50),
    content varchar(100),
    foreign key(id) references classes(id)
    )default charset=utf8;

  • 外键alter table student add foreign key(id) references classes(id)

  • 外键约束SET FOREIGN_KEY_CHECKS=1

  • 主键 Alter table tabname add/drop primary key(col)

  • 根据已有的表创建新表:
    A:create table tab_new like tab_old (使用旧表创建新表)
    B:create table tab_new as select col1,col2… from tab_old definition only

  • 删除表
    drop table student;

  • 查看表的结构
    describe student; #可以简写为desc student;

  • 查看列:desc 表名;

  • 修改表名:alter table t_book rename to bbb;

  • 添加列:alter table 表名 add column 列名 varchar(30);

  • 删除列:alter table 表名 drop column 列名;

  • 修改列名MySQL: alter table bbb change nnnnn hh int;

  • 修改列名SQLServer:exec sp_rename't_student.name','nn','column';

  • 修改列名Oracle:lter table bbb rename column nnnnn to hh int;

  • 修改列属性:alter table t_book modify name varchar(22);

  • 插入数据
    insert into student values(null,'aa','男','1988-10-2','......');

  • 查询表中的数据
    select * from student; select id,name from student;

  • 修改某一条数据
    update student set sex='男' where id=4;

  • 删除数据
    delete from student where id=5;

  • and 且
    select * from student where date>'1988-1-2' and date<'1988-12-1';

  • or 或
    select * from student where date<'1988-11-2' or date>'1988-12-1';

  • between
    select * from student where date between '1988-1-2' and '1988-12-1';

  • in 查询制定集合内的数据
    select * from student where id in (1,3,5);

  • 排序 asc 升序 desc 降序
    select * from student order by id asc;

算术运算符

  • +(加)、 -(减)、 *(乘)、 /(求商)、 %(求余或者模)

比较运算符

  • 字母进行ASCII值比较,字母和数字比较的时候会自动把字母转换成0,字母数字组合的字符串会把开头的数字转换成相应的值,后面的字母丢掉,而开头是字母则为0
  • ’<=>’ 相等返回1,__可以__用来对NULL进行判断
  • ‘ = ’ 相等返回1,__不能__对NULL进行判断
  • ‘<>’或者 ’!= ’如果不相等,返回值为1;否则返回值为0。这两个运算符不能用于判断空值NULL
  • ’<= ’,’<’,’>=’,’>’两个操作数进行比较,符合关系时返回值为1 ,同样比较NULL值时返回NULL,
  • 使用BETWEEN AND 进行值区间判断(数字区间,字母表区间)
  • 使用IS NULL、ISNULL和IS NOT NULL判断NULL值和非NULL值
  • 使用LEAST运算符进行最小选择
  • 使用GREATEST运算符进行最大判断
  • 使用IN、NOT IN运算符进行集合包含判断 (不能匹配null值)
  • 使用运算符LIKE进行字符串相似度匹配运算 (按位比较,'_'代表其他字符)
  • 使用运算符REGEXP进行字符串正则匹配运算

逻辑运算符

  • 逻辑运算符的求值所得结果均为TRUE、FALSE或NULL。非零为真,遇NULL则NULL
  • NOT 或者 !
  • AND 或者 &&
  • OR 或者 ||
  • XOR(异或)

位操作运算符

  • 数字一律进行二进制运算
  • 位或(|)
  • 位与(&)
  • 位异或(^ )
  • 位左移(<<)
  • 位右移(<<)
  • 位取反(~)

分组查询

  • 聚合函数
    select max(id),name,sex from student group by sex;
    select min(date) from student;
    select avg(id) as '求平均' from student;
    select count(*) from student; #统计表中总数
    select count(sex) from student; #统计表中性别总数 若有一条数据中sex为空的话,就不予以统计~
    select sum(id) from student;

  • UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。

  • EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。

  • INTERSECT 运算符 INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。

  • 查询第i条以后到第j条的数据(不包括第i条)
    select * from student limit 2,5; #显示3-5条数据

  • 修改表的名字 格式:alter table tbl_name rename to new_name
    alter table c rename to a;

  • 表结构修改
    create table test
    (
    id int not null auto_increment primary key, #设定主键
    name varchar(20) not null default 'NoName', #设定默认值
    department_id int not null,
    position_id int not null,
    unique (department_id,position_id) #设定唯一值
    );

  • 向表中增加一个字段(列) 格式:alter table tablename add columnname type;/alter table tablename add(columnname type);
    alter table test add columnname varchar(20);

  • 修改表中某个字段的名字
    alter table tablename change columnname newcolumnname type; #修改一个表的字段名
    alter table test change name uname varchar(50);
    select * from test;

  • 表position 增加列test
    alter table position add(test char(10));

  • 表position 修改列test
    alter table position modify test char(20) not null;

  • 表position 修改列test 默认值 alter table position alter test set default 'system';

  • 表position 去掉test 默认值
    alter table position alter test drop default;

  • 表position 去掉列test
    alter table position drop column test;

  • 表depart_pos 删除主键
    alter table depart_pos drop primary key;

  • 表depart_pos 增加主键
    alter table depart_pos add primary key PK_depart_pos (department_id,position_id);

  • 修改数据 update c set age=66 where id=2;
    update c set name='花花',age=21,sex='女' where id=2
    delete from c where age=21;

  • 常用查询语句 select name,age ,id from c
    select * from c where age>40 and age<60; #and
    select * from c where age<40 or age<60; #or
    select * from c where age between 40 and 60 #between
    select * from c where age in (30,48,68,99); #in 查询指定集合内的数据
    select * from c order by age desc; #order by (asc升序 des降序)

  • 分组查询 SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP; SUM()会求出总数,设为null,而coalesce会把不在name中的设为总数,也就是把null设为总数。 from :指定查询的表
    where :查询数据的过滤条件
    group by : 对where子句的查询结果进行分组
    having : 对分组的结果进行 条件限制
    order by :对查询结果进行排序,desc降序/asc 升序 limit :对查询的结果进行限制
    procedure : 查询存储过程返回的结果集数据

  • 聚合函数
    select min(age) from c;
    select avg(age) as '平均年龄 ' from c;
    select count(*) from c; #统计表中数据总数
    select sum(age) from c; sge要求是数值型 select min/max(age) from c; 求age的最小/大值 SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM SUM()会求出结果项为null的设为总数

  • where 子句和匹配用语
    BETWEEN AND :在两数之间
    NOT BETWEEN AND :不在两数之间
    IN <值表> :是否在特定的集合里(枚举)
    NOT IN <值表> :与上面相反
    LIKE :是否匹配于一个模式
    IS NULL(为空的)或 IS NOT NULL(不为空的)
    REGEXP 匹配一个正则表达式

  • 联合查询
    INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
    LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录(NULL)。
    RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录(NULL) FULL/CROSS JOIN: 全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录

  • 用文本方式将数据装入数据库表中(例如D:/mysql.txt)
    load data local infile "D:/mysql.txt" into table MYTABLE;

  • 导入.sql文件命令(例如D:/mysql.sql)
    source d:/mysql.sql; #或者 /. d:/mysql.sql;

  • 备份 USE master
    EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
    --- 开始 备份
    BACKUP DATABASE pubs TO testBack

© 著作权归作者所有

Slimane
粉丝 1
博文 14
码字总数 10945
作品 0
深圳
程序员
私信 提问
Java系列文章(全)

JVM JVM系列:类装载器的体系结构 JVM系列:Class文件检验器 JVM系列:安全管理器 JVM系列:策略文件 Java垃圾回收机制 深入剖析Classloader(一)--类的主动使用与被动使用 深入剖析Classloader(二...

www19
2017/07/04
0
0
python资料全集

python: 微信公众号开发小记——2.80端口上的服务 python: 微信公众号开发小记——3.接入三方登录 使用python编写一个壁纸网站的简单爬虫 python: python List 用法 Python 中各个时间复杂度...

d_watson
2016/04/15
185
0
「mysql优化专题」详解引擎(InnoDB,MyISAM)的内存优化攻略?(9)

上一篇我们讲了关于视图应用与优化,本篇我们讲解内存优化。本篇短小精悍,通俗易懂。 注意:以下都是在MySQL目录下的my.ini文件中改写。 一、InnoDB内存优化 InnoDB用一块内存区域做I/O缓存...

java进阶架构师
2017/12/17
0
0
Mysql InnoDB 为啥选择B+树索引

前言 Mysql数据库中的常见索引有多种方式,例如Hash索引,B-树索引,B+树索引,但是为啥mysql中默认是采用B+树索引索引呢?下面对这三种索引学习总结一下。B+树到底有啥优势? B-树 B-树,这里...

dragon_tech
03/18
38
0
技术分享 | 我对 MySQL 隔离级别的剖析

原创: 姚嵩 术式之后皆为逻辑,一切皆为需求和实现。希望此文能从需求、现状和解决方式的角度帮大家理解隔离级别。 隔离级别的产生 在串型执行的条件下,数据修改的顺序是固定的、可预期的结...

爱可生
06/26
29
0

没有更多内容

加载失败,请刷新页面

加载更多

 介绍一款优秀的通用管理权限快速开发框架

这是一套以权限管理为主的轻量化快速开发框架,配置有流程、专业表单、权限、app、企业微信等基础功能模块,在开发通用软件的效率上很有优势。 软件平台常用研发需求分析 《那些年我们一起做...

我想造火箭
38分钟前
12
0
ElasticDL:蚂蚁金服开源基于 TensorFlow 的弹性分布式深度学习系统

9 月 11 日,蚂蚁金服在2019谷歌开发者大会上海站上开源了 ElasticDL 项目,这是业界首个基于 TensorFlow 实现弹性深度学习的开源系统。 开源地址为:https://github.com/sql-machine-learni...

SOFAStack
45分钟前
14
0
CSS--渐变

一、什么是渐变 多种颜色平缓变化的一种显示效果 二、渐变的主要元素 色标:一种颜色,以及出现的位置,一个渐变至少两种色标 三、渐变的分类 1、线性渐变 以直线的方式来填充渐变色 backgr...

wytao1995
今天
13
0
Java通过模板生成PDF再转换为图片

1、添加maven依赖 <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.13.1</version></dependency><dependency> <g......

醉美閑聖
今天
9
0
SpringBoot-MVC RequestBody中LocalDateTime的自适应配置

请求的json报文中可能会出现 一下几种: ['2019-01-01','2019-01-01 12:03:34','20190101120334'] 但是接收的Request实体类日期字段是LocalDateTime类型 LocalDateTime applyDate; 希望的情况......

汉堡OSC
今天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部