数据库基本操作命令
MySQL常用管理操作
- 查看数据库结构
- 创建及删除库和表
- 管理表的记录
mysql> show databases; #查看数据库列表
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql> use mysql; #切换到mysql库中
Database changed
mysql> show tables; #查看库里的表
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| engine_cost |
| event |
....省略
mysql> describe user; #显示数据表的结构(字段)
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(32) | NO | PRI | | |
| Select_priv | enum('N','Y') | NO | | N | |
SQL语言概述
- QL语言
- 是Structured Query Language的缩写,及结构化查询语言
- 是关系型数据库的标准语言
- 用于维护管理数据库,如数据查询,数据更新,访问控制,对象管理等功能
- SQL分类
- DDL:数据定义语言
- DML:数据操纵语言
- DQL:数据查询语言
- DCL:数据控制语言
SQL操作管理命令
DDL操作命令
-
DDL语句是什么作用
- DDL语句用于创建数据库对象,如库,表,索引等
-
DDL语句创建库,表的命令
- 创建数据库:create database 数据库名
- 创建数据表:create table 表名(字段定义…)
-
字段定义
create table表名(字段01名称 字段01类型 字段01约束,字段O2名称 字段02类型 字段02约束,…)
字段01名称:属性名称,自定义字段类型:
int(5) 整型 00000-99999
double 浮点型 8字节
decimal(5,2) 有效数字是5位 小数点后面保留2位 100.00 099.50
float单精度浮点 4字节
char(10) 固定长度字符串
varchar(50) 可变长度字符串
char 字符
字段01约束:
非空约束:内容不允许为空 not null
主键约束:非空且唯一标识 primary key
默认值:假如没有填数据,默认预先设定的值填写 default
自增特性: id 1234 auto increment
mysql> create database aaa; #创建名叫aaa库
Query OK, 1 row affected (0.00 sec)
mysql> use aaa #进入aaa库
Database changed
mysql> create table bbb( #创建表
-> name char(16)not null, #名称不为空,16个字符
-> passwd char(48) default '', #密码默认为空,密码48个字符
-> primary key(name)); #主键
Query OK, 0 rows affected (0.01 sec)
- DDL语句删除库,表的命令
- 删除指定的数据表:drop table [数据库名.]表名
- 删除指定的数据库:drop database 数据库名
DML操作命令
- DML语句用于对表中的数据进行管理
- insert:插入新数据
- update:更新原有数据
- delete:删除不需要的数据
向数据表中插入新的数据记录命令
insert into 表名(字段1,字段2,…)values(字段1的值,字段2的值,…)
mysql> create table test (id int(4) not null primary key,name char(10) not null,address varchar(50) default '666666');
#创建名为test的表,id为整形,4个字节且不为空,主键,名字10个字符不为空,地址默认66666,50个字符
Query OK, 0 rows affected (0.01 sec)
mysql> show tables;
+---------------+
| Tables_in_aaa |
+---------------+
| bbb |
| test |
+---------------+
2 rows in set (0.00 sec)
mysql> insert into test values(2,'王二','南京');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test values(1,'张三','上海');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test values(3,'李四','北京');
Query OK, 1 row affected (0.00 sec)
mysql> select * from test; #查看test表所有内容
+----+--------+---------+
| id | name | address |
+----+--------+---------+
| 1 | 张三 | 上海 |
| 2 | 王二 | 南京 |
| 3 | 李四 | 北京 |
+----+--------+---------+
3 rows in set (0.00 sec)
修改,更新数据表中的数据记录的命令
update 表名 set 字段名 1=值1[,字段名2=值2] where条件表达式
mysql> update test set name='麻子' where id=1 or id=2; #修改id1和id4的name
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> select * from test;
+----+--------+---------+
| id | name | address |
+----+--------+---------+
| 1 | 麻子 | 上海 |
| 2 | 麻子 | 南京 |
| 3 | 李四 | 北京 |
+----+--------+---------+
3 rows in set (0.00 sec)
mysql> update test set name='张三'; #不加where表示修改所有id的name
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> select * from test;
+----+--------+---------+
| id | name | address |
+----+--------+---------+
| 1 | 张三 | 上海 |
| 2 | 张三 | 南京 |
| 3 | 张三 | 北京 |
+----+--------+---------+
3 rows in set (0.00 sec)
在数据表中删除指定的数据记录命令
delete from 表名 where条件表达式
mysql> delete from test where id=3; #删除id是3的数据
Query OK, 1 row affected (0.00 sec)
mysql> select * from test;
+----+--------+---------+
| id | name | address |
+----+--------+---------+
| 1 | 张三 | 上海 |
| 2 | 张三 | 南京 |
+----+--------+---------+
2 rows in set (0.00 sec)
'不带where条件的语句表示删除表中所有记录(谨慎操作)'
查看表结构命令
mysql> desc test;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id | int(4) | NO | PRI | NULL | |
| name | char(10) | NO | | NULL | |
| address | varchar(50) | YES | | 666666 | |
+---------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
DQL操作命令
- DQL语句的作用
- DQL是数据查询语句,只有一条:SELECT
- 用于从数据表中查找符合条件的数据记录
不指定条件查询命令
SELECT字段名1,字段名2…FROM表名
mysql> select id,name from test;
+----+--------+
| id | name |
+----+--------+
| 1 | 张三 |
| 2 | 张三 |
+----+--------+
2 rows in set (0.00 sec)
指定条件查询的命令
SELECT字段名1,字段名2…FROM表名 WHERE条件表达式
mysql> select name,address from test where id=2;
+--------+---------+
| name | address |
+--------+---------+
| 张三 | 南京 |
+--------+---------+
1 row in set (0.00 sec)
mysql> select name,id from test where address='南京';
+--------+----+
| name | id |
+--------+----+
| 张三 | 2 |
+--------+----+
1 row in set (0.00 sec)
DCL操作命令
- DCL语句的作用是设置或查看用户的权限,或者创建用户
设置用户权限的命令
- 若用户已存在,则更改用户密码
- 若用户不存在,则新建用户
- GRANT 权限列表 ON 数据库名.表名 TO 用户名@来源地址 [IDENTIFIED BY ‘密码′ ]
mysql> grant all privileges on *.* to 'root'@'%' identified by 'abc123' with grant option;
#all privileges:所有权限,%:所有终端
Query OK, 0 rows affected, 1 warning (0.00 sec)
查看用户权限的命令
- SHOW GRANTS FOR 用户名@来源地址
mysql> show grants for 'root'@'%';
+-------------------------------------------------------------+
| Grants for root@% |
+-------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION |
+-------------------------------------------------------------+
1 row in set (0.00 sec)
撤销用户权限的命令
- REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址
mysql> revoke all privileges on *.* from 'root'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for 'root'@'%';
+----------------------------------------------------+
| Grants for root@% |
+----------------------------------------------------+
| GRANT USAGE ON *.* TO 'root'@'%' WITH GRANT OPTION |
+----------------------------------------------------+
1 row in set (0.00 sec)