MySQL单表增删改查

frm结尾的是表文件 MYD结尾的数据文件
sql语句只认分号  以分号结尾
单行注释(-- 注释内容或者是#注释内容(mysql特有的是井号的))
多行注释/*注释*/
!!!!!!!!!!!!!!!!!!!!DDL数据定义语言,用来定义数据库对象:数据库,表,列等


<操作数据库>
1.查询 Show Databases
2.(1)创建数据库 create database 数据库名 
2.(2)创建数据库(判断,如果不存在则创建) create database if not exists 数据库名
3.(1)删除数据库  drop database 数据库名称;
3.(2)删除数据库(判断若存在则删除)drop database if exists 数据库名称;
4.(1)查看当前使用的数据库 select database();
4.(2)USE 数据库名称;


<操作>
1.查询当前数据库下所有表的名称  show tables;
2.查询表结构 desc 表名称;
(创建表) create table 表名称 (
                                字段1,数据类型1(varchar为字符串)
                                字段2,数据类型2
                                ...............
                                字段n,数据类型n);
数据类型 
1.数值类型 tinyint
2.日期和时间类型
3.字符串类型
(删除表)drop table if exists 表名称
(修改表)
1.修改名字  alter table 表名 或者rename to 表名
!2.添加一列  alter table 表名  add 列名 数据类型            
!3.修改数据类型  alter table 表名 modify 列名 数据类型             
!4.修改列名和数据类型 alter table 表名 change 类名 新列名 新数据类型
5.删除列 alter table 表名 drop 列名  


!!!!!!!!!!!!!!!!!!!!DML数据操作语言,用来对数据库中的表的数据进行增删改


<添加数据>

1.给指定列添加数据!! insert into 表名(列名1,列名2....) values(值1,值2....);
2.给全部列添加数据 insert into 表名 values (值1,值2,....)
3.批量添加数据!! insert into 表名 (列名1,列名2.....)values(值1,值2...),(值1,值2,...)
               insert into  表名 values (值1,值2...),(值1,值2,...)
<删除数据>
delete from 表名 where 条件;
<修改数据>
update 表名 set 列名1=值1,列名2=值2......  where 条件;
将张三的性别改成女sex='女'的条件是name='张三'
update student set sex='女' where name='张三'(条件);
1.注意如果update语句没有where条件则会将表中所有数据全部修改;
6.DQL数据查询语言,用来查询数据库中表的记录(数据)
(!查看数据)select * from student;
(基础查询)


查询一列的数据
selete 列名 from 表名 (从表中查列);
去除重复记录  (字段就是列名 列名就是字段)
注意 distinct 可以去重 但是要求查询的所有的列的列值都相同才算重复;
selete  distinct 列名(给列名起别名 列名  as 别名) from 表名(去除列中重复的数据)  别名不需要加引号 


(条件查询语法)

select 字段列表 from 表名 where 条件列表
>大于  ,<小于 >=大于等于,<=小于等于 =等于 !=不等于
在某个范围内 between 小的 and 大的 这个方式小的一定要放到前面  否则查询不到 范围
多个 条件的   x=1 or x=2 --->简化 x in (1,2,3,)  x=1或者2或者3
逻辑  &&       ||     !  
      and      or     not
空  判断是否为空  is null  判断不为空 is not null 
!!!!所有的条件都是对时间有效的!!!!!!!

like 模糊查询 _单个任意字符  %多个任意字符      
查询姓马的人
select * from stu where name like '马%';
//查询第2个字是花的
select *from stu where name  like '_花%';
//查询姓名中包含梅的
select * from stu where name like '%梅%'
like 如果没有结合特殊字符 和等号效果一样


(排序查询)

select 列名 from 表名 order by 排序字段名1 排序方式1.......;
排序方式  ASC 升序(默认值)   DESC  降序; 
多字段排序
//按照数学成绩降序排列如果相同按照英语成绩升序排列
select 列名 from 表名 order by math decs,english  asc
//如果有多个排序条件,当前边的条件一样是,才会根据第二条进行排序
如果不说按照什么顺序 一般是按照升序


(分组查询)
(聚合函数)
 1概念:将一列数据作为整体,进行纵向计算
 2分类:count(列名)1.主键非空且为1    2.*表示所有      统计数量 (一般选用不为null的列)
       max(列名 )       最大值
       min(列名)        最小值
       sum(列名)         求和
       avg(类名)         平均值
聚合函数语法  selsect 聚合函数名(列名) from 表;     
!!!!!!!null值不参与所有聚合函数的运算
  语法
  select 列名 from 表名 where 分组前条件限定 group by 分组的列名 having 分组后的条件过滤;
  注意:分组之后 查询的字段为聚合函数和分组字段 ,查询其他字段无任何意义
       分组之前聚合函数没有值 分组之后才有值
      where 和having区别
      1.执行时机不一样:where是分组之前进行限定的,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤
      2.判断调价那不一样: where不能对聚合函数进行判断  having可以 因为分组之前聚合函数没有值 分组之后才有值
      执行顺序 where>聚合函数>having
      查询男同学和女同学各自数学平均分,以及各自人数,要求分数低于70的不参与分组 分组之后人数大于2
      select sex,avg(math),count(*) from student where math>70 group by sex having count(*)>2;
 
 (分页查询)
 
   语法 
   select 列名 from 表名 limit 起始索引,查询条目数;
     起始索引:从0开始
     计算公式:起始索引=(当前页码-1) * 每页显示的条数
     
     tips:
     分页查询limit 是mysql数据库的方言
     oracle分页查询使用rownumber
     sql server分页查询使用top
 
 

select 字段列表
from 表名列表
where 条件列表
group by 分组字段
having 分组后条件
order by 排序字段(多个排序列 和排序方式用逗号隔开) 
limit 分页限定


DCL数据控制语言,用来定义数据库的访问权限和安全级别,以及创建用户

数据库约束-设计-多表查询-事务,下篇文章有总结!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java小王子呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值