Mysql的起步

1.认识mysql

  作为一个关系数据库管理系统,是一个开源的数据库。它不需要支付额外的费用。其最大的特点在于它的开源性。它的源代码可以随意下载,功能可以在源代码的基础上继续拓展。为公司提供了极大的方便。另外加上它体积小、速度快、总体拥有成本低,所以许多中小型网站为了降低网站总体拥有成本而选择了作为网站数据库。尤其是中国的公司非常喜欢使用mysql。 
  另外mysql可以跨平台,所有平台免费下载。他也是一个真正的多用户、多线程数据库服务器。总结其特点就是:快速、健壮、易用。

2.mysql的安装

  对于mysql的安装是很重要的。安装途径可以通过官网下载。一定不要通过360一键安装。因为所有配置信息360一键生成。安装更需要知道参数、路径等等才能对软件有更加深入的了解。mysql有两个版本分别是企业版和社区版,我们一般选择社区版。安装的时候一定要留意版本号,因为企业数据库的版本一般是不会换的源于企业对于稳定性的追求。 
   
   1. mysql的安装与卸载完毕一定要重启计算机。对这一点我深有体会。因为之前我装过SQL SERVER2008与MySQL。但是由于没有卸载干净导致注册表里面有残余。后期想了一系列办法但都无济于事,甚至下载everything去找到sql的根目录由于权限问题都无法卸载干净。由于安全保护机制导致无法再次安装。 
   2. mysql安装首先进入第一个安装界面,此界面就是让用户选择安装类型。分别是Developer Default(开发默认)、Server only(只装服务器)、Client only(只装客户端)、FULL(全部安装)、custom(自定义)。我们安装选择开发默认。紧接着需要装组件了。但这些组件不是必须,可以进入到准备安装阶段,执行安装。安装完毕后就进入了配置向导阶段。因为mysql需要参数的配置。这里面有一个重要的点就是mysql的端口号3306,作用就是用来区分不同版本的mysql。接下来需要设置最高权限密码。root账号作为mysql最高权限的账号需要设置密码。密码简单为好。然后命名windows服务名称,最好选用默认。后面系统会自己配置相关信息,配置完毕后需要用check检查便能够安装成功了。如果需要验证mysql是否安装成功就是许需要在电脑找到服务。通过我的电脑,右键管理。在服务里面寻找mysql57。如果能找到就证明安装成功了。

3.mysql的登陆

  首先需要以管理员身份运行命令提示符,输入mysql发现找不到,因为我们没有配置环境变量。需要在属性里面的高级系统设置中寻找高级选项卡下面的环境变量。在path中添加mysql.exe的路径,点击确定我们就成功配置了sql的环境变量。这样我们就可以找到mysql的环境变量了。回到命令提示符再次输入mysql就会出现下面这行代码: 
ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)
这行代码中显示了'localhost',代表的是本地。在这里其实也就是127.0.0.1(windows默认本机地址)。出现这种状况的原因在于密码不对,所以需要使用密码登陆进去。所以重新输入代码: 
mysql -u root -p 
-u表示用户,-p表示密码。接着输入之前配置的密码就可以,输入成功后会显示: 
mysql> 
如果需要访问多个mysql就需要知道电脑的地址,所以需要通过代码找,代码如下:

 
  1. mysql -h localhost -P 3306 -u root -p

这里-h指的是服务器地址,这里的localhost 也可以是默认的ip地址,-P是端口号,-u表示用户,-p表示密码。

4.数据类型

  数据类型分为数值类型、日期类型、字符类型。其中数值类型分为两种分别是整型(常用)和浮点型(不常用)一般最常用的就是int类型,但有时存储量比较大的时候可能会使用8字节的BIGINT类型。浮点型分为float,double。由于浮点类型的数据不精确,所以一般不经常用。TINYINT为最小的整数类型,只存储1个字节。取值范围是0-255. 
  
  日期类型分为DATE、DATETIME、TIMESTAMP、TIME、YEAR。其中DATE类型是4个字节,DATETIME比DATE多添加了具体的时间。TIMESTAMP使用时间戳精确到毫秒。最常用的就是DATE、DATETIME. 
  字符串中CHAR类型只能存一个字,比如说“男或女”。VARCHAR是最常用的类型,TEXT类型可以扩展到TINYTEXT、MUDIUMTEXT、LONGTEXT。但是都不常用,因为搜索的速度非常的慢。

5.Mysql的约束

  数据库的完整性指的是数据库的准确性和一致性。mysql提供很多机制来检验是否能满足一定标准。mysql的数据库完整性检查的机制成为“约束”。mysql一共有6大约束。 
   - NOT NULL (约束字段不能为空) 
非空就是对某个字段加上非空约束后,该字段不能为空。 
   - DEFAULT (默认值) 
默认就是如果某个字段不给值,都用默认值作为该字段的值 
   - UNIQUE KEY (约束字段是唯一值) 
唯一约束保证了这个字段中的这个值是独一无二的 
   - PRIMARY KEY (表的主键可以作为表的唯一标识) 
重点:主键包含非空且唯一。所以选择的必须是能够作为唯一来进行区分的字段,比如身份证号。 
   - AUTO_INCREMENT(自动增长) 
自动增长是为了表示而表示的 
   - FOREIGN KEY(FK)(约束字段为表的外键) 
外键很重要。举个例子。学员表中设置学员表、年级表。学员表中包含编号(pk)、姓名、年龄、年级。年级表中有年级编号(pk)、年纪名称。注意的是只有年级表中有年级编号,才能为学员表提供参考。此时就说学员表中的年级编号受到年级表的约束。称学院表为子表,子表中的年纪编号称为外键(FK),称年级表为父表。在外键约束中先有父表,再有字表。只有年级表中提供了年纪编号,才能有学员表中的年级编号。相反如果是删除,先删除子表中的数据,再删除父表的数据。重点:外键的父表一定是主键。

6.sql命令

  写sql命令一定要学会背、练、错。背会sql语句的时候一定要多加练习。练习中要多寻找自己的错误,从错误中总结经验。sql(数据查询语句)分为三种: 
1. 数据定义语言(DDL) 
一般定义数据库涉及各种对象,定义数据完整性约束、保密限制等约束。 
2. 数据操作语言(DML) 
数据操作语言实现对数据的操作,基本的操作分为检索(查询)和更新(插入、删除、更新)。 
3. 数据控制语言(DCL) 
包括数据完整性控制、安全性控制、和数据库恢复等等。 
紧接着可以输入sql的命令了。 
首先输入这样一行代码来显示所有的数据库:

 
  1. show databases

会显示如下代码:

 
  1. +--------------------+
  2. | Database |
  3. +--------------------+
  4. | information_schema |
  5. | mysql |
  6. | performance_schema |
  7. | sakila |
  8. | shop1 |
  9. | sys |
  10. | world |
  11. +--------------------+
  12. 7 rows in set (0.00 sec)

注意:mysql 和 sys是一定有的,是系统数据库,绝对不可以删除。而world、sakila则是在安装的时候选择了案例与样板。

 
  1. Samples and Examples

这里强调的是这个“;”,称之为命令结束标识符,来告诉mysql这行命令到哪里结束。如果没有输入这个分号,会出现以下情况:并且一行语句可以输入多个命令,之间互不影响。

 
  1. show databases
  2. ->

这里的database一定是复数。如果输入

 
  1. show database

则会出现如下代码:

 
  1. ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'database' at line 1

显示出现错误在database附近的第一行的位置。 
紧接着就可以创建数据库了:

 
  1. craate database hello;
  2. Query OK, 1 row affected (0.14 sec)

Query OK表示执行成功。后一句表示一行受到影响,紧接着如果再显示所有数据库则会出现如下代码:

 
  1. --------------------+
  2. | Database |
  3. +--------------------+
  4. | information_schema |
  5. | hello |
  6. | mysql |
  7. | performance_schema |
  8. | sakila |
  9. | shop1 |
  10. | sys |
  11. | world |
  12. +--------------------+
  13. 8 rows in set (0.00 sec)

这是如果再创建一遍数据库就会产生如下结果:

 
  1. mysql> create database hello;
  2. ERROR 1007 (HY000): Can't create database 'hello'; database exists

显示数据库已经存在了,不能再创立了。如果要删除该数据库则输入

 
  1. mysql> drop database hello;
  2. Query OK, 0 rows affected (0.61 sec)

此时就将此数据库删除了。由于数据库里存在数据表,如果对数据表进行操作,其实现在数据库并不知道针对哪张数据表进行操作。需要指定后面的命令是针对哪张数据表的。如果是查看数据表,数据库的操作对象是游离状态。针对游离状态(不确定)状态进行操作。

 
  1. mysql> show tables;
  2. ERROR 1046 (3D000): No database selected

没有数据库被选择。此时使用use关键字表面是针对哪个数据库进行操作

 
  1. mysql> use world;
  2. Database changed

此时数据库已经发生改变,world数据库被选中。

 
  1. mysql> show tables;
  2. +-----------------+
  3. | Tables_in_world |
  4. +-----------------+
  5. | city |
  6. | country |
  7. | countrylanguage |
  8. +-----------------+
  9. 3 rows in set (0.07 sec)

显示了world数据库中的所有数据表。总之,数据库的切换使用use关键字。

7.使用管理工具连接Mysql

  下载navicate管理工具,下载完毕后进行数据库的连接。点击连接会跳出对话框,主机地址、域、用户名、都已经是默认的。就不需要再更改,这里密码输入创建数据库的密码即可。接着点击连接测试,知道出现连接成功的对话框。点击确定出现local3306的连接。这个只是连接,不是数据库本身。 
  双击激活,即可显示所有数据库名。它与我们在命令提示符中的操作是对应的。如果说我创建了一个shop数据库。

 
  1. mysql> create database shop;
  2. Query OK, 1 row affected (0.00 sec)
  3. mysql> show databases;
  4. +--------------------+
  5. | Database |
  6. +--------------------+
  7. | information_schema |
  8. | mysql |
  9. | performance_schema |
  10. | sakila |
  11. | shop |
  12. | shop1 |
  13. | sys |
  14. | world |
  15. +--------------------+
  16. 8 rows in set (0.00 sec)

如果创建了shop数据库,此时在管理工具刷新后可以直接显示shop数据库。这个管理工具就极大化的方便了数据库的各种操作。比如就不用使用use关键字来切换数据库了。只需要鼠标便可以进行操作。 
  在管理工具中创建数据库的时候,有一个点非常重要。默认的字符集(就是对字符的编码格式)是拉丁文,拉丁的字符集无法添加中文。 
   
  Default character set 
  
 
  此时一定要选择最下面的utf-8。这让我想起了在我接触到的python爬取网络爬虫的时候,很多网页爬取下来并不能显示为中文。就是源于字符集不对。所以字符集的选择就是很重要的,否则将导致后续的一些列操作无法进行。在命名的时候一定要遵循命名规范。这个规范就是给数据库命名,给数据表命名等等。 
  命名数据库是整个IT行业共识的。这与我之前接触的C语言,java,python,spss等都是一样的。首先命名不能是中文,其次中间不能出现空格或者特殊字符,开头必须以字母或者下划线开头。 
  不过今天突然听到了一个名词“驼峰法则”。单词的首字母大写。像以下的写法都是有误的。

 
  1.   hu peng x
  2.   3hu
  3.   几天
  4.   !*iu

总之命名要求见名知其意。

  先找到四张表,分别为商品种类表-commoditytype、商品表-commodity、客户表-customer、订单表-order。其中commoditytype表中有两个字段名分别是ct_id,ct_name。ct_id(pk)表示商品种类编号,ct_name表示商品种类名称。而commodity表中有7个字段名分别是c_id(商品编号),c_name(商品名称),c_madein(商品产地),c_type(商品类型),c_inprice(商品进价),c_outprice(商品售价),c_num(商品数量)。customer表中有cu_id(pk),cu_phone(客户电话),cu_name(客户姓名),cu_gender(客户性别),cu_address(客户地址),order表中有o_id(订单编号),o_cuid(客户编号),o_cid(商品编号),o_num(商品数量)。 
  关键是找到他们之间的关系。c_type作为商品表外键指向商品类型表的主键ct_id(商品种类)。订单表o_cid作为外键指向商品表中的c_id(商品编号)。订单表的o_cuid作为外键指向客户表中的cu_id(pk)。紧接着标出子父表。由于只能先创建子表,才能创建父表。首先创建商品类型表、紧接着创建 客户表、商品表、订单表。 
  在navicat工具中创建表。首先创建商品类型表。

ct_id(字段名)     int(数据类型)    11   不允许空值     主键 
ct_name(字段名)  varchar(数据类型)  50   不允许空值

这里字符长度不能是默认的。因为默认的长度为0,所以长度输入50。紧接着创建客户表。按照这种格式创建商品表、订单表。 
注意:外键输入的时候,外键的数据类型必须与主键保持一致。有默认值时需要在默认值框中输入默认值。外键连接一定不能忘记。点击外键。取名有统一规则:fk_序列号。外键在整个数据库中名称不能重复。下一个外键就是fk_2......依次填入

 
  1. fk_1 c_type  shop1  commoditytype  ct_id

其中不用在意删除和刷新两个选项。数据库在删除和刷新时帮助我们检查外键约束。最后一张表的外键输入为:

 
  1. fk_2 o_cid shop1   commodity    c_id
  2. fk_3 o_cuid shop1 customer cu_id

8.举一反三

通过以上的例子我自己也想了例子来进行课后练习。如果创建一个学生信息数据库中有学生信息表st_info,课程信息表C_info,选课信息表(s_c_info)。 
其中学生信息表包含了st_id(学号pk),st_sex(性别),cl_name(班级名称),address(联系地址),st_name(学生姓名),telephone(学生电话)课程信息表中包含了c_no(课程号pk),c_type(课程类型),c_name(课程名称),c_credit(学分)。选课信息表中包含了st_id(学号fk),c_no(课程号fk),score(分数)。其中选课信息表中的学号和课号都作为外键分别指向学生信息表的主键st_id,和课程信息表中的主键c_no。只有拥有了学生信息表和课程信息表的情况,获取了学号和课号,才能查阅该学生选课的分数。具体详解作业。

9.自我总结

总之mysql作为一个开源的数据库已经得到越来越多的人的认可。市场占有率也越来越高。所以学好sql至关重要。直到现在我已经清楚了sql的安装、配置、登录数据类型、sql语句、以及如何创建数据库、删除数据库。同时也了解了如何使用管理工具连接sql创建数据库、填充数据等等。 后期还要花更多时间将mysql熟练地应用起来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值