一.数据库的基本操作

--------------------------------------------------------------数据库的安装以后更新----------------------------------------------------------------------------------

在Linux系统下:

1.启动数据库服务:sudo service mysql start

2.停止数据库服务:sudo service mysql stop

3.重启数据库服务:sudo service mysql restart

4.进入MySQL数据库:mysql -u用户名 -p密码

5.创建一个数据库:create database 数据库名 charset='utf8';注意:一定要写上数据库编码方式。否则会出现一系列的麻烦。

6.查看创建数据库的语句:show create database 数据库名;

7.查看当前所有数据库:show databases;  注意:这里没有小括号

8.进入一个数据库:use 数据库名;

9.查看当前正在用的数据库:select database();  注意:这里有小括号

10.查看当前时间:select now();

11.删除数据库:drop database 数据库名;

二.数据的完整性

数据类型:

1.整数:int、bit

2.小数:decimal  说明:decimal(5,2)表示该小数一共有五位数,其中小数占两位。

3.字符串:varchar、char  说明:varchar(3)输入'ab',实际存储为'ab',输入'abcd',实际存储为'abc'。char(3)输入'ab',实际存储为'ab ',输入'abcd',实际存储为'abc'

4.时间:date(2017-12-12)、time(12:30:54)、datetime(2017-12-12  12:30:54)

5.枚举:enum

数据的约束:

1.主键:primary key  说明:primary key 相当于 not null 和 unique

2.外键:foreign key

3.非空:not null

4. 唯一性:unique

5.默认值:default

6.取正数:unsigned

7.主键自增:auto_increment

三.表结构的基本操作

1.创建一个student学生表:

create table student(

idintunsigned primary key auto_increment,  unsigned只能放在数据类型(int)的后面,放在约束后面直接报错,不要问我为什么,记住就行了。

name varchar(10) not null,

ageint unsigned not null,

height decimal(5,2) default 0,     写了默认值就不需要再写not null。

genderenum("男","女") default "男",  这里默认值只能写enum中的汉字,不能写索引。

birth date,

is_delete bitdefault 0  bit只有两个取值0和1。这里不要再写逗号);  最后必须分号结束

2.查看表格的创建语句:show create table student;

3.查看表结构:desc student;

4.查看所有的表格:show tables;

5.删除表格:drop table student;

6.添加一个addr字段,varchar(20),非空:alter table student add addr varchar(20) not null ;

7.将addr改为address:alter table student change addr address varchar(20) not null;

8.将address的varchar(20)改为varchar(50):alter table student modify address varchar(50) not null;

9.删除address字段:alter table student drop address;

四.数据的CRUD(create增加、retrieve检索、update更新、delete删除 )

-------------------------------------------------------------------------待更新-----------------------------------------------------------------------------------

五.SQL语句的强化

准备数据:

-- 创建 "京东"数据库

create database jing_dong charset=utf8;-- 使用 "京东"数据库

use jing_dong;--创建一个商品goods数据表

create table goods(

idint unsigned primary key auto_increment not null,

name varchar(150) not null,

cate_name varchar(40) not null,

brand_name varchar(40) not null,

price decimal(10,3) not null default 0,

is_show bit notnull default 1,

is_saleoff bit notnull default 0);--向goods表中插入数据

insert into goods values(0,'r510vc 15.6英寸笔记本','笔记本','华硕','3399',default,default);

insert into goods values(0,'y400n 14.0英寸笔记本电脑','笔记本','联想','4999',default,default);

insert into goods values(0,'g150th 15.6英寸游戏本','游戏本','雷神','8499',default,default);

insert into goods values(0,'x550cc 15.6英寸笔记本','笔记本','华硕','2799',default,default);

insert into goods values(0,'x240 超极本','超级本','联想','4880',default,default);

insert into goods values(0,'u330p 13.3英寸超极本','超级本','联想','4299',default,default);

insert into goods values(0,'svp13226scb 触控超极本','超级本','索尼','7999',default,default);

insert into goods values(0,'ipad mini 7.9英寸平板电脑','平板电脑','苹果','1998',default,default);

insert into goods values(0,'ipad air 9.7英寸平板电脑','平板电脑','苹果','3388',default,default);

insert into goods values(0,'ipad mini 配备 retina 显示屏','平板电脑','苹果','2788',default,default);

insert into goods values(0,'ideacentre c340 20英寸一体电脑 ','台式机','联想','3499',default,default);

insert into goods values(0,'vostro 3800-r1206 台式电脑','台式机','戴尔','2899',default,default);

insert into goods values(0,'imac me086ch/a 21.5英寸一体电脑','台式机','苹果','9188',default,default);

insert into goods values(0,'at7-7414lp 台式电脑 linux )','台式机','宏碁','3699',default,default);

insert into goods values(0,'z220sff f4f06pa工作站','服务器/工作站','惠普','4288',default,default);

insert into goods values(0,'poweredge ii服务器','服务器/工作站','戴尔','5388',default,default);

insert into goods values(0,'mac pro专业级台式电脑','服务器/工作站','苹果','28888',default,default);

insert into goods values(0,'hmz-t3w 头戴显示设备','笔记本配件','索尼','6999',default,default);

insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default);

insert into goods values(0,'x3250 m4机架式服务器','服务器/工作站','ibm','6888',default,default);

insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default);

+----+---------------------------------------+---------------------+------------+-----------+---------+------------+

| id | name | cate_name | brand_name | price | is_show | is_saleoff |

+----+---------------------------------------+---------------------+------------+-----------+---------+------------+

| 1 | r510vc 15.6英寸笔记本 | 笔记本 | 华硕 | 3399.000 | | |

| 2 | y400n 14.0英寸笔记本电脑 | 笔记本 | 联想 | 4999.000 | | |

| 3 | g150th 15.6英寸游戏本 | 游戏本 | 雷神 | 8499.000 | | |

| 4 | x550cc 15.6英寸笔记本 | 笔记本 | 华硕 | 2799.000 | | |

| 5 | x240 超极本 | 超级本 | 联想 | 4880.000 | | |

| 6 | u330p 13.3英寸超极本 | 超级本 | 联想 | 4299.000 | | |

| 7 | svp13226scb 触控超极本 | 超级本 | 索尼 | 7999.000 | | |

| 8 | ipad mini 7.9英寸平板电脑 | 平板电脑 | 苹果 | 1998.000 | | |

| 9 | ipad air 9.7英寸平板电脑 | 平板电脑 | 苹果 | 3388.000 | | |

| 10 | ipad mini 配备 retina 显示屏 | 平板电脑 | 苹果 | 2788.000 | | |

| 11 | ideacentre c340 20英寸一体电脑 | 台式机 | 联想 | 3499.000 | | |

| 12 | vostro 3800-r1206 台式电脑 | 台式机 | 戴尔 | 2899.000 | | |

| 13 | imac me086ch/a 21.5英寸一体电脑 | 台式机 | 苹果 | 9188.000 | | |

| 14 | at7-7414lp 台式电脑 linux ) | 台式机 | 宏碁 | 3699.000 | | |

| 15 | z220sff f4f06pa工作站 | 服务器/工作站 | 惠普 | 4288.000 | | |

| 16 | poweredge ii服务器 | 服务器/工作站 | 戴尔 | 5388.000 | | |

| 17 | mac pro专业级台式电脑 | 服务器/工作站 | 苹果 | 28888.000 | | |

| 18 | hmz-t3w 头戴显示设备 | 笔记本配件 | 索尼 | 6999.000 | | |

| 19 | 商务双肩背包 | 笔记本配件 | 索尼 | 99.000 | | |

| 20 | x3250 m4机架式服务器 | 服务器/工作站 | ibm | 6888.000 | | |

| 21 | 商务双肩背包 | 笔记本配件 | 索尼 | 99.000 | | |

+----+---------------------------------------+---------------------+------------+-----------+---------+------------+

我们发现该数据库设计的有一些问题,是什么呢?

电脑的每种类型(cate_name)对应好多种款式的电脑,每种品牌(brand_name)也对应好多种款式,显然不符合数据库设计的三范式。

下面将goods表再拆分出两个表,分别是goods_cates商品类型表和goods_brands品牌表。

------------------------------------------------数据库的三范式以后更新----------------------------------------------------------------------------

商品类型表的创建:

1.创建goods_cates表:

--创建商品分类表

create tableif notexists goods_cates(

id int unsigned primary key auto_increment,

name varchar(40) notnull

);

2.将goods表中的cate_name同步到goods_cates表中的name:

insert goods_cates(name) select cate_name from goods group by cate_name;(第一种插入方式)

解释:先将goods表中的cate_name查询出来分好组,然后插入到goods_cates表中字段为name下。

注意:必须指定good_cates中的字段,否则程序不知道把查询出来的cate_name插入到什么字段中。

3.将goods_cates中的id同步到goods中:

update goods join goods_cates on goods.cate_name = goods_cates.name set goods.cate_name = goods_cates.id;

解释:可以将goods join goods_cates on goods.cate_name = goods_cates.name 这段代码看作一个整体,就是说先将goods表和goods_cates通过内连接建立一个虚表,然后更改goods.cate_name为goods_cates.id。

商品品牌表的创建:

1.创建goods_brands表同时插入数据:

-- 在创建数据表的时候一起插入数据

--注意: 需要对brand_name 用as起别名,否则name字段就没有值

create table goods_brands (

id int unsigned primary key auto_increment,

name varchar(40) not null) select brand_name as name from goods group by brand_name;(第二种插入方式)

2.同步goods中的数据(原理同上):

update goods join goods_brands on goods.brand_name = goods_brands.name set goods.brand_name = goods_brands.id;

最后的最后修改表结构,将cate_name改为cate_id,brand_name改为brand_id,这是一波新操作,瞧好:

alter table goods change cate_name cate_id int unsigned not null,change brand_name brand_id int unsigned not null;

最后goods表结果:

----+---------------------------------------+---------+----------+-----------+---------+------------+

| id | name | cate_id | brand_id | price | is_show | is_saleoff |

+----+---------------------------------------+---------+----------+-----------+---------+------------+

| 1 | r510vc 15.6英寸笔记本 | 5 | 2 | 3399.000 | | |

| 2 | y400n 14.0英寸笔记本电脑 | 5 | 7 | 4999.000 | | |

| 3 | g150th 15.6英寸游戏本 | 4 | 9 | 8499.000 | | |

| 4 | x550cc 15.6英寸笔记本 | 5 | 2 | 2799.000 | | |

| 5 | x240 超极本 | 7 | 7 | 4880.000 | | |

| 6 | u330p 13.3英寸超极本 | 7 | 7 | 4299.000 | | |

| 7 | svp13226scb 触控超极本 | 7 | 6 | 7999.000 | | |

| 8 | ipad mini 7.9英寸平板电脑 | 2 | 8 | 1998.000 | | |

| 9 | ipad air 9.7英寸平板电脑 | 2 | 8 | 3388.000 | | |

| 10 | ipad mini 配备 retina 显示屏 | 2 | 8 | 2788.000 | | |

| 11 | ideacentre c340 20英寸一体电脑 | 1 | 7 | 3499.000 | | |

| 12 | vostro 3800-r1206 台式电脑 | 1 | 5 | 2899.000 | | |

| 13 | imac me086ch/a 21.5英寸一体电脑 | 1 | 8 | 9188.000 | | |

| 14 | at7-7414lp 台式电脑 linux ) | 1 | 3 | 3699.000 | | |

| 15 | z220sff f4f06pa工作站 | 3 | 4 | 4288.000 | | |

| 16 | poweredge ii服务器 | 3 | 5 | 5388.000 | | |

| 17 | mac pro专业级台式电脑 | 3 | 8 | 28888.000 | | |

| 18 | hmz-t3w 头戴显示设备 | 6 | 6 | 6999.000 | | |

| 19 | 商务双肩背包 | 6 | 6 | 99.000 | | |

| 20 | x3250 m4机架式服务器 | 3 | 1 | 6888.000 | | |

| 21 | 商务双肩背包 | 6 | 6 | 99.000 | | |

+----+---------------------------------------+---------+----------+-----------+---------+------------+

六.MySQL高级

-----------------------------------------------------------------------待更新-------------------------------------------------------------------------------------------------------------

mysql数据库知识点总结_mysql数据库知识点总结相关推荐

  1. mysql数据库安全模式开启_mysql 数据库安全模式

    手把手教你在CentOS 6.8中安装mysql @(Linux)[centos,mysql,安装] 卸载掉原有mysql 查看该操作系统上是否已经安装了mysql数据库:rpm -qa | grep ...

  2. 初识mysql数据字段属性_MySQL数据库~~~~初识、基础数据类型

    一 数据库初识 1.1 什么是数据库 数据库(DataBase,简称DB),简而言之可视为电子化的文件柜----存储电子文件的处所,用户可以对文件中的数据运行新增,截取,更新,删除等操作. 所谓数据库 ...

  3. mysql实训报告_mysql数据库技术》实验报告.doc

    mysql数据库技术>实验报告 MySQL数据库技术实验报告 系 别 班 级 学 号 姓 名 地点 地点机房 课程名称 MySQL数据库技术 实验名称 实验1 MySQL的使用 实 验 过 程 ...

  4. mysql数据库物理备份_MySQL数据库之xtrabackup物理备份(一)

    (1)备份开始时会开启一个后台检测进程,实时检测mysql redo(已提交的事务)的变化,一旦发现redo中有新日志写入,立刻将日志记入后台日志文件xtrabackup_log中, (2)复制Inn ...

  5. mysql 导出dmp文件_Mysql数据库的各种命令:

    一.连接MYSQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL. 首先打开DOS窗口,然后进入目录mysqlbin,再键入命令mysql -u root ...

  6. mysql数据库试题下载_MYSQL数据库2013-2014学年考试试卷

    石河子大学MYSQL数据库2013-2014学年考试试卷 8.创建表时,不允许某列为空可以使用: ( A ) A.NOT NULL B.NO NULL C.NOT BLANK D.NO BLANK 9 ...

  7. MySQL数据库的总结_MySQL数据库应用总结(三)—MySQL数据库的基本操作

    SQL语法预览: 查看所有数据库:[show databases; ] 创建数据库:[create database 数据库名;] 查看所创建的数据库:[show create database 数据 ...

  8. mysql导出入数据库报错_mysql数据库导出导入数据库的搜索结果-阿里云开发者社区...

    mysql 数据库导入\导出(总结备忘) 数据库的基本导入\导出的命令 是 mysqldump 和 source 在linux下直接用命令行操作就可以 在windows下 一般情况下有两种方法一个也是 ...

  9. mysql 备份文件太大_mysql数据库太大了怎么备份

    本地: 1.进入MySQL目录下的bin文件夹:e:回车:e:\>cd mysql\bin 回车2.导出数据库:mysqldump -u?用户名 -p 数据库名 > 导出的文件名范例:my ...

最新文章

  1. android获取导航栏宽高,Android获取屏幕的宽高度、状态栏、标题栏、导航栏、编辑区域高度...
  2. ListView控件的基本使用(方式一:使用ArrayAdapter适配器实现)
  3. CDH预警配置QQ邮箱
  4. php必须掌握的库,PHP初學者必須掌握的10個知識點
  5. 但行好事,莫问前程!
  6. tensorflow打印模型结构_钢结构模型3D打印与有限元网格的融合方法
  7. 关于Spring的几个问题
  8. 【LeetCode】剑指 Offer 67. 把字符串转换成整数
  9. 关于plsql查询中文字符编码问题
  10. 从“做什么”到“怎么做”,说说一只蚊子
  11. python项目描述怎么写_个人项目(python)
  12. idea 怎么快速创建类的快捷键_Idea 常用快捷键整理
  13. 记录-QuartuesⅡ-Qsys自定义数码管IP过程以及遇到的源文件路径问题
  14. 【学习笔记】标签噪声下用于鲁棒性学习的对称交叉熵损失函数
  15. 离散数学-图的运算与基本概念、导出子图、路与连通
  16. SitePoint博客的3大变化
  17. PC-DIMS测量中遇到了不可解决的问题
  18. 恭贺新春-杨建荣敬祝
  19. 如何在小程序的wxml中书写函数逻辑,wxs的使用
  20. 使用树莓派实现动作捕捉、抓拍并存储照片

热门文章

  1. 仿糯米弹框效果demo
  2. Zookeeper之客户端命令行操作
  3. elementUI table自定义表头弹框搜索,排序,显示tag标签
  4. 日本的mmx任务将捕获火星及其卫星的8k图像
  5. 从数据流到现金流,详解神策数字化用户运营方法论
  6. The difference between Failure and Success
  7. Outline agreements 框架协议
  8. Unity Timeline从入门到精通(三):轨道详述
  9. 贝塞尔公式为什么分母是n-1
  10. python爬取网页内容_你以为Python爬虫只能爬取网页数据吗?APP也是可以的呢!