数据库介绍
1、数据库是干什么的?
存储网站上边的数据
2、数据库的种类
数据库的存储类型:关系型、非关系型
关系型数据库有:MySQL、SQL Server、Oracle
非关系型数据库有:MongoDB、Redis
采用键值对的方式进行数据存储
3、数据库相关概念
服务器:其实就是一台可以给用户提供某些特殊需求的网络上的电脑
数据库服务器:安装有MySQL软件的电脑
数据库:存储在数据库服务器中的
数据表:在数据库中创建的,用于存储数据
字段:数据表中的列名
记录:(也称为数据行)是表中相关数据的有序集合
数据库服务器中可以创建很多的库,每一个数据库又可以创建很多张数据表,数据表中又可以创建很多的字段,根据数据表中的字段,又可以存储很多的记录
学习MySQL
1、如何连接数据库服务器
a、dos窗口,只能够通过sql语句来实现想要达到的目的,并且当sql语句结束的时候,需要使用;
b、第三方软件,可以通过图形界面去实现数据库的操作
navicat
aqlvog
MySQL的默认端口号是:3306 需改为3308
主机ip不用改,如果连接不上在进行更改,修改为127.0.0.1
root用户名是数据库超级管理员用户,开发中一般不适用root用户进行链接数据库
特别注意:数据无价
项目开始之初,整个数据库设计要完成,开发过程中仅仅进行微调,切忌随意删改数据
2、操作数据库
四字真言:增删改查(CURD)create update read delete
数据库
创建数据:create database 数据库名
查询当前服务器中全部数据库:show databases;
切换数据库:use 数据库名称;
删除数据库:drop database 数据库名称
数据表
创建数据表:CREATE TABLE表名称(
字段名称 数据类型【约束】【备注】,
......
)ENGINE=InnoDB charset=字符集(utf8)
备注、约束可写可不写
查询所有数据表:show tables;
查看数据表创建的语句:show create table 表名称
删除表:drop table 表名称
自增从7开始
2.1数据类型
1、字符串
char
varchar
text
longtext
—— 数据类型char和varchar的区别是什么?
a. char是固定长度,varchar是可变长度 当你存入的字符串长度小于设定的值,char类型所使用的长度,就是设定的值;varchar使用的是字符的实际长度。
b. 存储大小不一样 varchar可存储65535个字符,char可存储255个字符
c. 存储速度不同 char类型的存储速度要比varchar类型 存储速度快
2、数字
a、整数
tinyint
smallint
int
b、小数
float
double
decimal
3、时间
date 年月日
datetime 年月日时分秒
timestamp 年月日时分秒 当数据发生改变时,时间自动更新
NOW() 当前时间
例:设计一张电商用户表
表名称:users
用户名 name varchar(20)
手机号 phone char(11)
编号 uid int
性别 sex tinyint
生日 birth date
邮箱 email varchar(30)
状态 status tinyint
注册时间 createTime datetime
更新时间 updateTime timestamp
数据表中的字段不建议使用中文
COMMENT:设置备注
2.2约束
1、空约束
NULL 允许字段插入空值
2、非空约束
NOT NULL 不允许字段插入空值
3、默认值约束
DEFAULT 给字段设置默认值,在字段不插入值得情况下将默认值填入
4、主键约束
PRIMARY KEY 标识唯一列,主键字段的值不会有重复值出现,一张表中只能出现一个主键字段
5、唯一约束
unique 不会有重复值出现,一张表中可以有多个
6、外键约束
FOREIGN KEY 用于从表中的某一字段/
1、涉及两张表之间的关联,拥有外键字段的表叫做从表,外键字段的值的来源那张表叫做主表
2、主表中的字段必须是主键
3、主表和从表的存储引擎必须是innodb
4、一张表中可以设置多个外键字段
a、外键添加(重要)
语法:Alter TABLE 表名称ADD CONSTRALNT 外键名称FOREIGN KEY(外键字段)REFERENCES主表名称(主键字段)【ON UPDATE 级联操作设置】【ONDELETE 级联操作设置】
#将stuinfo 表中的cid字段设置成外键
alter table stuinfo ADD CONSTRAINT fk_cid FOREIGN KEY (cid) REFERENCES classInfo(cid)
查看表中的约束:SHOW INDEX FROM 表名称
查看全部数据表:SHOW TABLES
b、删除外键
语法:AITER TABLE 表名称 DROP 外键名称
c、外键的级联操作
——casecade 级联
——no action 不做任何操作,不允许级联操作
——set null 设置为空
2.3记录的添加、删除、修改
1、添加记录
语法:INSERT INTO 表名称(字段1,字段2,......)VALUES(值1,值2,.......);
1):根据字段来插入值
2):缺省字段插入记录
3):多条插入
注意:
1、插入的字段个数必须与插入的值得相同
2、时间类型的值 ,需要使用引号引出来
3、插入值时缺省字段,那么值得顺序与个数与字段的顺序及个数必须保持一致
4、多条记录插入时,值得列表使用逗号隔开
2、修改记录
语法:U PDATE 表名称 SET 字段名=修改后值,......WHERE条件
举例:update users set status=0 where uid=2
特别注意:在执行修改语句时,一定要写where条件,如果不写where条件,则默认对数据表中所用的记录进行修改
3、删除记录
语法:DELETE FROM 表名称 WHERE 条件
示例:删除uid=2的记录
DELETE FROM users WHERE uid=2
4、查询记录
语法:SELECT 字段列表 EROM users【WHERE 条件】
1、查询全部字段,可以使用*号代替
SELECT * FROM 字段名
2、指定字段查询
<#查询users表中的姓名和手机号
SELECT name, phone FROM users;
3、查询的过程中设置字段别名,使用关键字as进行别名设置
SELECT name as 姓名, phone as手机号 FROM users;
#随堂练习1:查询鼠标的产品型号一共有多少个
SELECT count(*) as 鼠标类型个数 FROM m_goods where catId = (select catId from m_goodscate where catName = '鼠标'
#随堂练习2: 查询所有商品中销售价格最高的商品信息
SELECT * from m_goods where specPrice = (SELECT max(specPrice) FROM m_goods)
#随堂练习3:找出成本价最低的商品信息
SELECT * from m_goods where costPrice = (SELECT min(costPrice) FROM m_goods)
#随堂练习4:全部信息的平均成本价格是多少
SELECT avg(costPrice) as 平均成本价 from m_goods
#随堂练习5:全部商品都售出,可以郑多少钱?
select sum((specPrice-costPrice)*stock) as 总利润 FROM m_goods>
ORDER BY 总分 DESC:降序,从高到低排列。
rollback:相当于开启事务之后的sql语句都没有执行
给值进行命+AS名例:name AS 姓名