1什么是数据库? dtabase,简称DB 数据库关系系统 DBMS
数据库是存储数据的地方,保证数据的完整性,
MySQL是关系型数据库,每个表之间可以是相关联的!
1数据定义语言DDL
数据定义语言,进行数据库、表的管理等,如create、drop
创建库 创建表,设计表结构的语言
2数据管理语言 DML
数据操作语言,对数据进行增加、修改、删除,如insert、update、delete
我们借助navicat工具,直观操作
安装navicat工具可以留言我发免安装的软件包
数据库的组成
库database,表table,记录,是每一条的数据
现有库,再有表,表里面是记录
我们用sql语言来控制这些,sql语言是结构化查询语言!
安装好mysql,和navicat,建立链接
连接数据库的信息,连接名字随便启
主机名,ip地址,localhost 或者 127.0.0.1
mysql端口号就是3306
mysql用户名初始是root最高权限,密码也是mysql密码,
一般工作是不回给你这个权限的,按照工作需求写
密码也是一样的,
连接好之后就可以在里面做一些操作!!
sql语句DDL
-
查看所有数据库
show databases;
-
创建数据库
create database 数据库名 charset=utf8; 例: create database python charset=utf8;
-
使用数据库
use 数据库名;
-
查看当前使用的数据库
select database();
-
删除数据库-慎重
drop database 数据库名; 例: drop database python;
创建表,创建表首先要先设计表结构
drop table if exists 表名: 这个意思是说如果有同名删除这个表,重新创建
create table 表名(
字段名 数据类型 【约束】,
字段名 数据类型 【约束】,
字段名 数据类型 【约束】,
字段名 数据类型 【约束】,
...
字段名 数据类型 【约束】
)
最后一个没有逗号。
常见的数据类型
- 整数:int,bit
- 小数:decimal
- 字符串:varchar,char
- 日期时间: date, time, datetime
- 枚举类型(enum)
- 常见的约束:
- 主键约束 primary key(列名) auto_increment 自增
- 非空约束 not null
- 惟一约束 unique 约束名(列名) 不重复
- 默认约束 default
- 外键约束 foreign key 约束名(列名) references(列名)
- constraint 关键字,关联的
- 联合主键,两个主键可以重复但是要保证唯一性
数据类型:
数字类型 int 整数
float double 小数
字符串类型:
char 固定长度 比如 char(10)多了截断,少了用空格补齐
varchar,可变长度 varchar(10) 多了截断,少了减少 这个用的比较多
text,长文本类型 给什么是什么,这个是上传文本的
存储中文,一个字两个长度
日期类型:
date 日期类型 yyyy-mm-dd,年月日
datetime 年月日时分秒
表结构 desc 表名
添加一个新的字段 【】可写可不写
alter table 表名 add 字段名 数据类型 【约束】
修改某字段的数据类型
alter table 表名 modify 字段名 新数据类型
修改某字段名
alter table 表明 原字段名 新字段名 数据类型
删除字段
alter table 表明 drop 字段名
字段是构成表的一个元素
我们可以给每一个字段来设置一个约束
主键 每张表都应该有一个主键(非空,唯一)
- as 关键字可以给表中字段 或者 表名起别名
- distinct 关键字可以去除重复数据行。
mysql版本5.0.2
DML数据管理语言!
增删改查
增
insert into 表名 (列名,列名,列名。。。。。。。。。) values(值,值,值。。。。)
insert into values(值,值,值。。。) 添加所有列的值
删
delete from 表名 清空表数据
delete from 表名 where 条件
改
update 表明 set
列名 = 值,where 条件
查
select 列名 列表 from 表名 where 条件
group by 列名 分组
having 条件
order by asc/desc 列名 排序
limit 开始数字 ,显示条数
where 条件:
区间 between and
列名 between 数值 and 数值
范围 in /not in/any/all
列名 in 值列表
模糊查询 like ‘字符串’
列名like ‘王%’
通配符: %任意个任意字符
_一个任意字符
聚合函数
- count(col): 表示求指定列的总行数
- max(col): 表示求指定列的最大值
- min(col): 表示求指定列的最小值
- sum(col): 表示求指定列的和
- avg(col): 表示求指定列的平均值
日期函数
now(列名) year(列名) month(列名) day(列名) time(列名) datediff(开始时间,结束时间)
数学函数:
ceil(列名) fioor(列名) round(列名) length(列名)
子查询
select * from students where age > (select avg(age) from students);
例2. 查询学生在班的所有班级名字:
select name from classes where id in (select cls_id from students where cls_id is not null);
例3. 查找年龄最大,身高最高的学生:
select * from students where (age, height) = (select max(age), max(height) from students);