Mysql的历史度娘上一堆,就不再介绍了。

本文依照此路径学习Mysql数据库:数据库->表->数据

首先启动Mysql服务,然后通过控制台命令登入root账户输入密码回车

C:\Users>mysql -u root -p
Enter password: ******

闲话不说,直接进入Mysql命令的学习。

一:数据库

1.1:查看当前所有的数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |   -- 此数据库存放mysql的元数据,基础数据。
| mysql              |  -- mysql配置数据库,包括用户信息(账户名、密码、权限管理)等。
| performance_schema |  -- mysql数据库软件的运行数据、日志信息、性能数据
+--------------------+
 rows in set (0.00 sec)

1.2:创建数据库,并命名为isole

mysql> create database isole;
Query OK,  row affected (0.00 sec)

1.3:查看数据库的默认字符集

mysql> show create database isole;
+----------+------------------------------------------------------------------+
| Database | Create Database                                                  |
+----------+------------------------------------------------------------------+
| isole    |  DEFAULT CHARACTER SET latin1 */ |
+----------+------------------------------------------------------------------+
 row in set (0.00 sec)

 由上可知,此数据库的编码为latin1,我们都知道通常我们使用utf-8编码

1.4:修改数据库的默认字符集并且查看,注意修改的时候utf-8写成utf8

mysql> alter database isole default character set utf8;
Query OK,  row affected (0.00 sec)

mysql> show create database isole;
+----------+----------------------------------------------------------------+
| Database | Create Database                                                |
+----------+----------------------------------------------------------------+
| isole    |  DEFAULT CHARACTER SET utf8 */ |
+----------+----------------------------------------------------------------+
 row in set (0.00 sec)

1.5:删除数据库

mysql> drop database isole;
Query OK,  rows affected (0.00 sec)

1.6:在创建数据库的时候指定编码的格式:

mysql> create database isole default character set utf8;
Query OK,  row affected (0.00 sec)

二:表的管理

2.1操作表首先要选择相关的数据库,此处我们选择isole数据库

mysql> use isole;
Database changed
mysql>

2.2创建表student 字段设sid sname sage三个

mysql> create table student(  -- student是表的名称
    -> sid int,    -- int 是类型
    -> sname varchar(),  -- (30)是字段长度
    -> sage int    -- sage是字段名称
    -> );
Query OK,  rows affected (0.18 sec)

mysql>

2.3查看当前数据库中所有的表

mysql> show tables;
+-----------------+
| Tables_in_isole |
+-----------------+
| student         |
+-----------------+
 row in set (0.00 sec)

mysql>

2.4查看某个表字段的结构,此处以student为例

mysql> desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| sid   | int()     | YES  |     | NULL    |       |
| sname | varchar() | YES  |     | NULL    |       |
| sage  | int()     | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

2.5:student表增加字段sgender varchar(2)

mysql> alter table student add column sgender varchar();
Query OK,  rows affected (0.34 sec)
Records:   Duplicates:   Warnings: 

2.6:student表修改字段sgender改成gender

mysql> alter table student change sgender gender varchar();
Query OK,  rows affected (0.13 sec)
Records:   Duplicates:   Warnings: 

2.7student表中的sid int修改字段类型为sid varchar(5)

mysql> alter table student modify sid varchar();
Query OK,  rows affected (0.41 sec)

2.8student表删除字段gender

mysql> alter table student drop gender;
Query OK,  rows affected (0.35 sec)
Records:   Duplicates:   Warnings: 

2.9修改表的名称student为teacher

mysql> alter table student rename teacher;
Query OK,  rows affected (0.06 sec)

2.10删除表teacher

mysql> drop table teacher;
Query OK,  rows affected (0.10 sec)

三:数据

先创建学生表,字段以及类型如下

mysql> create table student(
    -> sid int,
    -> sname varchar(),
    -> sgender varchar(),
    -> sage int
    -> );
Query OK,  rows affected (0.18 sec)

3.1增加数据

  3.1.1增加张三、李四的信息,插入对应字段的所有信息,此时可以不写出字段

mysql> insert into student values(,);
Query OK,  row affected (0.06 sec)

mysql> insert into student values(,);
Query OK,  row affected (0.06 sec)

  3.1.2增加王二的信息,此时不知道王二的年龄,注意字段与值必须一一对应!

mysql> insert into student(sid,sname,sgender) values(,'王二','女');
Query OK,  row affected (0.07 sec)

3.2修改数据

  3.2.1修改所有的数据(建议少用,因为会影响整个表的每个学生),此处将所有学生的性别设置为'女'

mysql> update student set sgender='女';
Query OK, 1 row affected (0.09 sec)
Rows matched: 3 Changed: 1 Warnings: 0

  3.2.2带条件的修改,修改id为1的学生,将其性别修改为男,年龄修改为22

mysql> update student set sgender= where sid=;
Query OK,  row affected (0.06 sec)
Rows matched:   Changed:   Warnings:  

3.3删除数据

  3.3.1删除所有数据

mysql>delete from student;
Query OK,  row affected (0.06 sec)

  3.3.2带条件的删除 删除sid=3的学生信息

mysql> delete from student where sid=;
Query OK,  row affected (0.06 sec)

 注意:数据的删除有两种,一种delete删除,另外一种是truncate删除

区别:

  delete from:     可以全表删除   1)可以带条件的删除 2)删除表的数据不删除表的约束 3)删除的数据可以回滚

  truncate table:可以全表删除 1)不可待条件的删除 2)删除表的数据以及表的约束    3)删除的数据不能够回滚

 四、查询数据

  4.1查询表中的所有数据,*代表所有字段

mysql> select *from student;
+------+-------+---------+------+
| sid  | sname | sgender | sage |
+------+-------+---------+------+
|     | 张三  | 男      |    |
|     | 李四  | 女      |    |
|     | 王二  | 女      | NULL |
+------+-------+---------+------+
 rows in set (0.00 sec)

  4.2查询某些列的数据,例如查询学生id和姓名

mysql> select sid,sname from student;
+------+-------+
| sid  | sname |
+------+-------+
|     | 张三  |
|     | 李四  |
|     | 王二  |
+------+-------+
 rows in set (0.00 sec)

  4.3查询时去除重复的字段,例如只查询有多少种性别

mysql> select distinct sgender from student;
+---------+
| sgender |
+---------+
| 男      |
| 女      |
+---------+
 rows in set (0.00 sec)

  4.4查询时指定别名  AS

mysql> select sid as '编号',sname as '姓名' from student;
+------+------+
| 编号 | 姓名 |
+------+------+
|     | 张三 |
|     | 李四 |
|     | 王二 |
+------+------+
 rows in set (0.00 sec)

  4.5条件查询,and(且)和or(或)

查询id为2且姓名为'李四'的学生信息

mysql>  and sname='李四';
+------+-------+---------+------+
| sid  | sname | sgender | sage |
+------+-------+---------+------+
|     | 李四  | 女      |    |
+------+-------+---------+------+
 row in set (0.00 sec)

查询id=3或者姓名为张三的学生信息

mysql>  or  sname='张三';
+------+-------+---------+------+
| sid  | sname | sgender | sage |
+------+-------+---------+------+
|     | 张三  | 男      |    |
|     | 李四  | 女      |    |
+------+-------+---------+------+
 rows in set (0.00 sec)

为王二同学录入年龄信息

mysql> update student  where sname='王二';
Query OK,  row affected (0.06 sec)
Rows matched:   Changed:   Warnings: 

查询student表中年龄小于等于20岁的学生

mysql> select *from student where sage<=20;
+------+-------+---------+------+
| sid | sname | sgender | sage |
+------+-------+---------+------+
| 2 | 李四 | 女 | 20 |
| 3 | 王二 | 女 | 12 |
+------+-------+---------+------+
2 rows in set (0.00 sec)

查询student 表中年龄在19-21之间的学生

-- 方法1:
mysql>  and sage<;
+------+-------+---------+------+
| sid  | sname | sgender | sage |
+------+-------+---------+------+
|     | 李四  | 女      |    |
+------+-------+---------+------+
 row in set (0.00 sec)

-- 方法2:

mysql>  and ;
+------+-------+---------+------+
| sid  | sname | sgender | sage |
+------+-------+---------+------+
|     | 李四  | 女      |    |
+------+-------+---------+------+
 row in set (0.00 sec)

-- 查询性别不是'男'的学生

mysql> select *from student where sgender <> '男';

+------+-------+---------+------+
| sid | sname | sgender | sage |
+------+-------+---------+------+
| 2 | 李四 | 女 | 20 |
| 3 | 王二 | 女 | 12 |
+------+-------+---------+------+
2 rows in set (0.00 sec)

模糊查询Like

-- % 表示任意个任意字符
-- _ 表示一个任意字符

查询姓'李'的学生的信息
mysql> select *from student where sname like '李%';
+------+-------+---------+------+
| sid  | sname | sgender | sage |
+------+-------+---------+------+
|     | 李四  | 女      |    |
+------+-------+---------+------+
 row in set (0.00 sec)

增加字段math并且录入成绩

mysql> alter table student add math float;
Query OK,  rows affected (0.33 sec)
Records:   Duplicates:   Warnings: 

mysql> update student  ;
Query OK,  row affected (0.07 sec)
Rows matched:   Changed:   Warnings: 

mysql> update student  ;
Query OK,  row affected (0.08 sec)
Rows matched:   Changed:   Warnings: 

mysql> update student  ;
Query OK,  row affected (0.05 sec)
Rows matched:   Changed:   Warnings: 

聚合查询

常见的聚合函数:sum()  avg()  max()   min()  count()

mysql> select sum(math) as'数学总分' from student;
+----------+
| 数学总分 |
+----------+
|       |
+----------+
mysql> select avg(math) as '数学平均分' from student;
+-------------------+
| 数学平均分        |
+-------------------+
| 80.33333333333333 |
+-------------------+

mysql> select max(math) as '数学最高分' from student;
+------------+
| 数学最高分 |
+------------+
| 97 |
+------------+

mysql> select min(math) as '数学最低分' from student;
+------------+
| 数学最低分 |
+------------+
| 57 |
+------------+

mysql> select count(*) as'当前人数为' from student;
+------------+
| 当前人数为 |
+------------+
| 3 |
+------------+

查询排序 order by DESC /ASC

数学成绩的倒序
mysql> select *from student order by math desc;
+------+-------+---------+------+------+
| sid  | sname | sgender | sage | math |
+------+-------+---------+------+------+
|     | 王二  | 女      |    |    |
|     | 张三  | 男      |    |    |
|     | 李四  | 女      |    |    |
+------+-------+---------+------+------+
数学成绩的正序
mysql> select *from student order by math asc;
+------+-------+---------+------+------+
| sid  | sname | sgender | sage | math |
+------+-------+---------+------+------+
|     | 李四  | 女      |    |    |
|     | 张三  | 男      |    |    |
|     | 王二  | 女      |    |    |
+------+-------+---------+------+------+
数学成绩倒序,年龄正序(当数学成绩一样的时候以年龄正序排序)
mysql> select *from student order by math desc,sage asc;
+------+-------+---------+------+------+
| sid  | sname | sgender | sage | math |
+------+-------+---------+------+------+
|     | 王二  | 女      |    |    |
|     | 张三  | 男      |    |    |
|     | 李四  | 女      |    |    |

分组查询 group by

mysql> select sgender,count(*)from student group by sgender;
+---------+----------+
| sgender | count(*) |
+---------+----------+
| 女      |         |
| 男      |         |
+---------+----------+
 rows in set (0.00 sec)

分页查询 limit

起始行从0开始 公式:select *from student limit(当前页-1)*每页显示多少条,每页显示多少条;

mysql> ,;
+------+-------+---------+------+------+
| sid  | sname | sgender | sage | math |
+------+-------+---------+------+------+
|     | 张三  | 男      |    |    |
|     | 李四  | 女      |    |    |
+------+-------+---------+------+------+

特别板块,判空条件(null / '  ')

关键字: is null  /  is not null  /  ="  / <>"   null代表没有该值,空字符串有值且对应ASCII码值是:32

-- 判断null

select *from student where <字段名称>is null;

--判断空

select *from student where 字段名称=";

-- 判断空字符串或者null

select *from student where 字段名称 is null or 字段名称=";

2016-11-23 21:00:47 isole于博客园

Mysql基础(一)的更多相关文章

  1. Mysql基础代码(不断完善中)

    Mysql基础代码,不断完善中~ /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限 ...

  2. MYSQL基础操作

    MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...

  3. 【夯实Mysql基础】记一次mysql语句的优化过程

    1. [事件起因] 今天在做项目的时候,发现提供给客户端的接口时间很慢,达到了2秒多,我第一时间,抓了接口,看了运行的sql,发现就是 2个sql慢,分别占了1秒多. 一个sql是 链接了5个表同时使 ...

  4. MySQL基础(非常全)

    MySQL基础 一.MySQL概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access ...

  5. mysql 基础篇5(mysql语法---数据)

    6 增删改数据 -- ********一.增删改数据********* --- -- 1.1 增加数据 -- 插入所有字段.一定依次按顺序插入 INSERT INTO student VALUES(1 ...

  6. MySQL 基础语句

    MySQL 基础语句 多个知识点 ----------------------------------------------------------------------------------- ...

  7. MySQL:基础—数据分组

    MySQL:基础-数据分组 1.为什么要分组: 比如一个表中有多条订单记录,如上图,每条记录对应着一个商品,现在我要查询 每个商品被订购的单数 准备出货?也就是找到每个商品被订购的数量. 如果只找一个 ...

  8. MySQL基础学习总结

    1.MySQL基础概念 mysql逻辑架构如下: 每个客户端连接都会在服务器中拥有一个线程,这个连接的查询只会在这个单独的线程中执行. MySQL是分层的架构.上层是服务器层的服务和查询执行引擎,下层 ...

  9. MySQL基础(五)——视图

    MySQL基础(五)--视图

  10. MySQL基础(四)——索引

    MySQL基础(四)--索引

随机推荐

  1. nginx在linux下安装

    安装前先确认是否已经安装编译包和一些依赖包如果没有安装: yum install pcre* yum install openssl* yum install zlib yum install zli ...

  2. 安装KVM及虚拟机

      创建lvm       安装kvm相关的包     需要安装的包                                                                 安 ...

  3. .NET中集合已修改;可能无法执行枚举操作 的解决办法

    foreach是取只读的,在取的时候数据不能变(包括修改,删除,添加等).要避免这个问题,就应该使用for循环. https://msdn.microsoft.com/zh-cn/library/tt ...

  4. 原生Ajax

    使用原生Ajax 验证用户名是否被注册 创建出注册信息: <h1>注册信息</h1><input type="text" name="txt ...

  5. 编程语言吉祥物之Duke

    在看到这个可爱的小家伙前,我一直以为那个咖啡杯子是Java的吉祥物.直到拿到<Java性能优化权威指南>这本书,才知道有这个小东西Duke.这位可爱的Duke是由Joe Palrang在1 ...

  6. java数组

    1.java是否可以像c一次样搞个不定长数组? 不可以那样写,那样写是非法的.数组构造的时候必须指定长度,因为JVM要知道需要在堆上分配多少空间.也就是要初始化数组的话让JVM知道要给数组分配多少空间 ...

  7. PAT 1042. 字符统计(20)

    请编写程序,找出一段给定文字中出现最频繁的那个英文字母. 输入格式: 输入在一行中给出一个长度不超过1000的字符串.字符串由ASCII码表中任意可见字符及空格组成,至少包含1个英文字母,以回车结束( ...

  8. node基础12:动态网页

    1.显示动态网页 又到了激动人心的时刻,马上就可以使用node创建动态网站了,其原理为: 在HTML模板中使用占位符 根据请求路径,确定需要返回的页面 根据请求参数来确定静态模板中占位符的值 使用正则 ...

  9. CSS系列——前端进阶之路:初涉Less

    前言:最近帮一个朋友解决点问题,在查看组件源码的时候涉及到了less语法,这可难倒博主了.没办法,既然用到就要学呗,谁让咱是无所不能的程序猿呢!所以今天来学习下Less,算是笔记,也希望给初学less ...

  10. 基于modelsim-SE的简单仿真流程—上

    基于modelsim-SE的简单仿真流程 编写RTL功能代码 要进行功能仿真,首先得用需要仿真的模块,也就是RTL功能代码,简称待测试的模块,该模块也就是在设计下载到FPGA的电路.一个电路模块想要有 ...