mysql创建数据库

浅说MySQL优化方法

柔情痞子 提交于 2020-04-05 19:05:07
1.优化思路 在数据库的优化上我们有两个方面,一方面是安全,另一方面则是性能. 安全 ,就是要保证数据的可持续性; 性能,则说的就是数据的高性能访问; 2.优化方法 1)选取最适用的字段属性 一般来说,数据库中的表越小,查询执行的效率越快,因此我们可以在创建表的时候将字段竟可能设定的小一点,这样增加了数据库的空间. 另一个方法则是在可能的情况下,尽量把字段设置为非空,这样查询的时候就不用去比较NULL值,从而提升查询速度 2)使用连接查询代替子查询 使用子查询的话数据库需要在内存中先创建出临时表,然后再把临时表用在另一个查询上,子查询可以一次性完成很多逻辑上多个步骤才能完成的SQL操作,这样查询速度不是很快,而采用连接查询的话,MYSQL不需要在内存中创建临时表来完成这个逻辑上的需要两个步骤的查询工作. 3)使用联合来代替手动创建的临时表 使用UNION查询,可以把 需要使用临时表的两条或更多的 SELECT 查询合并的一个查询中。在客户端的查询会话结束的时候,临时表会被自动删除,从而保证数据库整齐、高效。使用 UNION 来创建查询的时候,我们只需要用 UNION作为关键字把多个 SELECT 语句连接起来就可以了, 要注意的是所有 SELECT 语句中的字段数目要想同 . SELECT * FROM t_address UNION SELECT * FROM t_area; 4

my.ini

不想你离开。 提交于 2020-04-05 18:46:16
[mysqld] # 设置3306端口 port=3309 # innodb_force_recovery = 0 # 设置mysql的安装目录 basedir=D:\\soft\\mysql-8.0.19-winx64 # 设置mysql数据库的数据的存放目录 datadir=D:\\soft\\mysql-8.0.19-winx64\\data8 # 允许最大连接数 max_connections=10000 # 允许连接失败的次数。 max_connect_errors=10 # 服务端使用的字符集默认为utf8mb4 character-set-server=utf8mb4 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 #mysql_native_password default_authentication_plugin=mysql_native_password #满查询日志 slow_query_log = ON slow_query_log_file = D:\\soft\\mysql-8.0.19-winx64\\data8\\slow.log long_query_time = 10 [mysql] # 设置mysql客户端默认字符集

MySQL count知多少

旧巷老猫 提交于 2020-04-05 16:51:11
统计一个表的数据量是经常遇到的需求,但是不同的表设计及不同的写法,统计性能差别会有较大的差异,下面就简单通过实验进行测试( 大家测试的时候注意缓存的情况,否则影响测试结果 )。 1、 准备工作 为了后续测试工作的进行,先准备几张用于测试的表及数据,为了使测试数据具有参考意义,建议测试表的数据量大一点,以免查询时间太小,因此,可以继续使用之前常用的连续数生成大法,如下: /* 创建连续数表 */ CREATE TABLE nums(id INT primary key); /* 生成连续数的存储过程,优化过后的 */ DELIMITER $$ CREATE PROCEDURE `sp_createNum`(cnt INT ) BEGIN DECLARE i INT DEFAULT 1; TRUNCATE TABLE nums; INSERT INTO nums SELECT i; WHILE i < cnt DO BEGIN INSERT INTO nums SELECT id + i FROM nums WHERE id + i<=cnt; SET i = i*2; END; END WHILE; END$$ DELIMITER ; 生成数据,本次准备生成1kw条记录 /* 调用存储过程 */ mysql> call sp_createNum(10000000); Query OK

Mysql导入数据库

不羁岁月 提交于 2020-04-05 15:41:41
需要导入一个mysql数据库,因为导出时的数据库与本机的数据库中有同名schema,所以想导入时创建一个不同的数据库名称,这样导入的数据就不影响原来本机上的数据了,具体操作如下: 1:mysql workbench-->File-->open SQL script 2:选择了要导入的sql文件之后,在workbench中可以看到原来的sql文件内容: -- MySQL dump 10.13 Distrib 5.7.17, for Win64 (x86_64) -- -- Host: 127.0.0.1 Database: xxxxxxxxx -- ------------------------------------------------------ -- Server version 5.6.44-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103

存储例程

徘徊边缘 提交于 2020-04-04 17:59:57
存储例程 存储例程是存储程序的一种类型,本质上也是封装了一些可执行的语句,只不过它的调用方式是:需要手动去调用!存储例程又可以分为存储函数和存储过程。 存储函数 创建存储函数 存储函数其实就是一种函数,只不过在这个函数里可以执行命令语句而已。函数它可以把处理某个问题的过程封装起来,之后直接调用函数就可以去解决同样的问题了。MySQL 中定义存储函数的语句如下: CREATE FUNCTION 存储函数名称([参数列表]) RETURNS 返回值类型 BEGIN 函数体内容 END 从这里可以看出,定义一个存储函数需要指定函数名称、参数列表、返回值类型以及函数体内容,如果该函数不需要参数,那参数列表可以被省略,函数体内容可以包括一条或多条语句,每条语句都要以分号 ; 结尾。里边的制表符和换行仅仅是为了好看,完全可以用空格代替。 mysql> delimiter $ mysql> create function avg_score(s varchar(100)) -> returns double -> begin -> return (select avg(score) from student_score where subject = s); -> end $ Query OK, 0 rows affected (0.01 sec) 定义了一个名叫 avg_score 的函数

Delphi 7连接MySql 5.5.15

给你一囗甜甜゛ 提交于 2020-04-04 08:05:30
原文:http://blog.csdn.net/akof1314/article/details/6822902/ 网上有很多关于Delphi连接MySql数据库的文章,在这里,我只记录下自己测试过的方法,以备所需。 系统环境:Windows XP SP3 软件环境:Delphi 7 、mysql-installer-5.5.15.0 1.ODBC方式 必须要先有MySql的ODBC驱动,我下载的是全安装版,包括MySql服务器、各种所支持的连接、工作台、示例数据库、文档,若是无ODBC驱动,可以到官网 http://dev.mysql.com/downloads/connector/odbc/ 下载。 ①数据源方式 首先,确认安装了MySql的ODBC驱动,打开“控制面板”→“管理工具”→“数据源”,切换到“驱动程序”页,查看“MySql ODBC 5.1 Driver",如下图所示: 切换到"系统DSN"→"添加"→"MySql ODBC 5.1 Driver",如下图所示: 弹出MySql数据源配置,数据源名称随意,TCP/IP Server为数据库地址,User用户名,Password密码,Database连接的数据库,点"Test"进行测试连接,如下图所示: 点击"OK"后,即可看到新增加了一个数据源。打开Delphi 7,在窗体上放置TADOConnection

mysql 数据库基本命令

别说谁变了你拦得住时间么 提交于 2020-04-04 07:12:03
停止mysql服务:net stop mysql // 管理员方式运行 启动mysql服务:net start mysql 进入数据库:mysql -u root -p 查看数据库:show databases; 使用数据库:use 数据库名; 查看数据库中的表:show tables; 查询 表:select * from 表名; 查询表的详细字段:desc 表名;    describe 创建数据库(database) create database 数据库名; 创建表(table) create table 表名( id int primary key, name varchar(16), age int ); 删除表:drop table 表名; 删除数据库:drop database 数据库名;创建: -- 注释 -- 查看创建数据库的过程 show create database 数据库名; -- 使用数据库 use 数据库名; -- 创建表 create table 表名(字段); create table test( id int not null, name varchar(16), info varchar(64) ); -- 查看数据库中存在的表 show tables; -- 查看表的字段 DESCRIBE 表名; 修改: -- 修改表名 alter

基础知识:Mysql基本操作命令

一世执手 提交于 2020-04-04 07:09:52
启动mysql : mysql -hlocalhost -uroot -p 创建数据库:create database 数据库名字; 指定要操作的数据库:use 数据库名字; 查看数据表建表语句:show create table 数据表名字; 查看数据库中的数据表基本结构:show tables; 创建数据表:create table 数据表名字; 使用DESCRIBE语句查看数据表:describe 数据表名字; //查看该数据表详细信息,字段名,数据类型等 为数据表重命名:alter table 旧数据表名字 rename 新数据表名字; 修改字段名:alter table 数据表名字 change 旧字段名称 新字段名称 新数据类型; 修改字段数据类型:alter table 数据表名字 modify 字段名字 数据类型; 修改字段的排列位置:alter table 数据表名字 modify 字段名1 数据类型 after 字段名2; //第一列可以使用FIRST,非第一列使用AFTER 删除数据表:drop table 数据表名字; 在表中添加新字段: alter tbale 数据表名字 add 新字段名字 数据类型 not full(可添加) after 放在一个已有字段后面; 删除表中字段: alter table 数据表名字 drop 要删除的字段; 删除数据库 :

MySQL数据库8(四)数据表基本操作

非 Y 不嫁゛ 提交于 2020-04-04 07:06:21
数据表操作 创建数据表 数据库中数据表的名字通常有前缀:取数据库的前两个字母加下划线,易于区分。 普通创建表 基本语法:create table 表名(字段名 字段类型[字段属性],字段名 字段类型[字段属性]…)[表选项] 表必须放在对应的数据库下:有两种方式可以将表挂入到指定的数据库下 1、在数据表名字前面加上数据库名字,用“.”号连接即可。数据库.数据表 2、在创建数据表之前先进入到某个具体的数据库即可:use 数据库名字; 表选项:与数据库选项类似 engine:存储引擎,mysql提供的具体存储数据的方式,默认有一个innodb(5.5之前默认是myisam) charset:字符集 – 只对当前自己表有效(级别比数据库高) collate:校对集 –只对当前自己表有效(级别比数据库高) 复制已有表结构 从已经存在的表复制一份(只复制结构,如果表中有数据不复制) 基本语法:create table 新表名 like 表名;//只要使用数据库.表名,就可以在任何数据库下访问其他数据库的表名。 显示数据表 每一张数据表创建,那么就会在对应的数据库下创建一些文件(与存储引擎有关) 注意:innodb存储引擎所有文案都存储在外部的ibdata文件 显示所有表 基本语法:show tables; 显示匹配表 基本语法:show tables like ‘匹配模式’; 显示表结构

mysql学习笔记(二:中的auto_increment 理解

懵懂的女人 提交于 2020-04-04 06:54:37
1、auto_increment 理解1 auto_increment是用于主键自动增长的,从1开始增长,当你把第一条记录删除时,再插入第二跳数据时,主键值是2,不是1。 例如: create table `test` ( `id` int(10) not null auto_increment, -- 表示自增列 `name` varchar(20) not null, primary key(`id`) )    auto_increment = 1; -- 表示自增起始大小-- 这样就可以创建一个表`test`,id为自增列 -- 执行语句 insert into test (`name`) values ('名字'); -- 就可以插入一行数据为: 1 '名字' 扩展资料: 在使用AUTO_INCREMENT时,应注意以下几点: 1、AUTO_INCREMENT是数据列的一种属性,只适用于整数类型数据列。 2、设置AUTO_INCREMENT属性的数据列应该是一个正数序列,所以应该把该数据列声明为UNSIGNED,这样序列的编号个可增加一倍。 3、AUTO_INCREMENT数据列必须有唯一索引,以避免序号重复(即是主键或者主键的一部分)。AUTO_INCREMENT数据列必须具备NOT NULL属性。 4、AUTO_INCREMENT数据列序号的最大值受该列的数据类型约束