1、数据库的基本概念:用来存储或操作数据内容
2、数据库类型:关系型数据库,是目前市场上主流的数据库,主要代表MySQL,Oracle
非关系型数据库,新兴数据库,主要代表MongoDB等
3、SQL语言 - 无论什么数据库产品,都使用SQL语言
DDL - 数据定义语言(数据库+表)
DCL - 数据控制语言(权限)
DQL - 数据查询语言
DML - 数据操作语言
4、注意
SQL语言并不区分大小写(官方建议大写)
SQL语言使用字符串时,建议使用单引号'
5、DDL 主要三个功能 :CREATE|ALTER|DROP
① 数据库操作
创建数据库
用法 - CREATE DATABASE 数据库名称;
查看数据库
用法 - SHOW DATABASES;
修改数据库
用法 - ALTER DATABASE 数据库名称 CHARACTER SET utf8(具体操作);
删除数据库
用法 - DROP DATABASE 数据库名称;
使用(切换)数据库
用法 - USE 数据库名称;
数据库一旦被创建,很少修改或删除
②数据表操作
数据类型
数值(Number)数据类型
INT - 整数
FLOAT/DOUBLE - 浮点型(小数)
DECIMAL - 精确值(金额等)
日期(Date)数据类型
DATE - 日期(默认格式:yyyy-MM-dd)
DATETIME - 日期时间(yyyy-MM-dd hh:mm:ss)
TIMESTAMP - 时间戳(标识:唯一)
字符串(String)数据类型
CHAR - 长度固定的字符串
定义一个字符串的长度为10,实际存储的内容为"abc",未被字符占用的位置会以空格补位
VARCHAR - 长度可变的字符串
定义一个字符串的长度为10,实际存储的内容为"abcde"
一、创建数据表
CREATE TABLE (
字段名称1 数据类型,
字段名称2 数据类型,
...
);
约束
主键约束 - PRIMARY KEY 作用 - 唯一,不可重复
主键自增约束 - AUTO_INCREMENT 作为主键的字段,用于自增,之后就可以设置主键的值为null了
案例:创建用户表(id,name,pwd,age,email)
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT, //标识(唯一,不可重复)
name VARCHAR(30),
pwd VARCHAR(30),
age INT,
email VARCHAR(30),
);
二、删除数据表
用法 - DROP TABLE 表名;
三、查看表结构
用法 - DESC 表名;
6、DML(增删改)
一、插入(新增)数据
用法一
INSERT INTO 表名 VALUES(字段值1,字段值2,...);
* 注意 当前表具有多少字段,VALUES输入多少字段值,如果哪个字段是主键自增的话,使用NULL补位
用法二
INSERT INTO 表名(字段名1,字段名2,...) VALUES(字段值1,字段值2,...)
* 注意表名后定义多少字段,VALUES后输入多少字段,当前数据表的字段是允许为空的
练习 - order表
1. 插入orderid,ordername,price,addr,ordertime
INSERT INTO order VALUES(NULL,'linghuchong',3.5,'huashan','2015-11-17 15:44:40')
2. 插入ordername,addr,ordertime字段值
INSERT INTO order(ordername,addr,ordertime) VALUES('renyingying',10,'heimuya')
二、 更新(修改)数据
用法一 UPDATE 表名 SET 字段名=字段值; 注意 - 修改所有数据(指定字段值)
用法二 UPDATE 表名 SET 字段名=字段值 WHERE 字段名=字段值;
SET后面的"字段名=字段值",为设置的值
WHERE后面的"字段名=字段值",为查询的值
用法三 UPDATE 表名 SET 字段名1=字段值1,字段名2=字段值2 WHERE 字段名=字段值;
练习:修改order表
修改addr字段值为"长春"
UPDATE order SET addr='长春';
修改id为2记录的price修改为100
UPDATE order SET price=100 WHERE orderid=2;
三、 删除数据
用法一 - DELETE FROM 表名; 注意 - 删除指定表中所有数据
用法二 - DELETE FROM 表名 WHERE 字段名=字段值;
实际的开发中基本不使用DELETE语句,以防我们的用户反悔
删除类型
物理删除 - 执行DELETE语句
逻辑删除
简单来说,对于用户来讲是删除的,对于实际来讲并没有删除
为指定表,增加一个字段(state|status),表示当前这条记录是什么状态
值为1的话,表示这条记录是正常的
值为0的话,表示这条记录是删除的
7、 DQL(查)
基本查询 - 新老版本查询所需时间一样
用法一 - SELECT * FROM 表名;
用法二 - SELECT 字段名1,字段名2,... FROM 表名;
条件基本查询
用法 - SELECT * FROM 表名 WHERE 字段名=字段值;
复杂条件查询
AND - 表示多个条件同时满足
OR - 表示其中一个条件满足
IN(SET) - 表示一个字段包含多个值,SET - 多个值,之间使用","
= - 表示字段值为指定值
BETWEEN AND - 等于 >= AND <=
IS NULL - 匹配NULL值
!=或<> -匹配不等的值
排序查询 - ORDER BY 字段名
ASC - 正序排序,默认值,如果想要正序排列可以不用写
DESC - 倒序排序
用法 - SELECT * FROM 表名 WHERE 条件 ORDER BY 字段名;
练习 - myorder
1. 查询addr为"光明顶"的所有记录
SELECT * FROM myorder WHERE addr='光明顶';
2. 查询id为1或ordername为"renyingying"的所有记录
SELECT * FROM myorder WHERE id=1 OR ordername='renyingying';
3. 查询id为1,2,3的所有记录
SELECT * FROM myorder WHERE id in(1,2,3);
8、数据库操作原则 - 只增不删
数据库表示的空
'' - 空字符串 用IS NULL查找时不匹配
NULL - 值不存在 用IS NULL查找时不匹配