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数据库软件的运行数据、日志信息、性能数据
+--------------------+ 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基础(一)的更多相关文章
- Mysql基础代码(不断完善中)
Mysql基础代码,不断完善中~ /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限 ...
- MYSQL基础操作
MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...
- 【夯实Mysql基础】记一次mysql语句的优化过程
1. [事件起因] 今天在做项目的时候,发现提供给客户端的接口时间很慢,达到了2秒多,我第一时间,抓了接口,看了运行的sql,发现就是 2个sql慢,分别占了1秒多. 一个sql是 链接了5个表同时使 ...
- MySQL基础(非常全)
MySQL基础 一.MySQL概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access ...
- mysql 基础篇5(mysql语法---数据)
6 增删改数据 -- ********一.增删改数据********* --- -- 1.1 增加数据 -- 插入所有字段.一定依次按顺序插入 INSERT INTO student VALUES(1 ...
- MySQL 基础语句
MySQL 基础语句 多个知识点 ----------------------------------------------------------------------------------- ...
- MySQL:基础—数据分组
MySQL:基础-数据分组 1.为什么要分组: 比如一个表中有多条订单记录,如上图,每条记录对应着一个商品,现在我要查询 每个商品被订购的单数 准备出货?也就是找到每个商品被订购的数量. 如果只找一个 ...
- MySQL基础学习总结
1.MySQL基础概念 mysql逻辑架构如下: 每个客户端连接都会在服务器中拥有一个线程,这个连接的查询只会在这个单独的线程中执行. MySQL是分层的架构.上层是服务器层的服务和查询执行引擎,下层 ...
- MySQL基础(五)——视图
MySQL基础(五)--视图
- MySQL基础(四)——索引
MySQL基础(四)--索引
随机推荐
- Mysql 的特殊之处
互联网公司一般都会选择在互联网得到广泛应用的Mysql,但之前一直用微软的东东,包括数据库(MS SQLServer). 这不本以为切换数据库so easy,但是还是有些细节需要注意. 数据类型 Da ...
- Jmeter+TCP\Scoket(8583)报文压力测试
Jmeter一般被用来测试HTTP协议,我第一次拿来测试socket协议,pos机传输报文为8583,协议属于socket,也是TCP协议的一种,网上有LR怎么测试8583报文,我就研究了一下怎么用J ...
- tst、cmp、bne、beq指令
1.tst:逻辑处理指令,用于把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的与运算,并根据运算结果更新CPSR中条件标志位的值.当前运算结果为1,则Z=0:当前运算结果为0,则Z=1 cmp ...
- 嵌入式Linux驱动学习之路(二十五)虚拟网卡驱动程序
一.协议栈层次对比 设备无关层到驱动层的体系结构 1).网络协议接口层向网络层协议提供提供统一的数据包收发接口,不论上层协议为ARP还是IP,都通过dev_queue_xmit()函数发送数据,并通过 ...
- sql
http://www.cnblogs.com/ASPNET2008/archive/2012/06/30/2570737.html
- C++基本数据类型总结
一.整形 1.整形有char.short.int.long.long long,这5个也默认为signed XX ; 规则:short至少16位:int至少和short一样:long至少32位,且至少 ...
- [LeetCode] Valid Perfect Square 检验完全平方数
Given a positive integer num, write a function which returns True if num is a perfect square else Fa ...
- [LeetCode] Count and Say 计数和读法
The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...
- python基础补漏-04-常用函数
----lambda 首先我们说,很遗憾 在python中lambda 仅仅只是一个表达式 那么如何去使用呢? 这个是lambda最简单的使用方式 一般跟map一起配合使用 --map (fun,l ...
- 在javascript中使用Json
jSON是JavaScript面向对象语法的一个子集.由于JSON是JavaScript的一个子集,因此它可清晰的运用于此语言中. 文本生成json对象,必须在外面加一对括号. js 代码 var m ...