一、对数据库的基本操作
show databases; //列出数据库
use database_name; //使用database_name数据库
create database data_name; //创建名为data_name的数据库
drop database data_name; //删除一个名为data_name的数据库:
use dbname; status //查看数据库dbname的详细信息
alter database db_name CHARACTER SET utf8; //修改数据库编码
show variables like '%dir%'; // 查看MySQL相关存放目录
二、对表的基本操作
show tables //列出所有表
创建一个名为tab_name的新表
create table tab_name(
id int(10) not null auto_increment primary key,
name varchar(40),
pwd varchar(40)
) charset=gb2312;
eg:
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
//id自增的时候从7开始(表示前面已经有6行数据了)
eg:
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1
drop table tab_name //删除名为tab_name的数据表
describe tab_name //显示名为tab_name的表的数据结构
show columns from tab_name //同上
delete from tab_name; //删除表所有数据,不会重置自增的ID
TRUNCATE TABLE `db_name`.`tab_name`; //截断表重置自增的id为0
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
例如:UPDATE `mydb`.`mytable` SET `myname` = 'xst' WHERE `id` = '3';
INSERT INTO 表名称 VALUES (值1, 值2,....)
(1)INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
例如:INSERT INTO `mydb`.`mytable` (`id`,`name`) VALUES ('1','aa');
(2) INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) on duplicate key update field=values(field); //field是字段名称,如果插入是,主键已经重复,则更新给出字段。
例如:insert into report.user_live (date,pid,osid,level) values('2017-07-26','3','0','2') on duplicate key update level = values(level); //插入这行数字时,主键是(date,pid,osid)复合主键,并且该主键的数据已经存在且唯一,此时出入多一行数据,则键非主键level字段更新到对应的唯一主键对应的记录中。
SHOW TABLE STATUS WHERE Name = 'table_name'; //查看表的详细信息:
三、修改表结构
ALTER TABLE tab_name ADD PRIMARY KEY (col_name); //设置主键
col_name ALTER TABLE tab_name DROP PRIMARY KEY (col_name); //删除主键
Alter table tab_name add col_name varchar(20); //新增字段
alter table tab_name drop col_name; //删除字段
alter table tab_name modify col_name varchar(40) not null; //修改字段属性,若加上not null则要求原字段下没有数据
alter table tab_name rename to new_tab_name; //修改表名
alter table tab_name change old_col new_col varchar(40); //修改字段名,必须为当前字段指定数据类型等属性,否则不能修改
create table new_tab_name like old_tab_name; //用一个已存在的表来建新表,但不包含旧表的数据
ALTER TABLE `db_name`.`tab_name` ADD INDEX `index_name` (`col_name`); //新增索引
ALTER TABLE `db_name`.`tab_name` ADD INDEX `index_name` (`id`, `name`); //新增组合索引
CREATE TABLE table1 LIKE table2; //创建表table1复制表table2的结果
INSERT INTO table1 SELECT * FROM table2; //往表table1插入表table2的数据
CREATE TABLE newadmin AS ( SELECT username, password FROM admin ); //创建一个表复制另一个表的一些字段
四、用户与用户权限管理
1、赋予用户权限
方法一:先创建用户再赋予权限:
USE `mysql`;
CREATE USER 'backend'@'%' IDENTIFIED BY 'Back123end'; //用户名backend,密码Back123end
FLUSH PRIVILEGES;