Mysql基础(一)

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数据库软件的运行数据、日志信息、性能数据
+--------------------+
3 rows in set (0.00 sec)

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

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

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

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

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

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

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

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

1.5:删除数据库

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

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

mysql> create database isole default character set utf8;
Query OK, 1 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),  -- (30)是字段长度
    -> sage int    -- sage是字段名称
    -> );
Query OK, 0 rows affected (0.18 sec)

mysql>

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

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

mysql>

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

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

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

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

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

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

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

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

2.8student表删除字段gender

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

2.9修改表的名称student为teacher

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

2.10删除表teacher

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

三:数据

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

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

3.1增加数据

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

mysql> insert into student values(1,‘张三‘,‘男‘,18);
Query OK, 1 row affected (0.06 sec)

mysql> insert into student values(2,‘李四‘,‘女‘,20);
Query OK, 1 row affected (0.06 sec)

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

mysql> insert into student(sid,sname,sgender) values(3,‘王二‘,‘女‘);
Query OK, 1 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=‘男‘,sage=22 where sid=1;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1  Changed: 1  Warnings: 0 

3.3删除数据

  3.3.1删除所有数据

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

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

mysql> delete from student where sid=3;
Query OK, 1 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 |
+------+-------+---------+------+
|    1 | 张三  | 男      |   22 |
|    2 | 李四  | 女      |   20 |
|    3 | 王二  | 女      | NULL |
+------+-------+---------+------+
3 rows in set (0.00 sec)

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

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

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

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

  4.4查询时指定别名  AS

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

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

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

mysql> select *from student where sid=2 and sname=‘李四‘;
+------+-------+---------+------+
| sid  | sname | sgender | sage |
+------+-------+---------+------+
|    2 | 李四  | 女      |   20 |
+------+-------+---------+------+
1 row in set (0.00 sec)

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

mysql> select * from student where sid=2 or  sname=‘张三‘;
+------+-------+---------+------+
| sid  | sname | sgender | sage |
+------+-------+---------+------+
|    1 | 张三  | 男      |   22 |
|    2 | 李四  | 女      |   20 |
+------+-------+---------+------+
2 rows in set (0.00 sec)

为王二同学录入年龄信息

mysql> update student set sage=12 where sname=‘王二‘;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1  Changed: 1  Warnings: 0

查询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> select *from student where sage>19 and sage<21;
+------+-------+---------+------+
| sid  | sname | sgender | sage |
+------+-------+---------+------+
|    2 | 李四  | 女      |   20 |
+------+-------+---------+------+
1 row in set (0.00 sec)

-- 方法2:

mysql> select *from student where sage between 19 and 21;
+------+-------+---------+------+
| sid  | sname | sgender | sage |
+------+-------+---------+------+
|    2 | 李四  | 女      |   20 |
+------+-------+---------+------+
1 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 |
+------+-------+---------+------+
|    2 | 李四  | 女      |   20 |
+------+-------+---------+------+
1 row in set (0.00 sec)

增加字段math并且录入成绩

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

mysql> update student set math=87 where sid=1;
Query OK, 1 row affected (0.07 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> update student set math=57 where sid=2;
Query OK, 1 row affected (0.08 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> update student set math=97 where sid=3;
Query OK, 1 row affected (0.05 sec)
Rows matched: 1  Changed: 1  Warnings: 0

聚合查询

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

mysql> select sum(math) as‘数学总分‘ from student;
+----------+
| 数学总分 |
+----------+
|      241 |
+----------+
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 |
+------+-------+---------+------+------+
|    3 | 王二  | 女      |   12 |   97 |
|    1 | 张三  | 男      |   22 |   87 |
|    2 | 李四  | 女      |   20 |   57 |
+------+-------+---------+------+------+
数学成绩的正序
mysql> select *from student order by math asc;
+------+-------+---------+------+------+
| sid  | sname | sgender | sage | math |
+------+-------+---------+------+------+
|    2 | 李四  | 女      |   20 |   57 |
|    1 | 张三  | 男      |   22 |   87 |
|    3 | 王二  | 女      |   12 |   97 |
+------+-------+---------+------+------+
数学成绩倒序,年龄正序(当数学成绩一样的时候以年龄正序排序)
mysql> select *from student order by math desc,sage asc;
+------+-------+---------+------+------+
| sid  | sname | sgender | sage | math |
+------+-------+---------+------+------+
|    3 | 王二  | 女      |   12 |   97 |
|    1 | 张三  | 男      |   22 |   87 |
|    2 | 李四  | 女      |   20 |   57 |

分组查询 group by

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

分页查询 limit

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

mysql> select *from student limit 0,2;
+------+-------+---------+------+------+
| sid  | sname | sgender | sage | math |
+------+-------+---------+------+------+
|    1 | 张三  | 男      |   22 |   87 |
|    2 | 李四  | 女      |   20 |   57 |
+------+-------+---------+------+------+

特别板块,判空条件(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于博客园

时间: 2025-01-13 04:11:21

Mysql基础(一)的相关文章

MySQL基础实战

一.数据库基础: DBMS:数据库管理系统(Database Management System) RDBMS:关系数据库管理系统(Relational Database Management System) C/S:通过专有协议 关系模型:表(行,列),二维关系 范式:第一范式,第二范式,第三范式: 关系运算: 选择 投影 数据库:表,索引,视图(虚表) SQL:结构化查询语言 DDL:数据定义语言 DML:数据操作语言 编程接口: 自行定义存储过程 自行定义存储函数 触发器: 时间调度器:类

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

1. [事件起因] 今天在做项目的时候,发现提供给客户端的接口时间很慢,达到了2秒多,我第一时间,抓了接口,看了运行的sql,发现就是 2个sql慢,分别占了1秒多. 一个sql是 链接了5个表同时使用了 2个 order by和 1个limit的分页 sql. 一个sql是上一个sql的count(*),即链接了5个表,当然没有limit了(取总数). 2. [着手优化] 1)[优化思路] 第一条是 做client调用 service层的数据缓存 第二条就是 优化sql本身. 这里着重讲一下

MySQL 基础(二)

MySQL 基础(二) ============================================================================== 概述: ============================================================================== MySQL   1.数据结构: ★分类: 结构化数据:  关系型数据库 半结构化数据:YAML.XML.JSON 非结构化数据:日志文件,NoSQL  

MYSQL养成记-MYSQL基础增强(Myql函数)

MYSQL基础增强(Myql函数) 在这里只介绍一些常用的,比较新颖的: 字符串函数: CONCAT://字符串连接函数mysql> SELECT CONCAT('My', 'S', 'QL'); -> 'MySQL' mysql> SELECT CONCAT('My', NULL, 'QL');//与null连接会变null -> NULL mysql> SELECT CONCAT(14.3); -> '14.3' CONCAT_WS://含分隔符的字符串连接mysq

mysql基础知识之增删查改使用介绍

 mysql基础知识之增删查改使用介绍 本文主要介绍mysql常用的SELECT.INSERT.UPDATE.DELETE语句的使用,数据库的安装这里不做介绍,并且事先已经准备好相关数据. 本文中使用的student表中的数据如下: mysql> SELECT * FROM student; 一.SELECT语句的使用 1.单表查询 语法格式: SELECT culom1,culom2,culom3 FROM TABLE_NAME; 可以改变字段显示顺序 2.WHERE子句查询 语法格式: SE

mysql基础和数据库的优化

Mysql基础... 4 Mysql介绍... 4 登录mysql mysql –u root –p[掌握]... 4 SQL语言... 4 DCL. 4 grant. 4 revoke. 4 DDL. 4 建库... 4 删库... 4 建表... 4 看表结构... 5 删表... 5 修改表... 5 DML[重点]... 5 增加... 5 删除... 5 修改... 5 查看... 5 排序... 5 总数... 5 求和... 5 平均... 6 最大... 6 最小... 6 表连

MYSQL基础笔记(三)-表操作基础

数据表的操作 表与字段是密不可分的. 新增数据表 1 Create table [if not exists] 表名( 2 字段名 数据类型, 3 字段名 数据类型, 4 字段n 数据类型 --最后一行不需要加逗号 5 )[表选项]; If not exists:如果表名不存在,那么就创建,否则不执行创建代码,实现检查功能. 表选项:控制表的表现 1.字符集:charset/character 具体字符集:--保证表中数据存储的字符集. 2.校对集:collate 具体校对集: 3.存储引擎:e

mysql基础itcast笔记

1. 课程回顾 mysql基础 1)mysql存储结构: 数据库 -> 表 -> 数据   sql语句 2)管理数据库: 增加: create database 数据库 default character utf8; 删除: drop database 数据库; 修改: alter database 数据库 default character gbk; 查询: show databases / show create database 数据库; 3) 管理表: 选择数据库:use 数据库; 增

MySQL基础知识

MySQL基础知识: 一. 知识点:        1. SQL分类:按照其功能不同,分为3中类别           DDL(Data Defintion Language):数据定义语句,用于定义不同的数据段.数据库.表.列.索引等.常用的语句关键字包括create.drop.alter等;             DML(Data Manipulation Language):数据操纵语句,用于添加.删除.更新和查询数据库记录,并检查数据的完整性.常用的语句关键字主要包括insert.de

MySQL基础学习之数据查询

一般查询 SELECT * FROM 表名 SELECT 属性名  FROM  表名 条件查询 SELECT 属性名 FROM 表名  WHERE 条件表达式 查询数据值1,数据值2的表单 SELECT *  FROM  表名  WHERE  属性名 [NOT] IN(数据值1,数据值2....) 查询数值1,数据2的表单 SELECT *  FROM  表名  WHERE  属性=值  AND 属性1=值1 查询数值1到数值2之间的表单 SELECT *  FROM  表名  WHERE  属