zoukankan      html  css  js  c++  java
  • mysql数据库(一):建表与新增数据

    一. 学习目标

    • 理解什么是数据库,什么是表

    • 怎样创建数据库和表(create)

    • 怎样往表里插入数据(insert)

    • 怎样修改表里的数据(update)

    • 怎样删除数据库,表以及数据(delete)

    二. 理解数据库和表

    1. 什么是数据库

    仓库—存储货物的房子

    数据库—存储数据的房子

    思考:

    1. 淘宝上面的展示的所有商品信息是从哪里取的?

    2. 发表一个商品信息数据又是保存到了哪里?

    3. 我们等了qq后查看qq的聊天记录信息,这些数据又是从哪里取的?

    2. 什么是表

    如果仓库里面堆满了装衣服的麻袋,那一个个麻袋就可以看做是一个表

    3. 数据库与表的关系

    三. 创建数据库和表

    1. 创建数据库

    创建数据库和表都需要用到数据库脚本语言:sql,全称是:Structured Query Language,结构化查询语言

    创建数据库的sql语法:create database 数据库名称;

    示例:create database ningmeng;

    2. 创建表

    思考:如何把下面excel的数据保存到数据库表里面

    建表语法:

    create table <表名> (

    <字段名1> <类型1>,

    <字段名2> <类型2>,

    ...

    <字段名n> <类型n>

    ) DEFAULT CHARSET=utf8;

    后面加上这一串信息,是为了表数据支持中文,否则当存入中文的时候可能会出现乱码

    所以,我们的创建student表的语句是:

    create table student(
    id int(12) not null PRIMARY key,
    name varchar(12),
    sex varchar(12),
    class_id varchar(12),
    school_id varchar(12),
    address varchar(12),
    create_date datetime,
    update_date datetime
    )DEFAULT CHARSET=utf8;

    解释:

    create:创建

    table:表

    每一个字段之所以要声明类型,是因为每一个数据都是有类型的,要么是数字,要么是字符串语句,要么是时间。一个字段声明了类型后则这个字段就只能存放相应类型的数据

    varchar:表示此数据类型为字符串语句

    datetime:表示此数据类型为时间类型,最终保存的数据格式为:yyyy-mm-dd HH:mm:ss

    not null:表示此字段的值不能为空

    3. 表字段:主键

    表明主键的语法:<字段名> <类型1> primary key;

    主键是什么?它有什么特征

    1). 它是数据库表的一个字段

    2). 主键是非必须的,也就是说一个表可以不声明主键字段

    3). 一旦声明了某个字段为主键,则该字段的值不能重复

    4). 一个表只能有一个主键

    5). 声明主键的时候可以只用一个字段作为主键,也可以将多个字段当做主键,后者叫联合主键

    注意:什么样的字段适合做主键?

    能够唯一的标识表中的一行数据

    思考:学生表哪些字段可以唯一标识一条数据?

    学号

    4. 字段类型

    每种字段都有自己的类型,比如整数型、字符型、时间类型、日期类型、浮点型等。下面介绍常用的数据类型

    整型:

    int(n):n位长度的整数

    字符串型:一般表示姓名地址或者长字符串(非数字类的值)

    char(n):n个字符,最多255个字符,固定长度

    varchar(n):可变长度,最多65535个字符,可变长度

    比较:varchar可以节约空间,但char操作起来更快一点

    时间和日期

    date:日期,格式(yyyy-mm-dd,例如:2016-08-22)

    time:时间,格式(hh:mm:ss,例如:18:40:37)

    datetime:日期时间,格式(yyyy-mm-dd hh:mm:ss,例如:2016-08-22 18:41:27)

    浮点型

    float(m, d):m代表总位数,d小数位,如999.9999声明类型为:float(7, 4)

    double(m, d):m总位数,d小数位

    5. 总结

    1). 创建表的时候,声明字段的时候,字段之间以什么符号分隔?符号用中文的可以吗?

    英文状态下的逗号,不可以

    2). 建表声明字段的时候,最后一个字段后面需不需要逗号?

    不需要

    3). 主键的特征是什么?

    唯一性

    4). 如果表需要支持中文数据存储和显示,需要怎么做?

    在末尾加上DEFAULT CHARSET=utf8;

    6. 课后作业

    创建学校表

    表名:school

    字段:id(编号)、name(学校名称)、address(学校地址)、phone(学校电话)、create_date(创建时间)、update_date(更新时间)

    字段类型:

      id          int(11)

      name        varchar(10)

      address       varchar(100)

      phone        varchar(20)

      create_date     datetime

      update_time      datetime

    主键:id

    create table school(
    id int(11) not null PRIMARY key,
    name varchar(10),
    address varchar(100),
    phone varchar(20),
    create_time datetime,
    update_time datetime
    )DEFAULT CHARSET=utf8;

    四. 数据库操作—插入数据(INSERT)

    1. 插入一条数据,且只对一部分字段赋值

    语法:insert into <表名>(字段A, 字段B, 字段C) values(值A, 值B, 值C);

    示例: insert into grade(id, name) values(1, '高一年级');

    2. 插入一条数据,对所有字段都赋值

    语法:insert into <表名> values(值A, 值B, 值C..., 值F);

    示例:insert into grade values(1, '高一年级', SYSDATE(), SYSDATE());

    总结:

    需要注意的是,如果插入数据时,只对部分字段进行初始化,则需要声明要插入的字段

    在mysql中,字符串的数据是用英文的''括起来的

    创建一个grade表

    create table grade(
    id int not null PRIMARY key,
    name varchar(10),
    create_date datetime,
    update_date datetime
    )DEFAULT CHARSET=utf8;

    然后向其中插入一条数据,对一部分字段赋值

    insert into grade(id, name) values(1, '高一年级');

    插入一条数据,对所有字段赋值

    insert into grade values(2, '高一年级', SYSDATE(), SYSDATE());

    3. 一次插入多条数据

    语法:insert into <表名> values(值1, 值2...), (值1, 值2...)......;

    示例:一次性往年级表里面插入三条数据

    insert into grade values(3, '高三年级', SYSDATE(), SYSDATE()), (4, '高四年级', SYSDATE(), SYSDATE()), (5, '高五年级', SYSDATE(), SYSDATE());

    一次性插入多条数据

    insert into grade values(3, '高三年级', SYSDATE(), SYSDATE()), (4, '高四年级', SYSDATE(), SYSDATE()), (5, '高五年级', SYSDATE(), SYSDATE());

    五. 数据库—修改数据(UPDATE)

    1. 修改一个表里的所有数据

    语法:update 表名 set 字段名=新值;

    示例:将学生表里所有学生的住址改为"深圳宝安西乡"

    update student set address='深圳宝安西乡';

    2. 修改一个表里满足某一条件的那一部分数据

    语法:update 表名 set 字段名=新值 where 表达式

    示例:将学生表里名字为华华的家庭住址改为"北京海淀区"

    update student set address='北京海淀区' where name='华华';

    总结:

    如果要更新一个表里满足某个条件的数据,同样需要用到关键字"where"来进行过滤找出那一部分数据,然后针对这一部分数据做更新操作

    新创建一个student表

    create table student(
    id int not null PRIMARY key,
    name varchar(10),
    sex varchar(10),
    class_id int,
    address varchar(100),
    create_date datetime,
    update_date datetime
    )DEFAULT CHARSET=utf8;

    向表中插入两条数据

    insert into student values(1601001,'柠檬','',1601,'深圳市南山区家和苑小区',SYSDATE(),SYSDATE());
    insert into student values(1601002,'华华','',1601,'深圳市南山区家和苑小区',SYSDATE(),SYSDATE());

    将student表里所有学生的住址改为"深圳宝安西乡"

    update student set address='深圳宝安西乡';

    将学生表里名字为华华的家庭住址改为"北京海淀区"

    update student set address='北京海淀区' where name='华华';

    六. 数据库—删库删表(DROP)

    1. 删除数据库

    语法:drop database 数据库名称;

    示例:删除数据库 xiaozhai

    drop database xiaozhai;

    2. 删除数据表

    语法:drop table 表名;

    示例:删除school表

    drop table school;

    总结:

    1. drop database test_database; 会把数据库test_database删掉,因此库里所有的表和数据都一并删除

    2. drop table test_table; 会把test_table表删掉,因此表的数据也删掉了

    3. drop作为一种删除命令,它不仅会删数据结构(库/表),而且会删数据。简单点讲:drop 删结构且删数据

    4. 这两个命令要慎用

    七. 数据库—删数据(DELETE)

    1. 删掉表里的所有数据

    语法:delete from 表名;

    示例:删除学生表里的所有数据

    delete from student;  删除一个表里的所有数据

    2. 删除一个表里的满足某个条件的数据

    语法:delete from 表名 where 条件;

    示例:删除学生表里名字为"华华"的数据

    delete from student where name='华华';

    总结:

    1. 如果要删除某个表里满足某个条件的数据,需要用到关键字"where"来进行过滤找出那一部分数据

    2. delete也是一种删除命令,但是与drop命令不同的是,delete只会删除表数据,不会删表和库。简单点讲:delete删数据不删结构

    删除学生表里名字为"华华"的数据

    delete from student where name='华华';

    八. 常见问题注意

    1. 建表的时候每一个字段的后面用什么符号分隔?最后一个字段后面需要分隔符吗?

    逗号,不需要

    2. 插入数据时,只初始化部分字段与初始化所有字段时sql的不同点体现在哪里?

    初始化所有字段,不需要写字段名

    3. 赋值时,对于varchar类型的字段,赋的值必须用什么符号括起来?

    英文状态下的单引号''

    4. 字段声明了长度,赋值的时候应该注意什么?

    插入数据的长度必须小于等于声明的长度

    5. 声明为主键的值可以重复吗?

    不可以

    6. 不插入必填字段(not null字段),插入语句能否执行成功?

    不能执行成功的

    7. 插入一条数据和多条数据的语法区别是?多条数据时,中间以什么符号做分隔?

    插入多条数据,多个括号括起来,以逗号做风格

    8. 如果表需要支持中文数据存储和显示,需要怎么做?

    设置DEFAULT CHARSER=utf8;

    九. 课后作业

    一. 按照下面给出的表结构创建下面几个表

    二. 用课堂上学习的insert语句向各个表里插入正常的非垃圾数据

    注意事项:

    1. 成绩表里成绩是分数(0~100分)

    2. 学生的性别和姓名都是中文

    要求:至少每个表里都要有10条数据

  • 相关阅读:
    [算法练习]序列最大和
    [算法练习]最长公共子序列
    [算法练习]最长公共子串(LCS)
    [算法练习] 把字符串转换成整数
    [算法练习] 反转链表
    [算法练习] 正整数数制转换
    自己调用NTDLL函数
    [经典算法] 排列组合-N元素集合的所有子集(二)
    [经典算法] 排列组合-N元素集合的所有子集(一)
    【机器学习】主成分分析法 PCA (I)
  • 原文地址:https://www.cnblogs.com/my_captain/p/9426737.html
Copyright © 2011-2022 走看看