zoukankan      html  css  js  c++  java
  • MySql数据库基础笔记(一)

    一、表与库的概念

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

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

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

    xamppmysqldata
    数据库中的数据放在这个文件中, .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 ('4','zhangsan','25');
    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加强_布尔教育”时所记录的

  • 相关阅读:
    JSP简单访问数据库
    解析数据存储MySQL
    学习SSH框架
    JavaWEB中读取配置信息
    Eclipse中将Java项目转换成Web项目的方法
    JavaWEB入门
    万能数据库连接类-Oracle、DB2 、Access 、Sql Server
    小米3 打开开发者选项
    coolpad 5879logcat不能输入日志解决办法
    实用开发之-oracle表回滚到一个指定时间的操作语句
  • 原文地址:https://www.cnblogs.com/LancyWu/p/7457381.html
Copyright © 2011-2022 走看看