数据库相关

什么是数据库?
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,
每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
RDBMS即关系数据库管理系统(Relational Database Management System)的特点:
1.数据以表格的形式出现
2.每行为各种记录名称
3.每列为记录名称所对应的数据域
4.许多的行和列组成一张表单
5.若干的表单组成database


RDBMS 术语
在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语:
 数据库: 数据库是一些关联表的集合。
 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
 冗余:存储两倍数据,冗余可以使系统速度更快。
 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
 外键:外键用于关联两个表。
 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。


 
常用数据库软件
Oracle 甲骨文
SqlServer 微软
DB2    IBM
MySQL 甲骨文 中小型
SQLite、FireBird 小型


非关系型数据库:
Radis
MongoDB....






Mysql数据库
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
Mysql是开源的,所以你不需要支付额外的费用。
Mysql支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
MySQL使用标准的SQL数据语言形式。
Mysql可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
Mysql对PHP有很好的支持,PHP是目前最流行的Web开发语言。
MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。
Mysql是可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。


SQL(Structured Query Language)结构化查询语言。是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。


在cmd中输入此命令进行数据库操作
mysql -u root -p




常用数据库命令:
1.查询所有数据库
SHOW DATABASES;
show databases;


2.创建数据库
CREATE  DATABASE  [IF NOT EXISTS] db_name
eg: CREATE  DATABASE  db604;
create  database  if not exists db106



创建数据库时指定字符集
 CHARACTER SET charset_name? 
 COLLATE collation_name 
 
CHARACTER SET:指定数据库采用的字符集
COLLATE:指定数据库字符集的比较方式(校对规则)
eg:
->CREATE DATABASE IF NOT EXISTS db604
    -> character set utf8
    -> collate utf8_general_ci;


3.显示数据库创建语句【查看数据库字符集】
SHOW CREATE DATABASE db_name;
eg: show create database db604;


4.删除数据库
DROP DATABASE  [IF EXISTS]  db_name 
eg: drop database db604;




表命令:
 切换使用的数据库
 USE db_name;
eg:use db604;


1.查看所有表table
SHOW TABLES;


2.创建表
CREATE TABLE 【if not exists】 table_name
(
field1  datatype,
field2  datatype,
field3  datatype
);


char() 固定长度
varchar() 可变长度


field:字段名     datatype:字段类型
eg: create table user(id int,name varchar(10),age int);


3.查看表结构
SHOW create table 表名     --->查看创建表语句
DESC table_name;           ---->查看表结构 
eg: desc user;   description


4.删除表
DROP TABLE table_name;
eg:drop table user;


5.修改表
Alter table 表名  add|drop|modify|change  column 列名、类型等信息


添加字段(添加列)
mysql> alter table user add column sex varchar(5);


删除列
mysql> alter table user drop column age;


修改字段类型
mysql> alter table user modify column sex char(8);


修改字段名称
change column 原来的列名 新的名称 类型
mysql> alter table user change column sex gender varchar(10);


修改表名
mysql> alter table user rename to student;
mysql> rename table user to student;








数据库操作语句(增删改数据)
1.插入数据
INSERT INTO table_name (列名) VALUES (值);
insert into   
[如果不写列名,values后面必须给表中的所有列赋值,并且和列一一对应]
eg: insert into user(id,name,age) values(1,'zhangsan',20);
insert into user values(1,'zhangsan','男',20);

2.修改数据
UPDATE table_name  SET col_name1 = 值 ,col_name2 = 值2
[WHERE where_definition]
eg:update user set name ='zhaoliu' ;


3.删除数据
delete from table_name
[WHERE where_definition]
eg: delete from user where id = 1;




查询数据
1.查询所有数据库
SELECT * from table_name;
eg:select * from user;


2.查询指定列数据
SELECT 列名,列名,列名 from table_name;
eg:select id, name from user;


3.查询时指定常量列(别名)
SELECT 列名 as 别名 from table_name;
as 可以不写
eg: mysql> select id, name as 姓名 from user;
mysql> select id, name  姓名 from user;


4.查询时去除重复数据 DISTINCT
eg: select distinct id,name from user;


5.查询时合并
eg: select id,name,age,java+math from user;
select id,name,age,java+math as total from user;


6.按条件查询 WHERE
eg: select * from user where id =2;


a 逻辑条件查询,涉及多个条件 and  &&(与) or(或)
eg: select * from user where id =2 and name = 'lisi';
select * from user where name ='lisi' or age = 22;


b 比较条件查询 > 、 >=  、<  、<=  、=  、<>  , between and(谁和谁之间)
eg: select * from user where id<>2;
eg: select * from user where id>2;
eg: select * from user where id>=2;
eg: select * from user where id between 2 and 5;


c 判断是否为null(null表示没有数据)
mysql> select * from user where age is null;
mysql> select * from user where age is not null;


d 模糊查询 like
%通配符,可以匹配多个字符
_通配符,匹配一个字符
mysql> select * from user where name like 'zhao%';
mysql> select * from user where name like '%s%';
mysql> select * from user where name like 'zhaos_';




7 通过聚合函数查询
a计算表中有多少条数据(行)count
eg: select count(*) from user;
如果某些行对应的列没有数据,不计算到总数里
eg: select count(age) from user;


b求平均值 avg
eg:select avg(age) from user;


c求最大值和最小值
eg: select min(age) from user;
eg: select max(age) from user;


d求和 sum
mysql> select sum(age) from user;


--sum() 该列所有数据总和
--+     该行数据相加的和


8.排序 order by
eg: select * from user order by age;
eg: select * from user where age is not null order by age;


desc表示降序,asc表示升序,默认升序
eg: select * from user where age is not null order by age desc;


可以指定多个排序的字段,例如先按照age排序,相同的age值再使用id排序
eg:select * from user where age is not null order by age,id;
eg:select * from user where age is not null order by age desc,id desc;


9 分组查询 group by
eg: select gender, count(*) from user group by gender;
eg:select gender,count(*) from stu group by gender order by gender desc;


having 对分组后的数据进行筛查
where  放在分组前使用
mysql> select gender,count(*) from user where age is not null group by gender having count(*)>1 order by gender desc;


10 分页查询 limit
Limit 从哪个位置开始查(索引从0开始计数), 查询多少条数据
mysql> select * from user limit 3,3;


表示从0位置开始查询3条数据
mysql> select * from user limit 3;











猜你喜欢

转载自blog.csdn.net/qq_33366098/article/details/80216933