mysql数据库总结。
mysql
MySQL语法
MySQL采用结构化查询语言SQL (Structured Query Language)语言来操作数据库
SQL语句必须以 ; 结束
SQL语句分类
DDL(数据定义语言): create、drop、alter、truncate
DQL(数据查询语言): select、show
DML(数据操作语言): insert、update、delete
DCL (数据控制语言): grant、revoke、begin transaction、commit、roolback
MySQL存储引擎
MySQL数据表类型由存储引擎来决定,主要有6种类型:InnoDB 、BDB、MyISAM、ISAM、、Heap、Merge
InnoDB
支持事务
支持外键
不支持数据压缩
写速度较慢
MySQL5.5开始支持全文索引
占用更多的内存和磁盘空间来保留数据和索引
MyISAM
不支持事务
不支持外键
访问速度快
支持全文索引
数据库的备份还原
#方法一
mysqldump -h服务器 -P端口 -u用户名 -p密码 数据库名称 > 备份文件路径
source 备份文件路径
#方法二
直接备份数据库文件(注意:这种方法不适用于InnoDB存储引擎的表,而对于MyISAM存储引擎的表很方便。同时,还原时MySQL的版本最好相同)
#方法三
使用第三方工具 例如:Navicat for MySQL
命令行链接数据库
mysql -u root -p
数据库操作
#添加数据库
create database [if not exists] 库名 [[default] character set 编码方式]
#查看数据库
show databases 查看MySQL下有哪些数据库
show create database 库名 查看某个数据库的详细信息
#修改数据库
alter database 库名 [default] character set 编码方式
#删除数据库
drop database [if exists] 库名
数据表操作
#打开数据表所在的数据库
use 库名
#添加数据表
create table [if not exists] 表名(
字段名 数据类型 [约束],
字段名 数据类型 [约束],
......
字段名 数据类型 [约束]
)[ENGINE=MyISAM DEFAULT CHARSET=utf8 collate utf8_general_ci] ;
#查看数据表
show tables 查看当前数据下有哪此数据表
show create talbe 表名 查看建表信息
desc 表名 查看表结构
#修改数据表
#增加字段
alter table 表名 add [colum] 字段名 数据类型 [约束]
#修改字段名
alter table 表名 change 字段名 新字段名 数据类型 [约束]
#删除字段
alter table 表名 drop [colum] 字段名
#更改表名
alter table 表名 rename [to] 新表名
#删除数据表
drop table 表名
#清空数据表
truncate table 表名
数据库的增删改查
#插入记录
#插入一条新的记录
INSERT INTO 表名 [(字段名1,字段名2,…字段名n)] VALUES(‘值1’,‘值2’,…,’值n’);
#插入多条记录
INSERT INTO 表名 [(字段名1,字段名2,…字段名n)]
VALUES(‘值1’,‘值2’,…,‘值n’),
(‘值1’,‘值2’,…,‘值n’),
......
(‘值1’,‘值2’,…,’值n’);
#删除记录
#根据条件删除记录
delete from 表名 [where 条件子句] [order by 字段 asc|desc ] [limit 条数]
#在WHERE子句中,条件可以由一个或多个逻辑表达式组成,
#在WHERE子句中,可以通过逻辑操作符和比较操作符指定基本的表达式条件
#删除全部记录
truncate table 表名
#更新记录
update 表名 set 字段名=新值,字段名=新值,....... [where 条件子句] [order by 字段 asc|desc ] [limit 条数]
#查询记录
select 字段1,字段2,...... from 表名 [where 条件子句] [group by 字段][haveing 条件子句][order by 字段] [limit [起始值] 条数]
Alias 别名
#通过使用 SQL,可以为字段名称和表名称指定别名
SELECT 字段名 AS 别名 FROM 表名
SELECT * FROM 表名 AS 表别名
distinct 去重复
#关键词 DISTINCT 用于返回唯一不同的值
SELECT DISTINCT 字段名称 FROM 表名称
聚合函数
avg() 平均值
count() 总记录数,不包括null
max() 最大值
min() 最小值
sum() 求和
时期函数
now()
curdate()
curtime()
unix_timestamp()
from_unixtime()


数学函数
ABS()绝对值
ceil() 向上取整
floor 向下取整
round() 四舍五入
rand() 随机数
mod() 取余
字符串函数
concat() 连接字符串
replace() 替换
ucase() 大写
lcase() 小写
ltrim() 去左侧空格
rtrim() 去右侧空格
trim() 去两边空格

加密函数
password()
md5()
信息函数
database() 当前数据库
user() 当前用户
version 当前mysql版本
last_insert_id() 最后一条插入记录的主键id
多表插入
#将查询到的记录插入到已存在的表中
insert 表名(字段列表) select 语句
insert brand(brand_name) select brand_name from goods group by brand_name;
#创建新表并将查询到的记录插入到新表中
create 表名[(
字段名 数据类型 [约束],
............
)] select 语句 ;
create table category(
cid smallint unsigned key auto_increment
)
select cate_name from goods group by cate_name;
多表查询
select 字段列表 from 表1 [[as] 别名] 连接类型 表2 [[as] 别名] on 连接条件 where ......
连接类型
内连接 inner join
外联接
左外连接 left [outer] join
右外连接 right [outer] join
#内连接:显示左表及右表中符合连接条件的记录
#左外连接:显示左表全部记录及右表中符合连接条件的记录
#右外连接:显示右表全部记录及左表中符合连接条件的记录
类似于内连接的多表查询
select 字段列表 from 表1,表2,表3...... where 连接条件1 and 连接条件2 .......
select id,goods_name,cate_name,brand_name,price from goods as g,brand as b,category as c where g.brand_id=b.bid and g.cate_id=c.cid;
比较操作符


like模糊查询通配符
% 通配0个或多个字符 %李%
_ 通配一个字符
[abcdef] 通配字符列中的任何单一字符
[^abcdef] 通配不在字符列中的任何单一字符
逻辑操作符

MySQL数据类型
整型

int(10) unsigned zerofill //最大10位数字的无符号整数
浮点型

float[(总位数,小数点后位数)] 最大精确到小数点后7位
double[(总位数,小数点后位数)] 最大精确到小数点后15位
注:超过限定长度将进行四舍五入计算
字符型

布尔型
TRUE FALSE
日期型

实际开发当中,存储日期时,我们一般使用整型来存储时间戳,这样做便于我们进行日期的计算
注意事项
CHAR的长度范围在0~255之间
VARCHAR类型的长度范围0~65535
在使用CHAR和VARCHAR类型时,当我们传入的实际的值的长度大于指定的长度,字符串会被截取至指定长度
在使用CHAR类型时,如果我们传入的值的长度小于指定长度,实际长度会使用空格补至指定长度
在使用VARCHAR类型时,如果我们传入的值的长度小于指定长度,实际长度即为传入字符串的长度,不会使用空格填补
CHAR要比VARCHAR效率更高,但占用空间较大
BLOB和TEXT类型是可以存放任意大数据的数据类型
BLOB区分大小写,TEXT不区分大小写
ENUM和SET类型是特殊的的串类型,其列值必须从固定的串集中选择
ENUM只能选择其中一个值,SET可以选择多个值
约束
约束保证数据的完整性和一致性
约束分为表级约束和列级约束
约束类型包括
非空约束 not null
主键约束 primary key
唯一约束 unique key
默认约束 default
外键约束 foreign key
非空约束
空约束,字段值允许为null
非空约束,字段值不允许为null,必须赋值
#增加非空约束
create table mebmer(
username varchar(30) not null
);
自增长约束
必须与主键组合使用
默认情况下,起始值为1,增量为1
更改AUTO_INCREMENT初始值:
ALTER TABLE 表名称 AUTO_INCREMENT=1
create table mebmer(
id int unsigned primary key auto_increment
);
主键约束
[primary] key
主键约束
每张表只能存在一个主键
主键必须保证记录的唯一性
主键自动为not null
主键不必与自增长约束同时存在
create table mebmer(
id int unsigned auto_increment,
primary key (id)
);
默认约束
default
默认约束,当插入记录时,如果没有明确为字段赋值,则自动赋予默认值
create table mebmer(
sex enum('male','female') default 'male'
);
外键约束
foreign key
外键约束
数据表的存储引擎只能为InnoDB
外键列和参照列必须具有相似的数据类型
参照列必须存在索引
create table group(
id tinyint unsigned primary key auto_increment,
group varchar(20) unique not null
);
create table mebmer(
gid tinyint unsigned not null,
constraint member_group_key foreign key (gid) references group (id)
);
增加约束
#除外键约束外的其它约束
alter table 表名 change 字段名 新字段名 数据类型 约束
ALTER TABLE 表名 ADD UNIQUE/PRIMARY KEY(字段名称)
#外键约束
alter table 表名 add [constraint [约束名]] foreign key (外键字段名) references 被参照表 (被参照字段名)
删除约束
#删除唯一约束
ALTER TABLE 表名 DROP INDEX 字段名
#删除主键约束
ALTER TABLE 表名 DROP PRIMARY KEY
如果主键列存在自增长约束,删除主键约束前必须先删自增长约束
#删除外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 约束名
#删除默认值
ALTER TABLE 表名 ALTER 字段名 DROP DEFAULT;
done。
mysql数据库总结。的更多相关文章
- nodejs进阶(6)—连接MySQL数据库
1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...
- 当忘记mysql数据库密码时如何进行修改
因为长时间没有使用数据库了,或者把密码改完之后就忘了数据库密码,不能正常进入数据库,也无法修改密码,有一个简单的常用修改密码方式: 1.首先找到和打开mysql.exe和mysqld.exe所在的文件 ...
- MySQL数据库和InnoDB存储引擎文件
参数文件 当MySQL示例启动时,数据库会先去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等.在默认情况下,MySQL实例会按照一定 ...
- 一起学微软Power BI系列-使用技巧(1)连接Oracle与Mysql数据库
说起Oracle数据库,以前没用过Oracle不知道,但是这1年用Oracle后,发现真的是想狂吐槽,特别是那个.NET驱动和链接字符串,特别奇葩.总归是和其他数据库不一样,标新立异,不知道为何.另外 ...
- CentOS下mysql数据库常用命令总结
mysql数据库使用总结 本文主要记录一些mysql日常使用的命令,供以后查询. 1.更改root密码 mysqladmin -uroot password 'yourpassword' 2.远程登陆 ...
- [原创]java使用JDBC向MySQL数据库批次插入10W条数据测试效率
使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(100000),如何提高效率呢?在JDBC编程接口中Statement 有两个方法特别值得注意:通过使用addBatch( ...
- mysql数据库主从同步
环境: Mater: CentOS7.1 5.5.52-MariaDB 192.168.108.133 Slave: CentOS7.1 5.5.52-MariaDB 192.168. ...
- PDO连接mysql数据库
1.PDO简介 PDO(PHP Data Object) 是PHP 5 中加入的东西,是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接 ...
- mysql数据库开发常见问题及优化
mysql 数据库是被广泛应用的关系型数据库,其体积小.支持多处理器.开源并免费的特性使其在 Internet 中小型网站中的使用率尤其高.在使用 mysql 的过程中不规范的 SQL 编写.非最优的 ...
- 如何在删除ibdata1和ib_logfile的情况下恢复MySQL数据库
昨天,有个朋友对公司内部使用的一个MySQL实例开启binlog,但是在启动的过程中失败了(他也没提,为何会失败),在启动失败后,他删除了ibdata1和ib_logfile,后来,能正常启动了,但所 ...
随机推荐
- ElasticSearch中"distinct","count"和"group by"的实现
最近在业务中需要使用ES来进行数据查询,在某些场景下需要对数据进行去重,以及去重后的统计.为了方便大家理解,特意从SQL角度,方便大家能够理解ES查询语句. 1 - distinct ; { &quo ...
- Mysql 查询时间段是否可用,查询时间段是否有交集
最近遇到 类似, 会议室预订的模型, 基本上 是 会议室 + 时间段来检测是否被占用. 其实思路比较简单 , 一开始的思路是 去查询 自己选择的时间段 与数据库已经存在的时间段匹配 是否 可用, ...
- js中Function引用类型中一些常见且有用的方法和属性
Function类型 函数由于是Function类型的一个实例,所以函数名就是一个指向函数对象的指针,不会与某个函数死死的连接在一起,这也导致了js中没有真正的重载,但好处是,函数对象可以作为另一个函 ...
- Go语言【数据结构】数组
数组 简介 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形.字符串或者自定义类型.数组形式 numbers[0], numbers[1] ..., nu ...
- antd通过 filterDropdown 自定义--按某天时间搜索
import React, { Component } from 'react'; import { Table, Input, Button, Icon, DatePicker } from 'an ...
- 【翻译】REST framework JWT Auth(django rest framework-jwt)
JWT认证的REST框架 原文链接 概述 这个包提供对Django REST framework的JSON Web Token 认证支持. 需要满足条件 Python (2.7, 3.3, 3.4, ...
- C语言 - 可变参数再stm32中的应用
参考 C 可变参数 | 菜鸟教程 void func(const char* str,...) { ... } func的最后一个参数写成 ... ,表示可变参数, C语言的printf就是类似这种声 ...
- 强大的Grafana k8s 插件
原文参考: https://i4t.com/4152.html 参考:https://blog.csdn.net/mailjoin/article/details/81389700 插件链接:http ...
- 2019 同程旅游java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.同程等公司offer,岗位是Java后端开发,因为发展原因最终选择去了同程,入职一年时间了,之前面试了很多家公 ...
- Docker 安装 MySQL 学习笔记
https://www.runoob.com/docker/docker-install-mysql.html #docker search mysql #docker pull mysql:5.6 ...