基础mysql数据库学习

登录:mysql- -uroot -proot -h127.0.0.1

退出的三种方法exit,quit,\q

注释符的三种:#abc,/abc/,"--abc"

库就相当于文件夹,表就相当于文件

增删查改:

增:create database db1;

删:drop database db1;

改:alter database db1 charset utf8

查:show databases;查看所有数据库

show create database db1;查看指定数据库

show status; 显示一些系统特定资源信息

desc user 显示表结构,字段类型,主键等

use 选择数据库

show table 查看当前库里所有的表

select password form user where user="root" 查询

建立表:

create table 表名(
         属性名 数据类型 [完整约束条件]
         属性名 数据类型[完整约束条件]
);
create table user(id int(7) AUTO_INCREMENT
         username varchar(100) not null,
         password varchar(100) not null,
         PRIMARY KEY(id)
)ENGINE=InnoDB DEFAULT CHARSET=utf-8
if not exists 有相同表名存在时,则不执行
ENGINE 设置表的引擎,和默认的字符类型
常见的数据库引擎InnoDB和myisam
​

数据完整性约束

主键约束(PRIMARY KEY ): 确保每行数据在指定列或列组合上具有唯一标识,并且不允许包含NULL值。

外键约束(FOREIGN KEY ): 确保表中的外键列的值必须存在于另一个表的主键列中,保持引用完整性。

唯一约束(Unique ): 确保指定列中的所有值都是唯一的,但允许包含NULL值。

检查约束(CHECK): 用于确保特定列中的值满足指定的条件,例如范围、格式等,以确保数据的一致性。

自增长约束(AUTO_INCREMENT): 确保在插入新记录时,列中的值自动按顺序递增。

默认约束(DEFAULT ): 用于确保特定列中的值满足指定的条件,例如范围、格式等,以确保数据的一致性。

零填充约束(ZERO PADDING ): 确保列中的值采用零填充以达到特定长度的要求。

非空约束(NOT NULL ): 用于确保特定列中的值满足指定的条件,例如范围、格式等,以确保数据的一致性 修改表的操作

修改表:alter table 旧表名 rename 新表名;

修改字段的数据类型:alter table 表名 modify 属性名 数据类型;

修改字段名:alter table 表名 change 旧属性名 新属性名 新数据类型;

增加字段名:alter table 表名 add 属性名1 数据类型 [完整性约束条件] [first | after 属性名2]

删除字段:alter table 表名 drop 属性名

更改表的存储引擎:alter table 表名 engine = 引擎名

数据的增删改查:

增:为表中所有字段添加数据

1:insert语句中指定所有字段名
insert into 表名 (字段名1,字段名2,)values(值1,值2,);
示例:INSERT INTO user(id,username,password)VALUES(123,234,666)
      会使id=123,username=234,password=666
1.2.:不指定字段名,则添加的值的顺序应和字段在表中的顺序一致
insert into 表名 values(值22,值23,);
2:为表的指定字段添加数据
只向部分字段添加值,其他字段的值为默认值,前提是设置了默认值
insert into 表名 (字段名1,字段名2,)values(值1,值2,);
3;
insert into 表名 set 字段名1=值1,字段名2=值2

删:

delete from 表名 where 条件表达式
delete from user where id=1     不设置where的话会全部删掉
delete from 表名        删除全部
truncate table 表名

改:

1.更新部分数据
update 表名
  set 字段名1=值1 字段名2=值2
  where 条件表达式
update user
  set username="hhh",password="shshs"
  where id=1;
2.修改全部数据
update user set 字段名=值
update user set usernam=1234

查:

1.查看user表的所有的字段,*通配符
select * from user                    
2.查询user表的指定username字段
select username from user             
3.按条件查询
select 字段名1,字段名2
from 表名
where 条件表达式(id=)
在where中可用运用如下关系运算符
=等于;<>不等于;!=不等于;<小于;<=小于等于;>大于;=>大于等于
4.带in关键字查询
select 字段名1,字段名2
from 表名
where id in(123) id值为1.2.3的
5.空值查询
select *| 字段名1,字段名2                  #字段1,2可不带
from 表名
where 字段名3 is null                      #查询表中字段3为空的
6.带distinct关键字查询
select distinct 字段名 from 表名
select distinct username from user  查询user表中username字段的值
7.带betweeen and关键字查询
select * from user where id between 1 and 10 输出user表中id为1到10的
8.带like查询,搜索查询,一般跟着%,常用于网站搜索框       #%通配符
select * from user where username like "%m" 查username带m的
9.and查询,为了使结果更加精确,and连接多个查询条件
select * from user where id=123 and username=hhh         查找id=123,username为hhh的
10.带or的查询,只要满足一个条件就会查询出来
select * from user where id=123 or username=hhh         查找id=123或username为hhh的
11.and和or一起使用,and的优先级高于or

高级查询:

1.聚合查询
count() 返回某列的行数
SELECT COUNT(*) FROM user
sum() 返回某列值的和
avg() 返回某列值的平均值
max() 返回某列的最大值
min() 返回某列的最小值
2.分组查询
2.1group by
SELECT username FROM user GROUP BY username;
2.2having关键字和where关键字作用相同,having后面可跟聚合函数
2.3使用limit限制查询结果
select 字段名 from 表名 limit2 前两行   2,10第二行到第10行

为表和列取别名

1.为表取别名
select * from 表名 as 别名
select * from user as s where s.username="wangwu" 为user表取一个别名s,并查询表里username为wangwu的字段值
2.为字段取别名
select 原名 as 别名 from 表名
select username as mynane from user

mysql的子查询

where型子查询(把内层的子查询结果当作外层查询的比较条件)
select * from user where id in (select id from user where id>10)内层id大于10的字段,外层查id大于10的全部字段
exists型子查询(把外层的查询结果拿到内层,看内层条件是否成立)
select * from user where exists(select * from user where id>1) 只要有一个大于1的会把查询的全部输出

联合查询(两个表)

两个表的列数必须一致
select * from user union select *,1 from appd 

mysql的内连接

关键字:inner join on 返回两个表的交集

select * from 表名1 inner join 表名2 on 表名1.列名=表名2.列名

左连接(左外连接)

关键字:left join on/left outer join on

左表的记录会全部显现出来,右表的只会显示符合条件的记录,右表记录不足的均为null

select * from 表名1 a left join 表名2 on 表名1.列名=表名2.列名 表名1的会全部显现出来

右连接(右外连接)

关键字:right join on/right outer join on

select * from 表名1 a right join 表名2 on 表名1.列名=表名2.列名 表名2的会全部显现出来

information_schema数据库是mysql数据库的一种,记录这mysql数据库的信息

SCHEMATA表:提供当前mysql实例中所有数据库的信息。show database的结果取自此表

schemata_name

TABLES表:提供了关于数据库中的表的信息,详细描述了某个表属于哪个schema,表类型,表创建时间,表引擎等信息,show tables from schemaname的结果取自此表

table_schema

table_name

COLUMNS表:提供了表中的列信息,详细描述某张表的所有列以及每个列的信息,show columns from schemaname.tablename的结果取自此表

table_schema

table_name

column_name

STATISTICS表:提供关于表索引的一些信息,show index from schemaname,tablename结果取自此表

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值