Tips:
1、对于精度比较高的东西,比如money,用decimal类型提高精度减少误差。列的声明语法是DECIMAL(M,D)。
- M是数字的最大位数(精度)。其范围为1~65,M 的默认值是10。
- D是小数点右侧数字的数目(标度)。其范围是0~30,但不得超过M。
比如 DECIMAL(6,2)最多存6位数字,小数点后占2位,取值范围-9999.99到9999.99。2、比特值类型指0,1值表达2种情况,如真,假
char:定长,效率高,一般用于固定长度的表单提交数据存储,默认1字符
varchar:不定长,效率偏低
text用来存储非二进制文本
blob用来存储二进制字节串
enum用来存储给出的一个值
set用来存储给出的值中一个或多个值
show databases;
create database 数据库名 character set utf8;
create database 数据库名 charset=utf8;
create database 数据库名 default charset utf8 collate utf8_general_ci;
数字、字母、下划线,但不能使用纯数字
库名区分字母大小写
不能使用特殊字符和mysql关键字
创建python数据库,编码为utf8
create database python character set utf8;
create database python charset=utf8;
show create database 数据库名;
show create database python;
select database();
use 数据库名;
use python;
drop database 数据库名;
drop database python;
库管理 | 代码 |
---|---|
服务器状态 | status; |
查看整个数据库的编码集 | show variables like ‘charavter%’; |
创建库(制定字符集) | create database 数据库名 character set utf8;create database 数据库名 charset=utf8; create database 数据库名 default charset utf8 collate utf8_general_ci; |
查看已有库 | show databases; |
切换库 | use 数据库名; |
查看创建库的语句 | show create database 数据库名; |
删除库 | drop database 数据库名; |
show tables;
desc 表名;
auto_increment表示自动增长
CREATE TABLE table_name(
column1 datatype contrai,
column2 datatype,
column3 datatype,
.....
columnN datatype,
PRIMARY KEY(one or more columns)
);
例:创建班级表
create table classes(
id int unsigned auto_increment primary key not null,
name varchar(10)
);
例:创建学生表
create table students(
id int unsigned primary key auto_increment not null,
name varchar(20) default '',
age tinyint unsigned default 0,
height decimal(5,2),
gender enum('男','女','保密'),
cls_id int unsigned default 0
)
alter table 表名 add 列名 类型;
alter table students add birthday datetime;
alter table 表名 change 原名 新名 类型及约束;
alter table students change birthday birth datetime not null;
alter table 表名 modify 列名 类型及约束;
alter table students modify birth date not null;
alter table 表名 drop 列名;
alter table students drop birthday;
alter table 表名 rename 新表名;
alter table students rename classes;
drop table 表名;
drop table students;
show create table 表名;
show create table classes;
curd的解释: 代表创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)
select * from 表名;
select * from classes;
select 列1,列2,… from 表名;
select id,name from classes;
格式:INSERT [INTO] tb**name [(col**name,…)] {VALUES | VALUE} ({expr | DEFAULT},…),(…),…
insert into 表名 values(…)
insert into students values(0,’刘诗雯‘,1,'广州','2016-1-2');
insert into 表名(列1,…) values(值1,…)
insert into students(name,hometown,birthday) values('刘诗雯','广州','2016-3-2');
insert into 表名 values(…),(…)…;
insert into 表名 values(0,‘python1’),(0,‘python2’);
insert into 表名(列1,…) values(值1,…),(值1,…)…;
insert into students(name) values('杨康'),('杨过'),('小龙女');
update 表名 set 列1=值1,列2=值2… where 条件
update students set gender=0,hometown='北京' where id=5;
delete from 表名 where 条件
delete from students where id=5;
update students set isdelete=1 where id=1;
表管理 | 代码 |
---|---|
创建表 | create table 表名( 字段名 数据类型, 字段名 数据类型, … 字段名 数据类型 ); |
查看数据表 | show tables; |
查看已有表的字符集 | show create table 表名; |
查看表结构 | desc 表名; |
插入(insert into) | insert into 表名 values(值1,值2,…),(值1,值2,…); |
insert into 表名 (字段1,…) values(值1,…); | |
查询(select) | select 字段1,… from 表名 where 条件; |
select 字段,字段2,… from 表名;(千万别用*) | |
更新表记录(update)修改 | update set 字段1=值1,… where 条件; |
删除表记录(delete) | delete from 表名 where 条件; |
删除表(drop) | drop table 表名; |
表字段的操作(alter) | |
添加字段(add) 默认末尾添加 | alter table 表名 add 字段名 数据类型; |
第一处添加first | alter table 表名 add 字段名 数据类型 first; |
在哪个字段名后面添加after | alter table 表名 add 字段名 数据类型 after 字段名; |
删除字段(drop) | alter table 表名 drop 字段名; |
修改数据类型(modify) | alter table 表名 modify 字段名 新数据类型; |
修改字段名(change) | alter table 表名 change 旧字段名 新字段名 新数据类型 (新旧字段名相同也可以修改数据类型) |
表重命名(rename) | alter table 表名 rename 新表名; |
DATE,DATETIME和TIMESTAMP类型
TIME类型
年份类型YEAR
date :“YYYY-MM-DD”
time :“HH:MM:SS”
datetime :“YYYY-MM-DD HH:MM:SS”
timestamp :“YYYY-MM-DD HH:MM:SS”
Tips:
1、datetime :不给值默认返回NULL值
2、timestamp :不给值默认返回系统当前时间
now() 返回服务器当前时间
curdate() 返回当前日期
curtime() 返回当前时间
date(date) 返回指定时间的日期
time(date) 返回指定时间的时间
select * from timelog where Date = "2019-07-02";
select * from timelog where Date>="2019-06-01" and Date<="2019-06-31";
select * from 表名 where 字段名 运算符 (时间-interval 时间间隔单位);
案例:select * from timelog where date > (now()-interval 1 day);