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,后来,能正常启动了,但所 ...
随机推荐
- 为什么var可以重复声明
总结自:https://blog.csdn.net/DurianPudding/article/details/87953939 一言以蔽之:编辑器会在作用域判断这是重名声明时,忽略var直接赋值 首 ...
- Centos7安装部署Rabbitmq教程
依赖关系: 版本依赖一定要提前看清楚. RabbitMQ相关版本依赖关系查看 https://www.rabbitmq.com/which-erlang.html 可以看到要求版本Erlang21.3 ...
- Javacript Remove Elements from Array
參考自: https://love2dev.com/blog/javascript-remove-from-array/ 1. Removing Elements from End of Array ...
- [Swoole入门到进阶] [公开课] Swoole协程-Swoole4.4.4 提供 WaitGroup 功能
在 Swoole4 中可以使用 channel 实现协程间的通信.依赖管理.协程同步. 简单来说,WaitGroup 就是使用 channel 的机制,让主协程等待所有子协程结束后才退出的功能. Co ...
- centos7如何将docker容器配置成开机自启动
docker 服务器开机自启动: 1.systemctl is-enabled docker.service 检查服务是否开机启动 2.systemctl enable docker.service ...
- Website Scraping with Python 阅读笔记
第一章 工程涉及的基本工具:requests, beautiful soup, scrapy. 法规与技术约定:read the Terms & Conditions and the Priv ...
- python代码git上传
python代码git上传 1.每次上传代码之前需要先拉取线上的代码 操作如下:
- Spring学习指南-第二章-Spring框架基础(完)
第二章 Spring框架基础 面向接口编程的设计方法 在上一章中,我们看到了一个依赖于其他类的POJO类包含了对其依赖项的具体类的引用.例如,FixedDepositController 类包含 ...
- Codeforces Round #604
Beautiful Regional Contest 题意 题解 代码 Beautiful Sequence 题意 题解 代码 一个思路不够清晰的代码 Beautiful Mirrors with q ...
- STL源码剖析——序列式容器#4 Stack & Queue
Stack stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口,元素的新增.删除.最顶端访问都在该出口进行,没有其他位置和方法可以存取stack的元素. ...