mysql创建数据库

MySQL查询语句的45道练习

橙三吉。 提交于 2020-03-07 09:59:45
一、设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示。用SQL语句创建四个表并完成相关题目。 表 1-1 数据库的表结构 表(一)Student (学生表) 属性名 数据类型 可否为空 含 义 Sno varchar (20) 否 学号(主码) Sname varchar (20) 否 学生姓名 Ssex varchar (20) 否 学生性别 Sbirthday datetime 可 学生出生年月 Class varchar (20) 可 学生所在班级 表(二)Course(课程表) 属性名 数据类型 可否为空 含 义 Cno varchar (20) 否 课程号(主码) Cname varchar (20) 否 课程名称 Tno varchar (20) 否 教工编号(外码) 表(三)Score(成绩表) 属性名 数据类型 可否为空 含 义 Sno varchar (20) 否 学号(外码) Cno varchar (20) 否 课程号(外码) Degree Decimal(4,1) 可 成绩 主码:Sno+ Cno 表(四)Teacher(教师表) 属性名 数据类型 可否为空 含 义 Tno varchar

php高级工程师面试题

独自空忆成欢 提交于 2020-03-07 06:50:08
文章来源: https://blog.csdn.net/m0_37865510/article/details/83346248 如有侵权请联系删除 一、mysql相关知识 1、 mysql优化方式 MYSQL 优化常用方法 mysql 性能优化方案 2、如何分库分表 参考: http://blog.sina.com.cn/s/blog_6e322ce70100zs9a.html http://www.jb51.net/article/29771.htm 3、 Mysql+如何做双机热备和负载均衡 http://www.dewen.org/q/51/Mysql+如何做双机热备和负载均衡 4、数据表类型有哪些 MyISAM、InnoDB、HEAP、BOB,ARCHIVE,CSV等 MyISAM:成熟、稳定、易于管理,快速读取。一些功能不支持(事务等),表级锁。 InnoDB:支持事务、外键等特性、数据行锁定。空间占用大,不支持全文索引等。 myisam和Innodb引擎的主要特点 https://blog.csdn.net/octopuscz/article/details/79775384 5、防sql注入方法 mysql_escape_string(strip_tags($arr["$val"])); /** * 函数名称:post_check() * 函数作用

MySql的多存储引擎架构

六眼飞鱼酱① 提交于 2020-03-07 05:26:07
支持多种存储引擎是众所周知的MySQL特性,也是MySQL架构的关键优势之一。如果能够理解MySQL Server与存储引擎之间是怎样通过API交互的,将大大有利于理解MySQL的核心基础架构。本文将首先介绍MySQL的整体逻辑架构,然后分析MySQL的存储引擎API并介绍如何编写自己的MySQL存储引擎。 MySQL逻辑架构 MySQL作为一个大型的网络程序、数据管理系统,架构非常复杂。下图大致画出了其逻辑架构。 MySQL由以下几部分组成: 连接池组件。 管理服务和工具组件。 SQL接口组件。 查询分析器组件。 优化器组件。 缓冲(Cache)组件。 插件式存储引擎。 物理文件。 Connectors MySQL首先是一个网络程序,其在TCP之上定义了自己的应用层协议。所以要使用MySQL,我们可以编写代码,跟MySQL Server建立TCP连接,之后按照其定义好的协议进行交互。当然这样比较麻烦,比较方便的办法是调用SDK,比如Native C API、JDBC、PHP等各语言MySQL Connector,或者通过ODBC。但通过SDK来访问MySQL,本质上还是在TCP连接上通过MySQL协议跟MySQL进行交互。 Connection Management 每一个基于TCP的网络服务都需要管理客户端链接,MySQL也不例外。MySQL会为每一个连接绑定一个线程

MySQL编码latin1转utf8

半腔热情 提交于 2020-03-07 04:23:34
mysql移植含有中文的数据时,很容易出现乱码问题。很多是在从mysql4.x向mysql5.x移植的时候出现。mysql的缺省字符集是 latin1,在使用mysql4.x的时候,很多人都是用的latin1字符集。而当使用mysql5时往往愿意使用utf8。那么我们的任务是不是要 把数据中的字符从latin1转为utf8呢?   不是的。   用一句不大准确,但又比较形象的说法是,在之前的系 统中,我们是用latin1保存了使用gb系列字符集(gbk、gb2312等)的汉字。怎么这样说呢?   mysql> show create table test\G   *************************** 1. row ***************************   Table: test   Create Table: CREATE TABLE `test`   `a` varchar(100) default NULL    ) ENGINE=InnoDB DEFAULT CHARSET=utf8   1 row in set (0.00 sec)    mysql> show create table testlatin1\G    *************************** 1. row *************************

Windows上模拟MySQL主从设置,读写分离

折月煮酒 提交于 2020-03-07 04:08:34
对于互联网架构来说,MySQL读写分离是很重要的。所以今天我决定在我自己的电脑上模拟下。 我一开始本以为可以用一个MySQL服务,建立两个数据库来模拟。但是网上的教程都是修改MySQL的配置文件,所以我只好另外又安装了个MySQL。为了避免不必要的麻烦,我们尽量保证MySQL版本一致。 我第一个MySQL是msi安装包安装的,在网上我下载的第二个MySQL是压缩包形式的。所以,我们从配置这种解压好的MySQL开始,如果自己会配置的话请忽略。 为了避免命令冲突,第二个MySQL我并不打算配置环境变量。以MySQL5.7版本为例,新建my.ini配置文件和data文件夹用来保存数据(有的版本带有此文件或文件夹,那就请可以直接编辑这个文件了)。 [mysqld] port = 3307 basedir=F:/mysql5.7 datadir=F:/mysql5.7/data max_connections=200 character-set-server=utf8 default-storage-engine=INNODB sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysql] default-character-set=utf8 然后把上面的内容复制到my.ini文件里面,注意port,端口号不要冲突

memcache缓存服务器(安装-配置-测试篇)

旧巷老猫 提交于 2020-03-07 03:36:46
部署环境: 主机 ip地址 操作系统 nginx 172.16.1.100 CentOS 7.3 php+memcache 172.16.1.110 CentOS 7.3 Mysql 172.16.1.120 CentOS 7.3 memcached 172.16.1.130 CentOS 7.3 一, 环境准备: 搭建LNMP环境(动态解析) 1,安装nginx 1)安装依赖工具包: [root@nginx-server ~]# yum -y install gcc* pcre-devel openssl-devel zlib-devel make vim 2)创建nginx用户组和用户: [root@nginx-server ~]# groupadd -r nginx && useradd -r -g nginx -s /bin/false -M nginx 3)解压源码包,配置&&编译安装: [root@nginx-server ~]# tar zxf nginx-1.8.0.tar.gz [root@nginx-server ~]# cd nginx-1.8.0 [root@nginx-server nginx-1.8.0]# ./configure --help ##可以查看自己需要的模块 --with,或取消的模块–without #根据自己的需求添加不同的模块

Mysql之索引

…衆ロ難τιáo~ 提交于 2020-03-07 00:49:54
文章目录 索引 索引原理 索引技巧与注意事项 建立索引的原则 利用索引排序 InnoDB索引模型 联合索引 聚集索引 辅助索引 覆盖索引 索引合并 Cardinality(基数) 查看索引 Cardinality 优化器选择不使用索引的情况 MRR 验证MRR ICP 验证ICP 索引 只有当索引帮助存储引擎快速查找到记录的带来的好处大于其带来的额外工作时,索引才是有效的。对于非常小的表,大部分情况下简单的全表扫描更高效 在一个100w条数据的表中,如果某一列没有添加索引,那么每一句select语句都要随机地逐条扫描100w行数据,每次都要从中寻找0或者更多匹配的行。虽然这些数据最初是按照顺序加载的,但sql也不能理解这种顺序,它必须要处理所有行才能找到匹配的数据。添加索引并不总能自动改善所有类型的SQL查询的性能。有时候执行全表扫描反而更加高效,这取决于所要求的行数。这就是两种不同访问方式的差异,即通过随机IO操作来获取个别行的数据和使用查询索引及有序IO操作来读取所有数据。 索引除了在给定表上限制需要读取的数据外,索引的另一个主要用途就是快捷高效地在相关的表之间做Join操作。在需要Join的列上使用索引可以显著提升性能,并可以在另一个表中快速找到一个匹配的值。 优点 索引大大减少了服务器需要扫描的数据量 索引可以帮助服务器避免排序和临时表 索引可以将随机IO变为顺序IO

Linux下配置java环境

本秂侑毒 提交于 2020-03-06 22:20:30
总结:安装java环境需要有jdk,tomcat,mysql 一、先安装mysql 1、wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm 2、rpm -ivh mysql-community-release-el7-5.noarch.rpm 3、yum install mysql-community-server 4、service mysqld restart 5、1.重置密码的第一步就是跳过MySQL的密码认证过程,方法如下:(可参考该博客:https://blog.csdn.net/vv19910825/article/details/82979563) #vim /etc/my.cnf(注:windows下修改的是my.ini) 在文档内搜索mysqld定位到[mysqld]文本段: /mysqld(在vim编辑状态下直接输入该命令可搜索文本内容) 在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程,如下图所示: 保存文档并退出 2.接下来我们需要重启MySQL: /etc/init.d/mysql restart(有些用户可能需要使用/etc/init.d/mysqld restart) 3.重启之后输入mysql即可进入mysql。 4

数据库优化方案

感情迁移 提交于 2020-03-06 20:02:31
目录 一、 选择合适的存储引擎: InnoDB 1.1 怎样将现有的 MyISAM 数据库转换为 InnoDB: 1.2 为每一个表分别创建 InnoDB FILE: 二、 保证从内存中读取数据。讲数据保存在内存中 2.1 足够大的 innodb_buffer_pool_size 2.1.1 怎样确定 innodb_buffer_pool_size 足够大。数据是从内存读取而不是硬盘? 2.1.2 server上是否有足够内存用来规划 2.2 数据预热 2.3 不要让数据存到 SWAP 中 三、定期优化重建数据库 四、降低磁盘写入操作 4.1 使用足够大的写入缓存 innodb_log_file_size 4.2 innodb_flush_log_at_trx_commit 4.3 避免双写入缓冲 五、提高磁盘读写速度 六、充分使用索引 6.1 查看现有表结构和索引 6.2 加入必要的索引 6.2.1 比方,优化用户验证表: 6.2.2 使用自己主动加索引的框架或者自己主动拆分表结构的框架 七、分析查询日志和慢查询日志 八、激进的方法。使用内存磁盘 九、用 NOSQL 的方式使用 MYSQL 十、其它 MYSQL 应该是最流行了 WEB 后端数据库。WEB 开发语言近期发展非常快,PHP, Ruby, Python, Java 各有特点,尽管 NOSQL 近期越來越多的被提到

如何安装SQL数据库和连接Navicat Premium

ε祈祈猫儿з 提交于 2020-03-06 19:55:10
文章目录 一.安装SQL数据库 二.使用Navicat Premium连接数据库 一.安装SQL数据库 第一步,当然是先获取数据库这个东西,嘿嘿 mysql 选择第一个下载即可,下载好,是这个样子的: 然后需要建立一个ini配置文件,右键记事本加入下列代码: [ mysql ] # 设置mysql客户端默认字符集 default - character - set = utf8 [ mysqld ] # 设置 3306 端口 port = 3306 # 设置mysql的安装目录 basedir = E : \mysql\mysql - 8.0 .19 - winx64 # 设置mysql数据库的数据的存放目录 datadir = E : \mysql\mysql - 8.0 .19 - winx64\data # 允许最大连接数 max_connections = 20 # 服务端使用的字符集默认为 8 比特编码的latin1字符集 character - set - server = utf8 # 创建新表时将使用的默认存储引擎 default - storage - engine = INNODB 然后保存为ini文件,有些人可能保存为ini后缀的文件,但是打开却还是txt文件,只需要: 选择显示文件后缀就可以修改文件类型了。然后再创建一个名为data的空文件夹即可