1.数据库:存储数据的仓库.数据库将数据存储在磁盘.
2.数据库服务器:是指用来运行数据库服务的一台电脑.
3.数据库管理系统dbms:专门用来操作和管理数据库的系统
4.数据库管理系统的分类:
关系型数据库:MySQL,Oracle,Sql Server,db2….
非关系型数据库:redis,MOngoDB,
5.数据管理员dba:管理数据库.
6.数据库的组成:数据表,对象,对象之间的关系组成.
7.数据表:按照一定规则和数据类型来存储数据的表格。
8.行=记录=实体:数据表中的一行数据。
9.列=字段=域:数据表中的列。
10.MySQL:前Sun公司推出的一个数据库管理系统,现属于Oracle。开源,体积小,性能好,MySQL5.5及之前的版本免费,之后也要收费。MySQl默认用的是InnoDB存储引擎。
11.使用MySQl之前一定要启动服务:
11.1:手动启动服务:打开任务管理器-》服务-》MySQL-》启动服务。
11.2:用命令启动/关闭服务:以管理员身份打开cmd->net start/stop mysql。
12.登录MySql客户端:
11.1:直接打开MySql客户端,输入密码。
11.2:用命令登录:
11.2.1:进行MySQL安装目录的bin目录下-》mysql -u root -p 密码
11.2.2:在环境变量的path中配置MySQL安装目录的bin目录-》mysql -u root -p 密码
11.3:用第三方客户端登录:Navicat for MySQL登录。创建连接-》输入用户名和密码
13.SQL:结构化查询语言。专门用来对数据库进行操作的语言。后缀名:.sql
13.1:sql语言的组成:DDL(数据库定义语言),DML(数据库操作语言),DCL(数据库控制语言),TCL(事务控制语言)
14.DDL:数据定义语言
查看数据库:show databases;
创建数据库:create database 库名;
删除数据库的语句:drop database 库名;
进入数据库:use 库名;
创建表:
create table t_order(
id int primary key auto_increment,主键约束
order_name varchar(30),
age int not null;非空约束
user_id int unique,唯一约束
constraint FK_cid foreign key (user_id) references t_customer (cid)外键约束
);
查看库中所有表:show tables;
查看表的结构:desc 表名;
修改表名:alter table 原表名 rename 新表名;
修改表中字段的类型:alter table 表名 modify 字段名 新数据类型
增加表字段:alter table 表名 add column 字段名 类型;
删除表字段:alter table 表名 drop column 字段名;
修改字段名:alter table 表名 change字段原名 字段新名 数据类型;
删除表 drop table 表名;
15.DML:数据库的控制语
15.1:向表中插入数据:
15.1.1:表中所有字段必须都插入数据:insert into 表名 values(值列表);
15.1.2: 写入的列一定要插入数据,表中允许为null列或者有默认值的列可以不插入数据:insert into 表名(列1,列2...) values(值1,值2...);
值列表和列名列表要一一匹配(个数一样,位置一样,类型也要一样)。
eg:insert into student2 values(1,'aa',18,'1',default,null);
insert into student2(sid,sname,sage,ssex) values(1,'bb',22,'0');
15.2: 修改表中的数据:记得要写修改条件,如果不写默认修改整张表。
update 表名 set 列名1=值1,列名2=值2....where 条件;
eg: update from student2 set sname='cc' where sid=2;
15.3: 删除表中的数据:记得写条件,不写条件,整张表中的数据全删除了。
delete from 表名 where 条件;
注意:删除整张表:
drop table 表名; 删除表同时与表相关的所有东西都删除;删除最彻底。
truncate table 表名;只删除表中数据,表中自增列也要从头开始,一页一页删除;删除效率最高。delete from 表名;只删除表中数据,表中自增列接着,一条一条删除;
15.4:查询表中数据:聚合列可以在select,group by,having,order by后面用。
select 列名列表
from 表名
[where 条件 (边查边筛选)]
[group by 分组列]
[having 条件 (查询完后分组之后再筛选,有Having一定有group by)]
[order by 排序列asc/desc;(排序的列可以是多个,先以第一个列排序,当第一个列的值相同时,才会以第二个列排序)]
eg: select * from student where sid>1004;
select count(sid),cid from student group by cid
order by count(sid) asc;
//查询学生人数大于2个人的班级编号和班级总人数。-》查学生表,查班级编号和班级总人数,条件班级人数大于2
eg:select count(sid),cid from student group by cid
order by count(sid) asc;
15.4.1:查询表中所有的列:select * from 表名;(*代表表中所有的列,模糊匹配)eg:select * from student;