数据库的概念
-
什么是数据库?
用户储存数据,访问数据,操作数据的一种存储数据仓库,用户的各种数据被有组织的存放在数据库中。
-
什么是关心性数据库
MySQL,Oracle,SQLServers关系型数据库
-
特点:
-
存储方式
采用表格的方式来存储数据,以行、列来存储,方便定位和查找
-
存储结构
按结构化的方式啦存储,例如:每个数据必须要有对应的字段,数据存入时要现有表再有字段,再有数据类型。一定是限定结构,再存储。
-
查询方式
采用结构化的查询(SQL语句),该查询标准适用于目前市面上所有主流的关系型数据库。
-
-
-
NoSQL数据库
- Redis
- MongoDB
数据库的使用
数据库的服务相关
-
数据库的开启与关闭
以管理员身份启动命令行,net start MySQL的服务名称启动服务。
关闭服务:net stop MySQL的服务名称
-
数据库的登录与访问
登录到数据库命令行命令:mysql -hlocalhost -uroot -proot /mysql -h主机地址 -u用户名 -p密码(可在-p后 回车,再输入隐藏密码)前缀出现MySQL时登录成功
退出:exit或quit
数据库的访问与管理
数据库的命令
-
查看当前MySQL服务器上的所有数据库:show databases
-
创建数据库:create database; 数据库名称
-
修改数据库
alter database 数据库名称 character set 字符集名称(一般使用utf8)
-
显示所有系统变量:show variables; 查看特定的系统变量 show variable like ‘查看的变量’
-
查看数据库的脚本:show create database 数据库名称;
-
查看正在使用的数据库:select database();
-
使用数据库:use 数据库名称; 主要用来切换数据库。
-
删除数据库:drop database 数据库名称;
****[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RXnjP80Y-1586164152805)(C:\Users\曾振宇\AppData\Roaming\Typora\typora-user-images\image-20200406111628586.png)]
表的创建与管理
常用的数据类型:
- 数值:int\float\double
- 字符型:char(定长)\varchar(变长)
- 日期型:date\datetime\timestamp
建表的语句
- 数据表的每一行成为一条记录(record),每一列成为一个字段(field)
-
创建数据表
-
语法:
create table 表名(
列名称1 数据类型 约束,
列名称2 数据类型 约束,
列名称2 数据类型 约束,
……
}
-
示例
create table employees ( -> empID int primary key , -> ename varchar(50) , -> sex char , -> hiredate date -> );
-
注意:
- 列名之间用都好隔开。
- 创建结束后用;分号结束
-
表的管理
-
查看表结构
- desc 表名
+----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | empID | int(11) | NO | PRI | NULL | | | ename | varchar(50) | YES | | NULL | | | sex | char(1) | YES | | NULL | | | hiredate | date | YES | | NULL | | +----------+-------------+------+-----+---------+-------+
-
查看数据库中所有的表:
show tables;
-
查看表的定义结构\创建语句
show create table 表名;
-
修改表的字符集
语法:alter table 表名 convert to character set 字符集;
-
修改表结构
-
添加列
- alter table 表名 add 列的名称 列的类型 列的约束
-
修改列的数据类型
alter table 表名 modify 列的名称 列的类型 列的约束
-
修改列名
alter table 表名 change 旧的名称 新的名称 新的数据类型
-
重命名
- rename table 旧表名 to 新的表名
-
删除列
- alter table 表名 drop 列名;
-
-
根据数据库中已有的表结构创建新表
- 复制表结构
- create table 新的表名 select * from 表名;
- 复制部分表结构(复制结构和数据不复制约束)
- create table 新的表名 select 列1,列2,…from 被复制的表名;
- 只复制结构不复制数据
- create table 新的表名 select 列1,列2,…from 被复制的表名 where 1=2(有其他条件会复制满足条件的数据例如sex = ‘男’);
- 复制表结构
-
对表中的约束管理
-
主键约束
primary key
-
唯一约束
unique 列的数据不能重复
alter table 表名 add constraint 约束名 unique(字段名);
-
非空约束
not null
-
外键约束
主外键关联:表中的一个非主键是另一个表的主键。有外键约束的字段,不能自己修改只能从其他表的主键中读取。
格式:alter table 从表 constraint 约束名 foreign key (从表列名)references 主表 (主键);
-
基本查询
-
查询语句的语法
select字段1,字段2,字段3,…from 表名 where
-
查询指定的字段数据。
-
查询所有员工的工号和姓名。
SELECT empID , ename FROM employees;
-
查询所有员工信息
SELECT * FROM employees;
-
as指定列的别名
SELECT empID AS 工号,hiredate AS 入职日期 FROM employees; -
排序用法
排序用法:order by 通常用在排序上,一般在查询语句的最后边用来指定排序的字段,后面紧跟排序的字段
示例:
select * from employees order by hiredate;
1、升序 ASC 默认的排序方法 2、降序 DESC
-
like模糊查询,一般针对含有指定关键字来进行查询,主要用在条件表达式后边。
例如:查询所有姓李的员工的信息
select * from employees where ename = ‘张明’;//精确的匹配查询
select * from employees where ename like ‘_李%’// _ 表示单个字符 % 表示无限长度
-
DESC
-
like模糊查询,一般针对含有指定关键字来进行查询,主要用在条件表达式后边。
例如:查询所有姓李的员工的信息
select * from employees where ename = ‘张明’;//精确的匹配查询
select * from employees where ename like ‘_李%’// _ 表示单个字符 % 表示无限长度