搭建Web环境初识JSP

  1. 本课任务
    1. 使用SQL语句创建数据库myschool
    2. 使用SQL语句创建学生表student
    3. 使用SQL语句创建科目表subject
    4. 使用SQL语句创建成绩表result
    5. 使用SQL语句创建/删除年级表grade
    6. 数据库中包含表、关系以及操作对象
  2. 本科目标--学完本门课程后,你能够:
    1. 进行复杂度较高的数据交换业务处理
    2. 灵活操作数据库中的数据
    3. 掌握数据库设计技能
  3. 本章目标
    1. 了解数据库的相关知识
    2. 掌握MySQL在Windows系统中的安装方法
    3. 学会使用SQLyog数据库管理工具
    4. 掌握MySQL命令行操作数据库常用命令
    5.  了解SQL的相关概念
    6. 掌握创建库的SQL语句
    7. 掌握创建数据表以及数据字段的类型和属性
    8. 掌握修改表的SQL语句

 

  1. 为何需要数据库

存储数据的方法

      • 第一种方法:用大脑来记住数据
      • 第二种方法:写在纸上
      • 第三种方法:写在计算机的内存中
      • 第四种方法:写成磁盘文件
      • ……
  1. 数据库能够做些什么?
    1. 存储大量数据,方便检索和访问
    2. 保持数据信心的一致、完整
    3. 共享和安全
    4. 通过组合分析,产生新的有用的信息
  2. 数据库和应用程序
    1. 应用程序
      • 作用:响应操作并显示结果,向数据库请求数据
      • 要求:美观、操作简单方便
    2. 数据库
      • 作用:储存数据、检索数据、生成新的数据
      • 要求:统一、安全、性能等
  3. 时下流行的数据库
    1. Oracle
    2. MySql
    3. Sqlyog
    4. PlSql
    5. 。。。。

Oracle公司的产品

产品免费、服务收费

    1. SQL Server

针对不同的用户群体的多个版本

易用性好

    1. MySQL

开放源代码

网站应用广泛

  1. 数据库的基本概念
    1. 数据库就是“数据”的“仓库”
    2. 数据库中包含表、关系以及操作对象
    3. 数据存放在表中
    4. 列--字段
        行--记录

 

  1. MySQL简介

MySQL的优势

DNMS: database management syste

  •         运行速度快
    • 适用用户广
    • 可移植性强
    • 使用成本低

  1. MySQL的运行机制

支持接口:

标准C的API、JDBC、CDBC、.NET、PHP、Python、Perl、Ruby、Cobol

 

  1. MySQL的配置
    1. 使用配置向导配置
      • 端口号:3306
      • 默认字符集:utf-8
      • 将bin目录写入
      •  环境变量
      • root密码设置
      • utf8:一种Unicode编码,解决国际上字符不统一的多字节编码,通用性强

 

  1. MySQL安装目录

主要文件夹

bin

include

lib

share

my.ini:记录MySQL配置信息,可修改配置内容,如端口号,字符集等

 

  1. 命令行连接MySQL---net start mysql
    1. 检查是否启动服务
    2. 启动方式
      • 属性窗口
      • DOS命令

如果修改了配置文件,必须重启MySQL服务才能生效

 

  1. 命令行连接MySQL

语法:

mysql -h服务器主机地址-u 用户名 -p密码

示例:

mysql -u root -proot

mysql -u root -p

  1. DOS下运行
  2. MySQL Command Line Client

默认root登录,仅输入密码

 

  1.  连接数据库:  -------标准格式
  1. . mysql  -hlocalhost  -uroot  -pkgc
  2. show  databases;
  3. use **(表示数据库);
  4. show tables;
  5. 如何通过命令更改用户(root)信息:

use mysql;

 

select * form user\G

 

update user set password=password(新密码)

where user=’root’;

 

flush privileges;

  1. exit;  退出
  2. ?寻求帮助

 

  1. 结构化查询语言

 

SQL(Structured Query Language):结构化查询语言

名称

解释

命令举例

DML(数据库操作语言)

用来操作数据库中所包含的数据

INSERT--插入

UPDATE--更新

DELETE--删除

DDL(数据定义语言)

用于创建和删除数据库对象等操作

CREATE--创建

DROP--终止

ALTER--改变

DQL(数据查询语言)

用来对数据库中的数据进行查询

SELECT--挑选、选择

DCL(数据控制语言)

用来控制数据库组建的存取许可、存取权限等

GRANT--同意、许可

COMMIT--承诺、交托给

ROLLBACK--反转、回降

 

create  drop  alter  insert  update  delete  select  grant  commit  rollback

创建   删除  修改  增加  修改    删除   查询   同意  承诺     反转、回降

 

  1.  命令行操作数据库:

创建数据库:

CREATE  DATABASE  [IF NOT EXISTS] 数据库名 ;

删除数据库:

DROP  DATABASE  [IF EXISTS] 数据库名 ;

查看数据库:  

SHOW DATABASES;

使用数据库:

USE 数据库名;

对比工具操作数据库:

建库;

学习方法:

  1. 对照SQLyog工具自动生成的语句学习
  2. 固定语法中的单词需要记忆
  1. SQL中的运算符3-1
    1. 算术运算符
      • 一种符号,它是用来进行列间或者变量之间的比较和数学运算
      • 包括算术运算符、赋值运算符、比较运算符、逻辑运算符

运算符

说明

+

加运算,求两个数或表达式相加的和,如6+8

-

减运算,求两个数或表达式相减的差

*

乘运算,求两个数或表达式相乘的积

/

除运算,求两个数或表达式相除的商,如5/3的值为1

%

取模运算,求两个数或表达式相除的余数,如:5%3的值为2

 

    1. SQL中的运算符3-2
      • 赋值运算符

运算符

说明

=

把一个数或变量或表达式赋值给另一变量,如:Name='王华'

 

      • 逻辑运算符

运算符

说明

AND

当且仅当两个布尔表达式都为true时,返回TRUE

OR

当且仅当两个布尔表达式都为false,返回FALSE

NOT

布尔表达式的值取反 

      • 比较运算符

运算符

说明

=

等于,例如:age=23

>

大于,例如:price>100

<

小于

<>

不等于

>=

大于等于

<=

小于等于

!=

不等于(非SQL-92标准 )

 

  1. 系统数据库和用户数据库

 

  1. 创建数据库

语法:

CREATE DATABASE 数据库名;

示例;

CREATE DATABASE myschool;   ----分号是结束符,不可缺

  1. 查看数据库列表

语法:

SHOW databases;

  1. 选择数据库

数据:

USE 数据库名

示例:

USE mybase;

USE myschool;

  1. 删除数据库

语法:

DROP DATABASE 数据库名;

示例:

DROP DATABASE myschool;

  1. SQLyog管理工具

SQLyog-----图形的MySQL管理工具

免费

简洁高效

功能强大

 

  1. MySQL数据类型——数值类型2-1

 

  1. MySQL数据类型——数值类型

数据字段属性:

UNSIGNED

无符号的

 声明该数列不允许负数

ZEROFILL

0填充的

不足位数的用0来填充,如int(3).5则为005

AUTO_INCREMENT

自动增长的。每添加一条数据,自动在上一记录数上加1

通常用于设置主键,且为整数类型

可定义起始值和步长

示例:

#创建学生表

CREATE TABLE `student`(

    `studentNo` INT(4)  PRIMARY KEY,

     ` name` CHAR(10),

     ……);

 

 

  1.  数据字段属性2-2:

NULL值:

理解为“没有值”或者“未知值”;

不要用NULL进行算术运算,否则结果仍为NULL。

如何选择数值类型:

  1. 整数和浮点
  2. 日期类型
  3. char和varchar

 

  1.  例题:

#查看数据库库的定义

SHOW CREATE DATABASE school;

#查看数据表的定义

SHOW CREATE TABLE student;

#显示表结构

DESC student;

 

#创建一个测试表

CREATE TABLE test(

col  INT(4) (ZEROFILL ) NOT NULL

)

 

#设置严格检查模式

SET sql_mode='strict_trans_tables';

 

#自增列:默认初始值为1,步长4

#能否改变自增列的初始值?改为100

方法一:#只是影响当前表

CREATE TABLE tab1(

id INT(4) PRIMARY KEY AUTO_INCREMENT,

`name` VARCHAR(20) NOT NULL

)AUTO_INCREMENT =100;

 

#能否改变自增列的步长? 5

方法二:#影响所有使用的自增列表

#同一个列可以被多个属性来修饰,但是要注意属性顺序

SET @@auto_increment_increment=5;

 

 

注释:给字段注释---comment

 给表注释------comment=

#查看mysql所支持的引擎类型(表类型)

SHOW ENGINES;

#查看默认引擎

SHOW VARIABLES LIKE 'storage_engine';

 

  1. MySQL数据类型——字符串、日期类型

字符串类型

说明

长度

CHAR[(M)]

固定长度字符串

M字节

VARCHAR[(M)]

可变长度字符串

可变长度

TINYTEXT

微型文本串

0~28–1字节

TEXT

文本串

0~216–1字节

 

日期类型

格式

取值范围

DATE

YYYY-MM-DD,日期格式

1000-01-01~ 9999-12-31

DATETIME

YY-MM-DD  hh:mm:ss:

1000-01-01 00:00:00 ~9999-12-31 23:59:59

TIMESTAMP

YYYYMMDDHHMMSS

1970年某时刻~2038年某时刻,精度为1秒

YEAR

YYYY格式的年份

1901~2155

TIME

hh:mm:ss:

-835:59:59 ~ 838:59:59

 

  1. 创建表---属于DDL的一种   `

语法:

CREATE  TABLE  [IF NOT EXISTS]  表名 (

    字段名1 数据/列类型 [字段属性|约束][索引][注释]  ,

      ……

     字段名n   数据/列类型 [字段属性|约束][索引][注释]  --最后一个没有  ,

) [表类型][表字符集][注释];

 

1.多段字使用逗号分隔

2.保留字用撇号括起来

3.单行注释: #......

4.多行注释: /*...*/

5.  `反引号:可选、区别于单引号,作用是区分MySQL保留字与普通字符。

 列类型:

规定数据库中该列存放的数据类型;

分为:

  1. 数值类型
  2. 字符串类型
  3. 日期和时间型数值类型
  4. NULL值
  1. 数值类型:----取值范围不同,存储字节不同

tinyint 非常小的数据

smallint 较小的数据

mediumint 中等大小的数据

int ()bigint 标准整数

 

float 单精度浮点数

double 双精度浮点数

decimal 字符串形式的浮点数

 

 

字符串类型:

char[(M)] 固定长字符串,检索快但费时间

barchar[(M)] 可变字符串

tinytext 微型文本串

text 文本串

 

日期和时间型数值类型:

DATA YYYY-MM-DD

TIME Hh:mm:ss

DATETIME YY-MM-DD hh:mm:ss

TIMESTAMP YYYYMMDDhhmmss

YEAR YYYY

 

  1. 数据表的类型:

MySQL的数据表的类型:

MyISAM,InnoDB,HEAP,BOB,CSV等

常见的MyISAM与InnoDB类型

名称

MyISAM

InnoDB

事务处理

不支持

支持

数据行锁定

不支持

支持

外键约束

不支持

支持

全文索引

支持

不支持

表空间大小

较小

较大、约2倍

 

适用场合:

使用MyIASM:节约空间及相应速度较快;    ------------------查

使用InnoDB:安全性,可以用于事务处理及多用户操作数据表。----增删改

 

  1. 数据表的存储位置

MySQL数据表以文件方式存放在磁盘中

  1. 包括表文件、数据文件以及数据库的选项文件
  2. 位置:MySQL安装目录\data下存放数据表。目录名对应数据库名,该目录下文件名对应数据表。

注意:

InnoDB类型数据表只有一个*.frm文件,以及上一级目录的ibdata1文件

MySQL类型数据表对应三个文件:

*.frm  --- 表结构定义文件

*.MYD ---数据文件

*.MYI ----索引文件

 

示例:

#设置库的字符

CREATE DATABASE `school`

/*

!40100 default character set utf8

#设置表的字符集

engine=innoDB auto_increment=3 default charset=utf8

 

#设置字段/这一列的字符集

create table a(

address char(5) character set sbk

)

*/

 

  1. 字段的约束及属性3-1

名称

关键字

说明

非空约束

NOT NULL

字段不允许为空

默认约束

DEFAULT

赋予某字段默认值

唯一约束

UNIQUE KEY(UK)

(unique key)

设置字段的值是唯一的允许为空,但只能有一个空值

主键约束

PRIMARY KEY(PK)

(primary key)

设置该字段为表的主键可唯一标识该表记录

外键约束

FOREIGN KEY(FK)

(foreign key)

用于在两表之间坚力关系,需要指定引用主表的哪一字段

自动增长

AUTO_INCREMENT

(increment)

设置该列为自增字段

默认每条自增1

通常用于设置主键

 

 

  1. 字段的约束及属性3-2

主键:

CREATE TABLE student(

      `studentNo` INT(4)  PRIMARY KEY,

      ……);

 

给加注释:

CREATE TABLE test (

    `id`  int(11)  UNSIGNED  COMMENT‘编号’

)COMMENT='测试表’ ;

 

设置字符集编码:

CREATE TABLE [IF NOT EXISTS] 表名(

     #省略代码

CHARSET = 字符集名;

 

  1. 设置外键联系:

ALTER  TABLE  `student`  ADD CONSTRAINT  fk_student_grade

FOREIGN KEY(`gradeId`)

REFERENCES `grade`(`gradeId`);

grade表里面的主键gradeid,拿来放在student表里面当作外键!

 

  1. 字段的约束及属性3-3

在myschool数据库中创建学生表

           

  1. 字段的约束及属性

示例:

CREATE TABLE `student`(

    `studentNo` INT(4) NOT NULL COMMENT '学号' PRIMARY KEY,

`loginPwd` VARCHAR(20) NOT NULL COMMENT '密码',  

`studentName` VARCHAR(50) NOT NULL COMMENT '学生姓名',

`sex` CHAR(2) DEFAULT '男' NOT NULL  COMMENT '性别',

`gradeId` INT(4)  UNSIGNED COMMENT '年级编号',

`phone` VARCHAR(50)  COMMENT '联系电话',

`address` VARCHAR(255)  DEFAULT '地址不详'COMMENT '地址', `bornDate` DATETIME  COMMENT '出生时间',

`email` VARCHAR(50) COMMENT'邮件账号',

 ` identityCard ` VARCHAR(18)  UNIQUE KEY COMMENT '身份证号'

) COMMENT='学生表';

 

  1. 查看表

查看表是否存在:--先使用数据库,才能查看表~

示例:

USE myschool;

SHOW tables;

查看表定义:

语法:

DESCRIBE 表名;

或者

DESC 表名;

示例:

USE myschool;

DESCRIBE student;

避免DOS窗口乱码,可执行SET NAMES gbk;

 

  1. 删除表

语法:

DROP TABLE [IF EXISTS] 表名;

示例:

USE myschool;

DROP TABLE IF EXISTS student;

在删除表之前,先使用IF EXISTS语句验证表是否存在

 

  1. 修改表2-1

语法:

#修改表名

ALTER TABLE 旧表名 RENAME [TO]  AS 新表名;

#添加字段  

ALTER TABLE 表名 ADD 字段名  数据类型  [属性];

#修改字段

 ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型 [属性];

#删除字段

ALTER TABLE 表名 DROP 字段名;

#删除数据表

DROP  TABLE  [IF  EXISTS]  表名

 

  1. IF EXISTS为可选,判断是否存在该数据表
  2. 如删除不存在的数据表会抛出错误

 

示例:

#重命名表school

ALTER TABLE tab RENAME AS table;

#为表添加列

ALTER TABLE table ADD address VARCHAR(100) DEFAULT '中国北京';

#修改字段

ALTER TABLE table1 MODIFY address VARCHAR(500) DEFAULT '中国北京朝阳区';

ALTER TABLE table1 CHANGE 旧地址 新地址 VARCHAR(100) DEFAULT '中国北京朝阳区';

#删除字段

ALTER TABLE table1 DROP 地址;

#删除数据表

DROP TABLE IF exist tab1;

 

  1. 修改表2-2

示例:

DROP TABLE IF EXISTS `demo01`;

#创建表

CREATE TABLE  `demo01`(

   `id` INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,

   `name` VARCHAR(8) NOT NULL

);

#修改表名

ALTER TABLE `demo01` RENAME `demo02`;

#添加字段

ALTER TABLE ` demo02 ` ADD `password` VARCHAR(32) NOT NULL;

#修改字段

ALTER TABLE ` demo02 ` CHANGE `name` `username`CHAR(10) NOT NULL;

#删除字段

ALTER TABLE ` demo02 ` DROP `password`;

 

 

  1. 小结

阅读以下代码,哪些SQL语句可以实现修改表?

1)ALTER TABLE mybook RENAME book;-----------------修改表名

2)ALTER TABLE book ADD author  varchar(10) NOT NULL;---------添加字段

3)ALTER TABLE `book` ADD   `pk_book`  PRIMARY KEY `book`(`bookId`);--缺少约束词

4)ALTER TABLE `book` DROP ·author `;------------删除字段

 

  1. MySQL系统帮助

语法:

 HELP 查询内容;

示例:

HELP contents;

HELP Data Types;

HELP INT;

 

  1. 总结

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐