tnblog
首页
视频
资源
登录

MySQL数据库基础

6725人阅读 2019/8/18 11:19 总访问:169700 评论:1 收藏:0 手机
分类: MySQL


1 数据库和表操作


2 数据操作


3 高级查询


4 mysql管理


1 数据库和表操作


数据库


创建:create database 数据库名 [default character set 字符集] [collate utf8_general_ci];


删除:drop database 数据库名;


切换:use 数据库名;


查看:show databases;



数据表


创建:create table 表名(字段名 数据类型 数据类型属性)engine=存储引擎

自增列: auto_increment


注释标识: increment

查看表: show tables;


查看表结构: describe 表名;


删除:drop table 表名;


复制:


create table 新表名 select 字段 from 旧表名;——不能复制键


create table 新表名 like 旧表名; --可以复制表结构,不能复制数据


修改:


alter table 表名 add 字段名 数据类型 数据类型属性;——添加字段


alter table 表名 change 字段名 新名称 数据类型 数据类型属性;——修改字段


alter table 表名 drop 字段名;——删除字段


alter table 表名 rename to 新表名;——修改表名称


alter talbe 表名 add primary key(主键列);——添加主键



2 数据操作


添加数据:


insert into 表名[(字段列表)] values(值列表);

insert into 表名[(字段列表)] values(值列表),(值列表),(值列表),....;


insert into 表名 set 字段名=值,字段名=值,....;


insert into 表名 select 字段列表 from 表名;


指定了auto_increment的列,在插入时:


如果把一个NULL插入到一个AUTO_INCREMENT数据列里去,MySQL将自动生成下一个序列编号。编号从1开始,并1为基数递增。


当插入记录时,没有为AUTO_INCREMENT明确指定值,则等同插入NULL值。


当插入记录时,如果为AUTO_INCREMENT字段明确指定了一个数值,则会出现两种情况:


    情况一,如果插入的值与已有的编号重复,则会出现出 错信息,因为AUTO_INCREMENT数据列的值必须是唯一的;


    情况二,如果插入的值大于已编号的值,则会把该插入到数据列中,并使在下一个编号将从这个新值开始递增。换句话说,就是自增字段可以跳过一些编号。


被delete语句删除的id值,除非sql中将id重新插入,否则前面空余的id不会复用。


查看当前值:show variables like '%auto_increment%';


修改AUTO_INCREMENT字段的起始值:

alter table table_name AUTO_INCREMENT=n


配置auto-increment-increment(自增量)&auto-increment-offset(初始值)的值:


(1):修改配置文件,重启mysqld


    vi my.cnf


   


    auto-increment-increment = 2


    auto-increment-offset = 2


    加入到mysqld相关的配置中


(2):通过set命令修改,不需要重启mysqld,一般需要用set global来设置


set global auto_increment_increment=2;

set global auto_increment_offset=2;


修改数据:


update 表名 set 字段名=值,字段名=值,.... [where 条件表达式];


删除数据:


delete from 表名 [where 条件表达式];


truncate table 表名;


区别:

delete是一种DML(数据操作语言),事务提交后生效;而truncate是一种DDL(数据定义语言),不能够确保事务的安全性


delete删除数据不会释放表空间,而truncate删除数据后重新创建表,释放表空间


delete删除数据后自增列继续累加;而truncate删除后自增列还原为初始值



查询数据:


select 字段列表 from 表名 [where 条件表达式];



3 高级查询


联合查询:将两张或多张表的数据组合在一个结果集显示


交叉连接:select * from 表1,表2,....; 注意:结果返回笛卡尔积


内连接:select * from 表1 inner join 表2 on 连接条件


外连接:select * from 表1 left/right join 表2 on 连接条件


自连接:select * from 表名 别名1,表名 别名2 on 连接条件



子查询:将一个查询语句放在其它语句中


将子查询看做一张表:select * from (select * from 表名) 别名;


将子查询看做条件:select * from 表名 where 字段=(select 字段 from 表名)


将子查询用在更新语句中:delete from 表名 where id in(select id from 表名)



模糊查询:得到和指定值相匹配的数据集合


select 字段列表 from 表名 where 字段名 like ?;


匹配符:%(匹配0个或多个任意字符)


_(匹配任意一个字符)


[范围](匹配指定范围内的单个字符)    name like [abcde]  <==>  name='a' or name='b' or name='c' or name='d' or name='e'


[^范围](匹配不在指定范围内的单个字符)    name like [^ab]  <==>  name!='a' and name!='b'



分页:limit关键字


select * from student limit (当前页-1)*显示条数,显示条数;



4 mysql管理


说明:在mysqladmin客户端下操作


数据备份:


备份单个数据库或表:mysqldump -h数据库服务器主机 -u用户名 -p密码 数据库名 [表名] > 文件路径.sql


备份多个数据库或表:mysqldump -h数据库服务器主机 -u用户名 -p密码 --database 数据库1 数据库2 > 文件路径.sql



数据还原:


mysql -h数据库服务器主机 -u用户名 -p密码 数据库名 < 文件路径.sql



性能优化:


优化查询:


为字段建立索引,索引都会占用一定的内存,适当即可


尽可能不要使用*



优化数据库服务器:my.ini配置文件


key_buffer_size:索引缓冲可以使用内存数量,值越大可以使用的内存越大


table_cache:表高速缓冲时占用的内存大小


评价

剑轩

2019/8/18 20:32:12

大神教我学mysql!

mysql主从复制+读写分离

使用Mysql读写分离和主从复制的原因:*单台MySQL服务器的安全性,高可用性,高并发都是不满足实际的生产需要。介绍:1.MySQ...

mysql控制台插入中文数据报错1366解决

计算机配置: windows系统.数据库:MySQL5.5.如图 : 下图为表结构信息:通过 show full columns from userinfo;查询所得 na...

mysql 游标创建

游标:可以来存储一个结果集,可以通过遍历来访问到每一个数据需求:分表数据。 把一张表的数据根据需求分离,创建不同的表...

mysql 存储过程报错:delimiter

最近刚学sql,学到了存储过程,每当练习的时候就一直出现问题。 现在记录CREATEPROCEDUREproc_out(OUTstuidINT) begin se...

mysql 视图的(增删改 查)

要显示视图的定义,需要在SHOWCREATEVIEW子句之后指定视图的名称, 我们先来创建几张表,完事后在进行演示:--用户信息表...

mysql概述与安装配置

1996年首次发行,对于初学者来说,MySQL很容易上手MySQL数据库MySQL 是开源的,所以你不需要支付额外的费用。MySQL 支持大...

mysql存储引擎和数据类型

一 了解MySQL存储引擎什么是MySQL存储引擎?MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技...

本地mysql重置密码

原理:通过跳过表授权,跳过密码直接在表里更新密码1. 找到my.ini一般在C:\Program Files\MySQL\MySQL Server 5.7\bin12345...

mysql基础

1.创建、修改和删除 表是数据库存储数据的基本单位、一个表包含若干个字段或记录、表的操作包括创建新表、修改表和删除表。...

EF连接mysql连接mysql数据库操作中文数据乱码解决方法

修改数据库的连接字符器在连接字符器添加charset=gb2312。注意事项:(1)字符编码不支持UTF8。(2)必须使用规定编码。示例:&...

EF连接mysql数据库

注意事项准备工作(1)下载MySQL数据库软件6.6.6版本。 (2)下载MySQL数据库mysql-connector-net-6.6.6两者不一样都不能少。(...

VS2017安装mysql加载驱动

部署安装环境运行MySQL和VS2017软件下载MySQL-for-visualstudio-msiMySQL-connector-net-6.6.6-msi安装版本6.10.5和6.9.9在...

shell脚本强制修改mysql --root密码

话不多说直接拿去撸;PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATHread -p &quot...

Navicat 连接mysql时报错代码1405

好久不见我们又见面了今天给大家分享的是Navicat连接mysql时报1405的错 话不多说直接上图片遇到这个错时第一种情况:看一...

mysql未能加载文件或程序集“Ubiety.Dns.Core”或它的某一个依赖项 问题的解决

在VS2019中使用Nuget的方式添加了最新的MySQL包 MySql.Data 8.0.19 ,默认添加了个Ubiety.Dns.Core,不知道有什么用,但是...
sometimes ever,sometimes never
排名
21
文章
27
粉丝
11
评论
12
MySQL数据库基础
剑轩 : 大神教我学mysql!
MySQL概述与安装配置
剑轩 : PHP是目前最流行的 Web 开发语言
JAVA8 十大新特性详解
叼着奶瓶逛酒吧 : 文章写得真心不错,加油哈
Java学习 - Java语言基础
剑轩 : 每个小标题颜色加深一点会更好哦
Java学习 - Java语言简介
剑轩 : 请注意,java大神开讲了
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术