MySQL的基本语法
CRUD的操作:
C:create 增
(insert into 表名 values(将要增加的值);值的数量和表中的列数一致)
(insert into 表名(列名) values(给指定的列加值);其他为null,表示不知道)
(insert into 表名 values(将要增加的值),(将要增加的值),(将要增加的值);一次插入多行)
R:read 查
(select * from 表名 ;查询所有的列)
(select 列名,列名 from 表名 ;查询所需要的列,列的位置可以换(对列的筛选,术语上叫“投影”))
(select 字段条件 from 表名 where 条件;查询所有的列(对行的筛选,术语上叫“选择”))
U:update 修改
(update 表名 set 列名 = 新值, 列名 = 新值 where 条件;)
D:delete 删除(删除表中的数据)
(delete from 表名 删除整个表);
(delete from 表名 where 条件;删除所需删除的)
- drop database 数据库名;(删除数据库)
- use 数据库名;(使用数据库,数据库必须存在)
- create table 表名(列名 类型,列名 类型);(创建表)
- drop table 表名;(删除表的结构)
- truncate table 表名;(截断表)
即也是删除表中的所有数据,但是与delete from 表名 不同的是:
a 截断时速度更快
b 截断表时,没绝对没有where条件 - alter table 表名 add 列名 类型;(给创建好的表添加列)
- alter table 表名 drop 列名;(给创建好的删除加列)
- desc 表名;(描述表的结构)(describe)
- alter table 表名 modify旧列名 新类型;(修改列的类型)
- alter table 表名 change 旧列名 新列名 新类型;(修改列的名字)
- alter table 表名 rename to 新表名或 rename table 表名 to 新表名;(修改表的名字)
- show create table 表名;显示建表内容
注意:
- drop 删除的是结构;delete 删除表中的数据
- alter 修改表的结构;update 修改表中的数据;modify 修改表中的列的类型或约束;change 修改表中的列名和类型
数据类型
- 数字类型:
- 整数:
tinyint 占1个字节 -127~128
smallint 占2个字节 -32768~32767
int 占4个字节 -2147483648~2147473647
bigint 占8个字节
注意:只能存放整数,如果有小数,会四舍五入
- 实数类型:
decimal(M,N):总共占M列,小数占N 列(整数超出范围报错,小数超出范围四舍五入)
float:有6 位有效数字(5位可靠数字 + 1位存疑数字)
double:有15位有效数字(14位可靠数字 + 1位存疑数字)
- 字符串类型:
- char:定长 char(10)表示最多存放10个列,不够10个列的后面补齐,最大列数是255(优缺点:速度快但是浪费空间)
- varchar:变长 varchar(10)表示最多存放十个列,不够的后面不需要补齐(优缺点:节省空间但速度慢)
- text:最多存放65535个列
- longtext:最多存放4294967295个列
- 日期类型:
- date:年月日
- datetime:年月日 时分秒
- timestamp:年月日 时分秒
当给日期类型的列添加数据时必须保证格式为 yyyy-mm-dd,并且不能越界,且MySQL自动判断闰年
约束
- 主键
- 主键约束:只要在定义的列后面添加 primary key该列就是主键了
- 被添加上主键的列:a 主键的值不能为空;b 也不能为null
- 一张表中最多只能有一个主键
- 复合主键
- 复合主键是在所有列定义完之后在定义
- 复合主键虽然包含多个列,但仍然是一个主键
- 自增长约束
- 自增长约束:只能给数字类型并且是主键的列在其后面添加自增张(auto_increment)
- 自增长总是从目前最大的值开始,继续增长的,就算是把最大的值删了,但是他还是记着,哈哈
- 被加上unique约束的列,作用是不能重复的,
a 默认值约束:default
b 不允许为空:not null
unique与primary key的区别
- unique允许null值进入表中,主键不允许
- 一张表中最多只能有一个主键,但是可以有多个unique约束
补充:数据库不能避免数据冗余,只能减少数据冗余
实体关系:
- 一对一:使用两张表,外键在任何一方都可以
- 一对多:使用两张表,外间在多的一方
- 多对多,使用三张表,外键在第三张表中
外键
外键要注意的地方:
- 在从表(子表)中,不能出现主表中没有的值
比如:班级只有1,2,3班,那么学生就只能在这三个班)
- 删除表的时候,只能先删除子表(从表),再删除主表,
- 当主表中某一个值被依赖的时候,这个值不能被删除或修改
- 主表中被依赖 的列必须是主键
- 被依赖的列,与依赖他的列可以不同,但类型必须一致
- 级联删除(修改):
alter table 表名
add constraint 外键名
foreign key(字段名) references 主表名(字段名)
on delete(on update) cascade
- 同时添加级联删除和级联修改
alter table 表名
add constraint 外键名
foreign key(字段名) references 主表名(字段名)
on delete(on update) cascade on delete(on update) cascade
网友评论