图片 41

MySQL入门,mysql入门经典

Posted by

MySQL5.5.40破解版地址(永久有效):链接:
密码:qjjy

MySQL入门,mysql入门经典

1.
mysql是一种常用的数据库管理软件,优点有:免费,开源,跨平台,本文只是介绍一下MySQL的简单操作

2.数据库的基本结构

  可以把数据库理解成一个文件夹,数据库中的数据存放的单位是表,可以理解为excel表格,表格的表头称为字段,表中的每一条数据称为记录

  图片 1

3.MySQL安装

  1.从官网下载 

  2.下载msi格式的文件,双击安装即可

  3.配置环境变量

  windows环境安装比linux简单的多,所以安装过程就不赘述

  4.安装好以后,打开命令提示行,输入mysql -uroot
-pkey,(key为安装过程中设置的 密码),然后回车出现  mysql >
,就表示安装成功了

4.sql语句规范

  sql是结构化查询语言的缩写。我们通过sql语句来操作数据库,下面是sql语句的一些书写规范

  1.sql语句不区分大小写,但是建议sql命令大写,自定义的库名表名之类小写

  2.sql语句支持分行,以分号结尾,关键词不能跨行

  3.用空格和缩进来提高语句可读性

  4.单行注释:–

   多行注释:/*….*/

  5.中括号里的内容表示 可有可无

5.数据库简单操作

  1.创建数据库  CREATE DATABASE database_name;

   可以在创建数据库的时候指定编码集  CREATE DATABASE database_name
CHARACTER SET utf8;

  2.删除数据库  DROP DATABASE database_name; 从删库到跑路

  3.查看已创建的数据库  SHOW DATABASES;

  4.查看数据库创建信息   SHOW CREATE DATABASE database_name;

  5.修改数据库字符集  ALTER DATABASE database_name CHARACTER SET
utf8;

  6.使用数据库  USE database_name;  
 进入数据库后没有退出名令,但是可以继续用SHOW查看数据库并用USE切换到其他数据库

6.表的简单操作

  使用数据库后执行的操作

  1.创建表  CREATE TABLE table_name(字段名称 字段数据类型
 [约束],

                        字段名称 字段数据类型
 [约束],    

                      字段名称 字段数据类型
 [约束]

                      );

  2.查看所有表  SHOW TABLES;

   查看表的详细信息  DESC table_name;

   查看表的创建信息  SHOW CREATE TABLE table_name;

  3.增加列  ALTER TABLE table_name ADD 列名 类型 [完整性约束条件]
[first|after 字段名];

    增加多列用逗号隔开

  4.修改 

   修改一列类型   ALTER TABLE table_name MODIFY 列名 类型
 [完整性约束条件];

   修改列名    ALTER TABLE table_name CHANGE 列名 新名 类型
[约束条件];

   修改表名  RENAEM TABLE 表名 TO 新名;

   修改表的字符集  ALTER TABLE table_name CHARACTER SET utf8;

  5.删除 

   删除一列  ALTER TABLE table_name DROP 列名;

   删除表   DROP TABLE table_name;

   删除主键的自增长  ALTER TABLE table_name CHANGE id id int(10)

7.约束条件

  创建表的时候,字段后面要加约束条件。常用的约束条件有:

  1.非空  not null

  2.唯一性 unique

  3.主键  primary
key  如果一个字段设置了非空属性和唯一性约束,那么自动识别为主键

  4.自增  auto_increment  只有主键可以设置这个约束

   

8.sql数据类型

数值类型:  

 

类型 大小 范围(有符号) 范围(无符号) 用途
TINYINT 1 字节 (-128,127) (0,255) 小整数值
SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 大整数值
MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值
INT或INTEGER 4 字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
BIGINT 8 字节 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
FLOAT 4 字节 (-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度
浮点数值
DOUBLE 8 字节 (1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度
浮点数值
DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值

 

时间类型:

 

类型 大小
(字节)
范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 ‘-838:59:59’/’838:59:59’ HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 8 1970-01-01 00:00:00/2037 年某时 YYYYMMDD HHMMSS 混合日期和时间值,时间戳

  

字符串类型:

类型 大小 用途
CHAR 0-255字节 定长字符串
VARCHAR 0-65535 字节 变长字符串
TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串
TINYTEXT 0-255字节 短文本字符串
BLOB 0-65 535字节 二进制形式的长文本数据
TEXT 0-65 535字节 长文本数据
MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215字节 中等长度文本数据
LOGNGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295字节 极大文本数据

9.表记录操作

  1.插入数据 insert

  INSERT [INTO] table_name (字段名称,,,) VALUES(值,,,),

                           (值,,,),

                            …….  

                           (值,,,);

  2.修改表记录

    UPDATE table_name SET 字段=值,字段=值….WHERE子句;

  3.删除表记录

    DELETE FROM table_name WHERE子句;
不加where子句的话会把整个表删除

    TRUNCATE TABLE table_name;  删除整个表

    delete和truncate的区别:

      1.语法不同

      2.delete后面可以加限制条件,选择删除某条记录,而truncate只能删掉整个表

      3.delete 可以返回删除的数据,但是truncate不能

      4.在删除整个表的时候,delete的原理是一条一条的删除,而truncate 的原理是把整个表删掉,再新建一个同样字段的表

       所以,如果表中有自增长的字段,delete删除之后,新的表是从上个位置开始自增的,但是truncate是从1开始

10.表记录查询  select

这个是最重要,也是最常用的

  1.单表查询

SELECT [DISTINCT] *|field1,field,… from table_name where ….
group by …. order by…[desc|asc]

     1.显示表的全部信息  SELECT * FROM table_name; 

        显示指定列的信息  SELECT 列,列.. FROM table_name;

        SELECT 后面可以跟 表达式 、distinct(表示去重)

     2.用WHERE子句进行过滤

       WHERE子句中可以使用:

        1.比较运算符  > < >= <= !=

        2.between .. and ..   在..和.. 之间

        3.in (a,b,c)         在a,b,c 这三个值中一个

        4.like  条件  eg: like “李%”  表示已“李”开头

                  like “李_”  
 表示以“李”开头,并且后面有一个字符,一个下划线代表一个字符

        5.逻辑运算符 and or not

     3.order by
 表示以。。排序,排序的列可以是列名,也可以是设置的别名

        order语句后面可以跟两个模式,asc表示升序(默认),desc表示降序

     4.group by
表示以..分组,分组后只会显示每个字段的第一条记录,分组后的筛选用的关键字是having
,作用和 where一样,与where相比,having后面可以使用聚合函数

     5.聚合函数:

        1.avg() 求平均值

        2.count() 统计个数

        3.sum() 求和函数

        4.max(),min()  最大值最小值函数

     6.limit 关键字用来控制显示的条数,limit 1
表示只显示第一行,limit 2,5 表示显示第2到5行

     7.使用正则表达式

        

        

  2.多表查询

    1.外键

      如果两张表要创建联系,就需要使用到外键,需要考虑几种关系:一对一,多对多,和一对多

      1.一对多:
这种模型中,有主表和子表的区别,比如一个老师有多个学生,一个学生只能有一个老师,这种情况老师就是主表,学生就是子表,我们需要在子表中创建关联字段(外键)

        增加外键:[ADD CONSTRAINT name] FOREIGN KEY
(字段名)REFERENCES table_name;

        删除外键:ALTER TABLE table_name DROP FOREIGN KEY
name;

              (这个name是增加外键时给外键起的名字,如果没有设置,从表的创建方式中可以找到)

      2.多对多:需要借助第三张表,在第三张表中创建两个外键

      3.一对一:这种实际就是外键加一个unique,很少用

      4.
一旦两张表建立了关联,就不能随便从表中删除记录了,必须解除关联后才能删

    2.内连接

      我们在查询表记录的时候,可以同时显示多张表的记录,类似

      select * from tableA,tableB 

      但是这样并不是我们想要的结果,当然我们可以在查询结果后面用where子句进行筛选,但更常用的是用内连接:

      select * from tableA inner join tableB on tableA.id =
tableB.id

    3.外连接

      1.左外连接:在内连接的基础上增加左边有右边没有的结果

          select * from tableA left join tableB on tableA.id =
tableB.id

      2.右外连接:在内连接的基础上增加右边有左边没有的结果

       select * from tableA right join tableB on tableA.id =
tableB.id

  

练习:

图片 2

  1 -- 1.查询平均成绩大于八十分的同学的姓名和平均成绩
  2 -- SELECT sname,avg(num) from student INNER JOIN  score
  3 --                                 on student.sid = score.student_id
  4 --                                 GROUP BY student_id
  5 --                                 HAVING avg(num) >80
  6 
  7 -- 2、查询所有学生的学号,姓名,选课数,总成绩
  8 
  9 -- SELECT student.sid,sname,count(course_id),sum(num) from student
 10 --                     INNER JOIN score
 11 --                     on score.student_id = student.sid
 12 --                     GROUP BY student_id
 13 -- 3、查询没有报李平老师课的学生姓名
 14 
 15 -- SELECT sname from student WHERE sid not in (SELECT DISTINCT student_id from score WHERE course_id  in (SELECT cid from teacher
 16 --                                                                                     INNER JOIN course
 17 --                                                                                     on teacher.tid = course.teacher_id
 18 --                                                                                     WHERE tname like '李平%'))
 19 
 20 -- 4、查询物理课程比生物课程高的学生的学号
 21 -- SELECT * from
 22 --
 23 -- (SELECT * from    score WHERE course_id = (SELECT cid from course WHERE cname="物理")) as A
 24 --
 25 -- INNER JOIN
 26 --
 27 -- (SELECT * from    score WHERE course_id = (SELECT cid from course WHERE cname="生物")) as B
 28 --
 29 -- on A.student_id = B.student_id
 30 --
 31 -- WHERE A.num > B.num
 32 --
 33 -- 5、查询没有同时选修物理课程和体育课程的学生姓名
 34 
 35 -- SELECT sname from student where sid not in(SELECT student_id from score
 36 --                 WHERE course_id
 37 --                 in (select cid from course
 38 --                         WHERE cname
 39 --                         like "物理" or cname = "体育")
 40 --                 GROUP BY student_id having count(sid)=2)
 41 --
 42 
 43 -- 6、查询挂科超过两门(包括两门)的学生姓名和班级
 44 
 45 -- SELECT sname,caption from student
 46 --                                         INNER JOIN class
 47 --                                         on student.sid = class.cid
 48 --                                         where sid in
 49 --                                         (SELECT student_id from score
 50 --                                                     where num    <60 GROUP BY student_id
 51 --                                                             HAVING count(num) >=2)
 52 
 53 -- 7、查询选修了所有课程的学生姓名
 54 -- SELECT sname from student
 55 --                             WHERE sid in (SELECT student_id  from score
 56 --                                                                                             GROUP BY student_id
 57 --                                                                                                 HAVING count(course_id) = (SELECT count(cid) from course)
 58 -- )
 59 
 60 
 61 
 62 
 63 -- 8、查询不同课程但成绩相同的学号,课程号,成绩
 64 
 65 SELECT student_id,course_id,num from score WHERE student_id = (SELECT A.student_id from
 66 
 67 (SELECT *,COUNT(DISTINCT num) as C FROM score GROUP BY student_id)as A
 68 
 69 LEFT JOIN
 70 
 71 (SELECT *,count(num) as D FROM score GROUP BY student_id) as B
 72 
 73 on A.sid = B.sid
 74 
 75 where C!=D)
 76 
 77 -- 9、查询没学过“李平”老师课程的学生姓名以及选修的课程名称;
 78 
 79 SELECT a.sname,course.cname from course
 80                     RIGHT JOIN (SELECT * from student
 81                                 WHERE sid not in
 82                                             (select student_id
 83                                                     from score where course_id =3) )as A
 84                     on course.cid = A.class_id
 85 
 86 
 87 
 88 
 89 -- 10、查询所有选修了学号为1的同学选修过的一门或者多门课程的同学学号和姓名;
 90 
 91 --
 92 SELECT sid,sname
 93         from student
 94         WHERE sid in (SELECT DISTINCT student_id from score 
 95                                                                 WHERE course_id
 96                                                                 in (SELECT course_id
 97                                                                                 from score where student_id = 1))
 98 
 99 
100 
101 
102 -- 11、任课最多的老师中学生单科成绩最高的学生姓名
103 
104 SELECT sname from student
105         where sid in (SELECT DISTINCT student_id from score
106                                             WHERE course_id in (SELECT cid from course
107                                                     where teacher_id=(SELECT teacher_id from course
108                                                             GROUP BY teacher_id order by count(cid) desc limit 1))
109                                                                         and num=(SELECT max(num) from score WHERE course_id in
110                                                                                 (SELECT cid from course where teacher_id=(SELECT teacher_id
111                                                                                             from course GROUP BY teacher_id order by count(cid) desc limit 1)) ))-- SELECT * from score  GROUP BY course_id having

练习题

 

1.
mysql是一种常用的数据库管理软件,优点有:免费,开源,跨平台,本文只是介绍一下MySQL的简单操作
2.数据库的…

第2节
数据库的介绍

MySQL:开源免费的数据库,小型的数据库,已经被 Oracle 收购了。 MySQL6.x 版本也开始收费。后来 Sun
公司收购了 MySQL,而 Sun 公司又被 Oracle 收购

2.1.2 什么是数据库
1) 存储数据的仓库
2) 本质上是一个文件系统,还是以文件的方式存在服务器的电脑上的。
3) 所有的关系型数据库都可以使用通用的 SQL 语句进行管理 DBMS DataBase Management
System

第3节 数据库的安装与卸载

安装过程分成两个部分:
1) 文件解压和复制过程,默认的安装目录:图片 3

2)
安装好以后必须对 MySQL
服务器进行配置
在 mysql 中管理员的名字: root

3.1 数据库的安装

  1. 打开下载的
    mysql 安装文件双击解压缩,运行“mysql-5.5.40-win32.msi”

图片 4

 

图片 5

  1. 选择安装类型,
    有“Typical(默认)
    ”、 “Complete(完全) ”、 “Custom(用户自定义) ”三个选项, 选择“Custom” ,
    按“next”键继续

图片 6

  1. 点选“Browse”,手动指定安装目录。

图片 7

  1. 填上安装目录,我的是“d:Program Files (x86)MySQLMySQL Server
    5.0”,按“OK”继续

图片 8

  1. 确认一下先前的设置,如果有误,按“Back”返回重做。按“Install”开始安装。

图片 9

图片 10

图片 11

图片 12

图片 13

  1. 正在安装中,请稍候,直到出现下面的界面, 则完成 MYSQL 的安装

图片 14

  1. 安装完成了,出现如下界面将进入 mysql 配置向导。

图片 15

  1. 选择配置方式,
    “Detailed Configuration(手动精确配置) ”、 “Standard
    Configuration(标准配置) ”,我
    们选择“Detailed Configuration”,方便熟悉配置过程。

图片 16

  1. 选择服务器类型,
    “Developer Machine(开发测试类, mysql 占用很少资源) ”、 “Server Machine(服务
    器类型, mysql 占用较多资源) ”、 “Dedicated MySQL Server
    Machine(专门的数据库服务器, mysql 占
    用所有可用资源) ”

图片 17

  1. 选择mysql数据库的大致用途,
    “Multifunctional Database(通用多功能型,好) ”、 “Transactional
    Database Only(服务器类型,专注于事务处理,一般) ”、 “Non-Transactional Database Only(非事务
    处理型, 较简单, 主要做一些监控、 记数用, 对 MyISAM 数据类型的支持仅限于
    non-transactional),
    按“Next”
    继续。

图片 18

图片 19

  1. 选择网站并发连接数,同时连接的数目, “Decision Support(DSS)/OLAP( 20个左右) “Online ”、 Transaction
    Processing(OLTP)( 500
    个左右) ”、 “Manual Setting(手动设置,自己输一个数) ”。

图片 20

  1. 是否启用 TCP/IP 连接,设定端口,如果不启用,就只能在自己的机器上访问
    mysql 数据库了,在这个页
    面上,您还可以选择“启用标准模式”( Enable Strict Mode),这样 MySQL 就不会允许细小的语法错误。
    如果是新手,建议您取消标准模式以减少麻烦。但熟悉 MySQL 以后,尽量使用标准模式,因为它可以降
    低有害数据进入数据库的可能性。按“Next”继续

图片 21

  1. 就是对 mysql 默认数据库语言编码进行设置(重要),一般选 UTF-8,按 “Next”继续。

图片 22

  1. 选择是否将 mysql 安装为 windows 服务, 还可以指定
    Service Name(服务标识名称), 是否将 mysql 的 bin
    目录加入到 Windows
    PATH(加入后, 就可以直接使用 bin 下的文件,
    而不用指出目录名, 比如连接,
    “mysql. exe -uusername -ppassword;”就可以了,不用指出 mysql.exe
    的完整地址,很方便),我这里全部
    打上了勾, Service Name 不变。按“Next”继续。

图片 23

  1. 询问是否要修改默认
    root 用户(超级管理)
    的密码。 “Enable root access from remote
    machines(是否允
    许 root 用户在其它的机器上登陆,如果要安全,就不要勾上,如果要方便,就勾上它)
    ”。最后“Create
    An Anonymous Account(新建一个匿名用户,匿名用户可以连接数据库,不能操作数据,包括查询)
    ”,
    一般就不用勾了,设置完毕,按“Next”继续。

图片 24

  1. 确认设置无误,按“Execute”使设置生效,即完成
    MYSQL 的安装和配置。

图片 25

图片 26

注意: 设置完毕, 按“Finish”后有一个比较常见的错误, 就是不能“Start service”,
一般出现在以前有安装 mysql
的服务器上,解决的办法,先保证以前安装的 mysql 服务器彻底卸载掉了;不行的话,检查是否按上面一步所说,
之前的密码是否有修改,照上面的操作;如果依然不行,将 mysql 安装目录下的 data 文件夹备份,然后删除,在
安装完成后, 将安装生成的 data 文件夹删除, 备份的 data
文件夹移回来, 再重启 mysql 服务就可以了,
这种情况
下,可能需要将数据库检查一下,然后修复一次,防止数据出错。

图片 27

解决方法:卸载 MySQL,重装 MySQL

3.2 数据库的卸载

1.
停止 window 的 MySQL 服务。 找到“控制面板”-> “管理工具”-> “服务”,停止 MySQL 后台服务

图片 28

  1. 卸载 MySQL 安装程序。找到“控制面板”-> “程序和功能”,卸载 MySQL 程序。

图片 29

  1. 删除 MySQL 安装目录下的所有文件。
  2. 删除 c 盘 ProgramDate 目录中关于 MySQL 的目录。路径为: C:ProgramDataMySQL(是隐藏文件,需要显示
    出来)

图片 30

第4节 数据库服务的启动与登录

 

 MySQL 服务器启动方式有两种:
1) 通过服务的方式自动启动
2) 手动启动的方式

图片 31

图片 32

 

 4.2 DOS 命令方式启动
4.2.1 操作步骤:

图片 33

 4.3  控制台连接数据库

MySQL 是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的
root 账号,使用安装时设置
的密码即可登录

4.3.1 登录格式 一:u 和 p 后面没有空格
mysql -u 用户名 -p 密码

图片 34

 后输入密码方式:

 图片 35

4.3.2 登录格式 二: 

mysql -hip 地址 -u用户名
-p密码 

127.0.0.1 代表本机的 IP 地址 

 图片 36

4.3.3 登录格式 三: 

mysql –host=ip 地址
–user=用户名 –password=密码 

图片 37

4.3.4 退出 MySQL: 

quit 或 exit 

4.4 SQLyog 图形化工具——客户端 

SQLyog 是业界著名的Webyog 公司出品的一款简洁高效、功能强大的图形化MySQL
数据库管理工具。使用
SQLyog 可以快速直观地让您从世界的任何角落通过网络来维护远端的 MySQL
数据库

4.4.1 使用 SQLyog 登录数据库 

图片 38

4.5 MySQL 目录结构 

图片 39

4.6 数据库管理系统 

数据库管理系统(DataBase Management
System,DBMS):指一种操作和管理数据库的大型软件,用于建
立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理
系统访问数据库中表内的数据

4.7 数据库管理系统、数据库和表的关系
数据库管理程序(DBMS)可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用
中实体的数据,一般会在数据库创建多个表,以保存程序中实体 User 的数据。

      数据库管理系统、数据库和表的关系如图所示:

 图片 40

4.7.1 结论:
一个数据库服务器包含多个库
一个数据库包含多张表
一张表包含多条记录

 

 5.0 SQL 的概念  

5.1 什么是 SQL
Structured Query Language 结构化查询语言

5.2 SQL 作用
1) 是一种所有关系型数据库的查询规范,不同的数据库都支持。
2) 通用的数据库操作语言,可以用在不同的数据库中。
3) 不同的数据库 SQL 语句有一些区别

 图片 41

相关文章

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注