本来早就写的,拖了好几天,人都懒散了。
关系数据库:储存的是实体与实体之间的关系。
mysql服务器与数据、表之间的关系:
*机器安装tomcat称为web服务器。
*机器安装了mysql称为数据库服务器。
总结:一个数据库的服务器中有多个数据库,一个数据库中有多个表,每个表中有多个字段。每个字段和java中类的属性是相对应的。每一条记录对应一个java实例对象。
在安装好了mysql以后,首先得输入mysql -uroot -p 然后登录密码就可以使用了mysql了。
一.数据语言的分类
DDL(数据定义语言):
*创建数据库、创建表的;
DML(数据操纵语言):
*插入数据(insert)、修改数据(update)、删除数据(delete);
DCL(数据控制语言):
*设置用户权限和控制语句;如if......else;
DQL(数据查询语言):
*查询数据select;
二.数据库(CRUD--增删查改):
*创建数据库:
语法:create database 数据库名称;
create database 数据库名称 character set 编码 collate 校对规则;
注意:校对规则跟编码是成对出现的。
*查看数据库:show databases;
*查看数据库的定义:show create database 数据库名称;
*删除数据库:drop database 数据库名称;
*修改数据库:语法:alter database 数据库名称 character set 编码 collate 校对规则;
*切换数据库:use 数据库名称;
*查看当前使用的数据库: select database();
三.表(table)(CRUD--增删查改):
*语法:create table 表名(
字段名 类型(长度) 约束,
字段名 类型(长度) 约束,
字段名 类型(长度) 约束
);
注意:表名小括号后面有分号;每一行后面有逗号,但最后一行没有逗号;数据的类型后面有长度,如果是字符串类型,长度必须加,如果是其他类型,可以不加。
*约束(单表):
*主键约束:
标识该条记录。通过pramary key声明主键。(默认 唯一、非空);
auto_increment数据库维护主键。自动增长。
*唯一约束:
值是惟一的。使用unique声明
*非空约束:
值不能为空 not null
例如:
create table employee2(
id int primary key auto_increment, //主键id,自动增长
name varchar(20) unique not null, //name的值是唯一的,非空
gender varchar(10),
birthday date,
entry_date date,
job varchar(100),
salary double,
resume text
);
*删除表:
drop table 表名;跟数据库类似 例子:drop table employee2;
*修改表:
alter table 表名 add 字段 类型(长度) 约束;---添加字段
alter table 表名 drop 字段;--删除字段
alter table 表名 modify 字段 类型(长度) 约束 ;--修改字段或约束
alter table 表名 change 旧字段 新字段 类型(长度) 约束;--修改字段的名称
rename table 表名 to 新表名;修改表名
alter table 表名 charater set utf8;--修改字集
*使用desc 表名;查看表的信息
show tables;查看当前库内所有表名
show create table 表名;查看建表语句和字符集;
四.数据(CRUD--增删查改):
*数据的类型:
字符串类型:varchar、char
varchar和char的区别:
varchar(经常使用)长度是可变的。stuname varchar(8) 存入数据,但是如果存入helleoworld会报错。
char 长度是不可变的。stuname char(8) 存入数据如果是helloworld,数据类型的长度不够用就会用空格补全;
char的效率高;
*大数据类型(一般不用):
BLOB\TEXT:
BLOB:二进制文件
TEXT:字符
数值型:
tinyint、samllint、int、bigint、float、double.
逻辑型: 对应boolean
bit
日期型:
date、time、datetime、timestamp
date只包含日期
time只包含时分秒
datetime和timestamp包含日期和时分秒区别:
datetime需要手动录入时间。
timestamp不传入数据,默认选择当前系统时间。
*数据的插入:
insert into 表名(字段1,字段2,字段3......) values(值1,值2,值3....);有几列插入几列
insert into 表名 values(值1,值2,....);插入所有列
注意:
数据与字段的类型相同。
字段长度需要控制。
字符串或日期类型需要使用单引号''。
*修改语句:
语法:delete ...... from 表名 ;删除数据
truncate删除数据,先删除整个表,再新建一个新的表。
delete删除数据,是一条一条的删除的。
事物中使用到的(insert、update、delete)
*修改语句:
语法:update 表名 set 字段1=值,字段2=值,...... [where]
如果没有where条件,默认更新所有的条件。
有where提交,选择某一条记录。
*查询语句:
select * from 表名;//查询所有的字段
select 字段1,字段2,.... from 表名;//显示查询所有字段
select DISTINCT 字段名 from 表名;//过滤表中重复的数据
例题(过滤表中重复的数据): select distinct english from stu;
查询的列可以运算,可以使用别名: 使用as别名, 并且as可以省略。
常用的符号:
> < <= >= = !=
语法: in(范围内的内容)
like --模糊查询 写法: like'张_'或者'张%'都可以查询姓张的,名字是两个字的。
_和%的区别:占位符。_只占一位,而%可以占多位。
*排序 使用order by升序默认的(asc)/降序(desc)
注意:排序语句出现在select语句的末尾
*聚集函数:
count 获取数量
sum 求和
avg 平均数
max 最大值
min 最小值
group by分组(一起使用)条件过滤需要用到having,不能使用where;
小结:select语句顺序:S-F-W-G-H-O组合
select.....from.....where....group by....having....order by.....;