文章目录
一、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
- 能确定固定长度的选char
六、新建、删除表
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)
外键字段:该字段上添加了外键约束
外键值:外键字段当中的每一个值