网站项目策划书内容模板,物联网开发平台,营销网站的概念,开原铁岭网站建设数据库基本概念
数据库(DataBase)#xff1a;数据库就是存储数据的仓库数据库管理系统(DBMS)#xff1a;可以独立运行的软件#xff0c;维护磁盘上的数据#xff0c;用统一的方式维护不同种类的数据#xff0c;做到通用且高效。常见的DBMS: mysqloracledb2sqlserver 数据…数据库基本概念
数据库(DataBase)数据库就是存储数据的仓库数据库管理系统(DBMS)可以独立运行的软件维护磁盘上的数据用统一的方式维护不同种类的数据做到通用且高效。常见的DBMS: mysqloracledb2sqlserver 数据库实例可以被视为数据库管理系统的一个运行实体。 数据库与表的概念
在DBMS中一个项目中用到的所有数据都可以以一个数据库形式保存在一起。每种不同的数据都是以表的形式保存。 数据库中表的概念
表用来保存数据一张表是由行和列构成列被称为字段保存一组数据中各个属性行被称为记录保存具体的一条信息。
如下是一张用户表
如何操作数据库系统 所有的DBMS都支持一种结构化查询语句进行对应的操作。我们以客户端的角度与DBMS进行连接并发送对应的语句进行操作。 结构化查询语言Structured Query Language简称为SQL SQL是有标准的SQL92已经SQL99所有数据库都支持SQL92标准
数据库连接方式
数据库连接有命令行、图形化界面软件、JDBC连接
命令行形式 图形化界面 使用JDBC连接以及数据库连接池的形式 在集成开发环境中使用(ECLIPSE,IDEA)我们编写的JAVA程序也是通过JDBC连接
SQL
SQL主要分为以下几种类DDL、DML、DQL、TCL、DCL接下来我们会一一的详细介绍这几种语言
DDL DDL语言详细名称为data definition language是数据定义语言用来进行数据库对象操作的。 数据库对象包括不限于数据库表视图索引等 主要需要认识的关键字如下CREATE、ALTER、DROP
操作数据库
查看当前DBMS中已有的数据库SHOW DATABASES
新建一个数据库
-- 基本语法
CREATE DATABASE 数据库名 [charset字符集名称]-- 例子1 创建一个名为mydb的数据库
CREATE DATABASE mydb;-- 例子2 创建数据库时指定字符集
CREATE DATABASE mydb1 CHARSETUTF8;
CREATE DATABASE mydb2 CHARSETGBK;查看数据库信息
-- 语法
SHOW CREATE DATABASE 数据库名-- 例子 查看到曾经创建mydb库时的SQL查看指定的字符集信息。
SHOW CREATE DATABASE mydb删除数据库 删库是一个危险操作需谨慎最好备份skr -- 语法
DROP DATABASE 数据库名-- 例子 删除数据库mydb1
DROP DATABASE mydb1;-- 查询时发现mydb1已经被删除了
SHOW DATABASES;使用数据库(切换到另一个数据库)
要保存数据都是要将数据保存在表中而数据库相当于是表的集合。我们为不同的项目创建不同的数据库在DBMS上要为不同的数据库的表进行操作时要先切换到对应的数据库上再进行相关操作。 语法:
-- 语法
USE 数据库名-- 例子切换到一个名为mydb的数据库上
USE mydb;操作表
查看一个数据库中创建了多少张表
SHOW TABLES创建表
-- 语法
CREATE TABLE 表名(字段名1 类型[(长度)][默认值] [约束],字段名2 ...
)-- 例子 切换到mydb数据库上将userinfo表创建在该库中
USE mydb;-- 创建userinfo表
CREATE TABLE userinfo(id INT primary key, -- 一张表第一个字段通常为ID(主键唯一标识) username VARCHAR(30), -- VARCHAR在数据库中是字符串类型password VARCHAR(30), -- VARCHAR后面指定的长度为最多占用的字节数nickname VARCHAR(30), -- 若使用UTF8编码意味着最多保存10个汉字(每个汉字3字节)age INT(3), -- 在MySQL中整数使用INT类型 注:不同数据库不同sex TINYINT(1) DEFAULT 0 -- 创建TINYINT如果新增值时为空则默认为0
)查看表结构和已创建表的信息
-- 语法 查看表结构
DESC 表名
-- 例子 查看userinfo表的结构
DESC userinfo;-- 语法 查看已创建的表的创建语句
SHOW CREATE TABLE 表名-- 例子 查看创建userinfo表的信息
SHOW CREATE TABLE userinfo;删除表
-- 语法
DROP TABLE 表名-- 例子 删除userinfo表
DROP TABLE userinfo;修改表 修改表名
-- 语法
RENAME TABLE 原表名 TO 新表名-- 例子 将userinfo表改名为user
RENAME TABLE userinfo TO user修改表结构
-- 准备一张表
CREATE TABLE hero(name VARCHAR(30),age INT(3)
)
添加字段
-- 语法
-- 添加新字段到表的第一行
ALTER TABLE 表名 ADD 字段名 类型 FIRST-- 向表的末尾追加一个新的字段
ALTER TABLE 表名 ADD 字段名 类型-- 将新字段添加到表中现有某个字段之后
ALTER TABLE 表名 ADD 字段名 类型 AFTER 表中现有某字段-- ------------------------------------------------- 例子
-- 添加地址字段到hero表第一行
ALTER TABLE hero ADD address varchar(20) FIRST-- 向hero表的末尾追加一个地址字段
ALTER TABLE hero ADD address varchar(20)-- 将新字段地址添加到hero表中name字段之后
ALTER TABLE 表名 ADD address varchar(20) AFTER name删除字段
-- 语法
ALTER TABLE 表名 DROP 字段名-- 例子 删除hero表中地址字段
ALTER TABLE hero DROP address修改字段
-- 语法
ALTER TABLE 表名 CHANGE 原字段名 新字段名 类型-- 例子1 将hero表中的age字段长度改为5
ALTER TABLE hero CHANGE age age INT(5)-- 例子2 将hero表中的age字段类型改为VARCHAR(10)
ALTER TABLE hero CHANGE age age VARCHAR(10) -- 例子3 将hero表中的gender字段改为phonenumber
ALTER TABLE hero CHANGE gender phonenumber INT(11)-- 例子4 将hero表中phonenumber字段添加非空约束
ALTER TABLE hero CHANGE phonenumber phonenumber INT(11) NOT NULL 修改表结构应当在表中还没有数据时进行否则可能出现因修改与表中现有数据冲突导致修改失败
修改字段类型时如果表中该字段原数据类型与新类型不匹配时会导致原数据无法转换为新类型 性别字段原类型VARCHAR记录的值为男或女。现希望将性别字段改为INT型。会发生类型冲突 修改字段长度,长度减少可能导致失败 手机号字段原有长度11位。现在想将其改为5位会因为现有数据该字段值长度都为11不能缩短导致修改失败。 为现有字段添加约束可能导致表中该现有记录该字段值存在不满足约束要求导致修改失败。 性别字段开始没有非空约束表中部分记录该字段值为NULL此时若修改该字段并追加非空约束会导致现有该字段为NULL值的记录不满足该约束导致约束无法修改。
索引操作
创建索引
创建表的同时创建索引.(例如 create table tablename(…,index 索引名 (字段名)))
drop table if exists student;
create table if not exists student
(id bigint auto_increment,first_name varchar(50) not null comment 学生名字,last_name varchar(20) not null comment 学生姓,phone varchar(15) not null comment 手机号,email varchar(50) default comment 邮箱,birthday date comment 出生日期,create_time datetime default current_timestamp comment 注册日期,primary key (id),unique key (phone),index h_index (email)
)engine InnoDB character set utf8mb4;创建表后通过create语句创建索引(例如 create index 索引名 on 表名(字段名))创建表后通过alter语句创建索引(例如 alter table add index 索引名(字段名))
创建普通索引例子
create index index_first_name on student(first_name);
alter table student add index index_last_name (last_name);创建唯一索引例子
create unique index index_first_name on student(first_name);
alter student add unique index index_email (email)创建组合(联合)索引例子
create index index_first_last on student(first_name,last_name);
alter table student add index index_first_last (first_name,last_name);查看索引
-- 语法查看某张表上的索引
show index from 表名删除索引
-- 语法
drop index 索引名 on 表名;
-- 例子 删除student表中的index_first_last索引
drop index index_first_last on student;DML DML语言详细名称为data manipulation language是数据操作语言用来对表中的数据进行操作的。 主要需要认识的关键字如下INSERT、UPDATE、DELETE
-- 准备一张表:
CREATE TABLE person(name VARCHAR(30),age INT(3)
)INSERT 插入数据
-- 语法 注:在语法定义上[]中的内容是可写可不写的。
INSERT INTO 表名 [(字段1,字段2,字段3...)] VALUES (值1,值2,值3...)-- 例子
INSERT INTO person (name,age) VALUES (张三,22);
INSERT INTO person (age,name) VALUES (33,李四);注
在SQL中字符串的字面量使用**单引号(‘’)**括起来。VALUES后面指定的值的类型顺序个数要与前面指定的字段完全一致且一一对应
插入默认值
当插入一条记录时表中某字段没有指定时则是插入该字段的默认值。若该字段没有明确指定过默认值时默认值为NULL。
-- 例如
INSERT INTO person (name) VALUES (王五)
-- 上述SQL中没有指定age字段此时该条记录插入后age使用该字段的默认值NULL。可以在创建表或后期修改表结构时使用DEFAULT关键字为某个字段指定默认值
-- 为person表中的age字段添加默认值:20
ALTER TABLE person CHANGE age age INT(3) DEFAULT 20;-- 在创建表时为字段指定默认值:
CREATE TABLE person(name VARCHAR(30) DEFAULT 无名氏,age INT(3) DEFAULT 20
)修改表为age添加默认值20
-- 此时插入后的赵六记录中age应当已经采取了指定的默认值:20
INSERT INTO person(name) VALUES(赵六);全列插入
在INSERT语句中没有指定字段名时就是全列插入此时需要注意VALUES子句中指定的值的个数顺序类型必须与表中定义时指定的字段一致。
例
INSERT INTO person VALUES(钱七,38)-- 若想使用某个字段的默认值,可以使用DEFAULT关键字表达
INSERT INTO person VALUES(钱七,DEFAULT)-- 若希望插入NULL值可以使用NULL表达
INSERT INTO person VALUES(钱七,NULL)-- 下面是错误的情况:
INSERT INTO person VALUES(钱七) 列的个数不匹配
INSERT INTO person VALUES(22,钱七) 列的类型不匹配查询插入
查询另一张表的数据插入到person表
INSERT INTO person SELECT name,age FROM userUPDATE 修改数据
-- 语法
UPDATE 表名 SET 字段1新值1[,字段2新值2,...] [WHERE 过滤条件]-- 例子 当缺少WHERE子句时数据库会将person表中每条记录的age字段都改为15
UPDATE person SET age15修改指定的记录
仅将满足WHERE条件的记录进行修改。
-- 将张三的年龄修改为22岁
UPDATE person SET age22 WHERE name张三-- 只要满足WHERE条件的记录都会被修改。
UPDATE person
SET age36
WHERE age15WHERE子句常用的条件
,, ,,,(不等于:。实际上!也可以用。)
-- 例子1 将年龄大于35岁的人年龄修改为30
UPDATE person
SET age30
WHERE age35-- 例子2 将person表中每个人的年龄涨一岁
UPDATE person
SET ageage1修改多个字段的值
-- 例子 将李四的名字改为李老四并且年龄改为50
UPDATE person
SET name李老四,age50
WHERE name李四DELETE 删除数据
-- 语法
DELETE FROM 表名 [WHERE 过滤条件]注:DELETE语句中通常都要添加WHERE条件否则是清空表操作!
--例子1 删除李老四
DELETE FROM person
WHERE name李老四-- 例子2 删除年龄大于30的人
DELETE FROM person
WHERE age30清空表操作
DELETE FROM person处理DELETE可以删除表的数据还有一个TRUNCATE也可以清空表但是并不常用如果要使用最好查询这个关键字的用法和使用后果
DQL DQL语言详细名称为data query language是数据查询语言用来查询表中数据的。 主要需要认识的关键字如下SELECT
-- 基本语法
SELECT 字段1, 字段2
FROM 表名
WHERE 条件表达式;-- 例子 查询person表中年龄为16的数据且只展示name、sex、age字段
SELECT name, sex, age
FROM person
WHERE age 16;本章只是做介绍所以并不会深入讲解DQL的其他关键字例如DISTINCT、GROUP BY、HAVING、ORDER BY、LIMIT
TCL TCL语言详细名称为transaction control lauguage是事务控制语言用来保证一些列数据库操作具有原子性隔离性一致性持久性 主要需要认识的关键字如下COMMIT、ROLLBACK 事务需要在对数据库有一定了解后再去深入了解。
DCL DCL语言详细名称为data control language数据控制语言进行数据库管理操作的比如用户创建权限分配等是DBA经常使用的操作DCL通常是用来确保使用合适的权限控制来保护数据库的安全性 主要需要认识的关键字如下GRANT、REVOKE
授予用户权限
-- 语法
GRANT 权限 ON 数据库名[.表名] TO 用户名主机名;其中权限可以有ALL PRIVILEGES 或具体的权限如 SELECT, INSERT, UPDATE 等
-- 例子
GRANT SELECT,INSERT ON mydatabase.mytable TO pplocalhost;撤销用户权限
-- 语法
REVOKE 权限 ON 数据库名[.表名] TO 用户名主机名;其中权限可以有ALL PRIVILEGES 或具体的权限如 SELECT, INSERT, UPDATE 等
-- 例子
REVOKE SELECT,INSERT ON mydatabase.mytable TO pplocalhost;