【数据库笔记02】(MySQL数据库安装)
mysql -u用户名 -p密码
select------from------where------group by------having-------order by
from------where------group by------having------select-------order by
create database 数据库名字;
create database 数据库名字 character set 字符集; //字符集如utf8
create database 数据库名字 character set 字符集 collate 校对规则; //校对规则如utf8_bin(默认规则不区分大小写)
alter database 数据库名; //如修改数据库的字符集编码方式
drop database 数据库名;
show databases;
show create database 数据库名;
use 数据库名;
select database();
create table 表名(
列名 列类型 约束;
列名2 列类型 约束;
)
java | sql列类型 |
---|---|
int | int |
char/String | char:固定长度 / varchar:可变长度 |
double | double |
float | float |
boolean | boolean |
date | date:YYYY-MM-DD / time:hh:mm:ss |
~ | datetime:YYYY-MM-DD hh:mm:ss(默认null) |
~ | timestamp:YYYY-MM-DD hh:mm:ss(默认当前时间) |
- | text(用来存文本) |
- | blob(存二进制) |
列的约束 | 语句 |
---|---|
主键约束 | primary key(唯一且不为空 ) |
唯一约束 | unique |
非空约束 | not null |
分析实体(学生)
create table students(
sid int primary key,
sname varchar(31),
sex int,
age int
)
show tables;
show create table 表名;
desc 表名;
alter table 表名 add 列名 列的类型 列的约束;
alter table 表名 modify 列名 列的类型 列的约束;
alter table 表名 change 列名 要改的名字 列的类型;
alter table 表名 drop 列名;
rename table 表名 to 要更改的表名;
alter table 表名 character set 字符集;
drop table 表名;
insert into 表名(列名,列名,列名) values(值,值,值);
insert into 表名 values(值,值,值); //这里的值必须是所有的列
insert into 表名(列名,列名) values(值,值); //可以插入部分列
insert into 表名 values(值,值,值),(值,值,值),(值,值,值); //批量插入
delete from 表名 where 条件语句; //没有where条件会删除全部数据
truncate 表名; //删除表中所有数据
update 表名 set 列名=列的值,列名2=列的值 where 条件; //后面不加where条件会将表中所有数据都改变
select * from 表名;
distinct:去除重复数据
select [distinct] [*] [列名,列名2] from 表名 where 条件;
//建一个商品类别表 商品类别id 名字 描述
create table category(
cid int primary key auto_increment, //auto_increment主键自增
cname varchar(10),
cdesc varchar(31)
);
// 建立商品表
create table product(
pid int primary key auto_increment,
pname varchar(10),
price double,
pdate timestamp, //取当前时间
cno int
);
先从from执行,select用于选择显示哪些列内容
select p.pname,p.price from product p; //as可以省略
select pname as 商品名称,price as 商品价格 from product; //as可以省略
select distinct price from product;
select *,price*0.85 as 折后价 from product;
select * from product where 条件;
select * from product where price between 100 and 10000; //前小后大
_ 代表一个字符
% 代表多个字符
例如:查出所有名字带口红的商品
select * from product where pname like '%口红%';
例如:查出所有名字第二个字是宝的商品
select * from product where pname like '_宝%';
例如:查出所有商品是3、4类的商品
select * from product where cno in (3,4);
select * from product order by price; //默认是升序
select * from product order by price desc;
select * from product where pname like '%口红%' order by price desc;
需要用子查询
select * from product where(select avg(price) from product);
having 可以接聚合函数,出现在分组之后
where 不可以接聚合函数,出现在分组之前
查出每个类别的商品有多少个
select cno,count(cno) from product group by cno;
根据cno分组,分组统计每组商品的平局价格,且平均商品价格>60
select cno,avg(price) from product group by cno having avg(price) >60;
先停止服务
修改这个文件,将数据库服务器的编码方式改变
改成gbk
开启服务,注意这里要重新进入MySQL,修改表的编码方式