数据库MySql

 mysql

1,SQL通用语法
2,SQL分类
    一 DDL (操作数据库中表结构,表中字段)    
    二 DML(完成数据的增删改)
    三 DQL(数据查询语言,用来查询数据库中的记录)
    四 DCL

DDL ——数据库操作
1    查询
    查询所有数据库
    show databases;
   查询当前数据库
   select database();

2    创建
  create database 名称;
3    删除
   drop database;
4    使用
    use  数据库名;

    

DDL——表操作——查询
 查询当前数据库所有表
show tables;  需要先用use 在这个数据库  才能查询当前数据库所有表
查询表结构
desc 表名;
查询指定表的建表语句
show create table;

DDL——表操作——创建
create table 表名(
      字段 1 字段1类型[comment 字段1注释]
      .
      .
)[comment 表注释];


DDL——表操作——修改
1 添加字段
  alter table  表名  add 字段名 类型(长度)。

2修改数据类型
    alter table  表名  modify  字段名  新数据类型。

3修改字段名和字段类型
    alter table  表名  change 就字段名 新字段名 类型长度。

4删除字段
    alter  table 表名 drop  字段名。

5  修改表名
    alter table 表名  rename to 新表名。

DDL——表操作——删除
1 删除表
      drop table  表名

2删除指定表,并重新创建该表
      truncate table 表名。

DML
1添加数据(insert)
2修改数据(update)
3删除数据(delete)

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..),(值1,值2...)


DML——修改数据
1update 表名 set 字段名1 = 值1,字段名2 = 值2,...[where条件]
   修改语句可以有条件,也可以无条件,如果没条件,则会修改整张表的所有数据


DML——删除数据
delete from 表名 [where条件]
delete 语句的条件可以有也可以无,如果没条件,会删除整张表的数据
delete语句不能删除某一个字段的值(可以用update)

DQL——语法
1基本查询
2条件查询(where)
3聚合函数(count,max,min,avg,sum)
4分组查询(group by)
5排序查询(order by)
6分页查询(limit)


DQL——基本查询
1、查询多个字段
   selete 字段1,字段2,字段3,....from 表名;
   selete * from 表名;(*代表所有字段)
2、设置别名
select 字段1[as别名1],字段2[as别名2]...from 表名;(as可省略)
3、去除重复记录
select distinct 字段列表 from 表名;

DQL——条件查询
1、select 字段列表 from 表名 where 条件表名
  between ..and..再某范围内
  in  在in之后的列表中的值,多选一
  like 占符位 _匹配单个字符,%匹配任意字符


DQL——聚合函数(将一列数据作为一个整体,进行纵向计算)
1、常见聚合函数
count   统计数量
max     最大值
min      最小值
avg      平均值
sum      求和
2、语法
select  聚合函数(字段列表)  from  表名;


DQL——分组查询
1、语法
  select 字段列表 from 表名 where条件  group by 分组字段名
    having分组后过滤条件;
2、where与having区别
  执行时机不同:   where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤
  判断条件不同:   where不能对聚合函数进行判断,having可以。
            注意
  执行顺序:where > 聚合函数 > having
  分组之后,查询字段一般为聚合函数和分组字段,查询其他字段无任何意义


DQL——排序查询  
1、语法
select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2.
  升序 asc(默认)   降序 desc

DQL——分页查询
1、语法
select 字段列表 from 表名 limit 起始索引,查询记录数(每页展示记录);
 注意:
1、开始索引从0开始,起始索引=(查询页码-1)*每页显示记录数。
2、分页查询是数据库的方言,不同的数据库有不同的实现,mysql中是limit。
3、如果查询的是第一页数据,起始索引可以省略,可以直接写为 limit 10。


DQL——执行顺序
  select             4
             字段列表
   from             1
              表明列表
   where           2
               条件列表
    group by     3
              分组列表
    having         3
              分组条件列表
     order by      5
              排序字段列表
    limit             6
              分页参数


DCL——介绍
用来管理数据库 用户,控制数据库的访问权限


DCL——管理用户
1、查询用户
 use mysql;
 select * from user;
2、创建用户
create user '用户名'@'主机名'   identified by '密码'; 
3、修改用户密码
alter user '用户名'@'主机名' identified with my_native_password by '新密码';
4、删除用户
drop user '用户名'@'主机名';
         主机名可以使用%通配。
         这类sql开发人员操作少,主要是数据库管理员使用。


DCL——权限控制
all,all privileges          所有权限
select                         查询数据
insert                         插入数据
update                       修改数据
delete                        删除数据
alter                           修改表
drop                          删除数据库/表/视图
create                        创建数据库/表

1、查询权限
show grants for '用户名'@'主机名';
2、授予权限
grant 权限列表 on 数据库.表名 to '用户名'@'主机名';
3、撤销权限
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';

函数
字符串函数
数值函数
日期函数
流程函数

字符串函数
函数                                               功能
concat(s1,s2,,,sn)                  将其拼接成字符串
lower(str)                              将字符串全部转为小写
upper(str)                              将字符串全部转为大写
lpad(str,n,pad)                      左填充,用字符串pad对str的左边进行填充,达到n个字符串的长度
rpad(str,n,pad)                      右填充,用字符串pad对str的右边进行填充,达到n个字符串的长度
trim(str)                                 去掉字符串头部和尾部的空格
substring(str,start,len)           返回字从符串str从start位置起的len个长度的字符串

select 函数;


数值函数
函数                                            功能
ceil(x)                                  向上取整
floor(x)                                向下取整
mod(x,y)                             返回x/y的模
rand()                                 返回0~1内随机数
round(x,y)                           求参数x的四舍五入的值,保留y位小数
   

日期函数
curdate()                                        返回当前日期
curtime()                                        返回当前时间
now()                                             返回当前日期和时间
year(date)                                      获取指定date的年份
month(date)                                  获取指定date的月份
day(date)                                       获取指定date的日期
date_add(date,interval expr type)  返回一个日期/时间值加上一个时间间隔expr后的时间值
datediff(date1,date2)                     返回起始时间date1 和结束时间date2直接的天数


流程控制函数
if(value,t,f)                                                                     如果value为ture,则返回t,否则返回f
ifnull(value1,value2)                                                      如果value1不为空,返回value1,否则返回value2
case when [vall] then [res1]..else [default]  end             如果val1为ture,返回res1,否则返回default默认值
case [oxpr] when [val1] then [res1]...else[default] end 如果expr的值等于val1,返回res1,否则返回default没默认值

约束
非空约束      限制该字段的数据不能为null                                                    not null
唯一约束      保证该字段的所有数据都唯一,不重复的                                  unique
主键约束      主键一行数据的唯一标识,要求非空且唯一                               primary key
默认约束      保存数据时,如果未指定该字段的值,则采用默认值                  default
检查约束      保证字段值满足一个条件                                                           check
外键约束      用来让两张表的数据之间建立连接,保证数据的一致性和完整性   foreing key
///约束作用于表中字段上,可以在创建表/修改表时添加约束

id         id唯一标识   int       主键,且自动增长              primary,auto_increment
name   姓名            varchar不为空,且唯一                 not null,unique
age      年龄             int       大于零,且小于等于120    check
status   状态            char    如果没有指定该值,默认为1  default
gender 性别            char      无

外键约束
让两个表的数据之间建立连接,从而保证数据的一致性和完整性

添加外键
create table 表名(
  字段名 数据类型。。。
  [constarint][外键名称]foreing key(外键字段名) references  主表(主表列名)
)
alter table 表名 add constraint 外键名称 foreing key(外键字段名) references 主表(主表列名);

删除外键
alter table 表名 drop foreing key 外键名称;

外键约束
删除/更新行为
no action   当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新(与restrict一致)
restrict       当在父表中删除/更新对应记录时,首先检查该记录是否对应外键,如果有则不允许删除/更新(与no action一致)
cascade      同上,如果有,则也删除/更新外键在子表中的记录
set null       同上,如果有则设置在子表中该外键值为null(这就要求该外键允许取null)
set default  父表有变更时,子表将外键列设置成一个默认的值(innodb不支持)


alter table 表名 add constraint 外键名称 foreing key(外键字段) references 主表名(主表字段名) on update cascade on delete cascade;
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值