目录
数据库概述
优点:
1.数据库可以实现数据持久化到本地(持久保存)
2.数据库使用完整的管理系统统一管理,可以实现结构化查询,方便管理;(方便存储和管理)
DB(数据库):数据存储的容器,用来保存一系列有组织的数据
SQL语言(结构化查询语言):将数据库按照特定规则存储,使用SQL语言对数据进行管理(创建表结构,增删改查)
DBMS(数据库管理系统):数据库软件或数据库产品,用于创建或管理DB
数据库分类:
关系型数据库:mysql,sqlserve,orace db2
非关系型数据库:redis缓存
MySQL数据库
单行注释:#;--
多行注释:/* */
MySQL的安装
MySQL不支持修改数据库名称
不区分大小写,建议关键字大写
表与表之间的关联关系:关系数据库管理系统
SQL--DDL(结构定义)
创建数据库,创建表
CREATE dATABASE SCHOOLDB//创建表
CREATE table student (num INT,
sname Varchar(5),
gender char (1),
birthday date,
phone varchar (11),
address varchar (50),
height double(3,2),
reg_time datetime)
行 列:
一行就是一条记录
一列就是一个信息
创建表:
存储什么信息--表名
表中存储哪些信息--列名
列的数据类型:
字符型
char 定长的 例如定义长度为5,如果只存储了2个字符,也是会补全到5个长度字符
varchar 变长的 例如定义长度为5,如果只存储了2个字符,实际就只占两个字符
日期型
date 年月日(日期)
datetime 年月日时分秒(时间)
数值型
浮点
float
double 常用的 精度高
整数
TINYINT 1
SMALLINT 2
MEDIUMINT 3
int 4
bigint 8
text文本类型 ,可以存储更多的字符
TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT
逐行删除数据:DROP DATABASE +表名
删除表结构:DROP TABLE STH
清空整个表数据,是DDL级别的
DELETE FROM player WHERE num=1
表名 想删除的行
主键约束:主键列不能为空,不能重复,MySQL还支持主键列自动增长.主键约束,表中必须有一列的值,能够唯一表示一条记录,主键列在一张表中只能有一个
(列名)INT PRIMARY KEY AUTO_INCREMENT
CREATE TABLE basketballteam(
num INT PRIMARY KEY AUTO_INCREMENT ,
sname VARCHAR(5) NOT NULL,
address VARCHAR (50) NOT NULL)
CREATE DATABASE SCHOOLDB
CREATE TABLE student (num INT,
sname VARCHAR(5),
gender CHAR (1),
birthday DATE,
phone VARCHAR (11),
address VARCHAR (50),
height DOUBLE(3,2),
reg_time DATETIME)
SQL--DML(数据操作)
insert(插入数据),delete(删除数据),update(修改数据)
CREATE DATABASE scoredb
CREATE TABLE student (
num CHAR(1),
sname VARCHAR (5)NOT NULL,
ssubject VARCHAR(5)NOT NULL,
score CHAR(3))
INSERT INTO student(num,sname,ssubject,score)
VALUES('1','张三','语文','70'),
('1','张三','数学','80'),
('1','张三','英语','66'),
('2','李四','语文','50'),
('2','李四','数学','75'),
('2','李四','英语','80'),
('3','王五','语文','77'),
('3','王五','数学','55'),
('3','王五','英语','88'),
('3','王五','物理','90')
SQL--DQL(基础查询)
特点:
查询列表可以是:表中的文字段,常量,表达式,函数
查询的结果:虚拟的表格
小例:
1.创建一个NBA管理系统数据库
2.根据图中所给的信息创建球员信息表和球队信息表
3.使用insert into语句向球员表和球队表插入数据
使用update语句更新球员和球队表信息
使用delete语句删除球员和球队表信息
CREATE TABLE basketballteam(
num INT PRIMARY KEY AUTO_INCREMENT ,
sname VARCHAR(5) NOT NULL,
address VARCHAR (50) NOT NULL)
INSERT INTO basketballteam (sname,address)
VALUES('湖人','洛杉矶'),
('火箭','休斯顿'),
('凯尔特人','波士顿'),
('骑士','克利夫兰'),
('马刺','圣安东尼奥'),
('魔术','奥兰多')
CREATE TABLE player(
num INT PRIMARY KEY AUTO_INCREMENT,
pname VARCHAR (10)NOT NULL,
birthday DATE,
height INT ,
weight INT ,
address VARCHAR (20)
)
INSERT INTO player (pname,birthday,height,weight,address)
VALUES('怀德恩-韦德','1982-1-17','193','96','null'),
('勒布朗-詹姆斯','1984-12-30','203','113','前锋'),
('科比-布莱恩特','1978-8-23','198','99','后卫'),
('德克-诺维斯基','1978-6-19','213','111','null'),
('克里斯-保罗','1985-5-6','182','79','后卫'),
('托尼-帕克','1982-5-17','187','83','后卫'),
('凯文-加内特','1981-7-14','212','113','null'),
('保罗-皮尔斯','1977-10-13','200','106','前锋'),
('迈克尔-乔丹','1963-2-17','198','98','前锋'),
('德怀特-霍华德','1985-12-8','210','120','中锋'),
('姚明','1980-9-12','229','140','中锋'),
('沙奎尔-奥尼尔','1972-3-6','215','147','中锋')
UPDATE player SET address='其他位置'WHERE num=1
UPDATE player SET address='其他位置'WHERE num=4
UPDATE player SET address='其他位置'WHERE num=7
DELETE FROM player WHERE num=1
SELECT *FROM player
SELECT *FROM player WHERE height>200
SELECT * FROM basketballteam
SELECT * FROM basketballteam WHERE num=2