MySQL入门

MySQL入门

数据库简介:

  • 用途:用于存储生活的几乎一切数据,如:身份、住房、车票、网站、...

  • 概念:数据库服务器、数据库、数据表、一行数据(一条)、一列数据(字段)

  • 分类:

    • 关系型数据库:mysql、oracle、SQL server、...

    • 非关系型数据库:Redis、MongoDB、...

  • 发展:口述

  • SQL:Structured Query Language,结构化查询语言

  • SQL分类:

    • 数据定义语言:DDL

    • 数据操作语言:DML

    • 数据查询语言:DQL

    • 数据控制语言:DCL

    • 数据事务语言:DTL

MySQL(ubuntu)安装:

  • 安装:sudo apt-get install mysql-server

    • 若安装出现系统服务问题,很可能是自己添加系统服务的问题,移除即可

  • 安全配置:sudo mysql_secure_installation

    • 按照提示,一路进行下去

    • 设置支持远程连接,为后面做准备

  • 连接测试:mysql -h host -u user -p

    • -h:指定主机,localhost/127.0.0.1表示本机,本机可以省略

    • -u:指定用户,默认只有root用户

    • -p:指定密码,输入密码时要与登录分开,以防不测

    • 示例:mysql [-hlocalhost] -uroot -p,然后根据提示输入密码

      • 端口:3306

      • 退出:\h 或 help;

      • 说明:所有的命令都是以';'结尾

数据定义语言(DDL)

  • 查看库:show databases;,会显示数据库服务器上所有的数据库

  • 创建库:create database test;,创建数据库test

  • 删除库:drop database test;,删除数据库test

  • 选择库:use test;,选择数据库test

    • 查看当前选中数据库:

      • show tables;

      • select database();

  • 查看表:show tables;,查看当前选中数据库中的数据表

  • 创建表:create table user(username varchar(20), password char(32));

  • 查看表结构:desc user;

  • 删除表:drop table user;

  • 查看创建方式:

    • 库:show create database test;

    • 表:show create table user;

  • 修改字符集:

    • 创建时指定:在创建表的语句后指定字符集。

    • 修改配置文件:sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf,在[mysqld]后面添加

      • character-set-server=utf8

      • 重启服务:sudo service mysql restart

      • 说明:以后再创建的库中的表默认字符集就是utf8

  • 修改字段:alter table user modify username char(30);,不能修改名字

  • 添加字段:

    • 默认(最后)添加:alter table user add age int(3);

    • 在指定字段后添加:alter table user add email varchar(60) after password;

    • 在最开始出添加:alter table user add id int(11) first;

  • 删除字段:alter table user drop age;

  • 修改字段名称:alter table user change email em char(32);

  • 修改位置及名称:add/change/modify

    • alter table user modify em char(32) first;

  • 修改表名:alter table user rename new_user;

数据类型

  • 整型:tinyint(1个字节)、smallint(2个字节)、mediumint(3个字节)、int(4个字节)、bigint(8个字节)

  • 浮点类型:

    • float(m, d),单精度浮点数,4个字节,m表示总位数,d表示小数位数

    • double(m, d),双精度浮点数,8个字节,m表示总位数,d表示小数位数

    • decimal(m, d),以字符串的形式存储浮点数,用于金融领域等要求严格的场景

  • 字符类型:

    • char:定长字符串,0~255个字节

    • varchar:变长字符串,0~65535个字节

  • 时间日期:

    • date:日期,格式:2018-04-16

    • time:时间,格式:15:36:30

    • datetime:日期时间,格式:2018-04-16 15:37:38

    • timestamp:时间戳

    • year:年,只占1个字节,年份范围:1901~2155

  • 符合类型:

    • set:集合类型,格式:set(s1, s2, ..., s63),最多63种可能

    • enum:枚举类型,格式:enum(e1,e2, ... ,e65535),最多65535种可能

  • 字段修饰:

    • unsigned:无符号数

    • zerofill:高位0填充,防止出现负数

    • auto_increment:自动增加(1),用于整数,经常与主键结合使用

    • default:设置默认值

    • not null:不能为空

  • 字符集及存储引擎

    • 查看支持的字符集:show character set;,我们通常只使用utf8,不能书写成utf-8

    • 查看支持的存储引擎:show engines;

      • 常用存储引擎:MyISAM和InnoDB

  • 索引:

    • 说明:简单理解,就是一本书最前面的目录,虽然可以提高读取效率,单并非越多越好。

    • 分类:

      • 普通索引(index):最基本的索引

      • 唯一索引(unique):修饰的字段不能重复

      • 主键索引(primary key):是一种特殊的唯一索引,一张表中只能有一个字段设置

      • 全文索引(fulltext):多全局数据添加索引。

    • 示例:

      alter table user add index(em);             # 给em字段添加普通索引
      alter table user add unique(username);  # 给username字段添加唯一索引 alter table user add primary key(id);  # 将id设置为主键索引 ​ alter table user drop index em;    # 删除em字段的普通索引

      alter table 表名add fulltext(字段);

  • 很多选项都可在创建表时指定,如:

    create table user(
    id int auto_increment,
    name varchar(20),
    primary key(id),
    unique(name)
    )engine=innodb default charset=utf8;

 数据操作语言(DML)

  • 说明:在最大多数的使用中,都是对数据的增、删、改、查的操作(CURD)

  • 准备:创建一个star表

    create table star(
        id int auto_increment,
        name varchar(20) not null,
        money float not null,
        province varchar(20) default null,
        age tinyint unsigned not null,
        sex tinyint not null,
        primary key(id)
    )engine=innodb default charset=utf8;
  • 插入数据:

    • 方式1:不指定字段,按照数据表的数据添加一条数据的全部字段

      
      insert into star values(1,'黄晓明',200000,'山东',28,0);

      可以同时插入多条数据,每条一个小括号。

    • 方式2:指定字段,只需要传递指定字段的值

      
      insert into star(name,money,age,sex,province) values('小岳岳',4000000, 33, 0, '河南');

      可以同时插入多条数据,每条一个小括号

    • 注意:什么情况下可以不传字段值

      • 自增的字段

      • 有默认值的

      • 可以为空的

    • 说明:插入数据通常使用方式2,可以根基需要进行数据的插入。

  • 查询数据:

    • select * from star;

  • 删除数据:

    • delete from star where id=1;

    • 警告:删除操作一定不要忘了指定条件,否则后果自负。

  • 修改数据:

    • update star set age=22,money=8000000 where id=6;

    • 警告:修改操作一定不要忘了指定条件,否则后果自负。

数据查询语言(DQL)

  • 基础查询:select * from star;

  • 指定字段查询:select id,name,money from star;

  • 排除重复记录:select distinct name from star;

    • 使用distinct修饰的字段组合不能重复

  • 指定条件查询:

    • 条件:

      符号说明
      >大于
      >=大于等于
      <小于
      <=小于等于
      =等于
      != 或 <>不等于
      and并且
      or或者
      [not] between m and n[不]在指定[m,n]的闭区间
      [not] in[不]在指定的集合中
      [not] like模糊匹配,%表示任意字符
    • 示例:

      
      select id,name,money from star where id > 4;
      select id,name from star where id between 2 and 5;
      select id,name from star where id in(2,4,6);
      select id,name from star where name like '小%';
  • 结果集排序:

    • 示例:select id,name,money from star order by money desc;

    • order by :指定排序字段

      • asc:升序,默认的

      • desc:降序

    • 也可以多字段排序,先按照前面的字段排序,再按照后面字段排序

      • 示例:select id,name,money,age from star order by money desc,age asc;

  • 限制结果集:

    • 示例:

      
      select id,name,money from star limit 3;                 # 取3条数据
      select id,name,money from star limit 2,3;               # 偏移2条,然后取3条数据
      select id,name,money from star limit 3 offset 2;        # 偏移2条,然后取3条数据
    • 用途:分页显示,假设一页显示10条数据

      第一页:limit 0, 10
      第二页:limit 10, 10
      第三页:limit 20, 10
      page:表示页数,pageSize:表示一页的大小
      查询条件:limit (page-1)*pageSize, pageSize
  • 常用聚合函数

    函数功能
    count统计个数
    sum求和
    max最大值
    min最小值
    avg平均值
    1. 使用count时指定任何字段都行

    2. 使用其他函数时必须要指定字段

    示例:

    
    select count(*) from star;
    select max(money) as m from star;

    as可以给字段其别名

  • 分组操作

    • 示例:

      
      select * from star group by sex;                    # 分组
      select count(*), sex from star group by sex;        # 分组统计
  • 结果集过滤:

    • 示例:

      
      select count(*) as c,province from star group by province having c>1;

      搜索所有记录,然后按照省份分组,统计成员大于1的省份

数据控制语言(DCL)

  • 创建用户:

    • 格式:create user '用户名'@'主机' identified by '密码'

    • 示例:create user 'jerry'@'%' identified by '123456'

  • 授权用户:

    • 格式:grant 权限 privileges on 库.表 to '用户'@'主机' identified by '密码'

    • 示例:grant all privileges on test.* to 'jerry'@'%' identified by '123456'

  • 查看授权:

    • 格式:show grants for '用户'@'主机'

    • 示例:show grants from 'jerry'@'%'

  • 刷新权限:flush privileges;

  • 取消授权:

    • 格式:revoke 权限 privileges on 库.表 from '用户'@'主机';

    • 示例:revoke all privileges on test.* from 'jerry'@'%';

  • 删除用户:

    • 格式:drop user '用户'@'主机'

    • 示例:drop user 'jerry@'%'

  • root用户远程登录:

    • sudo mysql_secure_installation,根据提示配置,允许root用户远程登录

    • 修改配置文件:sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

      • 将bind-address=127.0.0.1,改为bind-address=0.0.0.0

    • 给root添加授权主机,%表示所有主机

      • 如:grant all privileges on *.* to 'root'@'%' identified by '123456'

      • 给root用户添加任意主机以123456作为密码登录,对所有的库下的所有表用于所有权限

多表联合查询

  • 隐式内连接:没有出现join关键的连接

    • 示例:select username,name from user,goods where user.gid=goods.gid;

    • 说明:查看用户买的商品名

  • 显式内连接:会出现join关键字,后面的条件使用on

    • 示例:select username,name from user [inner/cross] join goods on user.gid=goods.gid;

    • 说明:功能同上

    • join前可以加inner,也可以使用cross,也可以省略

  • 外左连接:以左表为主

    • 示例:select username,name from user left [outer] join goods on user.gid=goods.gid;

    • 说明:以左表为主,显示左边所有内容,右表不匹配的选项显示NULL

  • 外右连接:以右表为主

    • 说明:将left换成right即表示右连接

练习:

  • 第一题:

    • 找出年龄大于30的明星

    • 按照省份进行分组

    • 找到明星个数大于1的省份

    • 找到明星个数第二多的省份及个数

  • 第二题:

    • 找出没有被购买过的商品

    • 找出哪类商品是销量冠军

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL入门学习(1)。   MySQL入门学习(1) · 安装篇 PHP+MySQL+Linux目前已逐渐成为小型web服务器的一种经典组合。在indows环境下构筑和调试MySQL数据库是许多网站开发者的一种首选。本人在Windows98环境下初学MySQL,现将学习过程与经验总结出来供大家参考。 1、下载mysql-3.23.35-win.zip并解压; 2、运行setup.exe;选择d:\mysql,"tyical install" 3、启动mysql,有如下方法: · 方法一:使用winmysqladmin 1)、进入d::\mysql\bin目录,运行winmysqladmin.exe,在屏幕右下角的任务栏内会有一个带红色的图符 2)、鼠标左键点击该图符,选择“show me”,出现“WinMySQLAdmin”操作界面;首次运行时会中间会出现一个对话框要求输入并设置你的用户名和口令 3)、选择“My.INI setup” 4)、在“mysqld file”中选择“mysqld-opt”(win9x)或“mysqld-nt”(winNT) 5)、选择“Pick-up or Edit my.ini values”可以在右边窗口内对你的my.ini文件进行编辑 6)、选择“Save Modification”保存你的my.ini文件 7)、如果你想快速使用winmysqladmin(开机时自动运行),选择“Create ShortCut on Start Menu” 8)、测试: 进入DOS界面; 在d:\mysql\bin目录下运行mysql,进入mysql交互操作界面 输入show databases并回车,屏幕显示出当前已有的两个数据库mysql和test · 方法二:不使用winmysqladmin 1)、在DOS窗口下,进入d:/mysql/bin目录 2)、win9X下)运行: mysqld 在NT下运行: mysqld-nt --standalone 3)、此后,mysql在后台运行 4)、测试mysql:(在d:/mysql/bin目录下) a)、mysqlshow 正常时显示已有的两个数据库mysql和test b)、mysqlshow -u root mysql 正常时显示数据库mysql里的五个表: columns_priv db host tables_priv user c)、mysqladmin version status proc 显示版本号、状态、进程信息等 d)、mysql test 进入mysql操作界面,当前数据库为test 5)、mysql关闭方法: mysqladmin -u root shutdown 4、至此,MySQL已成功安装,接着可以熟悉MySQL的常用命令并创建自己的数据库了。 上篇讲了如何安装并测试MySQL,环境建好后就可以继续我们的学习了。本篇主要熟悉一写常用命令。 · 1、启动MySQL服务器 实际上上篇已讲到如何启动MySQL。两种方法: 一是用winmysqladmin,如果机器启动时已自动运行,则可直接进入下一步操作。 二是在DOS方式下运行 d:mysqlbinmysqld · 2、进入mysql交互操作界面 在DOS方式下,运行: d:mysqlbinmysql 出现: mysql 的提示符,此时已进入mysql的交互操作方式。 如果出现 "ERROR 2003: Can´t connect to MySQL server on ´localhost´ (10061)“, 说明你的MySQL还没有启动。 · 3、退出MySQL操作界面 在mysql>提示符下输入quit可以随时退出交互操作界面: mysql> quit Bye 你也可以用control-D退出。 · 4、第一条命令 mysql> select version(),current_date(); +----------------+-----------------+ | version() | current_date() | +----------------+-----------------+ | 3.23.25a-debug | 2001-05-17 | +----------------+-----------------+ 1 row in set (0.01 sec) mysql> 此命令要求mysql服务器告诉你它的版本号和当前日期。尝试用不同大小写操作上述命令,看结果如何。 结果说明mysql命令的大

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值