网页浏览总次数

星期日, 二月 25, 2024

MySQL数据库基础

DDL 数据定义语言 用来定义数据库对象 库 表 列等

DML 数据操作语言 用来操作数据库表中的记录(数据)

DQL 数据查询语言 用来查询记录

DCL 数据控制语言 用来定义访问权限和安全级别


DDL

#注释

/*多行注释*/

-- 创建数据库 create


-- SQL 不区分大小写

-- 创建一次 再次执行代码 需要注释 此行 否则 报错 或者单独选中 需要执行的 语句


-- create database mydb2;


-- create database mydb3 character set utf8;


-- show databases; -- 查询

-- 

alter database mydb3 character set gbk; -- 修改

-- 

drop database mydb2; -- 删除

 -- 

use mydb1; -- 选择数据库


-- select database(); -- 查看当前选择的是哪个数据库


-- 创建表

/*

use mydb1;

create table mytable2

(

id int,

gender varchar(10)

);

*/


/*

常用数据类型:

int 整数

double 浮点型 double(5,2) 表示最多5位 其中必须有2位

char 固定长度字符串类型 char(5)

varchar 可变长度字符串类型

text 字符串类型

blob 字节类型

date 日期类型 格式 yyyy-MM-dd

time 时间类型 格式为 hh:mm:ss

timestamp 时间戳类型 yyyy-MM-dd hh:mm:ss 自动赋值

datetime 日期时间类型 yyyy-MM-dd hh:mm:ss 


*/


-- show tables; -- 查看所有表


-- desc mytable1; -- 查看表中字段


-- alter table mytable2 add image blob; -- 表中添加字段


-- alter table mytable2 modify gender varchar(15); -- 修改表中字段


-- alter table mytable2 drop image; -- 删除表中字段


-- rename table mytable2 to mytable22; -- 修改表名


-- show create table mytable22; -- 查看表的创建细节 


-- alter table mytable22 character set gbk;-- 修改表的字符集为gbk


-- alter table mytable22 change gender ggeennddeerr varchar(10); -- 修改表中字段名


DML


select* from mytable1; -- 查询表中数据


/*insert into mytable1(id,name) 

values(2,'16'); */ -- 插入数据


-- insert into mytable1 values(2,'16');         -- 插入数据 简写   values(2,'')占内存  values(2)不占内存 null


/* update mytable1 set name ='16' 

where id = 2; */ -- 修改数据 where name = 'xx'也可以


-- delete  from mytable1 where id = 2; -- 删除表中数据 结构还在 可以找回


DQL


create database DB1;


use DB1;


create table STU(

sid char(6),

sname varchar(50),

age int,

gender varchar(50)

);


-- drop table STU;


insert into STU values('01','reimu',1,'female');


insert into STU values('02','marisa',2,'male');


#查询


-- 基础查询 所有列


select*from STU; 


-- 指定列查询


select sid,sname from STU; 


-- 条件查询

/*


*

> < >= <= = !=  

<>不等于


not 不是 or 或 and 与 is 是  is not 不是 is null 是空 is not null 不是空


between a and b  ab之间


*/


select *from STU

where gender = 'male' and age = 2;


-- 满足 数据集里的内容任意都可以查询到 相当于 or


select *from STU

where sid in('01','02');


-- 模糊查询 like


/*

通配符

_任意一个字符  %n 任意0-n个字符

*/


-- 确定个数

select *from STU

where sname like '_____';


-- 不确定个数

select *from STU

where sname like 'r%';


-- 固定特殊位置但是总个数不定

select *from STU

where sname like '_a%';


-- 不固定特定位置但是包含

select *from STU

where sname like '%m%'; 


-- 字段控制查询


-- 去除重复记录 distinct


select distinct gender from STU;


-- 求和 任何值和null计算都是null


-- select x,y x+y from table;


-- 函数 ifnull(age,1) 如果age是null那么age=1


-- x as 'name' x起别名


-- 升序排序


select *from stu

order by sid asc;


-- 降序排序


select *from stu

order by sid desc;


-- 按照x升序排序 如果相同再按照y升序排序


select *from stu

order by sid asc,age asc;


-- 聚合函数


-- count()  统计指定列不为null的记录行数


select count(*) as 记录数 from stu;


-- sum() 指定列的和


select sum(age) as 年龄和 from stu;


-- avg() 指定列平均数


select avg(age) as 年龄平均数 from stu;


-- max() min() 指定列最大 最小值


select max(age) as 年龄最大 from stu;


select min(age) as 年龄最小 from stu;



-- 分组查询


select gender,count(*) as 男或者女个数 from stu group by gender;


-- where 对分组前的数据进行操作且不可以接 聚合函数


select gender,sum(age) as 年龄和 from stu where age<10 group by gender;


-- having 对分组后的数据进行操作可以接 聚合函数 后面可以接多个条件


select gender,sum(age) as 年龄和 from stu where age<10 group by gender having sum(age)>1;



-- limit 分页查询 所有数据分页 一页显示几个 


select *from stu limit 0,2; 


-- 从第0行开始 查询1条


select *from stu limit 0,3; 

-- 0 当前页 3显示几条数据


-- 数据的完整性 创建表的时候添加约束保证不能随便添加数据


-- 实体 表中的一行


-- 实体完整性 标识每一行数据不同


-- 主键约束 pk 要求 数据唯一 不能为null 比如id


-- 方法一


create table table1(

tid int primary key, -- 设置主键约束

tname varchar(5)

);


-- 方法二


create table table2

(

tid int,

tname varchar(5),

primary key(tid,tname) -- 联合主键 两个都一样才触发


);


-- 方法三


create table table3

(

tid int

);

-- 添加约束语句

alter table table3 add constraint pk_table3_id primary key(tid);


-- 唯一键 可以为null


create table table4

(

tid int primary key,

tname varchar(5) unique -- 设置唯一键

);


-- 自动增长列 只能是整数类型 一般配合主键一起用


create table table5

(

tid int primary key auto_increment

);


-- 域完整性 单个格子检测数据是否正确


-- 非空约束


create table table6

(

tid int not null 

);


-- 默认值约束


create table table7

(

tname varchar(50) not null default'far'

);


insert into table7(tname) values(default);


select *from table7;


-- 引用完整性


-- 外键约束 外检列的数据类型一定和主键的类型一致


create table table8

(

tid int,

constraint fk_table8_tid foreign key(tid) references table3(tid)

);


没有评论:

发表评论