一、DDL (Data Definition Language)数据定义语言
1,DDL-数据库操作语句
SHOW DATABASES; 显示当前所有的数据库。
CREATE DATABASE [if not exists] 数据库名 ;创建新的数据库。
USE 数据库名; 前往该数据库。
SELECT DATABASE(); 查看当前所在的数据库。
DROP DATABASE [IF EXISTS]数据库名。删除数据库
2,DDL-表操作语句
SHOW TABLES; 显示查看当前数据库所有的表。
CREATE TABLE 表名称(字段 字段类型,字段 字段类型…); 创建表。
DESC 表名 ;查看当前表有哪些字段。
SHOW CREATE TABLE 表名。查询表的建表语句。
ALTER TABLE 表名 ADD/MODIFY/CHANGE/DROP/RENAME TO …修改表,增加/修改类型/修改字段加类型
DROP TABLE 表名 ;删除表。
二、DML (Data Manipulation Language)数据操作语言
对数据库中表的数据记录进行增删改
三、DQL (Data Query Language)数据查询语言,查询数据库中的表的记录。
1、基础查询
select name ,workno,age from employee;
查询姓名,工号,年龄三个字段,查询所有字段有两种方式:
select id, workno, name, gender, age, idcard, entrydate,workaddress from employee;
select *from employee;
select workaddress as'工作地址' from employee;--as可以省略,意思是起别名。
select distinct workaddress from employee;--不重复的显示
2、条件查询 (where)
select * from employee where age>60;--查询年龄大于60
select * from employee where idcard is null;--查询身份证号为空
select * from employee where age between 10 and 60; --查新年龄为10到60之间
--下面两条语句皆为查找年龄为11或18的意思
select * from employee where age =11 or age=18;
select * from employee where age in (11,18);
select * from employee where name like '__';--查找名字为两个字,一个下划线代表一个单个字符
select * from employee where name like'%5674';--查找身份证号后四位为5674,%代表任意个字符
3、聚合函数 (count,max,min,avg,sum)
select count(*) from employee;--统计表中员工的数量
select count(idcard) from employee;--统计身份证不为空的数量,空值NULL不参与所有聚合函数运算
select avg(age) from employee;--统计年龄的平均数
select max(age) from employee;--查询年龄的最大值
select min(age) from employee;--查询年龄的最小值
select sum(age) from employee where gender='男';--统计男性的年龄之和
4、分组查询 (group by)
select gender,COUNT(*) from employee group by gender;--根据性别分组,统计男性和女性的数量
select workaddress,count(*) from employee where age <45 group by workaddress having count(*)>=2--查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于2的工作地址
5、排序查询(order by)
select * from employee order by age asc--根据年龄进行升序排序
select * from employee order by age desc--根据年龄进行降序排序
select * from employee order by age asc,entrydate desc--根据年龄进行升序排序,如果年龄相同,再按照入职时间进行降序排序
6、分页查询(limit)
7、案例查询
select * from employee where gender='女' and age in (20,21,22,23);--查询年龄为20.21.22.23岁的女性员工
select name,age,gender from employee where name like '___' and age>=20 and age <=40 and gender='男'--查询性别为男,并且年龄在20-40岁(含)以内的姓名为三个字的员工。
select gender,count(*) from employee where age<60 group by gender;--统计员工表中,年龄小于60的,男性员工和女性员工的个数
select name '姓名' ,age '年龄' from employee where age<=35 order by age asc, entrydate desc;--查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序。
select * from employee where gender ='男' and age between 20 and 40 order by age asc ,entrydate desc limit 4--查询结果为男,且年龄在20-40岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同则按入职时间升序排序
四、DCL (Data Control Language)数据控制语言,用来管理数据库用户、控制数据库的访问权限
1. 用户与数据库的关系
共享数据库 多个用户可以共享访问同一个数据库。如果用户被授予了访问权限,他们可以在同一个数据库中创建、读取、更新、删除数据。
独立数据库 管理员可以为每个用户创建一个独立的数据库,并只赋予该用户对其数据库的访问权限。这样虽然多个用户各自有独立的数据库,但它们并不是自动创建的,而是管理员手动设置的。
2. 用户权限控制
MySQL通过权限控制用户对数据库的访问。你可以决定一个用户是否能访问一个或多个数据库,以及可以对这些数据库执行哪些操作(例如,读取、写入、删除等)。
show grants for 'heima'@'%';
GRANT ALL ON userdb.* TO 'username'@'%';-- 授予用户对自己数据库的所有权限,这里的userdb是指为用户授予哪一个数据库的所有权限
revoke all on itcast.* from 'heima'@'%';--撤销用户heima对于itcast数据库的所有权限
FLUSH PRIVILEGES;-- 应用权限更改
3. 示例:为用户创建独立的数据库
CREATE DATABASE userdb;-- 创建数据库
CREATE USER 'username'@'%' IDENTIFIED BY 'password';-- 创建用户并为其设置密码,可在任意主机访问该数据库
CREATE USER 'itcast'@'localhost' IDENTIFIED BY 'password';--创建用户,设置密码,并限制只能在当前主机localhost访问
alter user 'itcast'@'localhost' identified by'123'--修改用户密码为123