文档章节

mysql

勤劳的开发者px
 勤劳的开发者px
发布于 2017/09/02 15:59
字数 2061
阅读 5
收藏 0
点赞 0
评论 0

一,数据库概述

1.什么是数据库?

  • 数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合.

  • 文件系统,数据的仓库

2.数据库管理系统?

  • 数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中的数据。

  • 软件

  • 数据库=数据的集合+数据库软件

    注意:通常情况下,经常会用数据库来表示他们使用的数据库软件,这经常会引起混淆,确切的说,数据库软件应该为数据库管理系统,数据库是通过数据库管理系统创建和操作的。

3.常见的关系型数据库

  • MYSQL :开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费.

  • Oracle:收费的大型数据库.Oracle公司的产品.Oracle收购SUN公司,收购MYSQL.

  • DB2:IBM公司的数据库产品,收费的.银行系统中.

  • SQLServer:MS公司.收费的中型的数据库.

  • SyBase:已经淡出历史舞台.提供了一个非常专业数据建模的工具PowerDesigner.

  • SQLite: 嵌入式的小型数据库,应用在手机端.

  • 和java相关的数据库: mysql,oracle

二,sql概述

1.什么是sql?

  • SQL:Structure Query Language。(结构化查询语言),通过sql语法操作数据库

  • SQL被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后来被国际化标准组织(ISO)采纳为关系数据库语言的国际标准。

  • 各数据库厂商(mysql,oracle,Sql Server)都支持ISO的SQL标准。 普通话

  • 各数据库厂商在标准的基础上做了自己的扩展。 数据库的方言

2.sql的分类

  • DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;

    ​ CREATE、 ALTER、DROP

  • DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);

    ​ INSERT、 UPDATE、 DELETE

  • DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;

    ​ grant

  • DQL(Data Query Language):数据查询语言,用来查询记录(数据)。---重点

    ​ SELECT

三,对数据库的CRUD

1,创建数据库

1.1语法

create database 数据库名 [character set 字符集][collate  校对规则]

字符集(charset):是一套符号和编码。

校对规则(collation):是在字符集内用于比较字符的一套规则,

2.查看数据库

2.1查看所有的数据库

  • show databases;

2.2查看数据库的定义

  • show create database 数据库名

3.删除数据库

  • drop database 数据库名;

4.修改数据库

  • alter database 数据库名 character set 字符集;

注意:

  • 是utf8,不是utf-8
  • 不是修改数据库名

5.其它操作

  • use 数据库名; 切换数据库
  • select database(); 查看正在使用的数据库

注意:

  • 在创建表之间一定要制定数据库. use 数据库名

四,对表的CRUD

1.创建表

1.1语法

 create table 表名(
        列名 类型 约束,
        列名 类型 约束,
        列名 类型 约束
​
    );

    int 字段;
    字段(列名) int;

1.2 类型

  • 整型 int——

    点型: float, float(5,2)--> 999.99, -999.99

  • 字符串: char(10); 固定长度,最大可以放10个字符 . 'aa ', 手机号码: 11位

    ​ varchar(10);可变长度,最大可以放10个字符. 'aaa'

  • 文件: BLOB 二进制

    注意: 在公司,存文件是把文件放在服务器(电脑)上,存放文件的路径.

  • 时间类型

    ​ date: yyyy-MM-dd; datatime:日期和时间; timeStamp: 时间戳

1.3 约束,

  • 即规则,类型集合里面的泛型 List<String> list ;

  • 作用:保证用户输入的数据保存到数据库中是正确的

约束种类:

  • not null; 非空
  • unique;唯一约束, 后面的数据不能和前面重复
  • primary key;主键约束(非空+唯一); id:作为数据的唯一标识,通常给id int类型设置主键约束,auto_increment null
  • auto_increment;自动增长列

id类型

  • 通常给id int类型设置主键约束,auto_increment
  • 通常给id设置为varchar类型,UUID

1.4练习

  • 创建一张学生表(含有id字段,姓名字段,性别字段. id为主键自动增长)

2.查看表

2.1查看所有的表

show tables;

2.2查看表的定义结构

desc 表名;

3.修改表

3.1语法

  • 增加一列;alter table 表 add 字段 类型 约束;
  • 修改列的类型约束; alter table 表 modify 字段 类型 约束 ;
  • 修改列的名称,类型,约束;alter table 表 change 旧列 新列 类型 约束;
  • 删除一列; alter table 表名 drop 列名;
  • 修改表名 ; rename table 旧表名 to 新表名;

4.删除表

drop table 表名;

 

五,对表里面数据的CRUD

1.插入数据

insert into 表(列,列..) values(值,值..);
insert into 表 values(值,值....)

注意:

  • 没有赋值的列,系统自动赋为null
  • 列名与列值的类型、个数、顺序要一一对应。
  • 值不要超出列定义的长度。
  • 如果插入空值,请使用null
  • 插入的日期和字符串,使用引号括起来。

命令行插入中文数据报错:

  • 关闭服务, net stop mysql
  • 修改配置文件 my.ini中客户端的编码为gbk
  • 重新打开命令行,开启服务, net start mysql

2.更新记录

2.1语法

    update 表 set 字段 = 值 ,字段 = 值 [where 条件]

 

3.删除记录(表还在)

3.1语法

delete from 表 [where条件];
truncate table 表;

区别:

  • DELETE 删除表中的数据,表结构还在;删除后的数据可以找回
  • TRUNCATE 删除是把表直接DROP掉,然后再创建一个同样的新表。删除的数据不能找回。执行速度比DELETE快。

4.查询记录

4.1语法

select [列名,列名] [*] [聚合函数][distinct 字段] from 表名 [WHERE --> group by -->having--> order by]

 

4.2.去重查询 (distinct 字段)

  • 把价格重复的给筛选

    select dinstinct price from product;

4.3别名查询 (字段 as 别名, as可以省略)

  • 查询商品名称和商品价格,商品价格通过别名‘价格’来显示

4.4运算查询(+,-,*,/等)

  • 把商品名,和商品价格+10查询出来

4.5条件查询

注意:

1.between...and...: 包含临界值 eg: between 3000 and 6000相当于: 3000<=price<=6000

2.模糊查询,like和通配符一起使用:

​ % ;多位(0~n)        ​ _ ;一位

4.6排序; order by 列名 asc(默认) desc

4.7聚合函数(--->聚集函数)

聚合函数是用来做纵向运算的函数

  • ​ count(*|字段);统计指定列不为NULL的记录行数
  • ​ sum();计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0
  • ​ max();计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算
  • ​ min();计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算
  • ​ avg();计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0

4.8分组 (group by 列)

  • 根据商品类别分组,统计不同商品类别的个数

  • 根据商品类别分组,统计不同商品类别的总价格

注意:

  • 凡和聚合函数同时出现的列名,一定要写在group by 之后

4.9分组后筛选(having)

  • having是分组后筛选,不能离开group by 单独存在
  • 有having一定有group by,有group by 不一定有having

where和having的区别

  • 1.having是在分组后对数据进行过滤.where是在分组前对数据进行过滤
  • 2.having后面可以使用聚合函数(统计函数)where后面不可以使用聚合函数
  • 3.WHERE是分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束。

顺序: select...from...where...group by...having...order by

 

 

© 著作权归作者所有

共有 人打赏支持
勤劳的开发者px
粉丝 2
博文 51
码字总数 108225
作品 0
荆州
程序员

暂无相关文章

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 5分钟前 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 8分钟前 ⋅ 0

Webpack 4 api 了解与使用

webpack 最近升级到了 v4.5+版 01 官方不再支持 node4 以下版本 官方不再支持 node4 以下版本官方不再支持 node4 以下的版本,所以如果你的node版本太低,先开始升级node吧!话说node10 ...

NDweb ⋅ 17分钟前 ⋅ 0

使用nodeJs安装Vue-cli

Vue脚手架就是一个Vue框架开发环境 脚手架的意思是帮你快速开始一个vue的项目,也就是给你一套vue的结构,包含基础的依赖库,只需要 npm install就可以安装,让我们不需要为了编辑或者一些其...

木筏笔歆 ⋅ 50分钟前 ⋅ 0

【微信小程序开发实战】0x00.开发前准备工作

写在开始 本人资深后端码农一枚,近期项目需求,接触到了微信小程序,将学习过程整理成文分享给小伙伴们,由于是边学边整理难免有表述不对的地方,望大家及时指正,感谢。 本人微信号: dream...

dreamans ⋅ 今天 ⋅ 0

linux redis的安装和php7下安装redis扩展

安装redis服务器 (1)下载安装包: $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz (2)编译程序: $ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make $ cd src &&......

concat ⋅ 今天 ⋅ 0

Guava EventBus源码解析

一、EventBus使用场景示例 Guava EventBus是事件发布/订阅框架,采用观察者模式,通过解耦发布者和订阅者简化事件(消息)的传递。这有点像简化版的MQ,除去了Broker,由EventBus托管了订阅&...

SaintTinyBoy ⋅ 今天 ⋅ 0

http怎么做自动跳转https

Apache 版本 如果需要整站跳转,则在网站的配置文件的<Directory>标签内,键入以下内容: RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)?$ https://%{SERVER_NAME......

Helios51 ⋅ 今天 ⋅ 0

Python爬虫,抓取淘宝商品评论内容

作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用python做个抓取淘宝商品评论的小爬虫! 思路 我们就拿“德州扒鸡”...

python玩家 ⋅ 今天 ⋅ 0

MySQL 内核深度优化

MYSQL数据库适用场景广泛,相较于Oracle、DB2性价比更高,Web网站、日志系统、数据仓库等场景都有MYSQL用武之地,但是也存在对于事务性支持不太好(MySQL 5.5版本开始默认引擎才是InnoDB事务...

java高级架构牛人 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部