数据库的概念:
数据库就是储存数据的仓库,其本质就是一个文件系统,按照特定的格式将数据储存起来,用户可以对数据库中的数据进行操作,增加,删除,修改及查询操作。
数据库管理系统:
指一种操作和管理数据库的软件,用户通过数据库管理工具操作数据库中的数据,以保证数据的安全性和完整性。
数据库的特点:
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分页限定~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-- 创建数据库lianxiCREATE 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.993. date:日期,只包含年月日,yyyy-MM-dd4. datetime:日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss ,默认为null5. timestamp:时间戳类型 包含年月日时分秒 yyyy-MM-dd HH:mm:ss* 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值char: 一般不用.不可变的char(20) : 你好 我好6. varchar:字符串* name varchar(20):姓名最大20个字符* zhangsan 8个字符 张三 2个字符
