mysql-建表、添加字段、修改字段、添加索引SQL语句写法

表的操作

1、建表

--如果USERS表存在则删除

DROP TABLE IF EXISTS USERS; 
CREATE TABLE USERS(
id INT UNSIGNED NOT NULL AUTO_INCREMENT, # 主键 UNSIGNED 无符号 AUTO_INCREMENT 自增
name VARCHAR(30) NOT NULL COMMENT \'用户名\',
sex ENUM(\'男\',\'女\') NOT NULL DEFAULT \'男\', # 使用枚举类型, 在插入的时候可以数值来表示,从1开始。如1则代表男
age TINYINT UNSIGNED NOT NULL DEFAULT 1,
PRIMARY KEY (`Id`)
)DEFAULT CHARSET=UTF8 ENGINE=INNODB;

操作字段都是ALTER TABLE 表名 的格式

2、添加字段

ALTER TABLE USERS ADD alias varchar(20) COMMENT \'别名\';

3、修改字段

  3.1 不修改名称 使用modify

ALTER TABLE USERS MODIFY name varchar(20) NOT NULL COMMENT \'用户名\';

  3.2 修改名称 使用change 格式 是 change 要修改的名称 新名称 ...

ALTER TABLE USERS CHANGE name username varchar(20) NOT NULL COMMENT \'用户名\';

4、删除字段

ALTER TABLE USERS DROP COLUMN alias;
-- 删除多个字段
-- ALTER TABLE USERS DROP COLUMN alias,DROP COLUMN age;

库的操作

1、建库

CREATE DATABASE test CHARACTER SET utf8;

2、修改库的默认编码

ALTER DATABASE test CHARACTER SET utf8;

3、删库跑路

DROP DATABASE test;

  

索引(约束)的操作

1、添加主键

--删除主键

ALTER TABLE 表名 DROP PRIMARY KEY;
ALTER TABLE USERS ADD PRIMARY KEY ( `id` )

2、添加唯一索引

ALTER TABLE USERS ADD UNiQUE ( `username` )

3、添加普通索引

ALTER TABLE `USERS` ADD INDEX index_name ( `age` )

4、添加全文索引

ALTER TABLE `表名` ADD FULLTEXT (
`列名`
)

5、添加多列索引 

ALTER TABLE `表名` ADD INDEX index_name ( `列名1`, `列名2`, `列名3` )

6、添加外键

一般很少外键约束,外键约束靠代码逻辑实现

alter table 表名 add constraint fk_引用id foreign key(引用id) references 被引用表名 (被引用id)

 

alter table 表名 drop forign key fk_引用id

数据库的管理命令

1、连接

mysql -u root -p123456
或
mysql -u root -p

输入密码

2、查看操作

-- 查看所有库

show databases;

-- 查看所在库的表

show tables;

-- 查看库的创建语句

show create database test;

-- 查看表的创建语句

show create table test;

-- 查看表的索引

-- show index from table_name(表名)

show index from users;

-- 查看mysql版本

select version();

-- 查看当前用户

select user();

3、创建用户

-- 特别需要注意,在 MySQL 中,账号由两部分组成:
-- 1. user
-- 2. host
-- 即使 user 相同,只要 host 不同,也会被认为是不同账号。
-- 这样可以非常方便对来自不同 ip 地址的访问进行精细的权限控制。
-- 默认情况下,创建的用户 host 为 \'%\',这是一个匹配符,跟模糊查询里的意思一样,表示匹配所有
create user [用户名] identified by \'[密码]\';
create user vip identified by \'vippp\';             -- 所有连接
create user vip@\'127.0.0.1\' identified by \'xxx\';   -- 本地连接
create user vip@\'192.168.%\' identified by \'yyy\';   -- 192.168 网段的连接

4、删除用户

drop user 用户名;
或
delete from mysql.user where user=\'用户名\' and host=\'%\'

5、修改密码

set password from \'用户名\' @host=password(\'新密码\');
或
update mysql.user set password=password(\'新密码\') where user=\'用户名\' and host=\'%\';

--使用password() 进行加密

6、设置用户权限

grant all on *.* to vip@\'127.0.0.1\';   --将所有数据库上的所有权利都授予通过本机连接的VIP用户;

grant all privileges on books.* to vip@\'%\'; --将数据库books上的说有权利都授予所有连接的vip用户;

grant select on books.users to vip@\'%\';  --将books数据库上的users表的访问权限开发给vip用户;

grant all on *.* to vip@\'%\' with grant potions;  --with grant potionss的意思是可以给vip给予权限给别的用户
flush privileges; --设置权限后要刷新权限