数据库html
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。简而言之,数据库就是存储数据的仓库。mysql
数据的发展sql
人工管理阶段 | 文件管理阶段 | 数据库管理阶段 | |
时间 | 20世纪50年代中期之前 | 20世纪50年代后期至60年代中期 | 60年代后期 |
领域 | 科学计算 | 科学计算、管理 | 大规模数据、分布数据的管理 |
硬件 | 无直接存储设备 | 磁鼓、磁盘 | 大容量磁盘、按需增容磁带机 |
特色 | 数据不保存,数据无共享,数据不具备独立性。 | 可长期保存、具备必定的独立性,文件的形式已经多样化。 | 采用复杂的结构化的数据模型,较高的数据独立性,最低的冗余度,数据控制功能。数据库
|
管理者 | 用户管理 | 文件系统管理 | DBMS管理 |
数据库类型编程
数据库一般分为层次式数据库、网络式数据库和关系式数据库三种。而不一样的数据库是按不一样的数据结构来联系和组织的。而在当今的互联网中,最多见的数据库模型主要是两种,即关系型数据库和非关系型数据库。常见的关系型数据库常见的有:Oracle、DB二、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL、浪潮K-DB 等。网络
数据库之Mysql |
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。数据结构
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不一样的表中,而不是将全部数据放在一个大仓库内,这样就增长了速度并提升了灵活性。编程语言
SQL学习函数
SQL认识性能
结构化查询语言(Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系型数据库;
SQL 是用于访问和处理数据库的标准的计算机语言。
SQL的功能包括查询(Query)、操纵(Manipulation)、定义(Definition)和控制(Control)四个方面。
数据库操做(DDL)语句 |
数据库操做
1.建立数据库 create datebase <数据库名>
create database [if not exists]<数据库名>[character set xxx] (带条件式建立) 2.修改数据库 alter database<数据库名>[character set xxx]
3.查看数据库 show databases; 查看全部数据库 show create database <数据库名>; 查看数据库的建立方式 4.删除数据库 drop database [if exists]<数据库名>; 5.链接数据库 切换数据库 use<数据库名>;
数据库表操做
建立表Student
create table tab_name(
field1 type[完整性约束条件],
field2 type,
...
fieldn type
)[character set xxx];
建立一个学生表 create table student( id TINYINT PRIMARY KEY auto_increment,#PRIMARY KEY为表主键,auto_increment设置自动编号。 name VARCHAR(25), gender boolean, age INT, bumen VARCHAR(20), salary DOUBLE(7,2) )
查看表信息
查看表结构
desc tab_name /show columns from tab_name
mysql> desc student;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | tinyint(4) | NO | PRI | NULL | auto_increment |
| name | varchar(25) | YES | | NULL | |
| gender | tinyint(1) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| bumen | varchar(20) | YES | | NULL | |
| salary | double(7,2) | YES | | NULL | |
| workdate | tinyint(1) | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)
show tables 当前数据库中全部的表
mysql> show tables;
+---------------+
| Tables_in_wjh |
+---------------+
| student |
+---------------+
1 row in set (0.00 sec)
show create table tab_name 查看当前数据库表建表语句
修改表结构
主键设置:
单一主键
CREATE TABLE employee(
id INT primary key, (id为该表的惟一主键)
name varchar(20),
age INT,
)
多主键(多个外键)
CREATE TABLE employee(
id INT,
book_id INT,
name varchar(20),
age INT,
primary kry(id,book_id) #id和book_id为该的主键。
)
表记录操做(DML语句)之增、删除、改、查 |
增长记录
增长一条记录 insert [into] table_name(field1,filed2 ******) values(value1,value2,*****); 增长多条记录 insert [into] table_name values(value1,value2,*****),(value10,value12,*****);
删除记录
delete from table_name [where ....] #where 后面检索出要删除的数据。若是where条件为空,则是删除表中全部记录。 truncate table table_name;使用truncate删除表中记录。与delete删除方式不同,truncate 是直接销毁表,再建立一个新表。
修改记录
update table_name set field1=value1,field2=value2,......[where 语句] #set是要修改的操做,where是检索出要修改的记录。
查询记录
基本查询 select * from table_name;查询表中全部字段和记录。 select (field1,field2,field13,...) from table_name where .......; 若是要查找表中全部记录,字段可用*代替;where查询条件select * from table_name;表示全部记录 select (field1,field2,field13,...) from table_name; 也能够用逗号隔开的字段来选择查询 select distinct field from table_name; 查询不重复的记录 ORDER BY 排序 在不少查询数据库记录需用到排序的用法。 desc和asc是排序关键字,desc是降序、asc是升序排列 ORDER BY 排序,默认是升序 select * from table_name order by (field);一个字段排序。 select * from table_name order by (field1,field2 .....) desc; 多个字段依次排序。 Limit 限制 限制可用到作分页的用法。 select * from table_name order by (field) limit (起始值),(行数); 若是没有设置初值则从第一条数据开始。、 Group by 分组 按分组条件分组后每一组只会显示第一条记录。 select * from table_name group by (field1) 按照字段1分组。 select * from table_name group by (2) 按照第二个字段分组。 聚合函数 sum(求和),count(*)(记录数),max(最大值),min(最小值) having是在分组后进行数据过滤。而where不能在group by后使用。 Regexp正则 select * from table_name where name regexp ‘^ppy’; select * from table_name where name regexp ‘hap$’; select * from table_name where name regexp ‘p{2}$;
外键约束
外键操做
添加外键 alter table <表名> add constraint <外键名> foreign key<字段名> REFERENCES <外表表名><字段名>; 删除外键 alter table <表名> drop foreign key <外键名>; innodb四种用法 1.cascade。从父表中删除或更新对应的行,同时自动的删除或更新子表中匹配的行。 eg 外键的级联删除: FOREIGN KEY (<父表主键>) REFERENCES <子表>(<主键>) ON DELETE CASCADE
2.set null。 从父表中删除或更新对应的行,同时将子表中的外键列设为空。 eg 删除 FOREIGN KEY(<父表主键>)REFERENCES<子表>(<主键>) ON DELETE SET NULL
3.no cation: 拒绝删除或者更新父表。 4.Restrict方式 :拒绝对父表进行删除更新操做。
多表查询
1.笛卡儿积查询
SELECT * FROM <数据表1>,<数据库表2>;
2.内链接
select * from <数据表1>,<数据库表2> where <数据表1>.<主键> = <数据表2>.<主键>;
3.外链接
左外链接
select * from <数据库1> left join <数据库2> on <数据表1>.<主键> = <数据表2>.<主键>;
右外链接
select * from <数据库1> right join <数据库2> on <数据表1>.<主键> = <数据表2>.<主键>;
全外链接
select * from <数据库1> left join <数据库2> on <数据表1>.<主键> = <数据表2>.<主键>
UNION
select * from <数据库1> right join <数据库2> on <数据表1>.<主键> = <数据表2>.<主键>;
4.复合查询
select * from <数据库1>,<数据库2> where <数据表1>.<主键> = <数据表2>.<主键> and <字段> + 条件;
5.子查询(嵌套查询)
带有IN谓词的子查询
eg: select sno,sn
from student
where sno IN
(select son
from SC
where con IN
( select cno
from Course
where cn=‘数据结构’
)
)
mysql索引认识 |
什么是索引?
索引(index)也叫作“键(key)”,它是是存储引擎用于快速查找记录的一种数据结构,经过合理的使用数据库索引能够大大提升系统的访问性能。简单来讲,索引就是至关于一本书的目录,方便读者找到想要的章节和页码。一张表能够存在多种和多个索引,能够加快查询效率,但建立索引和维护索引会耗费时间,随着数据量的增长而增长。
索引类型
1.常规索引
常规索引,也叫普通索引(index或key)。一张数据表中能够有多个常规索引。
ALTER TABLE <数据库名> ADD INDEX <索引名> (字段名);
2.主键索引
主键索引(Primary Key),也简称主键。提供惟一性约束,而且一张表只有一个主键。
ALTER TABLE <数据库名> ADD PRIMARY KEY <索引名> (字段名);
3.惟一索引
惟一索引(Unique Key),并提供惟一性约束。一张表中能够有多个惟一索引
ALTER TABLE <数据库名> ADD Unique <索引名> (字段名);
4.外键索引
外键索引(Foreign Key),简称外键。外键会自动和对应的其余表的主键关联。
ALTER TABLE <表名> ADD CONSTRAINT <外键名> foreign key<字段名> REFERENCES <外表表名><字段名>;
5.组合索引
组合索引(Combination Key),是经过表中多个字段组合而成的索引。
ALTER TABLE <数据库名> ADD Index <索引名> (字段名,字段名.......);
6.全文索引.
全文索引(Full Text)提升全文搜索的查询效率.
ALTER TABLE <数据库名> ADD FULL TEXT <索引名> (字段名,字段名.......);