目录
DDL-介绍
1.DDL-数据库操作
2.DDL-表操作-查询
3.DDL-表操作-创建
4.DDL-表操作-数据类型
(案例)-根据需求创建表(设计合理的数据类型、长度)
DDL-表修改-修改
DDL-表操作-删除
DDL-小结
DML-介绍
DML-添加数据
DML-修改数据
DML-删除数据
DML-小结
DQL-介绍
DQL-语法编辑
DQL-基本查询
DQL-条件查询
DDL-聚合函数
DQL-分组查询
DQL-排序查询
DQL-分页查询
案例
DQL-执行顺序
DQL-小结
DCL-介绍
DCL- 管理用户
DCL-权限控制
DCL-小结
DDL-介绍
1.DDL-数据库操作
查询所有数据库
SHOW DATABASE;
查询当前数据库
SELECT DATABASE();
创建
CREATE DATABASE[IF NOT EXISTS]数据库名[DEFAUT CHARSET 字符集][COLLATE 排序规则]
删除
drop databas[if exit]数据库名;
使用
USE 数据库名;
2.DDL-表操作-查询
查询当前数据库所有表;
show database;
查询表结构
desc 表名;
查询指定的建表语句
show create table 表名;
3.DDL-表操作-创建
-
create table 表名(
-
字段1 字段1类型[comment 字段1注释],
-
字段2 字段2类型[comment 字段2注释],
-
字段3 字段3类型[comment 字段3注释],
-
字段3 字段3类型[comment 字段3注释],
-
...
-
)[comment 表注释]
注释:[..]为可选参数,最后一个字段后面没有逗号
创建一个表:
查询表结构:desc 表名;
展示详细信息:show create table 表名;
4.DDL-表操作-数据类型
主要分为三类:数值类型、字符串类型、日期时间类型
1.数值类型:
类似java语言中的 short int long float double;
例:
age TINYINT UNSIGNED
score double(4,1)//第一位表示整体长度,第二个表示小数位数
2.字符串类型:
char(10),未占用字符其他空间用空格进行部位--》性能好
varchar(10)占用空间根据你所存储的内容--》性能较差
例:用户名 usename varchar(50)
性别 gender char(1)
3.日期时间类型:
例 birthday date
(案例)-根据需求创建表(设计合理的数据类型、长度)
设计一张员工信息表,要求如下:
1.编号(纯数字)
2.员工工号(字符串类型 长度不超过10位)
3.员工姓名(字符串类型,长度不超过10位)
4.性别(男/女,存储一个汉字)
5.年龄(正常人年龄,不可能存储负数)
6.身份证号码(二代身份证号均为18位,身份证中有x这样的字符)
7.入职时间(取值年月日即可)
-
create table employee(
-
id int comment '编号',
-
workname varchar(10) comment '工号',
-
name varchar(10)comment '姓名',
-
gender char (1)comment '性别',
-
age tinyint unsigned comment '年龄',
-
idcard char(18)comment '身份证',
-
entrydate date comment '入职时间'
-
)comment '员工表';
注:要先建立库,再用use 库名来使用该数据库,之后再建立表。
DDL-表修改-修改
添加字段
alter table 表名 add 字符名 类型 (长度) [comment 注释] [约束];
(案例)为emp表添加一个新的字段1“昵称”为nickname,类型为varchar(20)
alter table emp add nickname varchar(20) comment '昵称';
修改数据类型
alter 表名 modify 字段名 新数据类型(长度);
修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度)[commment 注释][约束];
(案例)将emp表中的nickname字段该为username,类型为varhar(30)
alert table emp change nickname username varchar(30) comment'用户名';
删除字段
alter table 表名 drop 字段名;
例:alter table emp drop username;
修改表名
alter table 表名 rename to 新表名;
例:alter table emp rename to emplyee;
DDL-表操作-删除
删除表
drop table if exits 表名;
删除指定表,重新创建表//相当于清空数据
truncate table 表名;
DDL-小结
DML-介绍
DML英文全称是Data Manipulation Language(数据操作语言,用来对数据记录进行增删改查)
添加数据(insert)
修改数据(update)
删除数据(delete)
DML-添加数据
1.给指定字段添加数据
insert 表名(字段名1,字段名2...) values(值1,值2..);
2.给全部字段添加数据
insert 表名 value (值1,值2..);
3.批量添加数据
insert 表名(字段名1,字段名2...) values(值1,值2..),values(值1,值2..),values(值1,值2..);
insert 表名 values(值1,值2..),values(值1,值2..),values(值1,值2..);
注:
1.插入数据时,指定字段的顺序需要和值顺序一一对应
2.字符串和日期型数据应该包含在引号中
3.插入的数据大小,应该在字段的规定范围内
insert into employee (id, workname, name, gender, age, idcard, entrydate)
values (1,'1','Itcast','男',10,'12345678','2002-1-01');select * from employee;//显示表insert into employee values (1,'2','张三','男',18,'1234567812345670','2005-01-01');insert into employee values (3,'3','李四','男',18,'1234567812345670','2005-01-01'),(4,'4','小五','男',18,'12345678145654','2005-01-01');
DML-修改数据
update 表名 set 字段一=值1,字段2 = 值2,..[where 条件];
注:修改语句可以有,也可以没有,如果没有则会修改整张表的所有数据。
DML-删除数据
delete from 表名 [where 条件];
注:
1.delete语句条件可以有,也可以没有,如果没有,则会删除整张表的所以数据。
2.delete语句不能删除某一个字段的值(可以使用updata)
-- 删除 gender 为女生的员工
delete from employee where gender = '女';-- 删除所以员工
selete from employee;
DML-小结
DQL-介绍
DQL:Data Query Languge(数据查询语言),数据查询语言,用来查询数据库中表的记录。、
查询关键字:select
DQL-语法
DQL-基本查询
1.查询多个字段1
select 字段1,字段2,字段3.. from 表名;select * from 表名;
2.设置别名
select 字段1[AS 别名1],字段2[AS 别名2].... from 表名;
3.去除重复记录
select distinct 字段列表 from 表名;
案例:
select name,workno,age from emp;
select * from emp;
select workaddress as '工作地址' from emp; -- as可以省略
select workaddress '工作地址' from emp;
select distinct workaddress '工作地址' from emp;
DQL-条件查询
1.语法
SELECT 字段列表 FROM 表名 WHERE 条件列表 ;
2.条件
常见的比较运算符:
常见的逻辑运算符:
select * from emp where age = 88;
B. 查询年龄小于 20 的员工信息
select * from emp where age < 20;
C. 查询年龄小于等于 20 的员工信息
select * from emp where age <= 20;
select * from emp where idcard is null;
E. 查询有身份证号的员工信息
select * from emp where idcard is not null;
F. 查询年龄不等于 88 的员工信息
select * from emp where age != 88;
select * from emp where age <> 88;
G. 查询年龄在15岁(包含) 到 20岁(包含)之间的员工信息
select * from emp where age >= 15 && age <= 20;
select * from emp where age between 15 and 20;
H. 查询性别为 女 且年龄小于 25岁的员工信息
select * from emp where gender = '女' and age < 25;
I. 查询年龄等于18 或 20 或 40 的员工信息
select * from emp where age = 18 or age = 20 or age =40;
select * from emp where age in(18,20,40);
J. 查询姓名为两个字的员工信息 _ %
select * from emp where name like '__';//两个下划线
K. 查询身份证号最后一位是X的员工信息
select * from emp where idcard like '%X';
select * from emp where idcard like '_________________X';
DDL-聚合函数
1.介绍
将一列数据作为一个整体,进行纵向计算 。
2.常见的聚合函数
3.语法
SELECT 聚合函数(字段列表) FROM 表名 ;
(案例)
select count(*) from emp; -- 统计的是总记录数select count(idcard) from emp; -- 统计的是idcard字段不为null的记录数
select avg(age) from emp;
select max(age) from emp;
select sum(age) from emp where workaddress = '西安';
DQL-分组查询
1.语法
SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组 后过滤条件 ];
select gender, count(*) from emp group by gender ;
select gender, avg(age) from emp group by gender ;
select workaddress, count(*) address_count from emp where age < 45 group by workaddress having address_count >= 3;
select workaddress, gender, count(*) '数量' from emp group by gender , workaddress ;
注:
执行顺序:where 》 聚合函数 》 having
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
DQL-排序查询
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ;
2.排序方式
ASC:升序(默认)
DESC:(降序)
select * from emp order by age asc;select * from emp order by age;
select * from emp order by entrydate desc;
select * from emp order by age asc , entrydate desc;
DQL-分页查询
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ;
select * from emp limit 0,10; select * from emp limit 10;
select * from emp limit 10,10;
案例
select * from emp where gender = '男' and ( age between 20 and 40 ) and name like '___';
select gender, count(*) from emp where age < 60 group by gender;
select name , age from emp where age <= 35 order by age asc , entrydate desc;
select * from emp where gender = '男' and age between 20 and 40 order by age asc , entrydate asc limit 5 ;
DQL-执行顺序
验证:
select e.name , e.age from emp e where e.age > 15 order by age asc;
select e.name ename , e.age eage from emp e where eage > 15 order by age asc;
由此我们可以得出结论: from 先执行,然后执行 where , 再执行select 。
接下来,我们再执行如下SQL语句,查看执行效果:
select e.name ename , e.age eage from emp e where e.age > 15 order by eage asc;
DQL-小结
DCL-介绍
DCL- 管理用户
1.查询用户
select * from mysql.user;
其中 Host代表当前用户访问的主机, 如果为localhost, 仅代表只能够在当前本机访问,是不可以
2.创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
3.修改用户密码
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码' ;
4.删除用户
DROP USER '用户名'@'主机名' ;
案例:
create user 'itcast'@'localhost' identified by '123456';
create user 'heima'@'%' identified by '123456';
alter user 'heima'@'%' identified with mysql_native_password by '1234';
drop user 'itcast'@'localhost';
• 在MySQL中需要通过用户名@主机名的方式,来唯一标识一个用户。
DCL-权限控制
1.查询权限
SHOW GRANTS FOR '用户名'@'主机名' ;
2.授予权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
3.撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
(案例)
show grants for 'heima'@'%';
grant all on itcast.* to 'heima'@'%';
revoke all on itcast.* from 'heima'@'%';
DCL-小结