菜鸡学习day26数据库的基本概念
/*
数据库的基本概念
DataBase(DB)
用于存储和管理数据的仓库
特点:1.持久存储数据结构,其实就是一个文件系统
2.方便存储和管理数据
3.使用了统一的方式操作数据库SQL
数据库软件:MySQL
目录结构
安装目录
bin二进制可执行文件
data 日志数据文件
lib库文件
share错误信息
ini配置文件
数据目录
数据库(文件夹)
表(文件)
数据
SQL:结构化查询语言,定义了操作所有操作关系型数据库的规则
每一种数据库操作的方式略有不同(方言)
通用语法
1.可以以单行或多行书写,以分号结尾
2.空格缩进提高可读性
3.不区分大小写,关键字建议用大写
4.三种注释
单行注释:--(中间加一个空格)注释内容 或 # 注释内容
多行注释 啊写不出来,就跟Java一样
分类
1.DDL:操作数据库和表
2.DML:增删改表中的数据
3.DQL:查询表中的数据
4.DCL:(了)授权
1.DDL
操作数据库 CRUD
Create创建 CREATE DATABASE 名称;
(创建前判断是否重名)(指定及辅机名称)
CREATE DATABASE if not exists 名称 character set 字符集名称;
Retrieve查询 SHOW DATABASES;查询所有数据库名称
SHOW CREATE DATABASE MYSQL;查询某个数据库的字符集(查看某个数据库的创建语句)
Update修改 修改字符集
alter database 数据库名称 character set 字符集名称
Delete删除 删除数据库
drop database if not exists 名称
使用数据库 查询当前使用的数据库名称
select database();
使用数据库
use 名称;
操作表
Create创建 CREATE TABLE 名称(列名1 数据类型1,列名2 数据类型2);
Retrieve查询 SHOW TABLES;查询某个数据库中所有表的名称
show create table 名称;
DESC 表名;查询表结构
SELECT*FROM 表名;
Update修改 修改表名
alter table 表名 rename to 新表名;
修改字符集
alter table 表名 character set 字符集名称
添加列
alter table 表名 add 列名 数据类型;
修改列名称/类型
alter table 表名 change 列名 新列名 新数据类型
alter table 表名 modify 列名 新数据类型
删除列
alter table 表名 drop 列名
Delete删除 删除表
drop table 表名
drop table if exists 名称
复制表 create table 表名 like 被复制表;
数据类型:
int整数类型 age int,
double小数类型 score double(5,2)最多5位,保留两位小数
date日期,只包含年月日 yyyy-MM-dd
datetime日期包含年月日时分秒yyyy-MM-dd HH:mm:ss
timestamp时间错类型 格式跟datetime一样,如果不给其赋值/null,则默认使用当前系统时间自动赋值
varchar字符串类型 name varchar(20)姓名最大20个字符
DML
增删改表中的数据
添加数据 insert into 表名(列名1,列名2)values(数据1,数据2);
注:列名和数据一一对应
如果表名后不定义列名,则默认给所有列添加值
insert into 表名 values(值1,值2)
除了数字类型,其他类型要用引号(单/双)
删除数据 delete from 表名【where 条件】
删除所有数据
delete from 表名 (效率低)
TRUNCATE TABLE 表名; 删除表,再创建一个空表,高效
修改数据 UPDATE student SET 修改1,修改2 wherexxx ;
不加条件,则全部修改
DQL查询表中的记录
select*from 表名
1.语法
select 字段列表
from表名列表
where条件列表
group by分组字段
having分组之后的条件
order by排序
limit分页限定
2.基础查询
多个字段的查询 SELECT 列名 FROM 表名; *代表所有字段
去除重复 SELECT DISTINCT 列名 FROM 表名;
计算列 四则运算 IFNULL(num,0) null替换为0
起别名 SELECT NAME,age,num AS 别名 FROM student; 或者空格
3.条件查询
where+条件
大于> 小于< 等于= 不等!=(或)<>
与and age>=20 and age <=30 age between 20 and 30
或or age=22 or age=33 age in(22,33)
判断是否为null 不能用= 要用is null
非not
模糊查询like 占位符 _下划线(单个任意字符) %百分号(多个)
姓马 “马%” 第二个字是化 “_化%” 姓名是三个字 “___" 姓名中包含马 “%马%”
*/