mysql创建数据库

面试你所要知道的:MySQL存储过程

我与影子孤独终老i 提交于 2020-02-09 13:00:35
存储过程简介 SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟,它允许控制数据的访问方式。 存储过程的优点: (1).增强SQL语言的功能和灵活性:存储过程可以用控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 (2).标准组件式编程:存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 (3).较快的执行速度:如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。 (4).减少网络流量:针对同一个数据库对象的操作

suoyin

我与影子孤独终老i 提交于 2020-02-09 12:30:38
1. 什么是索引? 索引是一种数据结构,可以帮助我们快速的进行数据的查找. 2. 索引是个什么样的数据结构呢? 索引的数据结构和具体存储引擎的实现有关, 在MySQL中使用较多的索引有Hash索引,B+树索引等,而我们经常使用的InnoDB存储引擎的默认索引实现为:B+树索引. 3. Hash索引和B+树所有有什么区别或者说优劣呢? 首先要知道Hash索引和B+树索引的底层实现原理: hash索引底层就是hash表,进行查找时,调用一次hash函数就可以获取到相应的键值,之后进行回表查询获得实际数据.B+树底层实现是多路平衡查找树. 对于每一次的查询都是从根节点出发,查找到叶子节点方可以获得所查键值,然后根据查询判断是否需要回表查询数据. 那么可以看出他们有以下的不同: hash索引进行等值查询更快(一般情况下),但是却无法进行范围查询. 因为在hash索引中经过hash函数建立索引之后,索引的顺序与原顺序无法保持一致,不能支持范围查询.而B+树的的所有节点皆遵循(左节点小于父节点,右节点大于父节点,多叉树也类似),天然支持范围. hash索引不支持使用索引进行排序,原理同上. hash索引不支持模糊查询以及多列索引的最左前缀匹配.原理也是因为hash函数的不可预测. AAAA 和 AAAAB 的索引没有相关性. hash索引任何时候都避免不了回表查询数据,而B+树在符合某些条件

MySQL的information_schema数据库

一个人想着一个人 提交于 2020-02-09 07:00:39
在mysql的版本5.0之后产生的,一个虚拟数据库 information_schema数据库类似与“数据字典”,提供了访问数据库元数据的方式,即数据的数据。 如数据库名或表名,列类型,访问权限等 数据库中重要的表有 SCHEMATA ---提供了当前mysql实例中所有数据库的信息。 是show databases的结果取之此表。 TABLES表 ---TABLES表提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间,等等信息。 是show tables from schemaname的结果取之此表。 COLUMNS表 ---COLUMNS表提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。 是show columns from schemaname.tablename的结果取之此表。 STATISTICS表 ---STATISTICS表提供了关于表索引的信息。 是show index from schemaname.tablename的结果取之此表。 USER_PRIVILEGES表 ---USER_PRIVILEGES(用户权限)表给出了关于全程权限的信息。 该信息源自mysql.user授权表。是非标准表。 SCHEMA_PRIVILEGES表 ---SCHEMA_PRIVILEGES(方案权限

mysql5.7.11修改root默认密码

杀马特。学长 韩版系。学妹 提交于 2020-02-09 05:22:29
http://www.cnblogs.com/jym-sunshine/p/5314101.html mysql5.7.11修改root默认密码 知道 MySQL 出了5.7了,并且网上说性能提高了一两倍,于是在虚拟机上安装了个 CentOS 7,在上面安装 MySQL 5.7 我使用的是 yum安装方式,要求虚拟机能够上网,因为它会在线下载安装包 使用 yum 安装很简单,在能够访问互联网的情况下,执行 yum list |grep mysql 找到可安装的 mysql 软件包,我要安装的是 5.7的客户端和服务端,基本上执行 yum install mysql-community-client yum install mysql-community-server 就可以了 本文里重点记录root初始密码的重置办法 mysql5.7 算是安装成功了,但是用之前版本介绍的登录方法都是不成功的: 1)默认 root 密码为空,其实不为空,使用 mysql -u root -p 进行登录失败 2)使用 mysqladmin 进行重置密码,也不成功,因为它要求提供初始密码,但是我本来就不知道初始密码才来重置的,失败 3)使用 mysqld_safe 进行重置,这个更不靠谱,在根目录下执行 find -name mysqld_safe,根本找不到这个文件 4)说在 /root/目录下有一个

MySQL最大连接数设置

感情迁移 提交于 2020-02-09 04:28:08
“Can not connect to MySQL server. Too many connections”-mysql 1040错误, 这是因为访问MySQL且还未释放的连接数目已经达到MySQL的上限。通常,mysql的最大连接数默认是100, 最大可以达到16384 第一种:命令行修改。 mysql>mysql -uuser -ppassword(命令行登录MySQL) mysql>show variables like 'max_connections';(查可以看当前的最大连接数) msyql>set global max_connections=1000;(设置最大连接数为1000,可以再次查看是否设置成功) mysql>exit(推出) 这种方式有个问题,就是设置的最大连接数只在mysql当前服务进程有效,一旦mysql重启,又会恢复到初始状态。 因为mysql启动后的初始化工作是从其配置文件中读取数据的,而这种方式没有对其配置文件做更改 第二种:修改配置文件。 这种方式说来很简单,只要修改MySQL配置文件my.ini 或 my.cnf的参数max_connections,  将其改为max_connections=1000,然后重启MySQL即可。但是有一点最难的就是my.ini这个文件在哪找。 通常有两种可能,一个是在安装目录下(这是比较理想的情况)

CentOS6安装vsftpd

久未见 提交于 2020-02-09 03:50:57
练习:完成vsftpd配置 (1) 禁锢系统用户于家目录 [root@node3 ~]# yum -y install vsftpd [root@node3 ~]# vim /etc/vsftpd/vsftpd.conf chroot_local_user=YES //大概在102行,启用此处的配置语句 [root@node2 ~]# ftp 10.1.43.103 Connected to 10.1.43.103 (10.1.43.103). 220 (vsFTPd 3.0.2) Name (10.1.43.103:root): gao 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 227 Entering Passive Mode (10,1,43,103,28,138). 150 Here comes the directory listing. drwxr-xr-x 2 0 0 6 Oct 13 09:47 pub drwxrwxrwx 3 0 0 4096 Oct 15 12:50 upload 226 Directory send OK.

mysql数据库索引

人盡茶涼 提交于 2020-02-09 03:26:31
1.数据库索引是什么? 为了加速对表中数据行的检索而创建的一种分散存储的数据结构 2.为什么要用索引? ●索引能极大的减少存储引擎需要扫描的数据量 ●索引能把随机I0变成顺序I0 ●在进行分组与排序时索引可以让我们避免使用临时表 为什么不每一列都创建索引 第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。 第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。 第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。 索引是建立在数据库表中的某些列的上面。在创建索引的时候,应该考虑在哪些列上可以创建索引,在哪些列上不能创建索引。 3.mysql索引的原则 (1)列的离散型:count(distinct col) 重复的列 离散性好越好,选择越好 (2)最左匹配原则 从左到右依次匹配且不能跳过 4. MySQL为什么选择B+tree 这里有一个创建二叉树或者b树的网站,可以自己去玩一下 https://www.cs.usfca.edu/~galles/visualization/Algorithms.html 网站样子如下: (1)二叉查找树 规则: (1)非叶子节点只能允许最多两个子节点存在。 (2

MySQL视图操作命令详解

和自甴很熟 提交于 2020-02-09 03:16:45
上篇博文分享了视图的好处 mysql视图的作用(详细) 乘热打铁,看到一篇视图创建的博文觉得不错 创建视图 在MySQL中,创建视图的完整语法如下: CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION] 其对应的语法变量信息如下: [OR REPLACE] 中括号中的 OR REPLACE关键字是可选的。如果当前数据库中已经存在指定名称的视图时,没有该关键字,将会提示错误信息;如果使用了 OR REPLACE关键字,则当前正在创建的视图会覆盖掉原来同名的视图。 [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] ALGORITHM子句是可选的,它表示使用何种算法来处理视图。此外,它并不属于标准SQL的一部分,而是MySQL对标准SQL进行的功能扩展。 ALGORITHM可以设置三个值: MERGE、 TEMPTABLE或 UNDEFINED。如果没有 ALGORITHM子句,则默认值为 UNDEFINED(未定义的)。 对于 MERGE,会将引用视图的语句的文本与视图定义合并起来

查看mysql数据库及表编码格式

*爱你&永不变心* 提交于 2020-02-09 03:11:54
1.查看数据库编码格式 ? 1 mysql> show variables like 'character_set_database' ; 2.查看数据表的编码格式 ? 1 mysql> show create table <表名>; 3.创建数据库时指定数据库的字符集 mysql>create database <数据库名> character set utf8; 4.创建数据表时指定数据表的编码格式 create table tb_books ( name varchar(45) not null, price double not null, bookCount int not null, author varchar(45) not null ) default charset = utf8; 5.修改数据库的编码格式 mysql>alter database <数据库名> character set utf8; 6.修改数据表格编码格式 mysql>alter table <表名> character set utf8; 7.修改字段编码格式 mysql>alter table <表名> change <字段名> <字段名> <类型> character set utf8; mysql>alter table user change username username

Mysql5.7 Linux安装教程

痞子三分冷 提交于 2020-02-08 13:27:49
1.系统约定 安装文件下载目录:/data/software Mysql目录安装位置:/usr/local/mysql 数据库保存位置:/usr/local/mysql/data 日志保存位置:/tmp/mysql_error.log 2.下载mysql(这里下载的是預编译好的二进程mysql安装包) 在官网: https://dev.mysql.com/downloads/mysql/ 中,选择以下版本的mysql下载: 根据自己系统的版本选择32或者64位,这里我选择64位系统的 建议:在windows上使用迅雷下载,速度很快,然后用工具(Xftp)上传到 /usr/local/src目录下; 或者直接下载到服务器上 复制下载地址wget+地址 (默认下载到当前目录,自己找个目录存) cd /usr/local/src wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz 3.下载完成,解压出来 tar zxvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz 4.移到解压好的文件夹到 /usr/local/mysql mv mysql-5.7.20-linux-glibc2.12-x86_64