文章目录
数据库
DDL(Data definition language):数据定义语言
DML(Data Manipulation Language):数据操纵语言
DQL(Data QueryLanguage):数据查询语言
DCL(Data Control Language):数据控制语言
1.DDL语句(数据库的定义语句)
操作数据库、表、列等(这些对象进行操作),使用的关键字:CREATE、 ALTER、 DROP
1)查询所有库
mysql> show databases;
2)创建新的库
create database 库名;
create database if not exists 库名;
3)删除库
drop database 库名 ;
drop database if exists 库名 ;
4)查询新建的数据库的字符集
show create database 库名;
5)查询当前整体mysql中所有的带字符集的相关编码格式
show variables like '%character%' ; (查询mysql的带字符的全局变量)
6)修改字符集
set character_set_client = utf8 ;(临时修改)
2.DML语句(是对表中的数据进行增、删、改的操作)
数据库:就是一个文件夹
1) 在创建表之前,选择库
use 库名;
2) 查询库中有哪些表
show tables ;
-- 创建表的语法
-- create table 表名(
-- 字段名称1 字段类型1 ,
-- 字段名称2 字段类型2 ,
-- 字段名称3 字段类型3 ,
-- ....
-- 字段名称n 字段类型n ,
) ;
3)注释
# 注释
-- 普通当前行注释
/*
客户端使用多行注释
*/
4)常见字段类型
varchar(最大字符数长度) 字符串类型
char字符类型
int整数类型 -- int(11) 占用的实际长度(推荐)
int(指定长度) -- int(4)
date: 日期(仅仅是日期)
datetime:日期和时间
timestap:时间戳(当前那个时间点操作的语句的时间) 时间+日期
text:大文本
2.1 修改表的操作
-- 查询表的结构
desc 表名;
-- 修改表的操作
# 1.给表中新添加一个字段 add关键字
alter table 表名 add 字段名称 字段类型 ;
+---------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| age | int | YES | | NULL | |
| address | varchar(1000) | YES | | NULL | |
| gender | varchar(5) | YES | | NULL | |
+---------+---------------+------+-----+---------+-------+
# 2.修改表的字段名称
alter table 表名 change 以前的字段名称 新的字段名称 数据类型 ;
+---------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| age | int | YES | | NULL | |
| address | varchar(1000) | YES | | NULL | |
| sex | varchar(5) | YES | | NULL | |
+---------+---------------+------+-----+---------+-------+
# 3.修改表的字段类型
alter table 表名 modify 字段名称 新的字段类型 ;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| age | int | YES | | NULL | |
| address | varchar(30) | YES | | NULL | |
| sex | varchar(5) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
# 4.将表中的某个字段删除
alter table 表名 drop 字段名称 ;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| age | int | YES | | NULL | |
| address | varchar(30) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
# 5.给表重命名
alter table stu rename to student ;
+---------------+
| Tables_in_gzx |
+---------------+
| student |
+---------------+
# 6.复制一张新的表
create table 新的表名 like 存在的表名 ;
+---------------+
| Tables_in_gzx |
+---------------+
| student |
| teacher |
+---------------+
# 7.删除表
drop table 表名 ;
drop table if exists 表名 ;
+---------------+
| Tables_in_gzx |
+---------------+
| teacher |
+---------------+
2.2 修改表的记录
-- 插入全表数据(也可批量插入)
insert into 表名 values (值1,值2,......);
-- 插入部分字段(也可插入多个)
insert into 表名(字段名称1,字段名称2....) values(值1,值2...);
-- 修改表中的记录
update 表名 set 修改的记录名=修改的值 where 条件
2.3 删除表的记录
-- 带条件删除
delete from 表名 where 条件;
-- 删除全表数据
delete from 表名;
truncate table 表名;
# delete from 表名 : 只是删除了当前表中所有记录的数据,但是表的结构还存在,不会 影响数据库数据约束"自增长式约束"的id值
# truncate table 表名 :不仅把数据全部删除了,表结构也删除了,相当于创建了一张一 模一样的空表
2.4 查询表的记录
-- 查询全表数据
select * from 表名
-- 带条件查询 关键字 where
select * from 表名 where 条件;
select * from 表名 where 属性名 between 条件;
where 条件查询
后面跟上基本比较运算符(<,<=,>,>=)/赋值运算符
并列关系 and
或的关系 or
判断某个值为null is null
某个值不为null is not null
在两个值得范围内,包含两端 between 值1 and 值2
多个或者的关系 in集合语句 : in(值1 , 值2,值3)
-- 模糊查询:关键字:like
select 指定的字段列表 from 表名 where 字段名称 like '%xx%'
模糊查的匹配符号'%某个字%',模糊匹配包含的xx字的信息(使用最多:模糊检索)
单个字符'%_化',模糊匹配第二个字包含"化"的学生信息
-- 聚合函数查询:
count(字段):通过指定字段:查询总记录数
avg(字段):针对某个字段求平均分
max(字段):针对某个字段获取里面的最大值
min(字段):针对某个字段获取里面的最小值
sum(字段):针对某个字段求和
-- 排序查询
order by 字段名称 (排序规则) asc 升序
dsc 降序
-- 分组查询
group by
group by 的后面可以跟的分组字段
select 分组字段 , 聚合函数 from 表名 group by 分段字段;
注意事项:group by 后面不能跟聚合函数
where 条件必须在group by 之前 (必须先满足条件,才能分组)
-- 筛选查询
having
注意事项:having 后面可以跟聚合函数
-- 去重查询
SELECT DISTINCT 字段名称 FROM 表名
-- 分页查询
limit
select 字段列表 from 表名 limit 起始行数,每页显示的条数
起始行数从0开始 -- 计算 = (当前页码-1)*每页显示的条数
-- select 嵌套select语句
需求:查询员工工资最高的员工信息
1)查询出来最高工资是多少 max(工资)
2)最高工资对应的员工信息
select * from emp where 工资 = (select max(工资) from emp) ;
-----------------------------------------------------------
查询代码的书写顺序和执行顺序
查询语句书写顺序:select – from- where- group by- having- order by-limit
查询语句执行顺序:from - where -group by - having - select - order by-limit
3.数据库的约束
约束:约束用户操作数据库的一种行为
默认约束 default
非空约束 not null
唯一约束 unique
主键约束 primary key(非空且唯一)
自增长约束 auto_increment
外键约束(表和表之间的关系) foreign key
eg:员工表和部门表
级联修改和级联删除 CASCADE