数据库01 数据库基本操作

数据库的类型

RDBMS即关系数据库管理系统(Relational Database Management System)

关系型数据库:数据库里面的数据全部存在数据表中,而这些表在存储的过程中,各自之间有内在联系。因为这种联系,我们称这样的数据库叫"关系型数据库"   

代表:oracle、mysql、ms sql server、sqlite

优点:

  容易理解,二维表结构

  使用方便,通用的SQL语言使得操作关系型数据库非常方便,便于复杂的查询

  支持事务等复杂的数据操作功能

非关系型数据库(NoSQL)

MongoDB,Redis

优点:

数据之间无关系,易扩展

结构简单,具有非常高的读写性能,在大数据量下,同样表现优秀

无需事先建立字段,随时可以存储自定义的数据格式

 

1 关系型数据库核心元素

  • 数据行(记录)

  • 数据列(字段)

  • 数据表(数据行的集合)

  • 数据库(数据表的集合)

mysql常用入门的操作命令

mysql -uroot -p密码              登录
status;                               查看数据状态信息
exit,quit                               退出
show databases;                显示所有数据库
create database data charset=utf8    创建一个数据库
use  数据库名:     选择要编辑的数据库
select database();    查看当前在哪个数据库下
show tables;     查看当前数据库下所有表
source 数据库文件名.sql;  导入数据库到mysql中
desc   ‘表名’         查看表结果信息

SQL语句主要分为:

  • DQL:数据查询语言,用于对数据进行查询,如select

  • DML:数据操作语言,对数据进行增加、修改、删除,如insert、udpate、delete

  • DDL:数据定义语言,进行数据库、表的管理等,如create、drop

  • TPL:事务处理语言,对事务进行处理,包括begin transaction、commit、rollback

  • DCL:数据控制语言,进行授权与权限回收,如grant、revoke

  • CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor

查询 SELECT

select  字段1,字段2, ......  from 表名  where  条件;

逻辑运算符
运算符含义
AND 并列,如果组合的条件都是TRUE,返回TRUE
OR 或者,如果组合的条件其一是TRUE,返回TRUE
NOT 取反,如果条件是FALSE,返回TRUE
范围运算符 (BETWEEN...AND... )

判断字段值是否在指定区间内

当然,反过来查的话,查询18-22岁以外的学生
SELECT class,name,age,sex FROM student WHERE NOT age BETWEEN 18 AND 22;
比较运算符
运算符含义
= 等于,判断字段名的值是否等于指定值
<>、!= 不等于
<= 小于或等于
>= 大于或等于
< 小于
> 大于

 

IN运算符(多条件值查询)

IN 运算符 允许在 WHERE 子句中规定多个值。

查询304,305和306班级的学生信息
     select name,class,age from student where class IN (304,305,306)
模糊查询

LIKE 运算符 允许我们针对只知道部分字符串的情况下,查找所有的字符串,进行模糊查找

% 匹配任意多个字符 陈% 

_ 匹配任意一个字符 陈__

查询姓陈的学生
    SELECT * FROM student WHERE name LIKE '陈%';
   查找名字以风字结尾的学生
    select * from student WHERE name LIKE '%风';
聚合运算

  AVG 返回指定列的平均值

  COUNT 返回指定列中非NULL值的个数

  MIN 返回指定列的最小值

  MAX 返回指定列的最大值

  SUM 返回指定列的所有值之和

查询所有学生中最小的年龄
   SELECT MIN(age) FROM student;
   
3、查询302班中所有学生的平均年龄。
   select AVG(age) from student where class=302;
分组查询

GROUP BY子句, 可以对表进行分组,常常与聚合函数一起使用

GROUP BY 字段名,当前这个字段名在表中出现多少个不同的字段值,那么查询结果就会有多少个组。

查询表中有多少男女学生
   SELECT sex,count(sex) FROM student GROUP BY sex;
2、查询学生表中各个年龄段的学生数量
   SELECT age,COUNT(name) FROM student GROUP BY age;
3、查询各个班级的人数各是多少
   select class,COUNT(id) FROM student GROUP BY class;
结果排序

  ORDER BY 子句,对查询结果排序

  ASC表示升序(从小到大),为默认值,

  DESC为降序(从大到小)

对309班级的学生的年龄进行倒叙排序
   select name,age,sex from student where class=309 order by age desc;
补充:

结果排序可以多个字段排序
例如:对学生的年龄进行降序排列。

select id,name,sex from student order by age desc,id asc limit 10;
 
 # 上面就有2个排序的字段,
 # 系统会优先针对 age 进行降序排列,
 # 当age的值一致的时候,系统会按照id进行升序排列。
结果限制

LIMIT 子句,可以对查询出的结果进行数量限制,往往我们不想一次取出所有的数据

limit有两个使用方式:

  limit后面跟着 一个参数 表示限制结果的数量

  limit后面跟诊 两个参数,第一个参数表示取数据的开始下标[在表中下标从0开始],第二个参数表示限制结果的数量。

查询出年级最大的10个学生
    select * from student order by age desc,id asc limit 10;
2、从所有学生中,查询年级最大的下标从10-19的学生出来。
       select id,name,age from student order by age desc,id asc limit 10,10;

ps:  limit 主要用于在项目开发中的分页功能实现。

DML

添加数据(INSERT )
INSERT INTO 表名 (字段1,字段2,字段3,....) VALUES (字段值1,字段值2,字段值3,....);
insert into student (id,name,sex,class,age,description) values (101,'刘德华',1,508,17,'给我一杯忘情水~');

# 上面的字段,如果是全部字段,那么字段这一块内容可以省略不写。
# 例如,我们再次添加一个学生,如果省略了字段名,那么填写数据的数据项必须和表结构的字段数量保持一致。
insert into student values (102,'张学友',1,508,17,'爱就像头饿狼~',0,0,0);


添加多名学生
INSERT INTO student(name,sex,class,age,description) VALUES ('周润发',1,508,17,'5个A~'),('周杰伦',1,508,17,'给我一首歌的时间~');


注: 自动增长跟有默认值的字段可以不写。
更新数据(UPDATE)

UPDATE 表名 SET 字段1=字段值1,字段2=字段值2 WHERE 条件
# 更新操作会影响数据的不可逆操作,所以更新的时候,一定要谨慎,添加条件。如果没有条件,
# 或者条件的判断结果一直是True,则整个表所有的记录都会被更新。

修改学生的姓名,年龄
UPDATE student set age=8 where id=104;
删除数据(DELETE)

DELETE FROM 表名 WHERE 条件

DELETE FROM table 删除整个表的内容[没有条件则表示删除整个表所有数据]

删除一个学生
DELETE FROM student WHERE id=104;

注: 修改跟删除数据都要记得加条件。

DDL

DROP TBALE 表名   删除整个表

删除学生表
DROP TABLE student;

TRUNCATE table   清空/重置表[表还在数据被清空了]

create database 数据库名 charset=utf8;    创建数据库

原文地址:https://www.cnblogs.com/echo2019/p/10491758.html