mysql数据库
关系型数据库
连接数据库,win加R打开root用户进入 mysql -u root -p
库阶段
#查看已有库:
show databases;
#创建库:
create database stu character set utf8;
#查看创建库的语句:
show create database stu;
#查看当前所在库:
select database();
#切换库:
use stu;
#删除库:
drop database stu;
表阶段
#创建表:
create table books (id int primary key auto_increment,title varchar(64) not null,author varchar(32) default "佚名",price float,publication varchar(256),comment text);
#enum用来存储给出的一个值
#set用来存储给出的值中一个或多个值
#约束条件:
#如果你想设置数字为无符号则加上 unsigned。
#如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
#DEFAULT 表示设置一个字段的默认值。
#AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
#PRIMARY KEY关键字用于定义列为主键。主键的值不能重复。
#查看数据表:
show tables;
#查看已有表的字符集:
show create table book;
#查看表结构:
desc book;
#删除表:
drop table book;
数据阶段
#添加数据:
insert into books values (1,"老人与海","海明威","35.8","机械工业出版社","带给你勇气");
#删除表中内容:
delete from book where author = "佚名";
#更新表记录:
update book set publication_date = "2015-10-20" where id = 1;
#查找表中内容:
select * from book where price > 40;
select * from book where publication = "中国邮电出版社" and price < 45;
select * from book where price > 35 and price < 45;
select title,price from book where author = "鲁迅";
字段阶段
#添加字段:
alter table book add publication_date date after price;
#删除字段:
alter table book drop publication_date;
#修改表名:
alter table books rename as book;
#修改数据类型:
alter table book modify publication_date timestamp default now();
#修改字段名:
alter table book change publiaction_date publiaction_time timestamp default now();
其他
#时间查询(interval为函数):
select * from book where publication_date > (curdate() - interval 4 year);
#模糊查询:
select * from book where publication like "%中国%";
#排列查询(默认升序,末尾加desc为降序):
select * from book order by publication_date;
#排列和限制查找:
select * from book order by price desc limit 2;
limit m,n 从第(m+1)条开始,显示n条
#联合查询(不带all会自动删除重复的数据):
select * from class where sex='m' UNION ALL select * from class_1 where age > 9;
字符类型:
char()定长 varchar()变长 text blob
varchar预留1-2字节 用于存储当前字段实际存储的数据长度
枚举类型:
enum() set()
#日期时间类型:
date datetime timestamp time year
#每个表都要带
created_time - datetime
updated_time - datetime
#日期时间函数:
NOW() CURDATE() CURTIME() YEAR(字段名)
#日期时间运算:
select * from 表名 where 字段名 运算符(NOW()-interval 间隔);
select * from user_pay where created_time <(NOW()-interval 1 year);
查询顺序
1、where ...
2、group by ...
3、select ...聚合函数 from 表名4、having ...
5、order by ...
6、limit ...;
聚合函数
avg(字段名) 该字段的平均值
max(字段名) 该字段的最大值
min(字段名) 该字段的最小值
sum(字段名) 该字段所有记录的和
count(字段名) count(*)可统计所有数据,包括值为null 统计该字段记录的个数
group by 给查询的结果进行分组