登录: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结果取自此表