数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。由很多表组成,表以行和列组织数据。很多行和列组成了表,很多表又组成了数据库。
本文采用的数据库版本为MySQL 5.7 ,文章中如有错误,请指正,共同进步。
===========================================================================
注意在客户端每次输入完语句一定要加;
show databases;
–格式 create database 【数据库名称】;
create database test;
注意:不能创建同名的数据库
–格式 use【数据库名】
use test;
注意:每次要操作数据库中的表时,必须要先执行 use【数据库名】语句
–格式 drop database 【数据库名】;
drop database test;
数据库删除后里面的表和数据全被删除了。
============================================================================
整数和小数类型
| 数据类型 (整数) | 大小及说明 |
| — | — |
| bit[(M)] | M指定位数,默认为1 |
| tinyint | 1字节 |
| smallint | 2字节 |
| int | 4字节 |
| bigint | 8字节 |
| 数据类型(小数) | 大小及说明 |
| — | — |
| float(M,D) | 4字节(单精度M是有效数字位数,D是小数位数,会发生精度丢失) |
| double(M,D) | 8字节 |
| decimal(M,D) | M/D最大值+2(使用最多,M是有效数字位数,D是小数位数)较准确,但是计算慢 |
| numeric(M,D) | M/D最大值+2 |
| 数据类型 | 大小及说明 |
| — | — |
| varchar(size) | 0~65535字节 (size是根据需求去定义了,字符串长一点就定义大一点,短一点就定义小一点) |
| text | 0~65535字节 |
| mediumtext | 0~16777215字节 |
| blob | 0~65535字节 |
| 数据类型 | 大小及说明 |
| — | — |
| datatime | 8字节 范围使从1000到9999年,不会进行时区的检索及转换 |
| timestamp(时间戳) | 4字节 范围使从1970到2038年,自动检索当前时区并进行转换 |
时间戳也是当前计算机存储和表示时间的基本方式,因为其空间小,并且方便计算
=========================================================================
需要操作数据库中表使,需要先使用该数据库
–格式 desc 【表名】
desc test;
注意:没有table 关键字
–格式 create table 【表名】;
create table test;
show tables;
注意:要加s
–格式 drop table 【表名】;
drop table test;
例子:定义一个图书表内有 图书名称、作者名字、价格、种类。
create database test; --创建一个数据库
use test; --选中test数据库 进行操作
create table books(bookname varchar(64),bookauthor varchar(64),bookprice decimal(4,2),category varchar(32));
–创建图书名称(字符串类型)、作者名字(字符串类型)、价格(4位有效数字,小数点后有两位)、种类(字符串类型)。
一个很简单的图书表,还没进行增删改查。
================================================================================
–格式
–insert [into] 【表名】 valuse; 全列插入 [into] 可省略
–insert [into] (字段名字) valuse; 指定列(字段名字)插入 [into] 可省略
1.单行数据全列插入
insert into books values (‘平凡的世界’,‘路遥’,79.99,‘长篇小说’);
2.多行数据全列插入
insert into books values (‘骆驼祥子’,‘老舍’,68.99,‘长篇小说’),
(‘许三观卖血记’,‘余华’,49.99,‘长篇小说’);
3.单行数据指定列插入
insert into books (bookname,bookauthor,bookprice)values (‘白鹿原’,‘陈忠实’,72.80);
insert into books (bookname,bookprice,category)values (‘计算机组成原理’,72.80,‘计算机类’);
注意插入指定列元素时一定要和指定列的类型相匹配。
4.2.1全列查询
–格式 select * from 【表名】;
select * from books;
4.2.2指定列查询
–格式 select (指定字段) from 【表名】;
select bookname from books;
指定书名:
4.2.3包含表达式的查询
– 格式 selcet (指定字段)+表达式 from 【表名】;
select bookname,bookprice+10 from books;
在每个书的价格上都加上10元
4.2.4别名查询
–格式 select (字段) [as] 别名 from 【表名】;
新增折扣属性
select bookprice*(discount/100) as declineprice from books; --优惠了多钱
4.2.5去重
使用distinct 关键字对某列数据去重
去重优惠幅度为10 的
–格式 select distinct (字段名称) from 【表名】
4.2.6排序
使用关键字 order by
asc 为升序 (从小到大)
desc 为降序 (从大到小)
默认为ASC
–格式 : select (要显示的字段名称) from 【表名】 order by (要排序的字段) (asc)//可省略asc
– select (要显示的字段名称) from 【表名】 order by (要排序的字段) desc //降序
4.2.7条件查询
比较运算符:
| 运算符 | 说明 |
| — | — |
| >,>=,<,<= | 比较大小 |
| = | 等于, NULL不安全,例如 NULL=NULL的结果是NULL |
| <=> | 等于 NULL安全,例如 NULL<=>NULL的结果是TRUE(1) |
| !=,<> | 不等于 |
| between a and b | 范围匹配【a,b】闭区间,如果在范围内 返回TRUE (1) |
| in(option) | 如果是option 中的任意夜歌,返回TRUE(1) |
| is NULL | 是NULL |
| is not NULL | 不是NULL |
| LIKE | 模糊匹配,%表示任意多个(包括0个字符,)_表示任意一个字符 |
逻辑运算符:
| 运算符 | 说明 |
| — | — |
| AND | “与” 。条件必须全部满足才返回TRUE(1) |
| OR | ‘’或‘ 。 满足任意一个条件即可,返回TRUE(1) |
| NOT | “非” 。 条件为TRUE的话,结果就是FALSE(0) |
注意:1.where 条件可以使用表达式,但是不能使用别名
2.AND的优先级要高于OR
演示部分条件查询:
–格式 select (字段结果集) from 【表名】 where [条件]
1.查询价格高于75的书籍名称:
select bookname from books where bookprice>75;
2.书名第一字为“平“的书籍名