学习笔记—MySQL基础
数据库的介绍
mysql数据库介绍
开放源码的轻量级关系型数据库管理系统,体积小、速度快、操作便捷。
数据库的启动和连接
mysql数据库启动
在终端输入以下命令,启动mysql服务器
service mysql start
输入命令,查询mysql服务器状态
service mysql status
出现如下提示表示mysql服务器以启动成功
mysql数据库连接
输入账户和密码连接数据库
表示启动成功。
mysql数据库断开连接
输入exit,如果显示Bye表示断开成功。
数据库的操作
显示数据库
show databases;
创建数据库
create database 库名 default character set utf8;
删除数据库
drop database 库名;
使用数据库
use 库名;
表示以成功切换到study数据库。
数据表的操作
显示数据表
show tables;
创建数据表
## 创建表语句 create tables 表名(字段名 类型 约束,字段名 类型 约束,......); ## 注意:mysql是没有序列的,但是可以在创建表的时候直接指定主键是自赠的。 在字段后使用 auto_increment 表示自增。 ## MySQL常见字段类型 数值类型: int(长度)表示整数类型的数据 float/double表示浮点数 字符类型: varchar(长度)动态分配存储长度 char(长度)分配固定长度 日期类型: date:格式为yyyy-mm-dd datetime:格式为yyyy-MM-dd hh:mm:ss 占用8个字节 timestamp:特点:会自动进行时区的转换,占用4个字节 time:时间 year:年份 其他类型: TEXT:字符数据 BLOB:二进制数据 ## 约束 主键约束: 在创建表时,在字段后使用 primary key 即可 在创建表语句的最后面使用 constraint 约束名 pirmary key(主键字段名) 非空约束: 在创建表的时候直接在字段后使用 nut null 即可 注意: mysql的非空约束中空字符是可以存储进去的。 检查约束: 在mysql中是没有检查约束的,但是使用check关键字又不会报错。 解决: 使用代码逻辑进行无效的数据过滤。 使用 mysql 的存储过程。 唯一约束: 在字段名后直接使用 unique 即可 在创建表语句的最后面使用 constraint 约束名 unique(字段名) 外键约束: 在字段名后直接使用 references 父表名(父表主键名) 在创建表语句的最后面使用 constraint 外键约束名 foreign key(字段名) references 父表名(父表主键名) ## 在表外部添加约束 ## 主键约束 alter table 表名 add constraint 约束名 pirmary key(主键字段名); ## 唯一约束 alter table 表名 add constraint 约束名 unique key(字段名); ## 非空约束 alter table 表名 modify 字段名 类型 not null; ## 外键约束 alter table 表名 constraint 外键约束名 foreign key(字段名) references 父表名(父表主键名)on delete set null on update cascase;
修改数据表
添加字段: alter table 表名 add 字段名 类型 约束; 删除字段: alter table 表名 drop 字段名; 修改字段类型: alter table 表名 modify 字段名 新的类型; 修改字段名: alter table 表名 change 字段名 新的字段名 类型; 修改表名: alter table 表名 rename as 新的表名;
删除数据表
drop table 表名;
查看表创建语句
show create table 表名;
表数据的操作
查询数据
## 单表查询 ## 查询全部 select * from 表名; ## 别名 直接在字段后使用即可 select 字段,字段 别名,字段 from 表名; ## 连接符 使用concat(字段名,“连接的字符”) ## 去除重复 使用 distinct 关键字即可 ## 排序 order by 字段名 ## where字句 select * from 表名 where 判断条件; ## 分组 group by 字段名 注意: 分组可以和字段一起使用 ## having 分组后筛选
## 多表查询 select * from 表名1 别名1,表名2 别名2 where 别名1.字段名 判断条件 别名2.字段名; select * from 表名1 别名1 inner join 表名2 字段名2 on 别名1.字段名 判断条件 别名2.字段名;
## 子查询 select * from 表名 where 字段名 in (select 字段名 from 表名 where 查询条件);
增加数据
insert into 表名 values(值1,值2,值3,...); 全字段插入 insert into 表名(主键字段名,字段,字段,...) values(值1,值2,值3,...); 部分字段插入
删除数据
delete from 表名 where 条件;
修改数据
update 表名 set 字段名=值,字段名=值,... where 条件;
分页查询
select * from 表名 limit x,y; x:从第几条数据开始查询 y:每页显示多少条数据 ## 每页显示n条,查询第m页的信息 select * from 表名 limit m*n-n,n;
数据库的备份
导出
## 导出整个数据库 mysqldump -u root -p 数据库名>/目录/文件名.sql; ## 只导出一个表 mysqldump -u root -p 数据库名 表名>/目录/文件名.sql;
导入
## 方法一 连接数据库之后输入 mysql>source /目录/文件名.sql; ## 方法二 连接数据库之前输入 mysql -u root -p 数据库名<文件名.sql;
作者:殇央 © 转载请注明出处。
-------------------------------------------
如果有错误或者更优化的解决方案,欢迎大家在评论区留言探讨。
也可以给我的个人公众号私信留言。
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!