精华内容
下载资源
问答
  • |MYSQL数据库学习目标:掌握MYSQL基本知识学习数据库管理和操作掌握数据库设计方法熟练运用SQL编程语言基本概念MYSQL数据库是关系型数据库。关系型:使用一个关系,来表示实体信息和实体之间的联系。关系:就是二维...

    |

    MYSQL数据库

    学习目标:

    掌握MYSQL基本知识

    学习数据库管理和操作

    掌握数据库设计方法

    熟练运用SQL编程语言

    基本概念

    MYSQL数据库是关系型数据库。关系型:使用一个关系,来表示实体信息和实体之间的联系。

    关系:就是二维表,有行有列的表格。

    学生实体信息表

    学号

    姓名

    性别

    地区

    班级名称

    ITCAST-001

    河北

    PHP0311

    ITCAST-75

    湖南

    JAVA0325

    ITCAST-123

    广西

    IOS0218

    ITCAST-156

    天津

    NULL

    班级实体信息表

    班级名称

    上课教室

    PHP0311

    103

    JAVA0325

    210

    IOS0218

    108

    这两张表通过班级名称关联起来。

    关系型数据库:就是由二维表及其之间的联系组成的数据组织。

    同一个表中数据结构完全一致。

    数据是由记录组成

    记录是由字段组成。

    SQL:结构化查询语言

    专门用于处理关系型数据库编程语言。

    PHP也是编程语言

    变量,流程控制,函数

    数据库服务器的结构

    DBS = DBMS + DB

    数据库系统 = 数据库管理系统 + 数据库(数据)

    命令行客户端

    数据在服务器上是如何存储的?

    操作服务器

    通过服务管理来操作服务器

    开始->运行->services.msc

    3306是MYSQL服务程序的默认端口号

    可以用netstat –an命令查看服务是否启动

    命令行命令控制服务器的启动和关闭

    Net start mysql

    Net stop mysql

    错误原因:没有权限

    解决办法:用管理员方式启动命令行窗口

    C/S, client / server客户端/服务器方式访问数据库

    命令行客户端工具

    流程:

    连接和认证,提供4个参数,分别是主机地址,端口号,用户名,密码

    向MYSQL数据库服务器发送SQL

    MYSQL服务器接收并执行SQL,并且把结果返回给客户端

    客户端对结果进行显示

    断开服务器连接。Exit, quit, \q

    2,3,4这几步可以循环执行

    知识:

    非关系型数据库,NOSQL,not only sql

    不仅仅是SQL

    代表:redis, mongodb

    数据存储有点象数组,key/value

    SQL语言

    存储数据:

    首先建立数据库

    之后建立数据表(字段定义)

    操作数据

    数据有哪些操作

    CURD

    CREATE UPDATE READ DELETE(DROP)

    库操作,database

    查看数据库,show

    格式:show databases like ‘条件字符串’

    还可以使用条件进行查询

    通配符:% _

    % 可以匹配任意长度的字符串,包括空字符串。

    下划线可以匹配任意一个字符,不包括空字符串

    数据库名命名规则:可以使用字母,下划线,数字

    注意:

    尽量不要使用系统保留字做为数据库、表、字段的名称

    尽量全使用小写字母,原因是象linux系统是区分大小写,如果库名比较长,建议采用下划线连接,不要使用驼峰法。如:不建议userInro 建议使用user_info

    匹配5 个字符的库名

    查看数据库创建资料

    格式:show create database if exists 数据库名;

    创建数据库,create

    简单方式

    格式:create database 库名;

    如果没有指定数据库的字符集,则使用数据库安装时的默认字符集。

    有四个级别的字符集:

    服务器级

    数据库级

    数据表级

    字段级(字符串类的字段)

    数据库服务器在安装时会要求指定默认字符集

    并不是说数据库只支持这一种字符集!

    容错方式创建数据库

    库名的包裹方法

    就是用反引号把系统保留做库名的名称包裹起来

    当然库名表名字段不是保留字最好也加上反引号。

    MYSQL里是UTF8,不是UTF-8

    修改数据库,alter

    格式:alter database 数据库名 选项

    我们都有什么选项:字符集和校对规则

    每创建一个数据库都会有一个db.opt文件

    删除数据库,drop

    格式:drop database if exists 库名;

    如果删除数据库,则数据库所有数据及文件全部都没了!

    表操作,table

    创建表,create

    格式:create table 表名 (字段定义) 表选项

    为什么报错?

    原因是我们没确定在哪个数据库里创建表。

    解决方法:

    使用use 库名;指定默认数据库

    另外一种可以在创建时参数里写成 itcast.student_info

    查看数据表,show

    查看数据库里有哪些表

    格式:show tables;

    也支持条件查询

    查看表的创建信息

    Show create table 表名;

    查看表结构,desc, describe

    格式:desc 表名;

    格式:show columns from 库名.表名;

    修改表,alter

    格式

    展开全文
  • 资料收集于网络 如有侵权请联系网站 删除 谢谢 MySQL数据库入门课程教学大纲 一课程的性质与目标 MySQL数据库入门 是面向计算机相关专业的一门专业基础课 涉及数据 库基础知识 MySQL数据库的安装和配置数据库和表的...
  • MySQL数据库入门课程教学大纲 一课程的性质与目标 MySQL 数据库入门 是面向计算机相关专业的一门专业基础课 涉及数 据库基础知识 MySQL 数据库的安装和配置数据库和表的操作事务管理 存储过程管理视图管理数据库的...
  • 教学 MySQL数据库入门课程教学大纲 一课程的性质与目标 MySQL数据库入门是面向计算机相关专业的一门专业基础课涉及数据库基础知识MySQL数据库的安装和配置数据库和表的操作事务管理存储过程管理视图管理数据库的高级...
  • 数据库入门基础教程

    2013-03-14 09:03:17
    数据库基础教学
  • 大纲 MySQL数据库入门课程教学大纲 一课程的性质与目标 MySQL数据库入门是面向计算机相关专业的一门专业基础课涉及数据库基础知识MySQL数据库的安装和配置数据库和表的操作事务管理存储过程管理视图管理数据库的高级...
  • MySQL数据库入门

    2019-07-29 19:43:54
    数据库概述 数据库是存储电子文件的处所,本质是一个文件系统,我们可以使用命令(SQL)对文件中的数据进行新增、查询...sqlserver:windows里面,政府网站asp.net,并且大学教学通常都是采用SQLServer,图形化工...

    数据库概述

    数据库是存储电子文件的处所,本质是一个文件系统,我们可以使用命令(SQL)对文件中的数据进行新增、查询、更新、删除等操作。
    作用是存储数据,带有访问权限限制不同的用户使用不同的操作。

    MySQL的SQL语句:

    SQL:Struct Query Language 结构化查询语言
    DDL(数据定义语言):定义数据库,数据表它们的结构:create(创建)、drop(删除)、alter(修改)
    DML(数据操纵语言):主要是用来操作数据 insert(插入)、update(修改)、delete(删除)
    DCL(数据控制语言):定义访问权限,取消访问权限,安全设置 grant
    DQL(数据查询语言):select(查询)、form子句、where子句

    数据库的CRUD操作

    创建数据库

    create database 数据库的名字;
    ---创建数据库的时候,指定字符集
    create database 数据库的名字 character set utf8;
    ---创建数据库的时候,指定字符集和校对规则
    create database 数据库的名字 character set utf8 collate 校对规则;
    create database yunyu character set utf8 collate utf8_bin;
    

    查看数据库

    ---查看数据库d定义的语句
    show create database 数据库的名字;
    ---查看所以数据库
    show databases;
    

    修改数据库

    ---修改数据库的字符集
    alter database 数据库的名字 character set 字符集;
    

    删除数据库

    drop database  数据库的名字;
    

    其他数据库操作命令

    --切换数据库(选中数据库)
    use 数据库的名字;
    --查看当前正在使用的数据库
    select database();
    

    创建表

    create table 表名(
    	列名 列的类型(长度) 约束,
    	列名2 列的类型(长度) 约束
    );
    列的类型:
    	int
    	char 固定长度   ----长度代表的是字符的个数
    	varchar 可变长度
    	double
    	float
    	boolean
    	date : YYYY-MM-DD
    	time : hh:mm:ss
    	datetime : YYYY-MM-DD hh:mm:ss  默认是null
    	timestamp : YYYY-MM-DD hh:mm:ss 默认是当前时间
    	text : 主要是用来存放文本
    	blob : 存放的是二进制
    列的约束:
    	主键约束:primary key
    	唯一约束:unique
    	非空约束:not null
    	外键约束: foreign key
    自动增长 : auto_increment
    
    --外键约束
    alter table product add foreign key(cno)  references  category(cid);
    --主键约束: 默认就是不能为空, 唯一
    	--外键都是指向另外一张表的主键
    	--主键一张表只能有一个
    
    --唯一约束:  列面的内容, 必须是唯一, 不能出现重复情况, 为空
    	--唯一约束不可以作为其它表的外键
    	--可以有多个唯一约束
    

    查看表

    --查看所有表
    show tables;
    --查看表的创建过程
    show create table 表名;
    --查看表结构
    desc 表名;
    

    修改表

    --添加列(add)
    alter table 表名 add 列名 列类型 列的约束
    --修改列(modify)
    alter table 表名 modify 字段名 列的类型(长度)
    --修改列名(change)
    alter table 表名 change 旧列名 新列名 新列类型(长度) 新列的约束
    --删除列(drop)
    alter table 表名 drop 列名;
    --修改表名(rename)
    rename table 原表名 to 新表名;
    --修改表的字符集
    alter table 表名 character set utf8;
    

    删除表

    drop table 表名;
    

    SQL完成对表中数据的CRUD的操作

    插入数据

    insert into 表名(列名1,列名2,列名3...) values(1,2,3...);
    --简单写法,如果插入的是全列名的数据,表名后面的列名可以省略
    --如果插入的是部分列的数据,列名不能省略
    insert into 表名 values (1,2,3...);
    --批量插入
    insert into 表名 values(1,2,3...),(1,2,3...),(1,2,3...)...;
    

    命令行下插入中文问题:

    临时解决方案
    set names utf8; 相当于告诉MySQL服务器,当前命令行下输入的内容是utf8编码
    永久解决方法:
    暂停mysql的服务
    在mysql安装路径下找到my.ini的配置文件,修改
    default-character-set=utf8
    重新启动mysql服务

    删除记录

    delete from 表名 [where 条件]; -- 不指定条件,会将表中数据一条一条全部删除
    --delete删除数据和truncate 删除数据的区别
    /*
    delete : DML 一条一条删除表中数据
    truncate : DDL 先删除表在重新建表
    	效率高低,得看数据量
    	数据量少:delete
    	数据量大:truncate 比较高效
    */
    

    更新表记录

    update 表名 set 列名=列的值,列名2=列的值 [where 条件];
    

    查询记录

    select [distict][*][列名1,列名2] from 表名 [where 条件]
    distinct : 去除重复数据
    --简单查询
    --查询所有记录:
    	select * from product;
    --查询指定字段的数据
    	select pname,price from product;
    --别名查询 as 关键字 该关键字是可以省略的
    	--表别名
    	select p.pname,p.price from product as p;
    	--列别名
    	select pname as 商品名称,price as 商品价格 from product;
    	--省略as关键字
    	select pname 商品名称,price 商品价格 from product;
    --去掉重复的值
    	select distinct price from product;	
    --select 运算查询
    	select *,price*1.5 as 涨后价格 from product;
    --条件查询[where关键字]
    	--指定条件,确定要操作的记录
    	select * from product where price >60;
    	--where 后的条件写法
    		--关系运算符: > 、>=、 < 、<= 、= 、!= 、<>
    			<> : 不等于 标准SQL语法
    			!= : 不等于 非标准SQL语法
    		--逻辑运算: and , or ,not
    		select * from product where price > 10 and price < 100;
    		between ... and ...
    		select * from product where price between 10 and 100;
    		--like : 模糊查询
    			_ : 代表的是一个字符
    			% : 代表的是多个字符
    			--查询名称带AMD的记录
    			select * from product where like pname like '%AMD%';
    			--查询第二个字带'好'的所有记录
    			select * from product where like pname like '_好%';
    		--in 在某个范围内取值
    		select * from product where cno in (1,4,5);
    	--排序查询 order by 关键字
    		asc : ascend 升序 (默认的排序方式)
    		desc : descend 降序
    	select * from product order by price ;--默认升序
    	select * from product order by price desc;	--降序
    --聚合函数
    	sum() : 求和
    	avg() : 求平均值
    	count() : 统计数量
    	max() : 最大值
    	min() :	最小值
    	select sum(price) from product;
    	select avg(price) from product;
    	-- where条件后面不能接聚合函数
    --分组:group by
    	1.根据cno字段分组,分组统计商品个数
    	select cno,count(*) from product group by cno;
    	2.根据cno字段分组,分组统计每组商品的平均价格,并且商品的平均价格大于60
    	select cno,avg(price) from product group by cno having avg(price)>60;
    	--having 关键字 可以接聚合函数 出现在分组之后
    	--where 关键字 不可以接聚合函数,出现在分组之前
    --编写顺序:
    SELECT .. FROM .. WHERE .. GROUP BY .. HAVING .. ORDER BY	
    --执行顺序:
    FROM .. WHERE .. GROUP BY .. HAVING .. SELECT .. ORDER BY
    

    多表查询

    笛卡尔积

    --笛卡尔积 ,查出来是两张表的乘积 ,查出来的结果没有意义
    SELECT * FROM product,category;
    

    内连接查询

    -- 隐式内链接
      SELECT * FROM product p,category c WHERE p.cno=c.cid;
    -- 显示内链接
      SELECT * FROM product p INNER JOIN category c ON p.cno=c.cid;	
    -- 区别:
    	--隐式内链接: 在查询出结果的基础上去做的WHERE条件过滤
    	--显示内链接: 带着条件去查询结果, 执行效率要高
    

    外连接

    --左外连接
      --左外连接,会将左表中的所有数据都查询出来, 如果右表中没有对应的数据,用NULL代替
    	SELECT * FROM product p LEFT OUTER JOIN category c ON p.cno=c.cid;
    --右外连接: 会将右表所有数据都查询出来, 如果左表没有对应数据的话, 用NULL代替
    	SELECT * FROM product p RIGHT OUTER JOIN category c ON p.cno=c.cid;
    

    子查询

    -- 单行子查询(> < >= <= = <>)
    	-- 查询出高于10号部门的平均工资的员工信息
    	SELECT * FROM emp WHERE sal > (SELECT AVG(sal) FROM emp WHERE deptno = 10);
    -- 多行子查询(in  not in any all)    >any  >all
    	-- 查询出比10号部门任何员工薪资高的员工信息
    	SELECT * FROM emp WHERE sal > (SELECT MAX(sal) FROM emp WHERE deptno = 10);
    	-- 查询出比10号部门任意一个员工薪资高的所有员工信息 : 只要比其中随便一个工资都可以
    	SELECT * FROM emp WHERE sal >ANY(SELECT sal FROM emp WHERE deptno = 10) AND deptno != 10;
    -- 多列子查询(实际使用较少)   in
    	-- 和10号部门同名同工作的员工信息
    	SELECT * FROM emp WHERE (ename,job) IN (SELECT ename,job FROM emp WHERE deptno=10) AND deptno !=10;
    -- Select后面接子查询
    	-- 获取员工的名字和部门的名字
    	SELECT ename,(SELECT dname FROM dept d WHERE d.deptno = e.deptno ) 部门名称 FROM emp e ;
    -- from后面接子查询
    	-- 查询emp表中所有管理层的信息
    	SELECT * FROM emp e,(SELECT DISTINCT mgr FROM emp) mgrtable WHERE e.empno = mgrtable.mgr;
    -- where 接子查询
    	-- 薪资高于10号部门平均工资的所有员工信息
    	SELECT * FROM emp WHERE sal > (SELECT AVG(sal) FROM emp WHERE deptno=10);
    -- having后面接子查询
    	-- 有哪些部门的平均工资高于30号部门的平均工资
    	SELECT deptno, AVG(sal) FROM emp GROUP BY deptno HAVING AVG(sal) > (SELECT AVG(sal) FROM emp WHERE deptno=30);
    -- 列出达拉斯加工作的人中,比纽约平均工资高的人
    	SELECT * FROM emp WHERE deptno = ( SELECT deptno FROM dept WHERE loc ='DALLAS')
          AND 
          sal > (SELECT AVG(sal) FROM emp WHERE deptno = (SELECT deptno FROM dept WHERE loc ='NEW YORK'));
    
    展开全文
  • sql数据库入门PPT

    2018-05-31 12:57:43
    sqlserver的简单入门教程ppt,非常适合对初学者的教学
  • PowerDesigned 入门教学,项目数据库设计标准

    项目数据库设计标准步骤

    一、数据需求分析

    • Creates a new model
      在这里插入图片描述
      在这里插入图片描述
    • 建好以后是这样的
      在这里插入图片描述
    • 然后我们来建立实体,选择右边的 Entity,直接在屏幕上点就可以,\color{red}鼠标右键取消
      在这里插入图片描述
    • 这里,我们建立5个实体
      在这里插入图片描述

    这里我们随便建几个实体,大家跟我一起建就 ok

    • 双击进行编辑

      • 先设置 General

        • Name 写中文
        • Code 写英文
        • Comment 是描述
          在这里插入图片描述
      • 然后设置属性

        • 简单说一下,第三个参数就是数据类型,我们选 Variable char 就好,就相当于 MySQL 中的 varchar 类型

        这里,如果大家对 MySQL 有啥不懂的,可以看我的 MySQL 教程

        • \color{red}注意:后面的 P 代表主键,M 代表是否可以为空,D代表是否显示(下面的D都是有勾选的),我们将编号设为主键,且三个属性都不可为空
          在这里插入图片描述
      • 其余几个类似,这里我就不一一介绍了,我直接贴图就好了

      • 学校实体
        在这里插入图片描述在这里插入图片描述

      • 院系实体
        在这里插入图片描述
        在这里插入图片描述

      • 专业实体
        在这里插入图片描述在这里插入图片描述

      • 实验室成员实体
        在这里插入图片描述
        在这里插入图片描述

      • 最后,我们就建立了如下几个实例
        在这里插入图片描述

    二、确定实体关系 CDM (ER模型设计、逻辑模型设计)

    • 实体已经建立好,我们就要确定它们之间的关系

    • 我们拿用户和学校来举例,其他类似

      • 确定 1-1 1-N N-N
        • 一个用户只能对应一个学校,一个学校可以有多个用户,那么他们是 many-one的关系
      • 强制关系和非强制关系
        • 强制与非强制就是说,一个学校必须有用户,这就是强制关系;反之,为非强制关系,这里,学院和用户之间、用户和学校之间就都是强制关系了(难不成还有没学生的学校?😕)
    • 既然已经确定好关系,我们就在软件中实现

      • 首先点击右边的这个
        -在这里插入图片描述

      • 然后点击用户拖到学校即可,效果如下
        在这里插入图片描述

      • 然后我们双击线段,进行修改即可,Mandatory 就是表示强制关系,设置完点确定即可
        在这里插入图片描述在这里插入图片描述

    • 其他类似,我也就不一一讲解了

    • 最后结果如下
      在这里插入图片描述

    1.\color{red}注意:1. 找直接关系,不能找间接关系
                2.\color{red}2. 设计逻辑模型时,不考虑是什么数据库

    三、物理模型设计(PDM)

    • 接下来我们开始设计物理模型
    • 物理模型其实很简单,通过 CDM 生成即可
      在这里插入图片描述
    • 第一个可以选择我们的数据库类型,下拉可以看到主流的数据库类型都是有的
      在这里插入图片描述
    • 然后在 Detail 中把 Check model取消勾选,点确定就可以生成 PDM 了
      在这里插入图片描述
    • 生成后的 PDM 如下
      在这里插入图片描述

    四、生成数据库

    • 接下来,就可以生成数据库文件了
      在这里插入图片描述

    • 选择存放路径,把 Check model取消勾选,点确定就可以了
      在这里插入图片描述

    • 点击 Edit 就可以查看 sql 代码了
      在这里插入图片描述

    五、建库

    • 然后我们就可以使用我们生成的 sql 文件直接创建数据库了,这里我们使用 Navicat 软件

    • 先新建一个数据库,在新建数据库的时候一定要选择 utf8 编码
      在这里插入图片描述

    • 然后,右键数据库运行 SQL 文件,将我们刚才生成的 sql 文件导入可以
      在这里插入图片描述

    • 导入完成后,关闭可以
      在这里插入图片描述

    • 这时,我们刷新一下,就可以看到建好的数据表了,双击进去即可查看字段名
      在这里插入图片描述

    六、编制《数据库设计报告》

    • 最后,我们再说一下如何利用软件生成数据库设计报告

    • 比如,我们要生成 PDM 的设计报告
      在这里插入图片描述
      在这里插入图片描述

    • 编辑名字,选择语言,最后一个选择 Full 即可,然后点击 OK
      在这里插入图片描述

    • 会出现如下画面
      在这里插入图片描述

    • 这里有两个可以点击,一个是生成 htm 网页文档,一个是生成 rtf 文件,这里,我们生成 rtf 文件,点击一下,修改一下文件名就可以保存了
      在这里插入图片描述

    最后呢,我把我的 CDM 和 PDM 文件链接放在下面,大家有需要可以自行下载

    链接:https://pan.baidu.com/s/1jR99LuKbRoL0YYQe_uwvog
    提取码:v177

    展开全文
  • 分享一套视频教程,关于PostgreSQL数据库入门的视频教程,帮您轻松搞定环境搭建,软件安装的问题,让学习不再止于环境搭建,视频手把手教学,通俗易懂!!
  • 数据库教学

    2014-11-11 15:37:27
    数据库教学入门文档,JAVA和数据库所需要的文档希望对大家有用
  • B站狂神说mysql教学笔记(视频地址) 操作数据库>操作数据库中的表>操作数据库中的数据 1.1、操作数据库 (1)创建数据库[大小写没有影响] CREATE DATABASE [IF NOT EXISTS] westons (2)删除数据库 DROP ...

    一、操作数据库

    B站狂神说mysql教学笔记(视频地址)
    可视化软件我用的是navacat
    操作数据库>操作数据库中的表>操作数据库中的数据

    1.1、操作数据库

    (1)创建数据库[大小写没有影响]

    CREATE DATABASE [IF NOT EXISTS] westons
    

    (2)删除数据库

    DROP DATABASE [IF EXIST] westons
    

    (3)使用数据库

    --tab 键上面,如果你的表名或者字段名是一个特殊字符,就需要带``
    USE `school`
    

    (4)查看数据库

    SHOW DATABASES --查看所有数据库
    

    1.2、数据库的列类型

    数值

    • tinyint 十分小的数据 1个字节 (可以用来设置性别)
    • smallint 较小的数据 2个字节
    • mediumint 中等大小的数据 3个字节
    • int 标准的整数 4个字节
    • bigint 较大的数据 8个字节
    • float 浮点数 4个字节
    • double 浮点数 8个字节
    • decimal 字符串形式的浮点数 用于金融计算等方面

    字符串

    • char 字符串固定大小的 0~255
    • varchar 可变字符串 0~65535
    • tingtext 微型文本 2^8-1
    • text 文本串 2^16-1

    时间日期e

    java.util.Date

    • date YYYY-MM-DD ,日期格式

    • time HH: mm: ss 时间格式

    • date YYYY-MM-DD HH: mm: ss

    • timestamp 时间戳,1970.1.1到现在的毫秒数!

    • year 表示年份

    null

    • 没有值,未知
    • 注意,不要使用NULL进行运算,结果为NULL

    1.3数据库的字段属性

    Unsigned:

    • 无符号的整数
    • 声明了该列不能声明为负数

    zerofill:

    • 0填充的
    • 不足的位数,使用0来填充,int (3), 5–

    自增:(AUTO_INCREMENT)

    • 通常理解为自增,自动在上一条记录的基础上+1(默认)
    • 通常用来设计唯一的主键~ index,必须是整数类型
    • 可以自定义设计主键自增的起始值和步长

    非空 NULL not null

    • 假设设置为not null,如果不给他赋值,就会报错
    • NULL,如果不填写值,默认就是null!

    默认

    • 设置默认的值!
    • sex
      在这里插入图片描述

    拓展

    /*每一个表,都必须在以下五个字段!表示一个记录存在意义!
    
    id	主键
    `version`	乐观键
    is_delete	伪删除
    gmt_create	创建时间
    gmt_updata	修改时间
    */
    

    1.4创建数据库表

    --目标:创建一个school数据库
    --创建学生表(列,字段)使用SQL. 创建
    --学号int登录密码varchar(20)姓名,性别varchar (2) ,出生日期(datatime),家庭住址, email
    --注意点,使用英文(),表的名称和字段尽量使用 `` 括起来
    -- AUTO_ INCREMENT 自增
    --字符事使用单引号括起来!
    --所有的语句后而加,(英文的).,最后一个不用加
    --PRIMARYKEY主键,一般一一个表只有一-个唯一-的主键!
    
    CREATE TABLE `student` (
      `id` int(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
      `name` varchar(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
      `pwd` varchar(20) NOT NULL DEFAULT '1234' COMMENT '密码',
      `sex` varchar(2) NOT NULL DEFAULT '女' COMMENT '性别',
      `birthday` datetime NOT NULL COMMENT '出生日期',
      `address` varchar(100) NOT NULL COMMENT '家庭住址',
      `email` varchar(50) NOT NULL COMMENT '邮箱',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

    格式

    CREATE TABLE [IF NOT EXISTS] '表名'(
    	`字段名` 列类型 [属性] [索引] [注释],
    	`字段名` 列类型 [属性] [索引] [注释],
    	`字段名` 列类型 [属性] [索引] [注释],
    )[表的类型] [字符集设置] [注释]

    常用命令

    show create database school --查看创建数据库的语句
    show create table student  --查看student数据表的定义语句
    desc student--显示表的结构
    

    1.5数据表的类型

    --关于数据库引擎
    /*
    INNODB 默认使用
    MYISAM 早些年使用
    */
    
    MYISAM INNODB
    事务支持 不支持 支持
    数据索引 不支持 支持
    外键约束 不支持 支持
    全文索引 ·支持· 不支持
    表空间的大小 较小 较大,约为MYISAM的两倍

    常规使用操作

    • MYISAM 节约空间,速度较快
    • INNODB 安全性高,支持事物的处理,多表多用户操作

    在物理空间存在的位置

    所有的数据库文件都存在data目录下,本质还是文件的存储!

    MySQL引擎在物理文件上的区别

    • InnoDB在数据库表中只有一个*.ibd文件(表的数据文件)
    • MYISAM对应的文件
      • *.MYD 数据文件(data)
      • *.MYI 索引文件(index)
      • sdi

    设置数据库表的字符集编码

    CHARSE=utf8
    

    不设置的话,会是默认的字符集编码(不支持中文!)

    MySQL的默认编码是Latin1,不支持中文

    在my.ini 中配置默认的编码

    character-set-server=utf8
    

    1.6修改、删除表

    *1)*修改

    -- 修改表名  ALTER TABLE 旧表名 RENAME AS 新表名
    alter table teacher1 rename as teacher
    
    -- 增加表的字段 alter table 表名 add 字段 列类型
    alter table teacher add age int(4)
    desc teacher -- 查看表结构
    
    -- 修改表的字段(重命名,修改约束!)
    -- ALTER TABLE 表名 MODIFY 字段名 列属性[]
    alter table teacher modify age varchar(23) -- 修改约束(无法重命名)
    -- ALTER TABLE 表名 CHANGE 字段名 新字段名 列属性[]
    alter table teacher change age age1 int(2) --  修改字段名、修改约束
    
    -- 删除表的字段 ALTER TABLE 表名 DROP 字段名
    alter table teacher drop age1
    

    *2)*删除

    -- 删除表(如果表存在再删除)
    drop table if exists 表名
    

    所有的创建和删除操作尽量加上判断,以免报错

    注意点

    • `` 使用这个包裹字段名

    • 注释-- /**/

    • sql关键字大小不敏感,建议用小写

    • 所有的符号全部用英文

    二、MySQL数据管理

    2.1、外键(了解即可)

    方式一:再建表的时候,增加约束(麻烦,比较复杂)

    create table `grade`(
    		`gradeid` int(10) not null auto_increment comment '年级id',
    		`gradename` varchar(30) not null comment '年纪姓名',
    		primary key(`gradeid`)
    )engine=innodb default charset=utf8
    
    drop table student
    -- 学生的gradeid 字段要去引用年纪表的 gradeid
    -- 定义外键key
    -- 给这个外键添加约束(执行引用) references 引用
    create table if not exists `learner` (
    		`id` int(4) not null auto_increment comment '学号',
    		`name` varchar(30) not null default '匿名' comment '姓名',
    		`brithday` datetime default null comment '出生日期',
    		`gradeid` int(10) not null comment '学生的年级',
    		`address` varchar(100) default null comment '家庭住址',
    		`email` varchar(50) default null comment '电子邮件',
    		primary key(`id`),
    		key `fk_gradeid` (`gradeid`),
    		constraint `fk_gradeid` foreign key (`gradeid`) references `grade` (`gradeid`)
    )engine=innodb default charset=utf8
    

    删除有外键关系的表时,必须要先删除应用别人的表(从表),再删除被引用的表(主表)

    方式二:创建表成功后,添加外键约束

    create table if not exists `student` (
    		`id` int(4) not null auto_increment comment '学号',
    		`name` varchar(30) not null default '匿名' comment '姓名',
    		`brithday` datetime default null comment '出生日期',
    		`gradeid` int(10) not null comment '学生的年级',
    		`address` varchar(100) default null comment '家庭住址',
    		`email` varchar(50) default null comment '电子邮件',
    		primary key(`id`),
    )engine=innodb default charset=utf8
    -- sql语句没有,就不算结束,可以换行
    alter table `student` add constraint `fk_gradeid` 
    foreign key(`gradeid`) references `grade`(`gradeid`)
    --alter table 表 add constraint 约束名 foreign key(作为外键的列) references 那个表(字段)
    

    方式一、和方式二都是物理外键,数据库级别的外键,不建议使用!(避免数据库过多造成困扰,使用这种物理外键后删表特别麻烦)

    方式三:最佳实现(应用层完成,自己用Java代码写)

    在这里插入图片描述

    • 数据库就是单纯的表,只用来存数据,只有行数据和列字段
    • 使用多张表的数据,想使用外键(程序去实现)

    2.2、DML语言(全部记住)

    • insert
    • update
    • delete

    2.3、添加 insert

    -- 插入语句(添加)
    -- insert into 表名(字段名1,字段名2 ,字段名3) values('值1'),('值2'),('值3')
     insert into `teacher`(`name`) values('陈泽宇')
     
     -- 由于主键自增我们可以省略(如果不写字段,他就会一一匹配)
      insert into `teacher` values('天才')
     -- 一般写插入语句,我们一定要数据和 字段一一对应!
     --插入多个字段
     insert into `teacher`(`name`) values('谭腾达'),('詹志文')
     
     insert into `grade`(`gradename`,`gradeid`) values('张三',1)
      
      --省略多个字段,但是值要一一对应
    insert into `student` values(1,'张三',3,'神州大陆','110')
    

    在这里插入图片描述

    注意事项:

    • 字段和字段之间使用英文逗号隔开
    • 字段是可以省略的,但是后面的值必须要一一对应,不能少
    • 可以同时插入多条数据,values后面的值要用逗号隔开value(),()

    2.4、修改updata

    --修改的语法
    --updata 表名 set 字段名='新值' where 条件
    --updata 表名 set column_name=value where 条件
    -- 修改学员名字,带了简介
    update `student` set `name`='李四' where id=1
    update `studnet` set `name`='王琦' where id=2
    
    -- 不指定条件的情况下,会改动表的所有值,具体入夏图!如果你在公司干了这种事,准备跑路吧!
    update `student` set `name`='李焕英'
    
    --修改多个属性
    --语法: update 表名 set column_name=value,[colnum_name=value...]where 条件
    update `student` set `gradeid`=4,`address`='地球村',`email`='911' where id =1
    

    在这里插入图片描述

    条件:where子句 运算符 id等于某个值,大于某个值,在某个区间内修改…

    操作符会返回布尔值

    操作符 含义 范围 结果
    = 等于 5=6 false
    <> 或 != 不等于 5<>6 true
    > 大于 5>6 false
    < 小于 5<6 true
    >= 大于等于 5>=5 true
    <= 小于等于 5<=4 false
    BETWEEN…and… 在某个范围内 [2,5]
    AND 我和你&& 5>1 and 1>2 false
    OR 我和你|| 5>1 or 1>2 true
    --通过多个条件定位数据,无上限
    update `student` set `gradeid`=6,address='提瓦特大陆' where id=1 and email='911'
    

    注意:

    • column_name 是数据库的列,尽量带上``

    • 条件,筛选的条件,如果没有指定,则会修改所有的列

    • value,是一个具体的值,也可以是一个变量

    • 多个设置的属性之间,使用英文逗号隔开

    2.5删除

    delete命令

    语法: delete from 表名 [where 条件]

    (提一句,真男人玩delete命令从不带where)

    --删除表中所有值
    DELETE FROM `student`
    
    --删除表中指定数据
    DELETE FROM `studnet` whereid=1
    

    TRUNCATE命令

    作用:完全清空一个数据库表,表的结构和索引约束不会变!

    --清空student表
    TRUNCATE `studnet`
    

    DELETE 与 TRUNCATE的区别

    • 相同点:都能删除数据,都不会删除表结构

    • 不同:

      • TRUNCATE 重新设置 自增列 计数器回归零

      • TRUNCATE 不会影响事务

      • (可以这么理解:truncate就是删表之后重建一个没有数据的新表)

      • detele是dml语言,truncate是ddl语言

        insert into `test`(`name`) values('1'),('2'),('3')
        delete from `test`		-- 不影响自增
        truncate table `test` -- 自增会归零
        

        了解即可:DELETE 删除问题,重启数据库后

        • innodb 自增列会从1开始(存在内存中的,断电即失)
        • MyISAM 继续从上一个自增量开始(存在文件中的,不会丢失)

    三、DQL查询语言(最重点)

    3.1DQL

    (Date Query Langyage)

    • 所有的查询操作 Select

    • 查询的简单、复杂的查询它都能做

    • 数据库最核心的语言,最重要的语句!!!!!

    3.2指定查询字段

    创建数据库和表代码

    create database if not exists `school`;
    -- 创建一个school数据库
    use `school`;-- 创建学生表
    drop table if exists `student`;
    create table `student`(
    	`studentno` int(4) not null comment '学号',
        `loginpwd` varchar(20) default null,
        `studentname` varchar(20) default null comment '学生姓名',
        `sex` tinyint(1) default null comment '性别,0或1',
        `gradeid` int(11) default null comment '年级编号',
        `phone` varchar(50) not null comment '联系电话,允许为空',
        `address` varchar(255) not null comment '地址,允许为空',
        `borndate` datetime default null comment '出生时间',
        `email` varchar (50) not null comment '邮箱账号允许为空',
        `identitycard` varchar(18) default null comment '身份证号',
        primary key (`studentno`),
        unique key `identitycard`(`identitycard`),
        key `email` (`email`)
    )engine=myisam default charset=utf8;
    
    FullHousep16开始用到的数据表 2-- 创建年级表
    drop table if exists `grade`;
    create table `grade`(
    	`gradeid` int(11) not null auto_increment comment '年级编号',
      `gradename` varchar(50) not null comment '年级名称',
        primary key (`gradeid`)
    ) engine=innodb auto_increment = 6 default charset = utf8;
    
    -- 创建科目表
    drop table if exists `subject`;
    create table `subject`(
    	`subjectno`int(11) not null auto_increment comment '课程编号',
        `subjectname` varchar(50) default null comment '课程名称',
        `classhour` int(4) default null comment '学时',
        `gradeid` int(4) default null comment '年级编号',
        primary key (`subjectno`)
    )engine = innodb auto_increment = 19 default charset = utf8;
    
    -- 创建成绩表
    drop table if exists `result`;
    create table `result`(
    	`studentno` int(4) not null comment '学号',
        `subjectno` int(4) not null comment '课程编号',
        `examdate` datetime not null comment '考试日期',
        `studentresult` int (4) not null comment '考试成绩',
        key `subjectno` (`subjectno`)
    )engine = innodb default charset = utf8;
    
    insert into `student` (`studentno`,`loginpwd`,`studentname`,`sex`,`gradeid`,`phone`,`address`,`borndate`,`email`,`identitycard`)
    values
    (1000,'123456','张伟',0,2,'13800001234','北京朝阳','1980-1-1','text123@qq.com','123456198001011234'),
    (1001,'123456','赵强',1,3,'13800002222','广东深圳','1990-1-1','text111@qq.com','123456199001011233');
    insert into `result`(`studentno`,`subjectno`,`examdate`,`studentresult`)
    values
    (1000,1,'2013-11-11 16:00:00',85),
    (1000,2,'2013-11-12 16:00:00',70),
    (1000,3,'2013-11-11 09:00:00',68),
    (1000,4,'2013-11-13 16:00:00',98),
    (1000,5,'2013-11-14 16:00:00',58);
    
    insert into `subject`(`subjectno`,`subjectname`,`classhour`,`gradeid`)values
    (1,'高等数学-1',110,1),
    (2,'高等数学-2',110,2),
    (3,'高等数学-3',100,3),
    (4,'高等数学-4',130,4),
    (5,'C语言-1',110,1),
    (6,'C语言-2',110,2),
    (7,'C语言-3',100,3),
    (8,'C语言-4',130,4),
    (9,'Java程序设计-1',110,1),
    (10,'Java程序设计-2',110,2),
    (11,'Java程序设计-3',100,3),
    (12,'Java程序设计-4',130,4),
    (13,'数据库结构-1',110,1),
    (14,'数据库结构-2',110,2),
    (15,'数据库结构-3',100,3),
    (16,'数据库结构-4',130,4),
    (17,'C#基础',130,1);
    

    对该数据库的查询操作

    ——语法:SELECT 字段 … FROM 表

    -- 查询所有的学生   select 字段 from 表
    select * from student 
    
    -- 查询指定字段
    select `StudentNo`,`StudentName` from student
    
    -- 别名,给结果起一个名字   AS   可以给字段起别名,也可以给表起别名
    select `studentNo` as 学号 ,`studentName` as 学生姓名 from student 
    
    -- 函数 concat(a,b)
    select concat('姓名: ',studentName) as 新名字 from student
    

    去重 distinct

    作用:去除SELECT查询出来的结果中重复的数据,重复的数据只显示一条

    -- 查询一下有哪些同学参加了考试,成绩
    select * from result  -- 查询全部的考试成绩
    select `StudentNo` from result  --	查询有哪些同学参加了考试
    select distinct `StudentNo` from result -- 发现重复数据,去重
    

    数据库的列(表达式)

    数据库中的表达式:文本值,列,null,函数,计算表达式,系统变量……

    语法:select 表达式 from 表

    select version()-- 查询系统版本(函数)
    select 100*4-1 as 计算结果 -- 用来计算(表达式)
    select @@auto_increment_increment --  查询自增的步长(变量)
    
    -- 学员成绩成绩 + 1分 查看
    select `StudentNo`,`StudentResult`+1 as '提分后' from result
    

    3.3where条件字

    作用:检索数据中符合条件的值

    搜索的条件由一个或多个表达式组成!结果未布尔值

    逻辑运算符

    运算符 语法 描述
    and && a and b a&&b 逻辑与,两个都为真,结果为真
    or || a or b a||b 逻辑或,其中一个为真,则结果为真
    not ! not a ! a 逻辑非,真为假、假为真

    (尽量使用英文字符)

    -- and &&
    select `studentNo`,`StudentResult` from result where StudentResult<=100 and studentResult>95
    select `studentNo`,`StudentResult` from result where StudentResult<=100 && studentResult>95
    
    -- 模糊查询(区别)
    select studentNo,studentResult from result where studentResult between 95 and 100
    
    -- 查询学号不为1000的学生
    -- !=  not
    select studentNo,studentName from student where studentNo != 1000
    select studentNo,studentName from student where not studentNo = 1000
    

    模糊查询:比较运算符

    运算符 语法 描述
    IS NULL a is null 如果操作符为NULL,结果为真
    IS NOT NULL a is not null 如果操作符不为NULL结果为真
    BETWEEN a beteween b and c 若a在b和c之间,则结果为真
    LIke a like b SQL匹配,如果a匹配b,则结果为真
    In a in (a1,a2,a3……) 假设a在a1,或者a2……其中的某一个值中,结果为真
    -- 查询学号不为1000的学生
    -- !=  not
    select studentNo,studentName from student where studentNo != 1000
    select studentNo,studentName from student where not studentNo = 1000
    
    -- 查询姓赵的同学
    -- like结合  %(代表0到任意个字符)	_(表示一个字符)
    select StudentNO,StudentName from student where studentName like '张%'
    select studentNO,studentName from student where studentName like '赵_'
    -- 查询姓刘的同学,名字后面只有两个字的	:where studentName like '刘__'
    -- 查询名字中有伟字的
    select studentNo,studentName from student where studentName like '%伟%'
    
    -- ====== in(具体的一个或者多个值,不能像like一样使用%)
    -- 查询1000,1001号成员
    select studentNo,studentName from student where studentNo in (1000,1001)
    --查询具体地址的学生
    select studentNo,studentName from student where Address in ('北京朝阳','广东深圳')
    
    -- ======= null    not null=======
    -- 查询地址为空的同学
    select studentNo,studentName from student where address='' or address is null
    --查询出生日期不为空的同学
    select studentNO,studentName from student where borndate is not null
    

    3.4联表查询

    在这里插入图片描述

    在这里插入图片描述

    操作 描述
    Inner join 如果表中至少有一个匹配,就返回行
    left join 如果右表中没有匹配,也会从左表
    right join 会从右表中返回所有的值,即使左表中没有匹配
    展开全文
  • 基础,约束与设计,多表查询与事务操作,非常详细,手把手教学(来自黑马!!)
  • VC 数据库编程教学

    2008-11-29 17:18:32
    vc数据库入门的资料,包括ODBC,oledb,dao,ado等连接数据库的方法和实例。是菜鸟进阶的不错教程。
  • 项目数据库设计标准步骤一、数据需求分析Creates a new model建好以后是这样的然后我们来建立实体,选择右边的 Entity,直接在屏幕上点就可以,$\color{red}鼠标右键取消$这里,我们建立5个实体这里我们随便建几个...
  • Redis全称Remote Dictionary Server(远程字典服务),它由C语言编写,是一个高性能的键值对数据库,由于采用了内存存储数据,读写速度非常快。 主要应用场景 热点数据加速查询,秒杀,即时信息查询,分布式数据共享...
  • 配套教学ppt,教学大纲,教学设计,课后题及答案,源代码等资源。
  • 《MySQL数据库从入门到精通》千锋教育高教产品研发部编著,清华大学出版社出版, 出版时间2018年。文章内容囊括MySQL数据库的...本书既可作为高等院校计算机相关专业的MySQL数据库入门教材,也适合广大编程爱好者...
  • MySQL数据库入门到精通实战教程,本课程使用豆瓣电视剧频道作为教学案例,可以让零基础学员快速的掌握MySQL数据库,顺利进入Java学习通道。同时本课程也是Java初级工程师必备科目。
  • 数据库操作是软件行业人员必备的技能,这门视频教学课程主要是针对从事软件技术的新人的,适合在校大学生、准备转行到IT行业的新人、软件公司新入职员工。这门课程主要涉及Oracle数据库的基础操作和SQL语法,因为绝...
  • 包含了mysql数据库性能的管理以及架构设计,Nginx从入门到实践,以及数据库的优化
  • 本套是MySQL数据库视频教程是动力节点教学总监杜老师讲述,其中详细讲解了MySQL的相关知识,包括MySQL概述,MySQL应用环境,MySQL系统特性,MySQL初学基础,MySQL管理工具,如何安装MySQL及MySQL新特性,通过本套...
  • 易语言入门教学

    2017-10-09 11:43:49
    易语言入门教学( 易语言功能强大实用,现已具有数十个各种应用范围支持库、上百个数据类型和界面组件、近万条支持命令,支持现今所有数据库,功能丝毫不比其它同类产品差。模块化开发支持大型软件项目的分工协作,...
  • C#与数据库相结合教学,欢迎大家下载查询,本书适合C#和.NET初学者、Web开发工程师以及计算机专业的学生阅读。
  • php教程入门教程-数据库教程操作在这个教程中,我们将一步一步地建立一个小的网站,使用了PHP和MySQL的下面特性:1. 查看数据库;2. 编辑数据库的记录;3. 修改数据库的记录;4. 删除数据库的记录。我们将同时学习...
  • 好的入门资源,大家自行下载
  • 第1课 轻松带你走进Oracle数据库的世界 第2课 从最简单的SQL语句开始 第3课 Oracle数据库的安装和配置 第4课 Oracle数据库的参数文件,控制文件,数据文件和日志文件 第5课 Oracle体系架构简述 第6课 Oracle...
  • JDBC入门教学

    2019-07-08 12:17:38
    JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和...
  • 书名:MySQL 5.7从入门到实战(视频教学版)作者:张婷定价:118元印次:1-1ISBN:9787302498506出版日期:2018.06.01印刷日期:2018.05.04一篇 MySQL基础1章 数据库与MySQL 31.1 认识数据库 31.1.1 我们为什么必须...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 639
精华内容 255
热门标签
关键字:

数据库入门教学