数据库的概念:
数据库就是储存数据的仓库,其本质就是一个文件系统,按照特定的格式将数据储存起来,用户可以对数据库中的数据进行操作,增加,删除,修改及查询操作。
数据库管理系统:
指一种操作和管理数据库的软件,用户通过数据库管理工具操作数据库中的数据,以保证数据的安全性和完整性。
数据库的特点:
1、持久化储存数据
2、方便储存和管理数据
储存数据具有一定的格式
把行列当作表格就可以了
3、使用了统一的方式操作数据库
使用图形化界面的形式查看数据
使用sql语言进行查看或管理数据
常用的数据库:
关系型数据库:
MySQL | 开源免费的数据库,小型数据库,被Oracle收购,6.x版本开始收费 |
---|---|
Oracle | 收费的大型数据库,Oracle公司产品 |
DB2 | IMB公司的,收费的,常应用在银行系统中 |
SQL Server | MincroSoft公司收费的中型数据库,C#,.net语言常用 |
SQLite | 嵌入式的小型数据库,应用于手机端:Android |
OceanBase | 阿里的大型数据可,性能已经超过Oracle全球第一【国产】 |
非关系型数据库:
MongoDB | 最流行的文档型数据库 |
---|---|
Readis | 基于内存的键值对性数据库,通过Key-Value键值对的方式来储存数据 |
MySQL的安装:
1、安装路径不能有中文和特殊符号
2、端口号默认为3306,不要改
3、字符集的编码必须是utf8
4、将bin目录添加到path环境中
MySQL的卸载:
MySQL服务启动:
1、cmd ===》 services.msc打开服务的窗口 ===》 MySQL服务启动
2、使用管理员打开cmd ===》 net start mysql
MySQL服务关闭:
1、cmd ===》 services.msc打开服务的窗口 ===》 MySQL服务关闭
2、使用管理员打开cmd ===》 net stop mysql
MySQL登录:
本地登录:mysql -u用户名 -p密码
指定ip登录:mysql -h主机地址 -u用户名 -p密码
MySQL退出:
SQL概述:
什么是SQL:
1、结构化的查询语言,对数据库操作的一种语言
2、一套标准,所有的数据库厂商都实现了此标准,但各自厂商都有自己特定的语句,这部分被称之为“方言”
SQL通用语法:
1、SQL语句可以单行或多行书写,分号结尾
2、可以使用空格和缩进增强语句的可读性
3、mysql数据库的sql语句不区分大小写(win系统),关键字建议大写
库名,表名,字段名,别名 建议小写
4、三中注释
1、单行:— 或 #(mysql特有)
2、多行:/ /
SQL语句分类:
DDL:数据定义语言 ===》 数据库或表的操作
定义数据库对象:数据库,表,列等(关键字:create,drop,alter)
DML:数据库操作语言 ===》 数据库中的表的操作
对数据库中表的数据进行增删改查(关键字:insert,delete,update)
DQL:数据库查询语言 ===》 查询操作
用来查询数据库中表的记录(数据)(关键字:select,where)
DCL:一般接触不到
用来定义数据库的访问权限和安全级别,及创建用户(关键字:GRANT,REVOKE)
TCL:一般接触不到
用于控制数据可的事务操作(关键字:commit,savepoint,rollback)
DDL操作:
DDL库操作
-- 创建数据库:
create database 数据库名称;
-- 创建数据库并指定字符集:
create database 数据名称 character set 字符集名;
-- 查询所有的数据库的名称:
show database;
-- 查询某一个数据库的字符集
show create database 数据库名称;
-- 修改数据库的字符集:
alter database 数据库名称 character set 字符集名称;
-- 删除数据库:
drop database 数据库名称:
-- 查询当前正在使用的数据库名称:
select database();
--使用数据库:
use 数据库名称;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DDL表操作
-- 创建表
create table 表名(
列名(字段名) 数据类型,
列名(字段名) 数据类型,
列名(字段名) 数据类型
...
);
-- 查询表
show tables; 查询所有表名称
desc 表名; 查询表结构
-- 修改表(几乎不用)
alter table 表名 add 列名 数据类型; 添加一列
alter table 表名 modify 列名 新类型; 修改列类型
alter table 表名 change 旧列名 新列名 新类; 修改列名和类型
alter table 表名 drop 列名; 删除指定列
alter table 表名 charset 字符集; 修改表字符集
rname table 旧表名 to 新表名; 修改表名
-- 删除表
drop table 表名;
DML操作:
添加数据:
insert into 表名(列1,列2,列3。。。列n)values(值1,值2,值3。。。值n);
删除数据:
delete from 表名[where 条件];不推荐(一个一个的删除数据,效率低)
TRUNCATE TABLE 表名 ; 推荐使用(删除表,创建一张一摸一样的表效率)
修改数据:
update 表名 set 列名1 = 值1 ,列名2=值2,。。。[where 条件] ;
DQL语句:
完整的语法:
select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件
order by
排序
limit
分页限定
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- 创建数据库lianxi
CREATE DATABASE lianxi;
-- 创建表
CREATE TABLE stu(
id INT,
NAME VARCHAR(20),
chinese DOUBLE,
english DOUBLE,
math DOUBLE
);
-- 插入记录
INSERT INTO stu(id,NAME,chinese,english,math) VALUES(1,'tom',89,78,90);
INSERT INTO stu(id,NAME,chinese,english,math) VALUES(2,'jack',67,98,56);
INSERT INTO stu(id,NAME,chinese,english,math) VALUES(3,'jerry',87,78,77);
INSERT INTO stu(id,NAME,chinese,english,math) VALUES(4,'lucy',88,NULL,90);
INSERT INTO stu(id,NAME,chinese,english,math) VALUES(5,'james',82,84,77);
INSERT INTO stu(id,NAME,chinese,english,math) VALUES(6,'jack',55,85,45);
INSERT INTO stu(id,NAME,chinese,english,math) VALUES(7,'tom',89,65,30);
-- 查询所有记录
SELECT * FROM stu;
-- 查询指定字段记录
SELECT id,`name` FROM stu;
-- 查询指定字段 且去重(所有字段全都一样)
SELECT DISTINCT `name`,chinese FROM stu;
-- 起别名
SELECT id AS '学号',`name` AS '姓名' FROM stu;
-- 指定取值范围
SELECT `name` AS '姓名' , chinese FROM stu WHERE chinese BETWEEN 55 AND 82 ;
运算符:
运算符 | 说明 |
---|---|
> 、< 、<= 、>= 、= 、<> != | <>在 SQL 中表示不等于,在 mysql 中也可以使用!= 没有== |
BETWEEN…AND | 在一个范围之内 |
IN( 集合) | 集合表示多个值,使用逗号分隔 |
IS NULL 不为空 is not null | 查询某一列为 NULL 的值,注:不能写=NULL |
LIKE | 模糊查询 占位符: _:单个任意字符 %:多个任意字符 |
AND 或 && | 与,SQL 中建议使用前者,后者并不通用。 |
OR 或 || | 或 |
NOT 或 ! | 非 |
图形化工具:
sqlyog 工具
Navicat 工具
步骤:
1、创建库,字符集
2、创建表,表结构
3、添加数据,修改数据,查询数据,删除数据
4、删除表
5、删除库
数据库类型:
1. int:整数类型
* age int,
2. double:小数类型
decimal: 精确度的一种数据类型
* score double(5,2) 189.99
3. date:日期,只包含年月日,yyyy-MM-dd
4. datetime:日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss ,默认为null
5. timestamp:时间戳类型 包含年月日时分秒 yyyy-MM-dd HH:mm:ss
* 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值
char: 一般不用.不可变的
char(20) : 你好 我好
6. varchar:字符串
* name varchar(20):姓名最大20个字符
* zhangsan 8个字符 张三 2个字符