DDL操作数据库

创建数据库:create database 数据库名 [character set 字符集][collate  校对规则]   注: []表示可选
查看数据库:
    查看所有数据库:show databases; 
    查看数据库结构:show create database 数据库名;
删除数据库:drop database 数据库名;
修改数据库:alter database 数据库名 character set 字符集; 注意:1.不能修改数据库名,2.是utf8不是utf-8
其他操作:
    切换数据库:use 数据库名;   
    查看正在使用的数据库:select database();

创建表【重点】

create table 表名(
   字段名 字段类型 [约束],
   字段名 字段类型 [约束],
   ........
   字段名 字段类型 [约束]
);
-- 注意: 小括号中最后定义的字段后面不要加逗号

  1. 浮点/双精度型

    • 默认的范围 float或者double

    • 指定范围 float(M,D) eg: float(4,2) 表达的范围: -99.99~99.99

  2. 字符串

    • 固定长度 char(n) eg: char(20), 最大能存放20个字符. ‘aaa ’, 还是占20个字符的空间

    • 可变长度 varchar(n) eg:varchar(20), 最大能存放20个字符. ‘aaa’, 占3个字符的空间

    一般使用varchar(n) 节省空间; 如果长度(eg:身份证)是固定的话 可以使用char(n) 性能高一点

  3. 关于大文件

    • 一般在数据库里面很少存文件的内容, 一般存文件的路径

    • 一般不使用二进制存, 使用varchar(n)存文件的路径

约束

  • 即规则,规矩 限制;

  • 作用:保证用户插入的数据保存到数据库中是符合规范的

  • not null: 非空 ; eg: username varchar(40) not null username这个字段不能为空,必须要有数据

  • unique:唯一约束, 后面的数据不能和前面重复; eg: cardNo varchar(18) unique; cardNo字段不能出现重复的数据

  • primary key;主键约束(非空+唯一); 一般用在表的id列上面. 每一张表基本上都有id列的, id列作为记录的唯一标识的

  • auto_increment: ==自动增长,必须是设置了primary key之后,才可以使用auto_increment==

  • id int primary key auto_increment id不需要我们自己维护了, 插入数据的时候直接插入null, 自动的增长进行填充进去, 避免重复了.

需求: 创建一张学生表(含有id字段,姓名字段,性别字段. id为主键自动增长)
create table student(
    id int primary key auto_increment,
    name varchar(40) not null,
    sex varchar(25)
);

查看所有的表:show tables;
查看表的定义结构:desc  表名;

修改表【掌握】

  • 增加一列;alter table 表名 add 字段 类型 约束;

  • 修改列的类型约束; alter table 表名 modify 字段 类型 约束 ;

  • 修改列的名称,类型,约束;alter table 表名 change 旧列名 新列名 类型 约束;

  • 删除一列; alter table 表名 drop 列名;

  • 修改表名 ; rename table 旧表名 to 新表名;

删除表【掌握】

create table product(
    pid int primary key auto_increment,  -- 只有设置了auto_increment id列才可以赋值为null
    pname varchar(40) not null,
    price double,
    num int
);

插入指定列: insert into 表(列,列..) values(值,值..);
插入所有列: insert into 表 values(值,值....);    
-- 注意:
-- - 插入特定的列:没有赋值的列,系统自动赋为null(前提是当前列没有设置not null 约束)
-- - 字段名与值的类型、个数、顺序要一一对应。
-- - 值不要超出列定义的长度。
-- - 插入的日期和字符串,使用引号括起来。 
-- - 默认所有列插入,values里面必须给表中每一个字段赋值,一般主键给一个null

更新记录

update 表名 set 列名 = 值, 列名 =值,... [where 条件];

删除记录

方式一: delete from 表名 [where 条件]
方式二: truncate table 表名;

DQL操作表记录-查询【重点】

  • 语法:

    • 查询所有的列: select * from 表名;

  • 查询某张表特定列: select 列名,列名,... from 表名;

    • 去重查询: select distinct 列名 from 表名;

  • 别名查询: select 列名 as 别名,... from 表名 as 别名; as可以省略的

    • 列运算查询(+,-,*,/等): select 列运算 from 表名;

  • 基本条件查询: select .... from 表名 where 条件;

    • 条件:

    • 比较运算符: > ,>=,<,<=,=,<>,!=

      • 逻辑运算符:

      • 逻辑与: and (&&)

        • 逻辑或: or (||)

      • 逻辑非: not (!)

      • between...and...

      • in(值1,值2,...)

      • like 规则;

        • _ 匹配一个字符

        • % 匹配多个字符(大于等于0个字符)

排序查询

select ... from 表名 order by 字段名 [asc|desc];
select ... from 表名 order by 字段名 [asc|desc],字段名 [asc|desc],...;
注意:
    1.asc表示升序,desc表示降序
    2.不写默认是升序

-- 1. 练习: 以分数降序查询所有的学生
select * from student order by score desc;
select * from student order by score asc;

-- 2. 练习: 以分数降序查询所有的学生, 如果分数一致,再以age降序
select * from student order by score desc,age desc;

聚合函数

max(列名)求这一列的最大值
min(列名)求这一列的最小值
avg(列名)求这一列的平均值
count(列名)统计这一列有多少条记录
sum(列名)对这一列求总和

分组查询

SELECT ... FROM 表名  [where 条件] group by 列名 [having 条件];

where 子句1) 对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,即先过滤再分组。2) where后面不可以使用聚合函数
having字句1) having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,即先分组再过滤。2) having后面可以使用聚合函数

分页查询

select ... from 表名 limit a,b; 
a:从哪里开始查询, 从0开始计数 ,省略a不写,默认就是从0开始
b:查询的数量【固定的,自定义的】
规律:  limit (页码-1)*每页显示的条数,每页显示的条数;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值