Mysql 基础操作命令
一、数据库基本操作
- 查看数据库列表信息
show databases;
- 查看库中表的信息
use mysql; ###先使用数据库
show tables;
- 显示数据表的结构
语法:
describe [库名.表名]
或者
use 库名;
describe 表名;
(describe 简写 desc)
- 刷新数据库
flush privileges;
二、SQL语句
SQL简介
- SQL(Structured Query Language)即 结构化查询语句
- 关系型数据库的标准语言
- 用于维护管理数据库:数据查询、数据更新、访问控制、对象管理等功能
SQL语句分类
DDL
DDL(Data Definition Languge 数据定义语言):用来建立数据库、数据库对象和定义其列。如 create 、alter 、drop
DML
DML(Dara Manipulation Languge 数据操纵语言):用来插入、删除、修改数据库中的数据。如 insert 、delete 、update
DCL
DCL(Data Control Language 数据控制语言):用来控制数据库组件的存取许可、存取权限等。如 commit 、rollback 、grant 、revoke
DQL
DQL:数据查询语言。只有一个 select
三、SQL语句操作
DDL语句
create 创建数据库、表
- 创建数据库
语法:
create database 库名;
- 创建数据表
use 库名;
语法:
create table 表名 (定义字段1,定义字段2,primary key (定义字段));
示例:
create table info (id char(5) not null,name varchar(48) not null,primary key (id));
drop 删除数据库、表
- 删除指定的数据库
语法:
drop database 库名;
示例:
drop database auth;
- 删除指定的数据表
语法:
drop table 库名.表名;
示例:
drop table auth.users;
alter 创建索引
语法:
alter table 表名 add index 索引名 (列名);
示例:
alter table info add index index_id (id);
DML语句
- DML 语句用于对表中的数据进行管理
insert 插入新数据
格式:
insert into 表名(字段1,字段2,......) VALUES(字段1的值,字段2的值,......)
示例:
insert into user(user_name,user_passwd) values('zhangsan',password('123456'));
insert into user values('lisi',password('123456')),('zhaoliu',password('456123'));
update 修改数据记录
格式:
update 表名 set 字段名1=值1[,字段名2=值2] WHERE 条件表达式
示例:
update auth.users set user_passwd=password('abc123') where user_name='lisi';
flush privileges; ###刷新
delete 删除指定的数据记录
格式:
delete from 表名 where 条件表达式
示例:
delete from auth.users where user_name='lisi';
DQL语句
select 查询表中的数据记录
格式1:
select 字段名1,字段名2 ...... from 表名;
示例:
select * from auth.users; ###查看users表中所有记录信息
格式2:查询时指定条件
select 字段名1,字段名2 ...... from 表名 where 条件表达式;
示例:
elect user_name,user_passwd from auth.users where user_name='zhangsan';
DCL语句
- DCL 用于数据库用户授权(用户不存在时,则新建用户)
grant 设置用户权限
格式:
grant 权限列表 on 数据库名.表名 to '用户'@'来源地址 ' [identified by '密码'];
示例1:
grant select on auth.* to 'xiaoqi'@'localhost' identified by '123456";
示例2:
grant all on *.* to 'root'@'%' identified by 'abc123456';
grant all on *.* to 'root'@'localhost' identified by 'abc123456';
查看用户权限
格式:
show grant for '用户名'@'来源地址';
示例:
show grants for 'dbuser'@'192.168.100.1';
revoke 撤销用户权限
格式:
revoke 权限列表 on 数据库名.表名 from '用户名'@'来源地址';
示例:
revoke all on bdqn.* from 'xiaoqi'@'localhost'; ####本地来源
revoke all on bdqn.* from 'dbuser'@'192.168.100.1'; ####来源地址
数据表高级操作
清空表
格式1:
delete from 表名; ###可以加 where子句对删除的结果集进行过滤选择
格式2:
truncate table 表名; ####清空表中所有记录
格式1示例1:
mysql> create database bbs;
mysql> use bbs;
mysql> create table ky (user_name CHAR(16) NOT NULL, user passwd CHAR(48) DEFAULT ''; level CHAR(16) NOT NULL, PRIMARY KEY (user name));
mysql> select * from ky;
mysql> delete from ky where level >=45;
格式1示例2:
mysql>create table tmp like player; ######通过LIKE方法,复制player表生成tmp表
mysql>insert into tmp select * from player; #######通过player表生成tmp表内数据记录
mysql>delete from tmp where level >= 45; #####delete from +where 过滤删除
mysql>delete from tmp;
格式2示例:
truncate table tmp;
临时表
- MySQL的临时表,顾名思义,就是临时建立的表,并不会长期存在,主要用于保存一些临时数据。临时表有个特性,就是只在当前连接可见,当前连接下可执行增删改查等操作,当连接被关闭后,临时表就会被MysQL删除,相关的资源也会被释放。
mysql> CREATE TEMPORARY TABLE`mytmp` (`id` int(10) NOT NULL AUTO_INCREMENT,`NAME` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT
NULL, `level` int(10) NOT NULL, PRIMARY KEY (id))ENGINE=InnoDB DEFAULT CHARSET=utf8;
mysql> insert into mytmp(name,level) values('aa',10);
mysql> select * from mytmp;
mysql> exit
mysql -u root -p 密码
mysql> use auth;
mysql> select * from mytmp;
克隆表
-
在MySQL的开发和维护过程中,会有原样拷贝某个数据表的需求。能才能够快速、完整的拷贝数据表。
- LIKE方法:从 mytmp 完整复制结构生成 test 表,再导入数据
mysql> create table test like mytmp; mysql> insert into test select * from mytmp; mysql> select * from mytmp;
- SHOW CREATE TABLE 方法:先查看 mytmp 完整结构,根据此结构创建名字不同结构相同的表 test,再导入数据。
mysql> drop table tmp; mysql> create table tmp as select *from player; mysql> select count(*) from tmp; mysql> create table test like mytmp; ###通过LIKE方法,复制mytmp表生成test表 mysql> show create table test\G mysql> create table test (id hit(5) not null primary key,name varchar(10) not null) engine=InnoDB; mysql> select * from test; mysql> insert into test select * from mytmp; ##将mytmp表的数据写入test表
到底结束,感谢浏览