对于mysql中的数据库以及表的增删改查
增删改查数据库的:
-
创建数据库
create database 数据库名
-
显示所有的数据库
show databases
-
输入这个命令一下所有的sql语句的命令都将针对这个数据库
use 数据库名
-
查询某个数据库数据库
show databases like 要查询的数据库的名字
-
删除某个数据库
drop database 要删除的数据名
增删改查表的:
-
创建一个表
create table 表名 (字段名1 数据类型,字段名2数据类型,...,字段名n 数据类型)
-
显示数据库中所有的表
show tables
-
查看表中的所有字段以及字段内的数据类型
desc 表名
-
修改表的
以下为修改表的命令行:
-
添加字段
alter table 要修改表的名字 add column 字段名 数据类型;
-
修改字段
alter table 要修改的表的名字 change column 要修改的字段名 修改后的字段名 修改后的该字段的数据类型
-
修改表中的某个字段类型
alter table 表名 modify 要修改的字段名 新的数据类型
-
删除表中的某个字段
alter table 表名字 drop column 要删除的字段名
-
修改表的名字
alter table 旧表名 rename to 新表名字
-
-
删除表
drop table 表名
mysql中的约束:
-
主键约束:
如果有某个字段添加了那么这个字段的数据不能有重复不能为NULL
-
通过创建表时去添加主键约束
第一种通过创建表时去添加主键约束的方法: create table 表名 (字段名1 数据类型 ,字段名2 数据类型,...,字段名n 数据类型 primary key) //像这样我们给某个字段的数据类型后加上primary key那么该字段就添加了主键约束 第二种通过创建表时去添加主键约束: create table 表名 (字段名1 数据类型 ,字段名2 数据类型,...,字段名n 数据类型) primary key(字段名) //像这样primary key(字段名) 括号里的字段就会被添加上主键约束括号里可以写多个字段用逗号隔开这样叫做复合主键
-
通过修改表时去添加主键约束:
alter table 表名 add primary key(字段名) //像这样我们就给primary key(字段名)括号里的字段添加了主键约束
-
-
外键约束:
外键约束主要用于两个表直接的连接,比如我们有a和b两张表我们可以通过a表中的外键去查询b表中的主键从而查询到我们需要的数据。
-
在创建表的时候添加外键约束。
create table 表名 (字段名1 数据类型,字段2 数据类型,...,字段n 数据类型,constraint 外键名 foreign key (要添加外键的字段名) references 连接的表名 (连接的表中的字段该字段必须为主键))
-
在修改表时添加外键约束
alter table 表名 add constraint 外键名 foreign key (字段名) references 连接的表名 (连接的表中的字段该字段必须为主键)
-
在修改表的时候删除外键约束
alter table 表名 drop foreign key 外键名
-
-
唯一约束:
唯一约束主要帮助我们去创建某个字段的时候这个字段里的数据是唯一的没有重复的但是可以有空值注:可能会与主键约束混淆但是一个表中可以有多个唯一约束,但是不能有多个主键约束,另外唯一约束的字段中的数据可以有空值但是主键约束的字段的数据中不能有空值
-
在创建表时添加唯一约束:
create table 表名 (字段1 数据类型,字段2 数据类型,...,字段n 数据类型 unique) //像这样给某个字段的数据类型后面加上unique那么这个字段就添加了唯一约束
-
在修改表时添加唯一约束:
alter table 表名 add consteraint约束名 unique (要添加唯一约束的字段名)
-
删除唯一约束:
alter table 表名 drop index 字段名
-
-
检查约束:
检查约束主要用于检查表某个字段的数据中是否满足判定条件
-
在创建表时添加检查约束
create table 表名 (字段1 数据类型,字段2 数据类型,...,字段n 数据类型,check (对某个字段的约束的限定条件比如:id>1))
-
在修改表时添加检查约束:
alter table add cpnstraint 检查约束名 check (对某个字段约束的限定条件)
-
删除检查约束:
alter table 表名 drop constraint 检查约束名
-
默认值约束:
默认值就是我们在给某个字段添加数据时没有赋值或者它的值为空那么它的值为默认值
-
在创建表的时候添加默认值约束
create table 表名 (字段1 数据类型,字段2 数据类型,...,字段n 数据类型 default 默认值) //像这样我们给某个字段的数据类型后面加上了默认值约束那么如果它的某条数据为空的时候它的值为默认值
-
在修改表的时候添加默认值约束
alter table 表名 change column 字段名 default 默认值
-
删除默认值约束
alter table 表名 change column 字段名 字段名 数据类型 default null
-
-
非空约束
如果我们给某个字段添加了非空约束那么这个字段里的数据就不能有空值否则会报错
-
在创建表时添加非空约束
create table 表名 (字段1 数据类型,字段2 数据类型,...,字段n 数据类型 not null) //像这样给某个字段的数据类型
-
在修改表时添加非空约束:
alter table 表名 change column 字段名 字段名 数据类型 not null
-
删除非空约束:
alter table column 字段名 字段名 数据类型 null
-
-
查看表中所有的约束
show create table 表名
增删改查数据:
-
查询数据:
-
查询表中所有的数据
select * from 表名
-
查询某个字段中的数据
select 字段名 from 表名
-
查询某个字段的数据并不显示重复的
select distnct 字段名 from 表名
-
给字段或者表取别名
select 字段名/表名 as 别名
-
查询表中x行至y行的数据
select * from 表名 limit x,y //x和y是数字
-
只查找满足限制条件的数据
select * from 表名 where 限制条件 比如id=1
-
-
插入数据
-
往表中插入数据
insert into 表名 (字段名1,字段名2) values (数据1 ,数据2) //括号中的数据1就对应字段名1,数据2 就对应字段名2
-
往表中插入数据
insert into 表名 set 字段名1=数据1,字段名2=数据2
-
查询a表的数据然后插入到b表中
insert into b表名 (字段名1,字段名2) select 字段名1,字段名2 from a表名
-
-
修改数据:
update 表名 set 要修改的字段=新值 //这个一定要结合where限定条件来结合使用否则会把字段里的数据全部修改成一个
-
删除数据
delete from 表名 where 限制条件 //这个命令如果不结合限制条件去结合使用那么会清空整张表
视图的增删改查:
简单来说视图就是一条select语句进行查询后的一个结果集,但是视图也不形同于表可以
-
创建视图
create view 视图名 as select查询语句
-
查询视图
desc 视图名
-
修改视图
//第一种修改视图的方式 alter view 视图名 as select查询语句 //第二种修改视图的方式 update 视图名 set 字段名=新值 where 限制条件
-
删除视图
drop view 视图名
存储过程
我们上面的sql语句等都是对于单个表的操作而存储过程是为了完成处理多条sql语句完成对多表的操作
-
修改结束字符
delimter 结束字符 //修改结束字符是因为我们的sql语句默认是以;进行结尾的但是我们的存储过程可以说是多条sql语句的一个集合,如果不改变结束字符那么运行时会默认只执行第一条sql语句所以我们要改变结束字符,但是存储过程中的sql语句仍以;结尾。
-
创建存储过程
create procedure 存储过程名(参数 参数类型) begin 多条 duosql语句 end
-
修改存储过程
存储过程实际上是不存在修改的,我们可以先删除原存储过程再以相同的命名新的存储过程
-
删除存储过程
drop procedure 存储过程名
-
调用存储过程
call 存储过程名
触发器
触发器就是一种特殊的存储过程,不同的是存储过程需要call调用才能够使用,而触发器不需要,触发器有两种类型before和after类型,before是在激活触发器的语句之前启动触发器,after是在激活触发器的sql语句之后启动触发器,能够激活触发器的语句有三种,insert ,delete,undate这三种语句
-
创建触发器
create tigger 触发器名 触发器类型 激活触发器的是哪种语句 on 表名 for each row 启动触发器时要执行的sql语句;
-
修改触发器
同样也不存在修改触发器如果要修改触发器可通过删除触发器然后再以相同的名字命名
-
删除触发器
drop trigger 触发器名
索引
索引就相当于时表的目录,我们在查询数据之前可以根据目录再去根据目录进行对数据的查询
-
创建索引
create table 表名 (字段1 数据类型,字段2 数据类型,...,字段n 数据类型,index(字段名)); //这行命令用于创建一般索引 create table 表名 (字段1 数据类型,字段2 数据类型,...,字段n 数据类型,unique(字段名)) //这行命令用于创建唯一索引
-
查看表中的索引
show index from 表名
-
删除索引
drop index 索引名 on index 表名
用户
在mysql中的日常管理中我们应该定义一些有权限的用户可以访问来保护数据的安全
-
创建用户
create user "用户名"@"localhost" inentifified by "密码"
-
修改用户名
rename user 旧用户名@"localhost" to 新用户名@"localhost"
-
修改密码
set password for "用户名"@"localhost"=password("新密码")
-
删除用户
drop user "用户名"@"localhost"
- 关于如何给用户设置权限后续会补充
事务:
事务是最小的单位不可再分,事务只和insert,update,delete这三种语句有关,也就说当我们输入这三种语句中的其中一个就表示自动开启了一个事务,当语句执行成功表示自动关闭了事务
-
手动开启事务:
begin
-
事务的提交
commit
-
事务的回滚,表示又回到了事务的起点
rollback
mysql中的数据类型:
-
整数类型:
整数类型又分为以下几种
-
TINYINT (显示长度)
很小的整数,存储空间只占一个字节,这种整数类型他的数值范围只能是:-128~127这个区间
-
SMALLINT (显示长度)
小的整数,存储空间只占两个字节,这种整数类型他的数值范围只能是:-32768~32767这个区间
-
INT (显示长度)
正常的整数,存储空间只占四个字节,这种整数类型他的整数范围只能是:-2147483648~2147483647这个区间
-
bigINT (显示长度)
大整数,这种整数类型他的整数范围只能是:-2147483648~2147483647这个区间
- 显示长度为数字,也就是当我们去查询该数据时显示的数据长度,比如我们在给某字段的数据类型,写为 int (2) 那么我们在给该字段里存储的数据为299 ,那么我们在去查询该数据时只能显示29
-
-
小数类型
小数类型又分为以下几种
-
float
单精度浮点数,存储空间占4个字节
-
double
双精度浮点数,存储空间占8个字节
-
DECIMAL (M, D)
定点数,浮点数在数据中存储的是近似值而定点数存储的是精确值,m为定点数的长度包括小数点前的数,d为小数点后的数的长度。存储空间占m+2个字节
-
-
日期时间类型:
日期时间类型又分为以下几种
-
year
year类型只用来表示年,存储空间为1个字节
可以以4位字符的形式去插入或者4位数字的形式去表示范围为1901至2155 'xxxx',xxxx
可以以2位字符的形式去插入或者以两位数字的形式去插入
-
time
time类型用来表示时分秒,存储空间占3个字节,再去给time类型的字段赋值时要这样:"xx:yy:mm",xx表示多少时,yy表示多少分,mm表示多少秒
-
date
date类型表示日期也就是x年x月x日,存储空间占3个字节,在去给date类型赋值的时候要这样:"xxxx:yy:dd",xxxx表示哪一年,yy表示几月,mm表示几号。
-
datetime
datetime类型表示具体的时间也就是x年x月x日x时x分x秒,存储空间占8个字节,在去给datetime类型赋值的时候要这样:"xxxx-yy-dd ss :ff:mm",xxxx表示哪一年,yy表示几月,dd表示几号,ss表示多少时,ff表示多少分,mm表示多少秒。
-
-
字符串类型:
字符串类型又分为以下几种
-
char (m)
固定长度但是,不是二进制字符类型,括号里的m是该数据类型中可以存储的字符长度但是不可以超过255,存储空间是m个字节
-
varchar (m)
固定长度但是,不是二进制字符类型,括号里的m是该数据类型中可以存储的字符长度但是不可以超过255,存储空间是字符的长度也就是总共有多少个字符+1个字节
-
TINYTEXT
短的,非二进制字符串类型,他的存储空间为字符串的长度+1个字节,但是字符串的长度不能大于256.
-
TEXT
比短的长一点的,非二进制字符串类型,他的存储空间为字符串的长度+2个字节,但是字符串的长度不能大于2的16次方
-
MEDIUMTEXT
比上一个长一点的,非二进制字符串类型,他的存储空间为字符串的长度+3个字节,但是字符串的长度不能大于2的24次方
-
LONGTEXT
稍长一点的,非二进制字符串类型,他的存储空间为字符串的长度+4个字节,但是字符串的长度不能大于2的32次方
-
数据库中的存储引擎:
数据库存储引擎是数据库的底层软件组件,数据库管理系统使用存储引擎进行创建查询和更改数据的操作,不同的存储引擎提供不同的存储机制,索引技巧等。
mysql默认从存储引擎是innoDB ,因为innoDB是事务型数据库的首选引擎
mysql中的查询
上边写过的查询主要是用于查询单个表的,接下来是连接查询的也就是比如有两张表我们可以通过a表去查询b表。
-
内连接查询
内连接查询就是可以同时查询多张表
select * from 表1名 join 表2名 where 限制条件 //限制条件一定要是:表名.字段名,只要使用join关键字进行对表名与表名连接不仅可以两张还可以查询多张表
-
外连接查询
外连接查询又分为左连接和右连接
-
左连接
-
右连接
-