这是对自己学习燕十八老师mysql教程的总结,非常感谢燕十八老师。
依赖软件:mysql
系统环境:win
注:本次所有命令都是在命令行上执行
数据库的四大天王操作:增删改查
增删改查都是在对表进行操作的,所以第一步是建表,
建表前需要的知识储备:数据类型,存储引擎
数据类型:数值型,字符型,日期/时间型、NULL类型
数值型
整型
可选参数
unsigned:无符号类型
zerofill:0填充(默认无符号)
M:宽度(在0填充的时候才有意义)
tinyint(M) unsigned zerofill
类型 | 字节 | 最大值(带符号/不带符号) | 最小值(带符号/不带符号) |
tinyint | 1 | -128/0 | 127/255 |
smallint | 2 | -32768/0 | 32767/65535 |
mediumint | 3 | -8388608/0 | 8388607/16777215 |
int | 4 | -2147483648/0 | 2147483647/4294967295 |
bigint | 8 | -9223372036854775808/0 |
9223372036854775807/ 18446744073709551615 |
浮点型
float(M,D)M:精度,D:标度
定点型
decimal(M,D)M:精度,D:标度
字符型
类型 | 说明 | 典型声明方式 | 范围 |
char | 定长字符串 | gender char(1) |
charn(M) 0<=M<=255 |
varchar | 变长字符串 | email varchar (20) | varchar(M) 0<=M<=65535 |
text | 文本串 | content text | 约2W-6W个字符 |
日期/时间型
类型 | 名称 | 字节 | 格式 | 范围 |
date | 日期 | 3 | YYYY-MM-DD | 1000-01-01~9999-12-31 |
time | 时间 | 3 | HH-MM-SS | -838:59:59~838:59:59 |
datetime | 日期时间 | 8 | YYYY-MM-DD HH-MM-SS |
‘1000-01-01 00:00:00’ ~ ‘9999-12-31 23:59:59’ |
year | 年份 | 1 | YYYY | 1901~2155 |
NULL类型
1、NULL:不是假也不是真,而是空
2、任何类型,任何运算符,任何判断符和NULL结合,结果都为NULL
3、NULL的判断只能用 is null、is not null
4、NULL影响查询速度,一般避免使用NULL
建表
# 语法 []内为可选参数 create table tbname( 列名 列类型 [列参数] [not null default ] , ...... 列名 列类型 [列参数] [not null default ] )engine myisam charset utf8; #示例 create table goods( goods_id mediumint(8) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, cat_id smallint(5) unsigned NOT NULL DEFAULT '0', goods_sn varchar(60) NOT NULL DEFAULT '', goods_name varchar(120) NOT NULL DEFAULT '', click_count int(10) unsigned NOT NULL DEFAULT '0', goods_number smallint(5) unsigned NOT NULL DEFAULT '0', market_price decimal(10,2) unsigned NOT NULL DEFAULT '0.00', shop_price decimal(10,2) unsigned NOT NULL DEFAULT '0.00', add_time int(10) unsigned NOT NULL DEFAULT '0', is_best tinyint(1) unsigned NOT NULL DEFAULT '0', is_new tinyint(1) unsigned NOT NULL DEFAULT '0', is_hot tinyint(1) unsigned NOT NULL DEFAULT '0' )engine myisam charset utf8;
增加数据
# 语法 insert into表名 (列名,....列名) values (值1,....值n), ...... (值1,....值n); # 示例 insert into goods (goods_id,cat_id,goods_sn,goods_name,click_count,goods_number,market_price, shop_price,add_time,is_best,is_now,is_hot) values (1,4,'ECS000000','KD876',7,1,1665.60,1988.00,124583,1,1,1), (2,4,'ECS000001','诺基亚N97',7,1,3665.60,3588.00,124585,1,1,1);
添加其他表中的数据
# 语法 insert into dtname.tbname
select 列名1,......,列名n from dtname.tbname
# 示例
insert into goods.goods
select
goods_id,cat_id,goods_name,goods_number
from shop.goods;
增加列
# 语法 alter table 表名 add 列名 列类型 列参数 # 指定添加在某列后面(可选) after 某列名 # 指定添加在某列前面(可选) first 某列名 # 示例 alter table goods add shop_price decimal(8,2) not null default 0.0;
修改列类型
# 语法 alter table 表名 modify 列名 列类型 列参数 # 示例 alter table goods modify shop_price float(8,2) not null default 0.0;
同时修改列名和列类型
# 语法 alter table 表名 change 旧列名 新列名 列类型 列参数; alter table goods change shop_price now_shop_price decimal(8,2) not null default 0.0
删除列
# 语法 alter table 表名 drop 列名; # 示例 alter table goods drop now_shop_price;
修改数据
# 语法 update 表名 set 列名=修改的内容 where 表达式; # 示例 update goods set goods_name='诺基亚123' where goods_id=4;
删除数据
# 语法 delete from 表名 where 表达式; # 示例 delete from goods where goods_id=6;
查看数据
查看数据在初级数据库工作中非常重要,所有这里只简单说明下,下一篇专门讲
# 语法 select 查看的列名 from 表名 # 示例 select * from goods;
由于mysql版本的变化,语法可能存在一定的变化,欢迎指出错误和评论区讨论