![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL基础
MySQL学习笔记
万里归来少年心
这个作者很懒,什么都没留下…
展开
-
SQL优化(五)索引长度
在SQL执行计划中,key_len 表示索引长度,经常用于判断复合索引是否被完全使用。先说结论:在utf8编码方式下,一个字符占3个字节。 如果索引字段可以为null,MySQL会使用1个字节标识。 如果索引字段的类型长度可变,MySQL会使用2个字节标识。 下面详细分析SQL执行计划中的索引长度。1.建表、建索引、插入数据 建立一个person表,仅有非空n...原创 2018-09-20 16:00:02 · 7075 阅读 · 3 评论 -
SQL优化(四)执行顺序
在“SQL优化(三)”中,我们分析了当id值相同时,SQL的执行顺序。这一篇将分析id值不同时SQL的执行。 先说结论:id越大,越先执行;id相同时,从上到下顺序执行。 为了验证上述结论,对于执行相同任务的等价查询语句,分别分析其执行过程。 任务:“查询教授SQL课程的老师的描述”,相关的表及数据,请参考“SQL优化(一)"。1. id值相同 先构造i...原创 2018-09-15 07:49:11 · 348 阅读 · 0 评论 -
SQL优化(三)执行顺序
对“SQL优化(一)” 中创建的表执行增删改查等操作,并查看这些操作的执行过程。如“查询课程编号为2 或教师证编号为3 的老师信息”。相应的SQL查询语句如下:select Teacher.* from Teacher, Course, TeacherCard where Teacher.Id = Course.TeacherID and Teacher.CardID = Teach...原创 2018-09-14 08:58:57 · 817 阅读 · 0 评论 -
SQL优化(二)执行计划
查询执行计划的格式是:explain + SQL语句explain select * from Teacher; 执行结果: 上述各项的含义如下:名称 含义 id 查询编号 select_type 查询类型 table 表名 type 类型 possible_keys 预测用到的索引 key...原创 2018-09-13 14:00:12 · 337 阅读 · 0 评论 -
SQL优化(一)建表
1.建表 建立课程表(Course),教师表(Teacher),教师信息表(TeacherCard)。 CREATE TABLE Course ( ID int(3), Name varchar(20), TeacherID int(3)); CREATE TABLE Teacher ( ID int(3), Name varchar(20), C...原创 2018-09-13 09:09:45 · 2755 阅读 · 0 评论 -
MySql 数据库优化原则
1.定长与变长分离 类型为定长的列,如int char(4) time等,放在一个表中。 类型为变长的列,varchar text blob,放在另一个表中。 两张表通过主键关联起来。2.常用和不常用分离 常用字段和不常用字段分离。 将常用字段,如个人信息表中的姓名,出生日期,电话放在一张表中。 将不常用字段,如个人信息表中的个人简介,放在另一张表...原创 2019-05-15 14:22:27 · 198 阅读 · 0 评论 -
memcached增删改查命令
1.查看帮助memcached.exe -help2.启动memcached.exe -vvv 默认使用11211端口,最大占用64M内存。也可以使用参数 -m 64 -p 112113.客户端连接memcachedTelnet 127.0.0.1 112114.添加 向内存添加一行新记录。语法:add key flag expire length (...原创 2019-05-15 10:43:32 · 195 阅读 · 0 评论 -
MySql 存储过程(procedure)实例
1.声明变量delimiter $$create procedure p2()begin declare age int default 0; declare height int default 160; select concat('年龄是', age, '身高是',height);end $$delimiter ; 执行结果mysql> call...原创 2019-05-09 14:30:00 · 823 阅读 · 1 评论 -
MySql创建存储过程(procedure)
如果存储过程中含有动态SQL语句,在触发器中调用该存储过程时会报错ERROR 1336 (0A000): Dynamic SQL is not allowed in stored function or trigger。 该错误的含义是:函数或者触发器不支持动态SQL语句。下面详细介绍这个错误的重现过程,并提出解决方案。1.建表 建立人员信息表,包含id和name两列...原创 2018-09-27 16:48:53 · 15615 阅读 · 0 评论 -
MySql 外键为空(null)
本文通过实例,验证了MySql 外键可以为空(null)。1.建表 商品表create table goods(id int primary key)ENGINE = INNODB; 订单表create table orders(id int,goodid int ,foreign key(goodid) references goods(id...原创 2019-05-09 11:34:28 · 7549 阅读 · 1 评论 -
MySql 大批量导入数据时关闭索引
本文通过实验验证:大批量导入数据时需要关闭索引。1.建表create table goods(id int primary key,name varchar(20),key(name));2.插入数据delimiter $$create procedure p1(in num int)begin declare name varchar(20) defa...原创 2019-05-15 15:56:34 · 5291 阅读 · 2 评论 -
MySql 存储过程(procedure)中的continue和exit
本文演示MySql 存储过程(procedure)中的continue和exit的区别。1.建表create table goods(id int,name varchar(20),num smallint);2.插入数据insert into goods values(1,'cat',10),(2,'dog',5);3.定义存储过程delimiter...原创 2019-05-10 10:53:20 · 6253 阅读 · 0 评论 -
MySql 触发器(trigger)实例
1.创建表 商品表(goods)create table goods(id int,name varchar(20),num smallint); 订单表(orders)create table orders(id int,goodid int,count smallint);2.创建触发器 增加订单时,商品数量自动减少。delimit...原创 2019-05-08 17:52:56 · 666 阅读 · 0 评论 -
MySQL建立索引
本文我们在表Student中,分别建立单值索引、唯一索引、复合索引。1.建表CREATE TABLE Student ( ID int(4) auto_increment, Name varchar(5), dept varchar(5), primary key(ID))ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHAR...原创 2018-09-12 23:12:57 · 450 阅读 · 1 评论 -
MySQL编码格式统一为UTF8
一般在安装MySQL后,将字符编码格式统一为UTF8,方便后续操作。1.查看字符编码方式show variables like '%char%' 结果如下: 如上图所示,编码方式有utf8、Latin1。编码方式的不唯一,会给后续使用带来麻烦。现将编码方式统一设置为utf8。2.编码格式统一为UTF8 编辑配置文件/etc/my.cnf。...原创 2018-09-11 08:21:01 · 1602 阅读 · 0 评论 -
MySQL设置root密码
安装MySQL时,root默认没有密码,这显然很不安全,所以我们需要手动为root设置密码。1.关闭MySQLservice mysqld stop2.修改配置文件 打开配置文件,增加配置mysqld_safe --skip-grant-table,屏蔽权限验证。vim /etc/my.cnf3.启动MySQLservice mysqld star...原创 2018-09-11 09:02:02 · 3462 阅读 · 0 评论 -
测试Mysql中Tinyint类型的范围
MySQL支持多种数据类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。其中, 整数类型包括:tinyint、smallint、mediumint、int和bigint。 其中,tinyint的大小为1字节,即8位二进制。在无符号的情况下,值得范围(0,255)。在有符号的情况下,值得范围(-128,127)。本文将通过测试验证tinyint值的范围。1.有符号...原创 2018-10-01 13:17:15 · 13989 阅读 · 1 评论 -
MySql中MySqlParameter的用法
在c#中,向表person插入一条数据(表person包括两列:id和name),使用MySqlParameter定义表中各列的值。static void Main(string[] args){ string connectionString = "Server='localhost';Database='test';UId='root';Password='1...原创 2018-09-29 12:55:36 · 19700 阅读 · 0 评论 -
MySQL的表信息
1.建库create database myDB;2.使用数据库use myDB;3.建表CREATE TABLE Student ( ID int(4) auto_increment, Name varchar(5), dept varchar(5), primary key(ID))ENGINE=InnoDB AUTO_INCREMENT=2 DE...原创 2018-09-11 20:33:17 · 1568 阅读 · 0 评论 -
MySQL的数据库引擎
1.mysql逻辑分层连接层:提供与客户端连接的服务。 服务层:提供各种用户使用的接口,提供SQL优化器。 引擎层:提供各种存储数据的方式(InnoDB,MyISAM)。 存储层:存储数据。 引擎层即为MySQL的数据库引擎,主要有两种InnoDB,MyISAM,两者的特点如下:InnoDB:事务优先(适合高并发操作:行锁) MyISAM:性能优先(表锁)2.MySQL的...原创 2018-09-11 11:43:10 · 248 阅读 · 0 评论 -
MySql数据超出范围的处理
默认情况下,MySQL中一个数据超出类型的范围时,数据会以数据类型所充许的最大值存储。如:1.创建表create table person ( name varchar(20), score tinyint);2.插入数据 tinyint占1个字节,默认是带符号的类型,能够表示的范围是[-128,127]。插入200时,MySQL默认情况下,并不会报错或警告...原创 2018-10-01 10:42:34 · 5601 阅读 · 1 评论 -
详解Mysql的整数类型的范围
MySQL支持多种数据类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。其中, 整数类型包括:TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT。 下表显示了整数类型的存储和范围。类型 大小 范围(有符号) 范围(无符号) 用途 TINYINT 1 字节 (-128,127) (0,255) ...原创 2018-10-01 09:35:24 · 6882 阅读 · 0 评论 -
MySql创建自定义函数(Function)
1.创建自定义函数DELIMITER $$DROP FUNCTION IF EXISTS genPerson$$CREATE FUNCTION genPerson(name varchar(20)) RETURNS varchar(50)BEGIN DECLARE str VARCHAR(50) DEFAULT ''; SET @tableName=name; SET st...原创 2018-09-27 17:44:15 · 101785 阅读 · 6 评论 -
MySql入门语句(二)
1.建表create table Student ( ID int, Name varchar(20), Age int);2.增insert into Student values(1,"April",21);insert into Student values(2,"Harris",22);insert into Student values(3,"Dav...原创 2018-09-30 09:19:31 · 260 阅读 · 0 评论 -
MySql入门语句(一)
1.连接服务器mysql -u root -p root是用户名,-p之后可以直接输入密码,也可以回车后再输入密码。2.查看数据库show databases;3.创建数据库create database test; test为新创建的数据库名称。4.删除数据库drop database test;5.选择数据库 use test;...原创 2018-09-29 10:04:15 · 274 阅读 · 0 评论 -
MySql 权限管理
本文实例演示MySql 权限管理。1.user表 user表存储了权限相关的信息。查看user表内容。mysql> select host, user,password from user;+-----------+------+-------------------------------------------+| host | user | ...原创 2019-05-10 15:12:32 · 159 阅读 · 0 评论 -
MySQL核心目录
1.查看MySQL的版本mysql -V 执行结果:mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (i386) using readline 5.12.登录mysql -u root -p 接下来输入password即可。3.数据库目录ps -ef | grep mysql执行结果:ro...原创 2018-09-11 13:06:11 · 275 阅读 · 0 评论 -
MySql连接数据库
C#中连接MySql数据库,需要配置MySql.Data。1.配置 项目- 管理NuGet程序包 - 安装MySql.Data。2.示例代码using MySql.Data.MySqlClient;using System;namespace MySQL{ class Program { static void Main(st...原创 2018-09-25 21:20:33 · 968 阅读 · 0 评论 -
MySQL登录和退出
1.登录# mysql -u root -p 0000 用户名为root 密码为00002.退出 MySQL三种退出方式分别如下:mysql > exitmysql > quitmysql > \q原创 2019-03-14 10:27:32 · 271 阅读 · 0 评论 -
事务隔离级别
1.事务的并发读问题脏读(dirty read):读到另一个事务的未提交新数据,即读取到了脏数据; 不可重复读(unrepeatable):对同一记录的两次读取不一致,因为另一事务对该记录做了修改; 幻读(虚读)(phantom read):对同一张表的两次查询不一致,因为另一事务插入了一条记录。2.事务隔离级别SERIALIZABLE(串行化) 不会出现任何并发问题,因为它...原创 2019-05-06 14:36:32 · 148 阅读 · 0 评论 -
Mysql修改数据库引擎类型
1.查看表引擎show create table user;+-------+--------------------------------------------------------------------------------------------------------------------------------+| Table | Create Table ...原创 2019-05-06 14:22:39 · 1348 阅读 · 0 评论 -
MySql的启动/停止/重启
在登录MySql之前,需要启动MySql的服务,启动/停止/重启命令如下:1.启动service mysql start2.停止service mysql stop3.重启service mysql restart 登录MySql时,可能会报错:"Can't connect to local MySQL server through socket ...原创 2018-09-06 15:42:36 · 507 阅读 · 0 评论