一、表与库的概念

数据库管理数据,它是以什么样的形式组成的?

生活中的表---->表 table
多行多列,传统的数据库都是这样的;声明了表头,一个表创建好了,剩下的就是往表中添加数据

多张表放在档案中--->库 database
学生信息表,成绩表,记过表 -> 都是这个班级的信息,将这几张表放在一个文件夹中 -> 这个文件夹,文档就是 库
mysql服务器可以帮我们管理多个库

xampp\mysql\data
数据库中的数据放在这个文件中, .MYD就是数据文件

档案袋管理员---> 服务器 server
数据库就是将我们的数据存储成文件,分文别类的管理起来

查看库 show databases;
选库 use test;
查看库下的表 show tables;
查表 select * from cat;

二、认识SQL

sql语句大致可以分为三种:

DML is Data Manipulation Language statements. Some examples:数据操作语言,SQL 中处理数
据等操作统称为数据操纵语言 增删改查
对我们而言,DML是我们的重点

DDL is Data Definition Language statements. Some examples:数据定义语言,用于定义和管理
SQL 数据库中的所有对象的语言 (建设者的角度,建表,建库,建视图 等等, 15%)
一般来说,一个数据库在设计完毕之后很少会再改动了

DCL is Data Control Language statements. Some examples:数据控制语言,用来授予或回收访
问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等
(管理员角度,DBA[数据库管理员],5%)
这个用户是否有权限建表,等

三、增删改查操作

1. insert 操作

DML,增删改查—>增

user表,uid name age 三列

(1).添加所有列 添加所有列

insert into user (uid,name,age) values (1,'lisi',23);

(2).一行中有多个列,我们可以插入全部列,也可以插入部分列
但是:列与值要严格对应

insert into user (uid,name) values (1,'lucy');

(3).主键自增插入 主键自增插入 desc user;

insert into user (name) values ('yumi');

(4).插入所有列的简写 插入所有列的简写

insert into user values ('kimi',25); //报错:列计数不匹配值计数
insert into user values (3,'kimi',25);

数字可以加单引号,它也会转成int来理解
但是字符串必须加单引号,不加会理解为一个列名或者变量,会报错

insert into user values ('','zhangsan','');
insert into user values (5,zhangsan,25);

(5).一次添加多行数据 一次添加多行数据

insert into user values (5,'test1',44),(6,'test2',23),(7,'test3',18);

注意:
列与值, 严格对应 (id 自增列也必须对应)
数字和字符串的注意点
数字不必加单引号,字符串必须加单引号.
1 次添加多行数据,用逗号隔开

2. update 操作

增删改查 -> 改
改哪张表?
你需要改哪几列的值?
分别改为什么值?
在哪些行生效?

(1).update 更改列

update user set age=99 where name='yumi';
update 表名 set
列1 = 新值1,
列2 = 新值2
where expr
update user set age=23,name='nobody' where uid=2;

(2).update 所有行
注意,不加 where 带来的后果

update user
set
name='mingming',
age=55;

数据是很宝贵的
如果我们update不加where条件,后果是很可怕的
mysql可以设置新手模式,在新手模式下,删除和更改不加where条件,它是拒绝执行的.

3. delete 操作

增删改查 -> 删
可不可以删除某一行中的某一列?delete...
其实这是个update操作

对于传统型数据库而言,一行就是它的原子型的单位
添加是一行,删除也要是一行
你要删除哪张表的数据?
你要删掉哪些行?

delete from 表名
where expr

sql: *

delete from user where uid=7;

注意不加where条件

delete from user;

4. select 操作

增删改查 -> 查
查哪张表的数据?
你要选择哪些列来查询?
要选择哪些行?

select 列1,列2,...列n
from 表名
where expr

(1).查询表的所有行所有列

select * from user;

开发中很少这样写,因为表中会有成千上万的数据,这样查询会增加数据库负担;
我们需要哪几条数据,就查询哪几条数据即可
(2).查询一行

select * from user where uid=2;

(3).查询多行

select * from user where uid>=2;

(4).查询某几行的某几列,* 代表所有列

select uid,name from user where uid>=2;
select name from user where uid=2;

dml占sql的80%,查占dml的80%;
我们所学的是最最基础的查询语句;
想要写出高难度的复杂的查询,我们还需专门讨论查询的模型的问题;
看我们是否能正真理解select,写出强大的查询语句,
要靠select的查询模型,非常之重要

(5).goods表,查询本店的商品比市场价便宜多少

select goods_id,goods_name,shop_price,market_price,market_price-shop_price from goods;

(6).投影的概念

select name,age from user;

user表有三列,我们只取出2列(部分列),叫做投影运算
就像手电筒,只照到两列,投出影子显示出来
goods表查询出来 market_price-shop_price
两个列做运算,叫做广义投影

四、练习
1.取整

select num/10 from mian;

2.mysql 手册函数
floor 向下取整

select floor(num/10)*10 from mian;

3.更改mian表

update mian set num=floor(num/10)*10 where num between 20 and 39;
select * from mian;

提示:大胆的把列看成变量,参与运算,甚至调用函数来处理 .
substring(),concat()
4.substring 截取字符串

select goods_id,substring(goods_name,4) from goods where goods_name like '诺基亚%';

5.concat 拼接字符串

select goods_id,concat('HTC',substring(goods_name,4)) from goods where goods_name like '诺基亚%';

6.更改表
为了不破坏表的数据,此处不予修改

update goods set goods_name=concat('HTC',substring(goods_name,4)) where goods_name like '诺基亚%';

大胆的把列看成变量,参与运算

注明:该笔记是学习“MySQL加强_布尔教育”时所记录的

MySql数据库基础笔记(一)的更多相关文章

  1. MySQL数据库基础笔记

    数据库 数据库就是存储和管理数据的仓库,用户可以对数据库中的数据进行增删改查等操作. 数据库的分类 关系型数据库(Oracle.MySQL.SQLite等) 非关系型数据库(Redis.MongoDB ...

  2. Mysql数据库基础学习笔记

    Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...

  3. mysql数据库基础-2019-9-10(随堂笔记)

    mysql数据库基础 在cmd情况下启动mysql数据库:(配置path环境变量后可忽略) 运行mysql1. 进入mysql路径2. 执行:mysql -uroot -p,安装时的密码 1.数据库& ...

  4. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  5. mysql数据库基础的简单操作指南

    最近在学习mysql,本文是做的关于mysql学习的笔记,跟大家分享一下,希望对大家学习mysql知识有所助益.mysql现在几乎已经成了网站建设的主流数据库,很多php网站系统都采用了mysql数据 ...

  6. MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  7. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  8. Mysql数据库学习笔记之数据库索引(index)

    什么是索引: SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间. 聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物 ...

  9. MySQL数据库基础

    MySQL数据库基础 本文的所有操作是基于CMD环境,MySQL通过在命令行中输入SQL语句对数据库进行操作.配置问题可参考<打通MySQL的操作权限>中的内容,该文算是针对前期的环境配置 ...

随机推荐

  1. Ocelot 使用

    官方文档:http://ocelot.readthedocs.io/en/latest/introduction/gettingstarted.html 新建两个Asp.net core API项目 ...

  2. Android invalidate()方法 requestLayout()方法分析

    强调一点的就是,在onMeasure(),onLayout(),onDraw()这三个流程中,Google已经帮我们把draw()过程框架已经写好了,自定义的ViewGroup只需要实现 measur ...

  3. thinkphp如何利用反射实现钩子方法

    ThinkPHP框架的控制器模块是如何实现 前控制器.后控制器,及如何执行带参数的方法? PHP系统自带的 ReflectionClass.ReflectionMethod 类,可以反射用户自定义类的 ...

  4. 使用BizTalk实现RosettaNet B2B So Easy

    使用BizTalk实现RosettaNet B2B So Easy 最近完成了一个vmi-hub的B2B项目,使用Rosettanet 2.0的标准与一家品牌商,OEM,供应商实现B2B.一共交换4个 ...

  5. 分布式版本控制系统GIT的使用

    一.什么是Git Git是一个分布式版本控制系统,Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异(如CVS.Subver ...

  6. Eclipse SVN 冲突的 介绍 及 四种解决方式

    https://blog.csdn.net/diyu122222/article/details/79879376

  7. ECMAScript typeof用法

    typeof 返回变量的类型字符串值 .其中包括 “object”.“number”.“string”.“undefined”.“boolean”. 1.在变量只声明.却不初始化值   Or 在变量没 ...

  8. Java容器类源码分析前言之集合框架结构(基于JDK8)

    一.基本概念 Java容器类库的用途是"保存对象",容器库类分为两个不同的分支. 1.Collection.可以保存一个或多个对象,将其保存为一个序列.Collection又可以细 ...

  9. elasticsearch6.7 05. Document APIs(8)Multi Get API

    7.Multi Get API(Multi Get API) multi GET API 允许你一次性获取多个文档,你需要指定docs数组,其中包含了所有你需要查询的文档,每个查询结构至少包含索引,类 ...

  10. Django Rest Framework之认证

    代码基本结构 url.py: from django.conf.urls import url, include from web.views.s1_api import TestView urlpa ...