百木园-与人分享,
就是让自己快乐。

SQL语法基础&MySQL安装

数据库概述

数据库是存放数据的仓库。在应用的开发中总是离不开数据的查询、处理、存储,例如图书管理系统就需要操纵和存储大量的数据。没有数据库之前我们使用文件存储数据,但是文件存储有很多弊端,查询效率低,读取麻烦,不易于管理等等,这么多的麻烦我们都可以交给数据库进行管理,数据库是专门为数据存储管理开发的软件,使用它可以有更高的效率和安全性。

  • 数据库的分类

    不同数据库管理数据的方式有很大差别。以是否为关系型数据库可分为两大类。
    关系型:MySQL、ORACAL、DATEBASE、PostgreSQL、SQL server
    非关系型:Redis、MongoDB

  • 关系型数据库MySQL

    暂不讨论各个数据库之间的区别,本文主要目的在于掌握MySQL的基本应用。
    什么是关系型数据库?关系型数据库存的表是二维的表格,比如一张学生信息表,一个学生的信息包含很多项:学号、姓名、性别和年龄等。60个学生就有60个不同学号,最多60个姓名,性别或男或女,每一个项(在表格中是每一列)都是一个同类型值得集合,而集合之间并不是任意随机得组合,不是随便拿一个学号随便拿一个姓名就组合在一起,而是有意义得特定组合,用于表示一个一个的学生信息,这就是所谓得“关系”。如果你不想理解这些,权当它就是excel表格就好。

MySQL安装

Windows安装MySQL5.7.17

  • 在MySQL官网 http://dev.mysql.com/downloads/mysql/ 上面下载ZIP安装包(Windows (x86, 64- bit), ZIP Archive)。

  • 下载完成后解压,将其放到想要安装的目录下。 例如:D:\\MySQL5.7\\mysql-5.7.17-winx64

  • 新建一个my.ini配置文件,原始的my-default.ini配置文件只是个模版,不要在里面改动。 my.ini的内容如下:

  • [mysql] default-character-set=utf8
    [mysqld] port = 3306 basedir=D:\\MySQL5.7\\mysql-5.7.17-winx64 datadir=D:\\MySQL5.7\\mysql-5.7.17- winx64\\data max_connections=200 character-set-server=utf8 default-storage-engine=INNODB explicit_defaults_for_timestamp=true

  • 在安装路径下新建一个空的data文件夹。

  • 以管理员身份运行cmd,进入bin目录,执行 mysqld --initialize-insecure --user=mysql 命令。不进行这一步,安装完成之后无法启动服务。

  • 依然在管理员cmd窗口的bin目录下,执行 mysqld install 命令安装。完成后会提示安装成功。

  • 依然在管理员cmd窗口的bin目录下,执行net start mysql命令启动MySQL服务。

  • 修改环境变量,添加 \"D:\\MySQL5.7\\mysql-5.7.17-winx64\\bin\"。

  • 在普通cmd窗口中,进入bin目录,执行 mysql -u root -p 命令,默认没有密码,回车进入。

  • Mac系统中安装MySQL

    使⽤Mac中的Homebrew进⾏mysql的安装

  • 下载安装mysql
    brew install mysql@5.7
    如果看到以下界⾯则表示已经下载安装成功

  • 启动mysql
    mysql.server start

  • 关闭mysql
    mysql.server stop

  • 登录mysql
    mysql -u root -p

  • 数据库的基本逻辑结构

    整个MySQL库中包含多个库,其中四个是自带的核心库。每个库中又有若干个个表,每个表就类似于一个excel表格
    - MySQL
    - 若干库
    - 若干表

    基础操作

    初识MySQL

  • 首先终端输入命令 mysql -u root -p 登录MySQL
  • 查看库输入 show databases; 语句查看所有库(所有SQL语句都以分号结尾)。结果如下
  • +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    | mysql |
    | performance_schema |
    | sys |
    +--------------------+
    -- 可以看见四个预置的库,都是一些核心库不要删除。

  • 选择其中一个库(例如mysql库)use mysql;
  • 查看库中所有表 show tables;
  • +---------------------------+
    | Tables_in_mysql |
    +---------------------------+
    | columns_priv |
    | db |
    | engine_cost |
    | event |
    | func |
    ... ...
    | time_zone_transition |
    | time_zone_transition_type |
    | user |
    +---------------------------+
    -- 行数比较多,中间部分省略号表示

  • select host,user from user;查看user表中的所有数据的 host和user字段列
  • +-----------+---------------+
    | host | user |
    +-----------+---------------+
    | localhost | mysql.session |
    | localhost | mysql.sys |
    | localhost | root |
    +-----------+---------------+

  • select * from user;查看user表中的所有数据的所有字段
  • 新建一个库

    create database mydb default charset=utf8;
    -- 执行后查看所有库就能看见mydb库。其中default charset=utf8 选定库的使用的字符集为UTF-8

    新建一个表

    -- 在哪个库中建表必须先选中那个库,然后使用下面语句创建一个简单的表user
    create table user(
    name varchar(20),
    age int,
    sex char(1)
    )engine=innodb default charset=utf8;
    -- 注意每个字段之间逗号隔开,最后一个字段后面没有逗号!

    向表中添加数据

    -- 向user表中添加name,age,sex数据
    insert into user(name,age,sex) values(\'admin\',26,\'男\');
    -- 字段赋值顺序可以自由排列,也可以选择性赋值。若没有提供赋值顺序,默认按照定义顺序全部赋值
    insert into user values(\'张三\',22,\'女\');

    DML

    Data Manipulation Language 数据操作语言

    -- 数据操纵就是对数据内容的操纵,包括INSERT(增)、DELETE(删)、UPDATE(改)。

    -- INSERT: 除了上面的一条语句插入一行数据的情况,也可以一次性插入多行数据:
    insert into user values(\'张三\',22,\'女\'),(\'admin\',26,\'男\'),(\'alian\',16,\'男\');

    -- DELETE: 要谨慎控制过滤条件,如果过滤控制不当会删除所有数据
    delete from user where name = \'张三\';

    -- UPDATE: 更新时也同样注意过滤条件,下面语句直接将用户admin的年龄和性别进行了更改
    update user set age = 23, sex = \'女\' where name = \'admin\';

    DDL

    Data Definition Language 数据定义语言

    -- 数据定义是关于表的结构的操作,包括表的定义和表结构的更改。

    -- 建表语句上面已有实例,表的删除语句如下:
    drop table user;

    -- 增加字段(列),删除字段(列)
    alter table user add birthday date;
    alter table user drop age;

    -- 更改字段。使用change时必须更改字段名字,使用modify时不能更改字段名字
    alter table user modify name char(50);
    alter table user change name u_name char(30);

    -- 更改表引擎
    alter table user engine = \'引擎\';
    -- 还有其他操作请参考官方文档

    DQL

    Data Query Language 数据查询语言

    -- 在数据库应用中,频率最高的操作就是查询

    -- 单表查询最基本格式。select哪些字段、from哪个表、where筛选条件
    select ... from ... where ...;
    -- 例:查看所有大于20岁的用户的名字
    select name from user where age > 20;
    -- 多个筛选条件之间可以用 and 和 or 连接,注意条件结合的优先级,使用()来控制他们的结合。

    -- 嵌套查询。前面单表查询的结果也是一个表,这个结果表又可以作为被查询的表,这样就形成了嵌套查询。
    select ... from (select ... from ... where ...) where ...;

    统计、分组、排序

    统计:很多时候我们需要对数据数据进一步处理,找出其中的最大值、最小值、总和、平均值和计数,使用下面的函数

    select max(age),min(age),sum(age),avg(age),count(age) from user;
    -- 统计函数会把多行数据统计为一行数据,比如100个年龄,用max函数统计就变成一个数据,就是100个数据中最大的数据。

    分组:统计函数除了上面的简单用法--把所有数据统计运算变为一行数据之外,通常和分组语句一起使用。

    比如想要分别统计男人和女人的平均年龄。

    select sex,avg(age) from user group by sex;
    -- group by sex 的语义就是根据sex的值不同分组,sex只有两个值\'男\'和\'女\',相应就分为两组,统计函数的作用域是再组内,组之间不会影响。

    排序:当我们遇到一个查询成绩单这样的需求时,通常我们想要的结果是一个成绩从高到低降序排列的结果表。

    select name,age from user order by age desc;
    -- 其中 desc 代表降序排列。升序排列为 asc 可以。默认值为asc。

    分页查询

    当查询结果有很多行时,我们可以选择查看其中一段

    select name,age from user limit 3;-- 只看3条
    select name,age from user limit 4,3;-- 跳过前4条,查看3条

    总结

  • 安装MySQL
  • 打开MySQL
  • 查看&操作MySQL
  • 熟悉使用以下关键词

    show , databases , use , table

    select , from , where , count , min , max , sum , avg , group by , order by , desc

    create , database , default , charset , engine , innodb , insert into , alter table , modify , change

    应该这些代码的含义是什么

    show databases;

    use ...;

    select ... from ... where ...;

    select max(...),avg(...),... from ... where ... group by ...;

    select ... from ... group by ... desc;

    select ... from ... limit ...;

    create database ... default charset=...;

    create table ...(
    ... ...,
    ... ...,
    ... ...
    )engine=innodb default charset=utf8;

    insert into ... values(...),(...),(...);

    delete from ... where ...;

    update ... set ... where ...;

    来源:https://www.cnblogs.com/dai-blog/p/for_review-MySQL.html
    图文来源于网络,如有侵权请联系删除。

    未经允许不得转载:百木园 » SQL语法基础&MySQL安装

    相关推荐

    • 暂无文章