数据库概述
- 数据库是存储数据的仓库,本质是一个文件系统,数据按照指定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除以及查询操作。
- 数据库管理器(DataBase Management System,DBMS) 是指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性,用户通过数据库管理系统访问数据库中表内的数据
- 常见的数据库:
MySQL |
开源免费,6.x版本收费;被Oracle收购 |
Oracle |
大型;Oracle收购sun和mysql |
DB2 |
IBM;收费;常用于银行系统 |
SQLServer |
Microsoft;中型;常用于C#,.net语言 |
SyBase |
已经淡出舞台;提供建模工具:PowerDesigner |
SQLite |
嵌入式小心数据库;手机端 |
数据库表
- 数据库中以表为组织单位存储数据
- 类Java:表类似于类,表中字段类似于类中属性,记录类似于对象
表数据
SQL语句概述
- 概念:结构化查询语句(Structured Query Language)简称SQL是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
- SQL语句分类:
数据定义语言DDL |
create,alter,drop |
数据操作语言DML |
insert,delete,update |
数据控制语言DCL |
访问权限安全级别创建用户 |
数据查询语言DQL |
select,from,where |
- SQL语句的规范:分号结尾;不区分大小写;/**/表示注释
- MySQL中常用的数据类型
- int:整形
- double:浮点型
- varchar:字符串
- date:日期
SQL语句之数据库操作语句:
create database 数据库名;
create database 数据库名 character set 字符集;// 默认是utf-8
show databases;
show create database 数据库名;
drop databases 数据库名;
use 数据库名;
select database();
SQL语句之表操作语句:
create table 表名{
列名1 数据类型 约束,
列名2 数据类型 约束,
列名n 数据类型 约束
};
create table 表名{
列名1 数据类型 primary key auto_increment,
列名2 数据类型 约束,
列名n 数据类型 约束
};
show tables;
desc 表名;
drop table 表名;
rename table 表名 to 新表名;
alter table 表名 character set 字符集;
alter table 表名 add 列名 类型 约束;
alter table 表名 modify 列名 类型 约束;
alter table 表名 drop 列名;
alter table 表名 change 旧列名 新列名 约束;
insert into 表名(列名1,列名2...) values (值1,值2...);
insert into 表名(列名) values (值);
insert into 表名 values (全列值);
insert into 表名 (列名1,列名2) values (值1,值2),(值1.值2);
- 更新表数据
- 条件
- =; <>; >=; &&; ||; ! ;in (n1,n2,n3...); not in; and; or; between;
update 表名 set 列1=值1, 列2=值2 where 条件;
delete from 表名 where 条件;
delete from 表名; /*一条一条的删除,不清空auto_increment 记录数*/
truncate table 表名; /*直接将表删除,重新建表,aoto_increment将重置为0,重新开始;*/
drop table 表名; /*删除整个数据表*/
DOS操作数据乱码
- 原因:mysql的客户端默认编码为utf-8,而系统的cmd窗口是gbk
- 解决:
- 修改mysql客户端的编码
- 修改mysql安装目录下面的mu.ini文件
- default-character-set=gbk 客户端编码设置
- character-set-servlet=utf8 服务器端编码设置
SQL查询语句
select 列名1,列名2 from 表名;
select * from 表名;
select distinct 列名1,列名2 from 表名;
select 列名 as '临时名称' from 表名; // 列别名
select 列名 '临时名称' from 表名; // 列别名
select * form 表名 as '临时名称'; //表别名
select name,price+10000 as'SUM' from zhangwu;
- 模糊查询(通配符:‘xxx’;‘%xxx’;‘xxx%’; '%xxx%', '_____'-->匹配字符数)
select * from 表名 where 列名 like 'xxx';
order by 列名 [desc][asc];
- 聚合函数(统计函数)
- count()
- sum()
- max()
- min()
- avg()
- 分组查询
- 分组查询之后不能使用where关键字,而是用having;
- where和having的区别
- 1:having是在分组后对数据进行过滤,where反之;
- 2:having后面可以使用分组函数(统计函数),where反之;
Group by 被合并的列 /*必须结合聚合函数使用*/