MySQL-DAY01-数据库编码修改、远程访问权限、DDL和DML操作

一、MySQL的运行机制

在这里插入图片描述

二、 结构化查询语句分类

在这里插入图片描述

三、Mysql在Linux中修改数据库默认编码UTF8

1、查看数据库当前默认编码

show variables like ‘character%’;

mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

2、修改Mysql配置文件

vi /usr/my.cnf
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8

[mysql]
default-character-set=utf8

//注释my.cnf最后一行配置
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
systemctl restart mysql  //重启mysql服务后再进入数据库检查编码是否为UTF8

四、Mysql开启远程访问

  • 步骤:
    1)登录mysql:
    mysql -uroot -p
    2)切换数据库至mysql:
    use mysql;
    3)修改允许外部远程访问:
    UPDATE user SET Host = ‘%’ WHERE User= ‘root’ LIMIT 1;
    4)输入如下命令让刚才设置的命令生效:
    flush privileges;
    5)最后使用exit退出mysql服务即可。

五、关于Mysql中的数据类型

  • varchar 可变长度的字符串 就是JAVA中的String

    • 会根据实际的数据长度动态分配空间
      优点:节省空间
      缺点:需要动态分配空间,速度慢
  • char (最长255)

    • 定长字符串
      分配固定长度的空间存储数据
      使用不恰当的时候,可能会导致空间的浪费
      优点:不需要动态分配空间,速度快。
      缺点:使用不当可能会导致空间的浪费
  • varchar和char应该怎么选择

    • 能确定固定长度的选char
      不能确定固定长度的选varchar

六、新建、删除表

create table 表名(
	字段名1 数据类型,
	字段名2 数据类型,
	字段名3 数据类型
);

删除表
drop table if exists 表名;

表名:建议以t_或者tbl_开始,可读性强。见名知意
字段名:见名知意
表名和字段名都属于标识符

七、(DML)对数据进行操作

1、插入数据

insert into 表名(字段名1,字段名2,字段名3...values(1,值2,值3);
  • 注意:字段名和值要一一对应,什么是一一对应
    数量要对应。数据类型要对应。
insert into t_student(no,name,sex,age,email) values(1,'zhangsan','m',20,'[email protected]');
  • 注意:insert 语句但凡是执行成功了,那么必然会多一条记录,没有给其他字段指定值的话,默认值是NULL

2、update更新字段数据

  • 更新字段
update t_user set name = 'jack' , birth = '2000-10-11',create_time = now() where id = 2;
  • 更新所有
  update t_user set name =‘abc’;

3、delete删除数据

删除数据 delete
语法格式
delete form 表名 where 条件;

注意:没有条件,整张表的数据会全部删除

 delete from t_user where id =2;
    insert into t_user(id) values(2);
    delete from t_user;

快速删除表中的数据

delete from dept_bak;
  • delete 语句删除数据的原理
    表中的数据被删除了,但是这个数据在硬盘上的真实空间不会被释放
    缺点是:删除效率比较低
    优点是:支持回滚,可以恢复数据

八、约束

非空约束
唯一性约束:not null
主键约束:primary key
外键约束:foreign key
检查约束:check(MySQL不支持,Oracle支持)

重点4个约束
not null
unique
primary key
foreign key

1、非空约束: not null

非空约束: not null 约束的字段不能为Null
drop table if exists t_vip;
create table t_vip(
id int,
name varchar(255) not null
);
insert into t_vip(id,name) values(1,‘zhangsan’);
insert into t_vip(id,name) values(2,‘lisi’);
insert into t_vip(id) values(3);

2、唯一性约束: unique

唯一性约束unique约束的字段不能重复,但是可以为null
drop table if exists t_vip;
create table t_vip(
id int,
name varchar(255) unique, //约束添加再列后面的称为列级约束
email varchar(255)
);
insert into t_vi(id,name,email) values(4,‘wangwu’,‘[email protected]’);

联合唯一的unique

create table t_vip(
id int,
name varchar(255) ,
email varchar(255),
unique(name,email) //约束没有添加在列后面的,这种约束被称为表级约束
);

在MySQL当中,如果一个字段同时被 not null 和 unique约束的话,该字段自动变成primary key 主键字段(Oracle当中不是这样)

3、主键约束(primary key)pk

主键字段:该字段上添加了主键约束,这样的字段叫做:主键字段
主键值:主键字段中的每一个值都叫做,主键值

主键有什么用
主键值是每一行记录的唯一标识

主键的特征: not null + unique (主键值不能是null,同时也不能重复)

怎么给一张表添加主键约束呢?
drop table if exists t_vip;
create table t_vip(
id int primary key,
name varchar(255)
);
主键除了单一主键和复合主键外还有:
自然主键:主键值是一个自然数,和业务没关系
业务主键:主键值和业务紧密关联,列如银行卡号做主键。
在实际开发中使用自然主键多,因为主键一旦和业务挂钩,那么当业务发生变动的时候,可能会影响到主键值,所以业务主键不建议使用。

在MySQL中,有一种机制,可以帮助我们自动维护一个主键值
drop table if exists t_vip;
create table t_vip(
id int primary key auto_increment, //auto_increment 标识自增,从1开始,以1递增
name varchar(255)
);

4、外键约束(foreign key FK)

外键约束涉及到的相关术语:
外键约束:一种约束(foreign key)
外键字段:该字段上添加了外键约束
外键值:外键字段当中的每一个值

猜你喜欢

转载自blog.csdn.net/weixin_43901457/article/details/113986225