1.DDL 数据定义语言,开发
针对库表对象增删改create 创库创表drop 删库删表alter 修改库表属性
案例1:创建一个数据库,需求如下:
1)库名为edu
2)字符集为utf8
CREATE DATABASE edu DEFAULT CHARACTER SET utf8;帮助方式:
help create database
show create database 库名案例2:修改edu库的字符集为utf8mb4
ALTER DATABASE edu DEFAULT CHARACTER SET utf8mb4;案例3:在edu库中,创建一张表,要求如下:
1)表名 student
2)字段及约束如下:sn 序号 整形int 主键 非空 name 姓名 字符串varchar(20) 非空age 年龄 整形int 非空gender 性别 enum('m','f') 非空 默认为'm'use edu;
CREATE TABLE student
(
sn int primary key not null,
name varchar(20) not null,
age int not null,
gender enum('m','f') not null default 'm'
); #通过查询表结构来判断表创建成功
DESC 库名.表名;案例4:修改student表的属性,需求如下:
1)表名改为stu
ALTER TABLE student RENAME stu;2)增加一个字段:联系方式tel int not null
#增加一列字段,位置默认最后
ALTER TABLE stu ADD tel int not null;#在第一列增加字段
ALTER TABLE stu DROP tel;
ALTER TABLE stu ADD tel int not null FIRST;#在指定列后增加字段(比如在age字段后加)
ALTER TABLE stu DROP tel;
ALTER TABLE stu ADD tel int not null AFTER age;3)修改姓名的数据类型为char(20)
ALTER TABLE stu MODIFY name char(20) not null;
2.DML 数据操作语言,开发
针对表的内容(数据)增删改insert 插入数据行delete 删除数据行truncate 删除数据行update 更新数据行
案例1:在edu库的stu表中插入数据,如下:
1,张三,20,1391111222,m方法一:
INSERT INTO stu(sn,name,age,tel,gender) VALUES(1,'张三',20,1391111222,'m');方法二:
INSERT INTO stu VALUES(1,'张三',20,1391111222,'m');方法三:
INSERT INTO stu(sn,name,age,tel) VALUES(1,'张三',20,1391111222);案例2:在edu库的stu表中插入多行数据,如下:
2,李四,22,1301111222,m
3,小芳,19,1801111222,fINSERT INTO stu VALUES
(2,'李四',22,1301111222,'m'),
(3,'小芳',19,1801111222,'f')
;案例2:修改stu表的数据,如下:
1)修改小芳的年龄为18岁
2)修改张三的电话号码为1311111222UPDATE stu SET age=18 WHERE name='小芳';
UPDATE stu SET tel=1311111222 WHERE name='张三';案例3:删除stu表中数据sn为3的数据信息
DELETE FROM stu WHERE sn=3;#删除stu表的所有数据
DELETE FROM stu;
DELETE FROM stu WHERE 1=1;
3.DCL 数据控制语言,运维
grant 授权revoke 解除授权
GRANT 权限 ON 库名.表名 TO 'user'@'host' IDENTIFIED BY '密码';注释:
权限: SQL语句的命令字ALL 表示所有权限USAGE 表示只能登录的权限如果有多个权限,用","隔开用户名: 在MySQL8.0之前的版本,可以通过GRANT来创建用户并授权在MySQL8.0(含)之后的版本,必须先创建用户,再授权
库名表名可以使用"*"通配所有主机名:"%" 通配any默认情况下,MySQL只有root@'localhost'用户,意味着root用户只能本地登录
例1:授权root用户可以远程登录
GRANT ALL on *.* TO root@'%' IDENTIFIED BY '123';例2:授权tanfei用户可以远程登录10.0.0.51,并对edu库具有所有权限
GRANT ALL ON edu.* TO tanfei@'%' IDENTIFIED BY '123';# 用户tanfei在10.0.0.1登录数据库的时候只能对edu库具有查询权限
GRANT SELECT ON edu.* TO tanfei@'10.0.0.1' IDENTIFIED BY '123';实例:企业中如何知道一个用户的权限有哪些?
步骤:
1.先查看mysql库的user表,看该用户有哪些客户端主机列表
select user,host from mysql.user where user='用户名';
2.根据查询到的用户名@主机名 来查询该用户的授权
show grants for '用户名'@'主机名';REVOKE
REVOKE 权限 ON 库名.表名 FROM 'user'@'host';
4.DQL 数据查询语言,通用
select 查询数据show 查询属性
SELECT 字段名
FROM 表名
WHERE 条件1 AND 条件2
ORDER BY 排序
GROUP BY 分类;
5.总结
DDL(针对库表的操作)1.show tables; #查看表2.show databases; #查看所有库3.create database 库名 default character set utf8; #创建字符集为utf8的库4.create table 表名
(
sn int primary key not null,
name varchar(20) not null,
age int not null,
gender enum('m','f') not null default 'm'
); #创建表以及表结构5.alter database 库名 default character set utf8mb4; #修改库的字符集为utf8mb46.alter table 表名 rename 新表名; #修改表名7.alter table 表名 add 新字段名 约束 约束 约束; #新增字段名以及约束(加在最后)8.alter table 表名 drop 字段名; #删除字段9.alter table 表名 add 新字段名 约束 约束 约束 first; #在第一列增加字段10.alter table 表名 add 新字段名 约束 约束 约束 after 字段名A; #在字段名A后面添加新字段及约束11.alter table 表名 modify 字段名A 约束 约束 约束; #修改字段名A的约束DML(针对数据的操作)1.insert into 表名(字段,字段,字段,字段,字段) values(值,值,值,值,值);insert into 表名 values(值,值,值,值,值); #往表中增加数据2.insert into 表名 values
(值,值,值,值,值),
(值,值,值,值,值)
; #往表中插入多条数据3.update 表名 set 字段=值 where 字段=值; #通过where后的条件匹配数据并修改值4.delete from 表名 where 字段=值; #通过where后的条件匹配数据并删除5.delete from 表名; delete from 表名 where 1=1; #删除表中的所有数据DCL(授权)
1.grant 权限 on 库名.表名 to '用户名'@'主机名' identified by '密码';
#mysql8.0之前使用 创建用户并授权2.create user '用户名'@'主机名' identified by '密码';grant 权限 on 库名.表名 to '用户名'@'主机名'
#mysql8.0(含)之后先创建用户,再授权3.ALL 表示所有权限 USAGE 表示只能登录的权限4.库名表名可以使用"*"通配所有5.主机名:"%" 通配any6.select user,host from mysql.user where user='用户名'; #查看用户所有的主机7.show grants for '用户名'@'主机名'; #查看所有特定主机下的用户权限8.revoke 权限 on 库名.表名 from '用户名'@'主机名'; #取消对应权限DQL(查询)
1.select 字段名 from 表名 where 条件1 and 条件2 order by 排序 group by 分类;
#从特定的表中查出对应的数据并做出处理