基本操作 都坐下!!!
想学习,但也不知道从哪学起。。。。。。。。。。。。。
就先来点基本操作吧
先简单介绍下mysql
MySQL是一种DBMS(数据库管理系统),即它是一种数据库软件
数据库(database)保存有组织的数据的容器
表(table)某种特定类型数据的结构化清单
模式(schema)关于数据库和表的布局及特性的信息
列(column)表中的一个字段,多有表都是有一个或多个列组成
数据类型(datatype)所容许的数据类型。每个表列都用相应的数据类型,它限制(或容许)该列中存 储的数据
行(row)表中的一个记录
主键(primary key)一列(或一组列),其值能够唯一区分表中的每个行
表中的任何列都可以作为主键,只要满足以下条件
每个行都必须具有一个主键值(不允许NULL值)且任意两行都不具有相同的主键值
1.数据库基本操作
--登陆
mysql -user(u) username -password(p) password or none MySQL登录
-- 查看当前数据库
select database();
-- 显示当前时间、用户名、数据库版本
select now(), user(), version();
-- 创建库
create database[ if not exists] 数据库名
-- 数据库选项数据库选项:
CHARACTER SET charset_name
COLLATE collation_name
-- 查看已有库
show databases[ like 'pattern']
-- 查看当前库信息
show create database 数据库名
-- 修改库的选项信息
alter database 库名 选项信息
-- 删除库
drop database 数据库名
2.表的操作
先记一下创建表的语句吧
create table customers(
Id int primary key auto_increment,#部门编号 整形 主键 自增长
Name varchar(18),#部门名称
description varchar(100)#描述
)Enging = InnoDB;
对比一下↑和↓有啥子区别??? 你品你细品(手动滑稽)
create table customers(
int not null auto_increment,#部门编号 整形 主键 自增长
Name varchar(18),#部门名称
description varchar(100)#描述
primary key(Id)
)Enging = InnoDB;
接下来是操作表的语句
--表操作
!!! drop table tb_dept;(删除跑路 慎用!!!!!)
#增加列
alter table 表名 add 列名 类型(长度);
#删除列
alter table 表名 drop tel;
alter table 表名 drop column tel;
#更改列名
alter table 表名 change 原列名 新列名 varchar(18);
#更改表名
第一种:
alter table 原表名 rename 新表名;
第二种:
rename table 原表名 to 新表名;
3.数据的操作(增删改查)
--- 增
insert into 表名 (字段列表) values (值列表)
或者
insert into 表名 values (值列表)
-- 如果要插入的值列表包含所有字段并且顺序一致,则可以省略字段列表。
!可同时插入多条数据记录!
--- 删
DELETE FROM 表名[ 删除条件子句]
没有条件子句,则会删除全部-- 改
--删除所有为空的数据
delete from 表名 where 字段名 IS NULL
--- 改
--修改单个字段名称
UPDATE student SET ssex='男' where sname='小灰灰'
--- 查
--关联查询
#内联
select */列名 from 左表 inner join 右表 on 左id=右id where 查询条件
查询结果:只有两个表都匹配的数据才会查找出来
#外联
(左联)select * from 左表 left join 右表 where 查询条件
查询结果:左表数据全部显示,和左表不匹配的数据右表全置为空
(右联)select * from 左表 right join 右表 where 查询条件
查询结果:右表数据全部显示,和左表不匹配的数据左表全置为空
(全联)
select * from 左表 join 右表 where 查询条件
查询结果:左表数据和右表数据全部显示,左表10条右表5条结果只显示5条
这个全联和内联还是稍稍有点区别的
--去重(关键字distinct)
select *, count(distinct需要去重的字段) FROM 表名 group by 用来分组的字段
去重distinct和count一起用不然的话查出来只是单个字段的数据
--排序(关键字order by)
select 字段名 from 表名 order by 字段1 [asc|desc],字段2 [asc|desc];
asc:升序,desc:降序,默认为asc;
--比较运算符
什么玩意....自己看去吧
--逻辑运算符
NOT 或! 逻辑非
AND 或&& 逻辑与
OR 或 || 逻辑或
XOR 逻辑异或
#模糊查询(关键字是Like)
以龙开头的名字:龙%
查询出所有包含龙的:%龙%
查询最后以龙结尾的数据:_龙%
查询以李,张,赵开头的人:[李张赵]%
查询不以李,张,赵开头的人:[!李张赵]%
SELECT * FROM 表名 where 字段名 LIKE'%龙%'
--范围查询(关键字 in)
1.查询指定范围的,比如有id的表,要查询,id=1,2,3的:
select *from table_name where id in(1,2,3);
2.查询在某个范围的,比如查询id在2~8的:
select *from table_name where id between 2 and 8;
--between 可以连接多个and ,即可以添加多个判定条件
--and比or的优先级高,如果同时出现并希望先运算or,可以运用()小括号使用
--空判断(关键字 IFNULL)
select IFNULL(值1,值2);
假如值1 不为 NULL,则IFNULL() 的返回值为 值1; 否则其返回值为 值2。
IFNULL()的返回值是数字或是字符串
--聚合
count 函数: 算总数的
select count(*) AS 别名 FROM 表名
select count(字段名) AS 别名 FROM 表名
sum 函数: 求和的
select sum(字段名) AS 别名 FROM 表名;
avg 函数: 计算平均值
select avg(字段名) AS 别名 FROM 表名
求完平均值 还可以使用group by查询
MAX()函数和MIN()函数: 求最大和最小值的
select MAX(列名),MAX(列名) FROM 表名;--可查询多个最大值
select MAX(列名),MIN(列名) FROM 表名;--可以混合查询
--分组
select */列名1,列名2../聚合 from 表名 group by 用来分组的字段;
select */列名1,列名2../聚合 from 表名 group by 用来分组的字段 having 分组后过滤的条件;
having语句是分组后过滤的条件,在group by之后使用,也就是如果要用having语句,必须要先有group by语句。
--分页
select 列 from 表名 limit 起始条数,结尾条数
select 列 from 表名 where 条件 limit 起始条数,每页显示条数
开发中的sql:select 列 from 表名 limit (page - 1) * pageSize,pageSize;