MySQL学习(基本操作Ⅱ)

编程学习 2020-10-03 5 次浏览 次点赞


数据操作

插入数据

mysql> insert into 表名 (id, name) values(1, 'Sir');

或者(字段顺序必须和创建时的一致)

mysql> insert into 表名 values(1, 'Sir');

values中的值可以写default和NULL,根据创建表时的规定来。自增的主键,如果选择NULL,就在上一行的数值上加一。

也可以用

mysql> insert into 表名 (name) values('Sir');

不写自增主键id,然后自动加一。

查看表中全部数据

mysql> select * from 表名;

插入多条数据

mysql> insert into 表名 (id, name) values(1,'Sir'),(2,'Arthur');

用逗号隔开多个数据。

删除数据

mysql> delete from 表名 where id=1;

where 可以使用任意字段进行定位,但是根据主键删除,只会删除一条数据

mysql> delete from 表名 where age>=30;

删除表中所有数据

mysql> delete from 表名;

一一删除,性能不行,而且重新插入数据时,如果不添加主键值,会根据以前的数据确定。

mysql> truncate table 表名;

直接删除所有数据,重新开始

更新表

mysql> update 表名 set name='Tom' where id=1;

注意where涉及的数据,如果不加上where,那么就会更改表中所有的数据

mysql> update 表名 set name='Tom',address='Shanghai' where id=2;

更新一条数据的多个字段时用逗号隔开

mysql> update 表名 set address='shanghai' where id=1 or id=2;

查数据(基本)

mysql> select phone,address from 表名;

显示选择的字段

SQL语句的区分

DDL data definition language 数据库定义语言 create alter drop show

DML data manipulation language 数据库操作语言 insert update delete select

DCL data control language 数据库控制语言

字符集编码问题

展示mysql使用的字符集编码

mysql> show variable like 'character_set_%';

修改mysql的字符集编码

mysql> set character_set_client=gbk;

开发时一般都是用utf8

列属性完整性

字段的数据类型设置根据实际开发决定

字段如果是auto_increment那么也是primary key

主键

主键能够保证数据完整性

唯一(unique)不重复、非空(not null)

主键选定那些基本不更新的字段,一般用数字号码区分(好处理)。

  • 加快数据查询速度
  • 能够关联多张表
  • 添加主键
mysql> alter table 表名 add primary key (字段名);

删除主键

mysql> alter table 表名 drop primary key;

组合键/复合主键 (两个字段组成一个主键,用处不大)

mysql> alter table 表名 primary key (字段名,字段名);

unique唯一键

单个表里不重复,可以为空,每个表可以有多个唯一键,保证数据不重复

可以与其他表中的数据无关联

mysql> create table test (
    -> phone varchar(30) unique);

mysql> alter table 表名 add unique (字段名);

删除唯一键

mysql > alter table 表名 drop index 字段名;

注释

mysql> create table test(
    -> id int(20), #this is id
    -> /*
    /*> */); 代码注释
    
mysql> create table test(
    -> id int(20) comment 'this is id'); sql内注释

创建表时最好有comment

数据库完整性

  • 有一个主键进行约束
  • 注意数据类型的选择
  • default、null or not null
  • 外部引用
  • 基于实际场景

外键

主从表之间有公共字段

实际开发中,并发项目禁止使用外键

mysql > create table stu (
    -> stuId int primary);

mysql> create table hall(
    -> id int(4),
    -> stuId int,
    -> foreign key (stuId) references stu(stuId)); #foreign key (字段名) references 主表名(字段名));

添加外键

mysql > alter table 表名 add foreign key (字段名) references 表名(字段名);

删除外键

mysql > show create table 表名; #找到外键的别名 在CONSTRAINT后面
mysql > alter table 表名 drop foreign key 别名;

用desc命令查看表结构时,Key中的MUL表示该字段可以重复

查看外键

mysql> show create table 表名;

置空操作(外界删除数据)

外键绑定的字段被删除了,关联的字段名变成NULL

级联操作(外界更新数据)

外键绑定的字段被删除,关联的字段也被删除。同步变化

mysql> create table 表名(
    -> ......,
    ->foreign key(字段名) references 主表名(字段名) on delete set NULL on update cascade);

创建关系型数据库时,就应该基本确定库的结构


本文由 Haozi 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论