一.数据库的基本操作

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

在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. AD rodc扩展报错
  2. 一口气搞懂《虚函数和纯虚函数》
  3. 支付宝app支付对接2(文档和对接注意问题)
  4. wxWidgets:wxFileCtrlEvent类用法
  5. php查询oracle大量数据,Oracle 百万行数据查询优化
  6. python 三维绘图库_Python第三方库matplotlib(2D绘图库)入门与进阶
  7. matlab中创建一个工程,从文件夹创建新工程
  8. java实体序列化_java – 在JPA实体序列化(JSON)上防止JAX-RS中...
  9. mybatis入门基础(五)----动态SQL
  10. python创建自定义函数is_number()来判断一个字符是否是数字
  11. 【Linux】CentOS 7 安装Redis
  12. 发现一款好用的备份新浪博客的工具
  13. 无锡室内设计培训——ps难学吗?
  14. prisma 连接不上Postgres
  15. do还是doing imagine加to_doing与to do的用法
  16. 论剑大数据技术,效率为王!天善智能掘金数据技术沙龙【上海站 12.09】
  17. python写excel文件不覆盖_如何写入现有的Excel文件而不覆盖数据(使用pandas)?...
  18. 【blackduck】 Request failed authorization [HTTP Error]: XXX, response was 403 Forbidden.
  19. springboot 环境配置测试环境和线上环境配置
  20. 基于51单片机的电子时钟设计

热门文章

  1. Windows环境使用CLion进行Android NDK开发配置
  2. attention retain_2014年考研英语二真题及答案(完整版)
  3. 4个公用计算机网络设置路由器,一个带猫的路由和一个四口路由器将四台计算机连接怎样设置...
  4. Linux -- echo
  5. 重装系统后,microsoft下的word,excel之类的软件没有了怎么办?
  6. java 求三角形的内切圆,外接圆
  7. Viewing Information About CDBs PDBs
  8. 京东金融APP-新交互技术“虚拟数字人”赋能世界杯主题营销
  9. 2017白领年终奖调查出炉,程序员扎心了!
  10. 在职老程序员考非全211硕士(计算机专业)经验