1.初始MySQL

搭建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

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
      • 默认字符集:utf8
      • 将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] 数据库名 ;

删除数据库:

DORP  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. 总结

 

发布了65 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/kxindouhao5491/article/details/82826797