表的操作
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; --设置权限后要刷新权限