一、修改表
1. 修改表名
alter table 表名 rename 新表名;
#mysql中库名、表名对大小写不敏感(不区分大小写)
2. 增加字段
alter table 表名ADD 字段名 数据类型 [完整性约束条件…], ADD 字段名 数据类型 [完整性约束条件…];
alter table 表名ADD 字段名 数据类型 [完整性约束条件…] FIRST; #插第一行
alter table 表名ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名; #插在某一条记录之后
3. 删除字段
alter table 表名 DROP 字段名;
4. 修改字段
alter table 表名 MODIFY 字段名 数据类型 [完整性约束条件…];
#modify不能改字段名
alter table 表名 CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
alter table 表名 CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…]; (数据类型要带上)
#change可以改字段名
#修改表通常改的是字段,而不修改数据类型(前后冲突则报错)
二、复制表
a、复制表结构+记录 (key不会复制: 主键、外键和索引)
mysql> create table new_service select * from service;
b、只复制表结构
mysql> select * from service where 1=2; //条件为假,查不到任何记录
Empty set (0.00 sec)
mysql> create table new1_service select * from service where 1=2;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> create table t4 like employees; #表结构一摸一样
三、记录增删改查
插入数据insert
1. 插入完整数据(顺序插入)
语法一:
insert into 表名(字段1,字段2,字段3…字段n) values(值1,值2,值3…值n);
语法二:
insert into 表名 values (值1,值2,值3…值n);
2. 指定字段插入数据
语法:
INSERT INTO 表名(字段1,字段2,字段3…) VALUES (值1,值2,值3…);
3. 插入多条记录
语法:
INSERT INTO 表名 VALUES
(值1,值2,值3…值n),
(值1,值2,值3…值n),
(值1,值2,值3…值n);
4. 插入查询结果
语法:
INSERT INTO 表名(字段1,字段2,字段3…字段n)
SELECT (字段1,字段2,字段3…字段n) FROM 表2
WHERE …;
更新数据update
语法:
update 表名 set
字段1=值1,
字段2=值2,
where condition;
示例:
UPDATE mysql.user SET password=password(‘123’)
where user=’root’ and host=’localhost’;
删除数据delete
语法:
DELETE FROM 表名
WHERE CONDITION;
示例:
DELETE FROM mysql.user
WHERE password=’’;
练习:
更新MySQL root用户密码为mysql123
删除除从本地登录的root用户以外的所有用户
四、授权表
1、跟权限有关的几张表
user->db->table_priv->columns_priv (优先级由高到低)
user #该表放行的权限,针对:所有数据,所有库下所有表,以及表下的所有字段
db #该表放行的权限,针对:某一数据库,该数据库下的所有表,以及表下的所有字段
tables_priv #该表放行的权限。针对:某一张表,以及该表下的所有字段
columns_priv #该表放行的权限,针对:某一个字段
按图解释:
user:放行db1,db2及其包含的所有
db:放行db1,及其db1包含的所有
tables_priv:放行db1.table1,及其该表包含的所有
columns_prive:放行db1.table1.column1,只放行该字段
2、只创建账号
#create user tom@"客户端的ip" identified by "123";
create user tom@"192.168.15.%" identified by "123";
create user tom@"%" identified by "123";
#客户端:192.168.15.13 服务端:192.168.15.90
create user tom@"192.168.15.13 " identified by "123";
mysql -utom -p"123" -h 192.168.15.90 -P 3306
# 3、创建账号并且授权(只有root账号才能为其他账号授权grant)
# *.* ===> mysql.user
grant all on *.* to "tom"@"192.168.15.90" identified by "123";#all代表除了grant以外的所有权限
# db1.* ===> mysql.db
grant all on db1.* to "jack"@"192.168.15.90" identified by "123";#all代表除了grant以外的所有权限
# db1.t1 ===> mysql.tables_priv
grant all on db1.t1 to "rose"@"192.168.15.90" identified by "123";#all代表除了grant以外的所有权限
# db1.t1(id) ===> mysql.columns_priv
grant select(id),update(name) on db1.t1 to "lili"@"192.168.15.90" identified by "123";
# 修改完权限一定要
flush privileges;
drop user "tom"@"192.168.15.90";
drop user "jack"@"192.168.15.90";
drop user "rose"@"192.168.15.90";
drop user "lili"@"192.168.15.90";
flush privileges;