MySQL数据库--基础

 一.数据库分类:

数据:存放各种数据的仓库

1.关系型数据库:MySQL,Oracle,SQL  Server系列...

2.非关系型数据库:redis,mongodb....

关系型数据库特征点:所有的数据都是以的形式来存储的

===>关系型数据库存储数据的方式(形式):表

二.什么是数据库技术(数据库技术所研究的问题)

1.科学的组织和存储数据

2.高效的获取和处理数据

数据库存储的基本对象:数据

三.SQL语言

SQL:结构化查询语言,专为关系型数据库而建立的操作语言

小技巧:SQL语言是有通用的原则,只要接触到的数据库属于关系型数据库,这些语法结构是可以直接拿来使用的

在使用SQL语言时,只需要发出"做什么"的命令,具体"怎么做"使用者不需要参与

四.关系型数据库典型代表之一-----MySQL数据库

为什么许多中小型企业会把MySQL数据库作为网站开发的首选数据库?

MySQL数据库特征:

1.开源免费:开放源代码,可以供开发根据实际项目需求做出修改

2.体积小:MySQL的安装与使用不会消耗太多系统资源

3.成本低:毕竟是免费的,所以技术支持相对来说比较便宜

4.速度快:对于数据的运行和处理速度也是比较可观的

5.可移植性(跨平台的):可以在多个操作系统中来使用

6.MySQL数据库技术也可以和开发技术相结合,提供开发人员所需要的大多数功能(了解)

五.MySQL数据库的安装

安装成之后的验证:连接mysql数据库

六.MySQL数据库的连接使用

连接使用方式一:使用mysql自带的命令行工具

MySQL5.6 Command Line  Client

连接使用方式二:找到了第三方软件---->Navicat工具:连接mysql数据库

打开连接之后,如果能看到mysql自带的四个系统库,就代表着Navicat已成功连接本地安装的MySQL数据库

七.MySQL数据库的创建与删除

1.创建数据库

语法:create   database   数据库名字;

2.库创建完成之后,也可以进行查看

查看现有数据库的语法:show   databases;

3navicat的编写

4.MySQL数据库中的注释--->只是起到解释说明的作用,不参与执行

单行注释:  --  单行注释的内容

多行注释:  /*多行注释的内容*/

5.删除数据库

语法:drop   database   数据库名字;

八.表的创建与使用

数据库创建完成,就可以向库中存储数据,但是,数据的存储,在mysql中也是有自己的组织方式:表,所以在存数据之前,把库中对应的表先创建出来。

结构:数据库----->生成表---->存数据

表:由行和列组成

1.创建表语法结构

create   table    表名(列名1   数据类型,列2   数据类型,列名3   数据类型,列名n   数据类型);

注意:最后一个列是不加逗号,所有的标点符号都是英文版的

2.MySQL常见的数据类型

2.1数值型

2.1.1整数:默认的是int,微整型tinyint,小整型smallint,大整型bigint

2.1.2小数:被称为浮点数,默认的是decimal(总位数,小数位数)

例:价格    decimal(5,2)       234.99

2.2字符串类型

2.2.1char(字符长度)     例:姓名   char(10)     名字值长度不能超过10个字符

2.2.2varchar(字符长度)   例:籍贯  varchar(4)    籍贯值长度不能超过4个字符

区别:char(长度),属于定长字符串操作,给定的长度空间会被占满,即使有空余,也会被系统补上空格进行填充。

例:name   char(10) ---->tom--->只占了3个长度空间的字符,剩下7个长度空间未被利用,这时候系统不会做释放,会填充空格把剩余的空间给占用。

varchar(长度),属于变长字符串操作,长度占用是以实际的值来决定,未占用的空间,会被系统释放出来。

例:name   varchar(10)---->tom--->占了3个字符,剩下7个字符长度空间未被利用,这个时候系统会把未占用的空间给释放出来做其它的事情。

2.3日期时间类型

data   数据

date   日期

MySQL默认的是datetime,'yyyy-mm-dd hh:mm:ss'

date  年月日     time  时分秒   year  年

3.创建表的操作

需求:创建一个数据库:teststudent,在该库下方创建一张student表

姓名  字符串类型7;年龄  整数类型;入学日期  日期事件类型;

籍贯和性别 字符串类型10

方式一:通过语句,先来进行数据库的切换工作

切换数据库:use    数据库的名字;

例:切换teststudent库:use   teststudent;

创建表完成之后,也可以查看表结构:Navicat中,选中建立的表:

方式二:直接在某个库的结构中,选择"查询"--->右键--->"新建查询"

需求:建立一个教师表,教师编号 字符串类型10;姓名  字符串类型6;年龄 整型;薪资  小数类型(7,2)  籍贯  字符串类型8

create  table  教师表(教师编号  varchar(10),教师姓名  varchar(6),年龄   int,薪资  decimal(7,2),籍贯  char(8));

九.表的删除

语法格式:drop   table   表名;

删除多张表:drop   table  表名1,表名2....;

十.修改表结构    alter  table系列语句

1.添加列

alter  table  表名   add    列名   数据类型;

2.删除表中的列

alter   table   表名  drop    列名;

3.修改列的数据类型

alter   table  表名  modify   列名   新的数据类型;

4.修改列名(也可以修改数据类型)

alter  table   表名  change   原列名   新列名   数据类型;

-- 给student表添加学号 字符串类型10

alter  table  student   add   学号   varchar(10);

alter   table  student  drop  籍贯;

-- 把student表中学号的数据类型类型改为int

alter  table  student  modify   学号   int;

-- 把student表中姓名的长度改为15

alter  table  student  modify  姓名  varchar(15);

-- 把student表中的入学日期 改成  毕业日

alter  table  student  change  入学日期  毕业日期   datetime;

5.显示表结构

语法:desc   表名;

-- 查看student表结构

desc   student;

desc  教师表;

十一.在MySQL中一些话语的描述

表:关系

例:一张表,也可以被称为一个关系

表名:关系名

表中的:又被称为属性,字段

列名:属性名,字段名

表中的:又被称为元组,记录

例:一个元组,一条记录,指的就是表中的一行数据

表中单元格里面填充的值,被称为属性值,字段值

b.针对已经存在的表,来关联主键约束

格式一:

alter  table   表名   add   constraint    约束的名字   primary key(列名);

格式二:

alter  table   表名   add   primary  key(列名);

格式三:

alter   table   表名  modify   列名   数据类型  primary  key;

-- 切换数据库

use   teststudent;

alter  table  student  add  constraint  PK_S学号  primary key(学号);

alter  table  教师表  modify  教师编号  varchar(10)  primary  key;

c.删除主键约束

alter  table   表名  drop   primary  key;

-- 删除教师表中教师编号的主键约束

alter  table  教师表  drop  primary key;

2.联合主键

需求:选课表(学号,课程号,成绩),学号和课程号都得保证唯一,不重复,不为空

思想:指的是把表中的两个列,看成是一个整体,让该整体遵循主键约束的规则

a.创建表的同时创建联合主键

格式二:

create   table   表名(

列名1   数据类型,

列名2   数据类型,

列名3   数据类型,

primary  key(列名1,列名2)

);

格式三:

create   table   表名(

列名1  数据类型,

列名2  数据类型,

列名3  数据类型,

constraint   约束名字   primary  key(列名1,列名2)

);

b.针对已经存在的表来创建联合主键

格式一:

alter  table   表名   add   constraint    约束名字   primary key(列名1,列名2);

格式二:

alter  table   表名   add   primary  key(列名1,列名2);

注意:一个表中不管是单列的主键约束,还是两个列的联合主键,有且也只能有一个,它俩是互斥的

-- 切换到db02库中

use  db02;

-- 创建一个选课表(学号,课程号,设置成联合主键,成绩)

create   table  选课表(学号  varchar(10),课程号  varchar(10),成绩  int,primary key(学号,课程号));

-- 注意:一个表中不管是单列的主键约束,还是两个列的联合主键,有且也只能有一个,它俩是互斥的

-- 删除学生表中的学号主键约束

alter  table  学生表  drop  primary  key;

-- 把学生表中学号和手机号设置为联合主键

alter  table  学生表  add  primary key(学号,手机号);

-- 删除学号和手机号联合主键

alter  table  学生表  drop  primary  key;

3.唯一约束   unique

思想:一旦把表中的列关联上(设置为)唯一约束,要求该列的值一定是不重复,但是可以为空;一个表中可以设置多个唯一约束;唯一约束的名字如果没有指定,默认是和列名保持一致;唯一约束一旦创建成功,系统会自动给有唯一约束的列捆绑上一个索引。

表中的索引:等同于书本中的目录,方便快速查找需要的数据,加快数据查询.

a.创建表的同时,创建(关联)唯一约束

格式一:

create  table   表名(

列名1   数据类型    unique,

列名2   数据类型    unique,

列名3   数据类型

);

格式二:

create  table  表名(

列名1   数据类型,

列名2   数据类型,

列名3   数据类型,

constraint    唯一约束的名字   unique(列名1),

constraint    唯一约束的名字2   unique(列名2)

);

意:唯一约束的名字:如果需求给了名字,直接照搬;名字自定义,建议写法:UN_列名    见名知意

b.针对已经存在的表,来添加唯一约束

格式:alter  table  表名  add  unique(列名);

c.删除唯一约束

格式:alter   table  表名  drop  index   唯一约束的名字;

--  创建一个商品表(商品编号 唯一约束,名称,价格  唯一约束)

create   table  商品表(

商品编号  varchar(10)  unique,

名称   varchar(10),

价格   int   unique

);

-- 创建一个订单表(订单编号  主键约束,订单名称,收获地址,手机号,唯一约束)

create   table  订单表(

订单编号  varchar(15)  primary  key,

订单名称  varchar(10),

收货地址  varchar(20),

手机号   varchar(11),

constraint  UN_收货地址  unique(收货地址),

constraint  UN_手机号   unique(手机号)

);

--  给订单表中订单名称设置一个唯一约束

alter  table  订单表  add  unique(订单名称);

-- 删除订单表中收货地址的唯一约束

alter  table  订单表  drop  index  UN_收货地址;

-- 删除订单表中订单名称的唯一约束

alter  table  订单表  drop  index 订单名称;

Ⅱ.域完整性约束

基本思想:确保在表中不会输入无效的值

1.默认约束   default

思想:一旦表中的列设置为默认约束,就代表着该列是要给出一个默认值,当用户不添加数据时,默认值自动填充。一个表中可以有多个默认约束。

a.创建表的同时,创建默认约束

create   table   表名(

列名1   数据类型     default   '值',

列名2   数据类型     default   值,

列名3   数据类型

);

注意:default后面默认的值,如果是字符串类型,或者日期时间类型的值,需要用单引号包裹起来,如果是数值型的值,直接写即可。

b.针对已经存在的表,来关联默认约束

格式:alter  table   表名  modify   列名    数据类型   default   '值';

c.删除默认约束

格式:alter   table  表名  modify   列名   数据类型;

-- 给学生表中性别添加默认约束 默认:男

alter  table  学生表  modify  性别  char(2)   default  '男';

-- 给学生表中年龄也添加一个默认约束   默认:20

alter  table   学生表   modify   年龄  int  default  20;

-- 删除学生表中年龄的默认约束

alter  table  学生表  modify  年龄  int;

2.非空约束   not  null

思想:保证列中的值不能有空的;一个表中可以有多个非空约束

a.创建表的同时,创建非空约束

create  table  表名(

列名1   数据类型   not  null,

列名2   数据类型   not  null,

列名3   数据类型

);

b.针对已经存在的表,来关联非空约束

格式:alter  table  表名   modify   列名   数据类型   not   null;

c.删除非空约束

格式:alter  table  表名   modify   列名   数据类型;

-- 创建一个会员表(会员编号  主键约束,姓名 不能为空,性别,手机号  不能为空)

create  table  会员表(

会员编号  varchar(10)  primary  key,

姓名   varchar(10)  not  null,

性别   varchar(2),

手机号  varchar(11)  not  null

);

-- 把会员表的性别设置为非空约束

alter  table  会员表  modify  性别  varchar(2)  not  null;

-- 删除会员表中手机号的非空约束

alter  table  会员表  modify  手机号  varchar(11);

创建一张表tempStudent,包括sno,sname,sdept,sage四列,为sno添加主键、sname唯一、sdept默认”软件测试”,sage非空约束

1.创建表的同时,创建外键约束

create   table  主表(

列名1   数据类型    primary key,

列名2   数据类型

);

create   table   从表(

列名1   数据类型,

列名2   数据类型,

列名3   数据类型,

constraint    外键约束的名字     foreign  key(从表列名1)    references    主表(主表列名1)

);

注意:外键约束的名字:如果需求给了,直接照搬;名字自定义,建议写法:

FK_列名    见名知意

2.针对已经存在的表,来关联外键约束

格式:alter   table   从表    add   constraint   外键约束的名字   foreign  key(从表列名)    references    主表(主表列名);

3.删除外键约束

格式:alter   table  表名   drop  foreign  key   外键约束的名字;

/*课程表(Course)

列名 说明 数据类型 约束

Cno 课程号 字符串,长度为10 主码

Cname 课程名 字符串,长度为20 非空

Credit 学分 小整型 非空

Category 课程性质 字符串,长度为10 默认值“必修”,非空*/

create  table  course(

cno  varchar(10)  primary key,

cname   varchar(20)  not  null,

credit   smallint  not  null,

category   varchar(10)  default  '必修'  not  null

);

/*授课表(TC)           参照引用   教师表和课程表

列名 说明 数据类型 约束

Tno 教师号 字符串,长度为7 参照教师表Tno

Cno 课程号 字符串,长度为10 参照课程表Cno

Hours 授课时 小整型 默认是4*/

create   table   tc(

tno   varchar(7),

cno   varchar(10),

hours  smallint  default  4,

constraint  FK_tno  foreign  key(tno)   references  teacher(tno),

constraint  FK_cno  foreign  key(cno)   references  course(cno)

);

-- 给学生表的学号添加一个主键约束

alter  table  学生表  add  primary key(学号);

-- 设置成绩表学号的外键约束,参照引用学生表的学号

alter  table  成绩表   add  constraint  FK_学号   foreign  key(学号)  references  学生表(学号)

-- 删除tc表中课程号外键约束

alter  table  tc  drop  foreign  key  FK_cno;

===========================================================

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值