一. 学习目标

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

  • 怎样创建数据库和表(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 ) not null PRIMARY key,
name ),
sex ),
class_id ),
school_id ),
address ),
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 ) not null PRIMARY key,
name ),
address ),
phone ),
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 ),
create_date datetime,
update_date datetime
)DEFAULT CHARSET=utf8;

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

, '高一年级');

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

, '高一年级', SYSDATE(), SYSDATE());

3. 一次插入多条数据

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

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

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

一次性插入多条数据

, , , '高五年级', 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 ),
sex ),
class_id int,
address ),
create_date datetime,
update_date datetime
)DEFAULT CHARSET=utf8;

向表中插入两条数据

,,'深圳市南山区家和苑小区',SYSDATE(),SYSDATE());
,,'深圳市南山区家和苑小区',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条数据

mysql数据库(一):建表与新增数据的更多相关文章

  1. 点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)

    下载原版阿里JAVA开发手册  [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:MySQL数据库 (建表规约.索引规约.SQL语句.ORM映 ...

  2. django连接mysql数据库以及建表操作

    django连接mysql数据库需要在project同名的目录下面的__init__.py里面加入下面的东西 import pymysql pymysql.install_as_MySQLdb() 找 ...

  3. django中 对Mysql数据库的建表

    Django操作Mysql数据库: 1.1 在settings中,配置数据库相关参数,所以无需修改,这里我们看一下: DATABASES = { 'default': { # 这里可以指定使用的数据库 ...

  4. 在django中使用orm来操作MySQL数据库的建表,增删改

    多张表之间的三种关系:一对一,一对多,多对多 创建表 一对一 xx = models.OneToOneField(to='表明',to_field='字段名',on_delete=models.CAS ...

  5. MySQL数据库中tinyint类型字段读取数据为true和false

    今天遇到这么一个问题,公司最近在做一个活动,然后数据库需要建表,其中有个字段是关于奖励发放的状态的字段,结果读取出来的值为true 一.解决读取数据为true/false的问题 场景: 字段:stat ...

  6. MySQL数据库的库表迁移

    最近在研究MySQL数据库的库表迁移问题,主要分为两种情况,一种情况是迁移数据库的表的全部字段,另一种是迁移数据库的表的部分字段.前一种情况是直接使用mysqldump命令来实现,后一种情况则是采用数 ...

  7. 4.mysql数据库创建,表中创建模具模板脚本,mysql_SQL99标准连接查询(恩,外部连接,全外连接,交叉连接)

     mysql数据库创建,表创建模等模板脚本 -- 用root用户登录系统,运行脚本 -- 创建数据库 create database mydb61 character set utf8 ; -- ...

  8. mysql管理 ------查看 MySQL 数据库中每个表占用的空间大小

    如果想知道MySQL数据库中每个表占用的空间.表记录的行数的话,可以打开MySQL的 information_schema 数据库.在该库中有一个 TABLES 表,这个表主要字段分别是: TABLE ...

  9. 利用navcat为mysql数据库单独的表赋权限及表结构同步

    为mysql数据库单独的表赋权限 场景:考勤系统需要拿OA数据库td_oa中的flow_run和flow_run_data表中的数据做考勤计算 考勤系统只需要读取这两张表的数据,所以只需要开通一个单独 ...

随机推荐

  1. <2014 04 26> 《Coders at Work编程人生:15位软件先驱访谈录》

    什么是老派程序员?调试只用printf,关心数据结构,先整体或先局部,不知道OO.IDE.TDD.BDD等等为何物.Ken Thompson,Jamie Zawinski,Joe Armstrong, ...

  2. Jconsole监控tomcat 的JVM内存的设置

    主要参考这位仁兄的文章  http://elf8848.iteye.com/blog/471676 照做后发现还是不行,原来是Linux服务器配置了多块网卡,在设置 Djava.rmi.server. ...

  3. 《深入理解Linux网络技术内幕》阅读笔记 --- 路由基本概念

    一.路由的基本概念 1.一条路由就是一组参数,这些参数存储了往一个给定目的地转发流量所需的信息,而一条路由所需的最少的参数集合为:(1)目的网络,(2)出口设备,(3)下一跳网关 2.路由中的相关术语 ...

  4. django--个人主页建立练习

    1.前端页面采用模板继承与动态模板 {% extends 'base.html' %} {% block content %} {% for article in article_list %} &l ...

  5. DRF(2) - 解析器,序列化组件使用(GET/POST接口设计)

    一.DRF - 解析器 1.解析器的引出 我们知道,浏览器可以向django服务器发送json格式的数据,此时,django不会帮我们进行解析,只是将发送的原数据保存在request.body中,只有 ...

  6. 查找至少连续出现三次的所有数字/连续3天的日期【LeetCode】

    编写一个SQL查询,查找至少连续出现三次的所有数字.+----+-----+ | Id | Num | +----+-----+ | 1 | 1 | | 2 | 1 | | 3 | 1 | | 4 | ...

  7. Android studio怎么修改文件名

    选中需要重新命名的文件 点击Android studio菜单中列表中的Refactor的选项 选择下拉菜单中的“rename”的选项 弹出rename的选项框,在输入框中输入需要重新的命名的名称. 点 ...

  8. day3-set集合

    set是一个无序且不重复的元素集合 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3 ...

  9. (转)CTO的烦恼:为啥差距就这么大呢?

    话说胖哒是一只CTO,近来遇到了一些小烦恼… 胖哒表示这么多问题想想就头大啊! 一直听说用Docker解决问题不错,于是两个月前,胖哒不远万里来到DockerCon 16,打算向国外的Docker先行 ...

  10. VS2013 IIS Express 无法显示站点目录列表

      VS2013 默认使用IIS Express作为虚拟服务器,或许出于与安全考虑该版本的IIS Express默认关闭站点目录列表显示的功能,访问时会出现以下错误:   为了方便起见,我使用了全局设 ...