一.数据库
1.数据库的概念
- 什么是数据库
- 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。
- 2.什么是数据库管理系统
- 数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中表内的数据。
2.常见的数据库
- MYSQL:开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费。
- Oracle:收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。
- DB2:IBM公司的数据库产品,收费的。常应用在银行系统中
- SQLServer:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。
- SyBase:已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner。
- SQLite:嵌入式的小型数据库,应用在手机端。
- Java相关的数据库:MYSQL,Oracle
3.MySQL的登录
mysql –u用户名 –p密码
mysql --host=ip地址 --user=用户名 --password=密码
4.SQL分类
- 数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等
- 数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。关键字:insert,delete,update等
- 数据控制语言:简称DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及创建用户
- 数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:select,from,where等
二.SQL语句
1.创建数据库
create database 数据库名;
create database 数据库名 character set 字符集;
2.查看数据库
#查看数据库MySQL服务器中的所有的数据库:
show databases;
#查看某个数据库的定义的信息:
show create database 数据库名;
3.删除数据库
drop database 数据库名称;
4.其他的数据库操作命令
#切换数据库
use 数据库名;
5.查看正在使用的数据库
select database();
6.创建数据库表格式
create table 表名(
字段名 类型(长度) 约束,
字段名 类型(长度) 约束
);
7.约束
create table 表名(
列名 类型(长度) 约束,
列名 类型(长度) 约束
);
- 约束有哪些
- 主键约束(非空,唯一)primary key
- 删除主键
alter table 表名 drop primary key;
- 自增长auto_increment
- 非空约束
- 唯一约束
- 外键约束
- 等…
8.常见表操作
- 查看数据库中的所有表
show tables;
- 查看表结构
desc 表名;
- 删除表
drop 表;
- 修改表结构——添加列
alter table 表名 add 列名 类型(长度) 约束;
- 修改表结构——修改列的类型长度及约束
alter table 表名 modify 列名 类型(长度) 约束;
- 修改表结构——修改列名
alter table 表名 change 旧列名 新列名 类型(长度) 约束;
- 修改表结构——删除列
alter table 表名 drop 列名;
- 修改表名
rename table 表名 to 新表名;
- 修改表的字符集
alter table 表名 character set 字符集;
9.添加数据
- 添加数据格式,不考虑主键
insert into 表名 (列名) values (值)
- 添加数据格式,所有值全部给出
insert into 表名 values (值1,值2,值3..);#向表中插入所有列
- 添加数据格式,批量写入
insert into 表名 (列名1,列名2,列名3) values (值1,值2,值3),(值1,值2,值3)
10.更新数据
- 用来修改指定条件的数据,将满足条件的记录指定列修改为指定值
update 表名 set 字段名=值,字段名=值;
update 表名 set 字段名=值,字段名=值 where 条件;
- 注意:
- 列名的类型与修改的值要一致
- 修改值得时候不能超过最大长度
- 值如果是字符串或者日期需要加’’
11.删除数据
- 语法
delete from 表名 [where 条件];
truncate table 表名;
- 面试题:删除表中所有记录使用delete from 表名; 还是用truncate table 表名;
- 删除方式:delete 一条一条删除,不清空auto_increment记录数。
- truncate 直接将表删除,重新建表,auto_increment将置为零,从新开始。
12.数据的基本查询
- 查询指定字段信息
select 字段1,字段2,...from 表名;
- 查询表中所有字段
select * from 表名;
- distinct用于取出重复记录
select distinct 字段 from 表名;
- 别名查询,使用的as关键字,as可以省略的
select * from 表名 as 别名;
13.数据的条件查询
格式 :
select 字段 from 表名 where 条件;
where条件的种类如下:
比较运算符
> < <= >= = <>大于、小于、大于(小于)等于、不等于
BETWEEN ...AND...显示在某一区间的值(含头含尾)
IN(set) 显示在in列表中的值,例:in(100,200)
LIKE 通配符模糊查询,Like语句中有两个通配符:
% 用来匹配多个字符
_ 用来匹配一个字符。例first_name like ‘a_’;
IS NULL 判断是否为空
is null; 判断为空
is not null; 判断不为空
逻辑运算符
and多个条件同时成立
or多个条件任一成立
not不成立
14.排序查询
- 使用格式:通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后
SELECT * FROM 表名 ORDER BY 字段ASC;
- ASC 升序 (默认)
- DESC 降序
15.聚合函数
- count:统计指定列不为NULL的记录行数;
- sum:计算指定列的数值和,如果指定列;
- max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串类型不是数值类型,那么计算结果为0排0序运算;
- min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
- avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
- 聚合函数会忽略空值
16.分组查询
- 使用格式:分组查询是指使用group by字句对查询信息进行分组
- 分组操作中的having子语句,是用于在分组后对数据进行过滤的,作用类似于where条件
- having和where的区别
- having是在分组后对数据进行过滤.
- where是在分组前对数据进行过滤
- having后面可以使用分组函数(统计函数)
- where后面不可以使用分组函数