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