对数据库的操作
创建数据库
基础语法create database 数据库名 [character set 字符集] [collate 校对规则]
查看数据库
查看数据库服务器中所有的数据库show databases;
查看某个数据库的定义信息show create database 数据库名
删除数据库
基础语法drop database 数据库名
修改数据库
语法`alter database 数据库名 character set 字符集 collate 校对规则;
其他的数据库操作指令
切换数据库 use
查看正在使用的数据库select database()
数据库中表的操作
创建表语句
create table 表名(
字段名 类型(长度) 约束,
字段名 类型(长度) 约束
);
MySQL与Java数据类型的比较
Java | mysql |
---|---|
int | int |
float | float |
double | double |
char | char(固定长度字符串) |
string | string(可变长度字符串) |
Date | date,time,datetime,timestamp |
单表约束
主键约束:primary key
唯一约束:unique
非空约束:not null
创建表的例子
创建一个分类表要求如下:
分类ID int类型主键 自动增长
分类名称 字符串类型 长度20
代码:
create table category(
cid int primary key auto_increment,
cname varchar(20)
);
查看表
查看数据库中的所有表:
show tables;
查看表结构:
desc 表名;
删除表
删除表语句:
drop table 表名;
修改表
添加列
alter table 表名 add 列名 类型(长度) 约束;
修改列的长度和约束
alter table 表名 modify 列名 类型(长度) 约束;
修改列名
alter table 表名 change 旧列名 新列明 类型(长度) 约束;
删除列
alter table 表名 drop 列名;
修改表名
rename table 表名 to 新表明;
修改表的字符集
alter table 表名 character set 字符集;
对记录的操作
插入记录
插入记录的语法
insert into 表 (列名1,列名2,列名3..) values (值1,值2,值3..); -- 向表中插入某些列
insert into 表 values (值1,值2,值3..); --向表中插入所有列
注意:
- 列名数与values后面的值的个数相等
- 列的顺序与插入的值得顺序一致
- 列名的类型与插入的值要一致.
- 插入值得时候不能超过最大长度.
- 值如果是字符串或者日期需要加’’.
修改记录
修改记录的语法
update 表名 set 字段名=值,字段名=值 [where 条件];
注意:
- 列名的类型与修改的值要一致.
- 修改值得时候不能超过最大长度.
- 值如果是字符串或者日期需要加
’’
.
删除记录
删除记录语法:
delete from 表名 [where 条件];
删除表中所有记录使用delete from 表名; 还是用truncate table 表名;
- 删除方式:delete 一条一条删除. 而truncate 直接将表删除,重新建表.
- 事务控制DML,而delete属于DML.如果在一个事务中,delete数据,这些数据可以找回.truncate删除的数据找不回来.
查询记录
语法:
- select [distinct]*[列名,列名] from 表 [where 条件].
where后的条件写法:
- > ,<,=,>=,<=,<>
- like 使用占位符 _ 和 % _代表一个字符 %代表任意个字符.
- select * from product where pname like ‘%新%’;
- in在某个范围中获得值.
- select * from product where pid in (2,5,8);
排序查询:
- 查询所有的商品,按价格进行排序.(asc-升序,desc-降序)
聚合函数:
- sum()获得所有商品的价格的总和:
- avg()获得商品表中价格的平均数:
- max()获得商品表中价格的最大值:
- min()获得商品表中价格的最小值:
- count()获得商品表中有多少条记录:
分组:使用group by
注意(having
和where
的区别):
where
对分组前的数据过滤,having
对分组后的数据过滤where
后面不能使用聚合函数,having
可以