Mysql(上)

本文详细介绍了MySQL中的SQL语句分类(DDL、DML、DQL、DCL),涵盖了数据定义、操作、查询和控制。讲解了如何创建和管理数据库、表,以及数据操作、条件查询、排序、聚合、分组、分页和各种约束(如主键、外键和唯一性)。
摘要由CSDN通过智能技术生成

* **mysql**
mysql -u root -p123456
exit;或quit;
insert into 表名 values('','',XX);
* **注释**
单行-- 或#
**sql语句分为四大类**总结为定义,查询,操作,控制
* **ddl数据定义语言**
用来定义数据库对象:数据库,表,列等.关键字:create,drop,alter
* **dml数据操作语言**
用来对数据库中表的数据进行增删改.关键字:insert.delete,update等
* **dql数据查询语言**
用来查询数据库中表的记录(数据),关键字:select,where等
* **dcl数据控制语言**
用来定义数据库的访问权限和安全级别,及创建用户.关键字:grant,revoke等

对库和表操作的叫ddl,对数据记录操作的有两种一个是dml增删改,一个是dql查询.  最后一类是用来授权的叫dcl
**数据库**
创建
create database if not exits XX characters set gbk;
修改
alter database XX 
删除
drop database xX
**表**
show tables显示所有表  desc 表名.表明查询表结构
create table 表名 like 被复制的表名 ;  //复制表
create table 表明(列名 类型,列,类)
修改alter table 表名 rename to 新的表名
删除drop table if exits 表名
**数据**
delete from 表名 where id = 1
update 表名 set 列1 = 值1,列2=值2[where 条件]

查询表中记录
select 字段列表 from 表名 where 条件 group by 分组字段 having 分组之后的条件 order by 排序 limit 分页限定

--去除重复的
select distinct 字段 from 表名

--ifnull用法
ifnull(a,b)如果a是null就b不是就原来的值a

--as可起别名
select name,math,english,math+english as 总分 from XX;
或者as省略用空格也是可以起别名

****条件查询****
关于where后面between and,in...集合,like,is null,and,or,not或!
where age in(20,19,18)
判断数据值是否是null用is null
不为null就是is not null
模糊查询:like(%意味着0或多个)
找姓马的人where name like '马%'
where name like '_化%'
name like '___'
查询姓名中包含马的人where name like '%马%'

****排序查询****
order by math asc,english asc      默认按升序排列.asc是升序.desc是降序      --当第一排序数据值一样的时候才用第二排序序列.

**聚合函数**(将一列数据作为一个整体,进行纵向计算)会自动排空.排除null比如有一个null就忽略不计.
1.count计算个数.
2.max 获取最大值  min最小值
3.sum 求和
4.avg 平均值
select count(name) from student;统计名字个数.
select count(ifnull(name,0)) from student;  可以结合使用
聚合函数计算的结果都是单行单列

**分组查询**
group by分组
where 和having的区别:where在分组前进行限定,不满足不进行分组.having是分组后进行限定,比如男女进行分组如果分组后必须人大于2则having count(id)>2
where不可以跟聚合函数,having可以进行聚合函数的判断

**分页查询**
结合web和数据库进行真正的分页操作
语法:limit开始索引,每页查询的条数
select * from student limit 0,3从0开始三条数据第一个参数是开始的索引,第二个参数是展示几条
公式:开始的索引 = (当前页码 - 1) * 每页显示的条数

**#约束**
主键约束primary key,外键约束foreign key,非空约束not null,唯一约束unique

**非空约束not null**  
创建的时候约束
create table stu(id stu,name varchar(20) not null);
创建之后修改表约束
alter table stu modify(或者change也可以) name varchar(20);

**唯一约束unique**
删除唯一约束
alter table stu drop index phonenumber
创建表后添加唯一约束和上面非空的一样
alter table stu modify(或者change也可以) name varchar(20) unique;

**主键约束**
primary key
删除主键约束
alter table stu drop primary key;因为主键约束只能有一个.所以直接drop primary就可以了
创建表后添加主键约束
alter table stu modify(或者change也可以) id int primary key;

**主键约束-自动增长auto_increment**
alter table stu modify(或者change也可以) id int;自动删除了,但是这样删不掉主键,所以这样就删除了自增长
alter table stu modify id int auto_increment;添加自增长
自增长一般都和主键一块使用,所以就放一块了.但是自增长也可以不和主键一块,但这样很少见

**外键约束foreign key**
比如表里有研发部和销售部,多个重复数据就可以绑定为外表的id-1,2对应研发部和销售部.
一般都是外键绑定外表的主键.也可以是不是主键,但必须是唯一修饰的列
create table 表名( 外键列 constraint 外键名称 foreign key (外键列名称) references 主表名称(主表主键名称) );
这个外键名称就是起个名字emp_dep_fk外键
create table emp( id int,name varchar(20),dep_id int,
                  constraint emp_dep_fk foreign key (dep_id) references 主表名称(主表主键名称) );
因为是员工表的外键绑定到部门表,所以要先创建部门表,再创建员工表
同样差不多是先给部门表添加数据,再给员工表添加数据

删除外键
alter table emp drop foreign key emp_dep_fk;

创建表后添加外键
alter table emp add constraint emp_dep_fk foreign key (dep_id) references 主表名称(主表主键名称) );

**外键约束的级联操作**
外键部门id可以为null但不能为绑定外表的不存在的id值
先设置表的外键为null,再修改外表的值,然后修改外键的值,过程很繁琐.

添加外键并且进行级联更新
修改设置外键 on update cascade;
这样修改表的外键列就两个表一块改

级联删除
alter table ....add const ... on delete cascade;


 
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值