1.数据库
本质是一个文件系统,数据按照特定的格式存储,用户可以对数据进行增删改查操作。
2.数据库管理系统 DBMS
一种操作和管理数据库得到大型软件
用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完成性。
用户通过DBMS访问数据库中表内的数据
2.1常见的DBMS:
- MySQL:小型数据库
- Oracle:大型数据库
- DB2:应用在银行系统中
- SQLServer:C#/、.net等用
- SyBase:提供了PowerDesign等工具
- SQLite:嵌入式的小型数据库,手机端
2.2Java相关的数据库
MySQL、Oracle
这里使用MySQL。
2.3数据库
MySQL中有多个数据库。
数据库是真正存数据的地方。
2.3.1数据库和DBMS关系
2.4数据库表
数据库中以表为组织单位存储数据
每个字段都有对应的数据类型
2.4.1 记录
表中一行一行数据。
Java程序 | 关系型数据 |
类 | 表 |
类中属性 | 表中字段 |
对象 | 记录 |
表记录与Java对象的对应关系
3.结构化查询语言SQL
一种数据库和程序设计语言
用于存取数据以及查询、更新和管理关系数据库系统
3.1SQL分类
- DDL数据定义语言:create/alter/drop等
- DML数据操作语言:insert/delete/update等
- DCL数据控制语言:访问权限、安全级别、创建用户等
- DQL数据查询语言:select/from/where等
3.2SQL通用语法
- 可以单行或多行书写,以分号结尾;
- 可使用空格和缩进增强语句的可读性;
- MySQL的SQL语句不区分大小写,建议用大写:SELECT * FROM user
- 可以用/**/完成注释
- MySQL中常用的数据类型:
- int
- double
- varchar
- data
3.3数据库操作
3.3.1创建数据库
create database 数据库名;
create database 数据库名 character set 字符集;
- 默认编码是安装数据库时指定的默认编码utf-8
CREATE DATABASE day1;
CREATE DATABASE day2 CHARACTER SET utf-8;
3.3.2查看数据库
show databases;(所有)
show create database 数据库名;(查看某个数据库的定义信息)
3.3.3删除数据库
drop database 数据库名;
3.3.4切换数据库
use 数据库名;
3.3.5查看正在使用的数据库
select database();
3.4表结构相关语句
3.4.1表创建
create table 表名{
字段名 类型(长度) 约束,
字段名 类型(长度) 约束;
};
CREATE TABLE user{
id INT,
name VARCHAR(100)
};
3.4.2主键约束
主键:用于标记当前记录的字段。
- 特点:非空,唯一
- 一般不具有任何意义,只用于标识当前记录
格式1:在创建表的时候创建主键,在字段后加上primary key
CREATE TABLE user{
id INT PRIMARY KEY,
name VARCHAR(100)
};
格式2:在创建表时创建主键,在表创建的最后指定主键
CREATE TABLE user{
id INT,
name VARCHAR(100),
PRIMARY KEY(id)
};
删除主键
alter table 表名 frop primary key;
ALTER TABLE user DROP PEIMARY KEY;
主键自增
auto increment;
id INT PRIMARY KEY AUTO INREMENT;
其他约束
- 外键
- 唯一
- 非空
- ...
3.4.3查看表
show tables;(所有表)
desc 表名;(表结构)
3.4.5删除表
drop table 表名;
3.4.6修改表结构
添加列:alter table 表名 add 列名 类型(长度) 约束;
修改列的类型长度及约束:alter table 表名 modify 列名 类型(长度) 约束;
修改列名:alter table 表名 change 旧列名 新列名 类型(长度) 约束;
删除列:alter table 表名 drop 列名;
修改表名:rename table 表名 to 新表名;
修改表的字符集:alter table 表名 character set 字符集;
ALTER TABLE user ADD desc VARCHAR(20);
ALTER TABLE user MODIFY name VARCHAR(50) NOT NULL;
ALTER TABLE user CHANGE name newname VARCHAR(30);
ALTER TABLE category CHARACHER AET gbk;
3.4.7插入表记录
向表中插入某些列:insert into 表(列1,列2,...) values (值1,值2,...);
向表中插入所有列:insert into 表 values(列1,列2,...);
- 插入的数据应与字段的数据类型相同;
- 数据的大小应在列长度范围内;
- 在values中列出的数据位置必须与被加入列的排列位置相对应;
- 除了数值类型外,其他的字段类型值必须使用引号。
- 如果要插入控制,可以不写字段,或者插入null;
- 对于自增的列,在操作时,直接插入null值即可。
INSERT INTO user VALUES('3','hehe');
3.4.8更新表记录
update 表名 set 字段名=值,字段名=值;
update 表名 set 字段名=值,字段名=值 where 条件;
- 列名的类型与修改的值要一直;
- 修改值的时候不能超过最大长度;
- 值如果是字符串或日期要加' '。
UPDATE user SET name='lina' WHERE id=1;
3.4.9删除记录
delete from 表名 [where 条件];
truncate table 表名;
问:删除表中所有记录用delete from 表名haishi truncate table表名?
删除方法:delete:一条一条地删,不清空auto increment记录数;
truncate:直接将表删除,重新建表,auto increment将置为0,重新开始。
DELETE FROM user WHERE name='lina';
DELETE FROM user;
3.5查询
3.5.1查询指定字段信息
select 字段1,字段2,... from 表名;
3.5.2查询表中所有字段的信息
select * from 表名;
3.5.3去除重复记录
select distinct 字段 from 表名;
3.5.4别名查询
select * from 表名 (as) 别名;
select 字段名 (as) 别名 from 表名;
select * from 表名 别名;
3.5.5对列进行运算
select name, price+1000 from product;
3.5.6条件查询
select 字段 from 表名 where 条件;
where条件的种类:
- > < >= <= = <>
- BETWEEN...AND...:某一区间(含头尾)
- IN(SET):eg. in(100,200)显示在in列表中的值
- LIKE通配符:%匹配多个字符,_匹配一个字符
- name like 'a%';
- name like 'a_';
- IS NULL IS NOT NULL
- and:多个条件同时成立
- or:多个条件任一成立
- not:不成立 eg. where not (salary>1000);