MySQL命令大全——DDL、DML、DCL
一、DDL(数据定义语言)
1、基本操作
1) 查看所有数据库名称: show databases;
2)切换数据库:use db_name;
2、操作数据库
1)创建数据库:create database [if not exists] db_name [字符集声明, 整理声明];
(字符集与排序规则不写默认为[utf8, utf8_general_ci])
2)删除数据库:drop database [if exists] db_name;
3)修改数据库:alter database db_name character set 字符编码
注:修改数据库只能修改其字符编码,不能修改数据库名称
3、数据类型
常用类型:
int 整型
double 浮点型,例如double(5,2)表示最多5位,必须有2位小数,即最大值为999.99
decimal 精确小数类型,在跟钱有关的时候使用
char 固定长度字符串类型
varchar 可变长度字符串类型
text 字符串类型
blob 字节类型
date 日期类型,格式为 yyyy-MM-dd
time 时间类型,格式为 hh:mm:ss
4、操作表
1)创建表:
create table 表明(字段名 字段类型, 字段名 字段类型......);
例:创建一张包含学生id,学生姓名,年龄以及性别的表
create table student(s_id int, s_name varchar(20), s_age int, s_gender varchar(10));
2)查看数据库中所有表
show tables;
此操作要在use db_name;之后
3)查看指定表的创建语句
show create table 表名;
例:show create table student;
4)查看表结构
desc 表名;
5)删除表
drop table 表名;
6)修改表
此修改表是指对表的字段的增删改,以及对表名的修改
a.添加新字段到最后
alter table 表名 add column (新字段名 字段类型);
例:alter table student add column (s_major varchar(30));
b.添加新字段到指定字段之后
alter table 表名 add 新字段名 新字段类型 after 指定字段名;
c.删除字段
alter table 表名 drop 要删除的字段名;
d.修改字段
alter table 表名 change 旧字段 新字段 新字段类型;
二、DML(数据操作语言)
1)插入数据
insert into 表名 (字段1, 字段2, 字段3...) values(值1, 值2, 值3...);
insert into 表名 values(值1, 值2, 值3.....); //此方法必须插入表中所有字段的值,并一一对应;
insert into 表名 values(值1, 值2, 值3...), (值1, 值2, 值3...),...(值1, 值2, 值3...); //此方法可以插入多条数据
2)修改数据
update 表名 set 字段名=新的值 (where 条件); //不加条件会修改所有指定字段的值,可以通过where确定修改指定记录
3)删除数据
delete from 表名 (where 条件); //此方法删除数据在不加条件时会删除所有的数据,可以通过where确定删除指定记录
truncate table table_name同样可以实现清除表中所有的数据,
虽然TRUNCATE和DELETE都可以删除表的所有记录,但有原理不同。DELETE的效率没有TRUNCATE高!
TRUNCATE其实属性DDL语句,因为它是先DROP TABLE,再CREATE TABLE。而且TRUNCATE删除的记录是无法回滚的,但DELETE删除的记录是可以回滚的(回滚是事务的知识!)。
三、DCL(数据控制语言)
1)创建用户
create user 用户名@地址 identified by 密码;
例:create user user1@localhost identified by '123'; 用户user1只能在localhost即本地才能登录mysql服务器
create user user2@'%' identified by '123'; 用户user2可以在任何电脑上登录mysql服务器。
2)给用户授权
grant 权限1, 权限2, 权限3...权限n on 数据库名.表名 to 用户名@地址;
例:grant select on java1702.student to user1@localhost; 只给user1用户查询数据库java1702中的student表的权限;
grant all on java1702.* to user2@localhost; 给用户user2授予数据库java1702中所有表的所有权限。
3)撤销授权
revoke 权限1, 权限2...权限n on 数据库名.表名 from 用户名@地址;
例:revoke update on java1702.* from user2@localhost;
4)查看用户授权
show grants for 用户名@地址
5)删除用户
drop user 用户名@地址