目录
一、查看数据库结构
1.1、查看已存在数据库信息
[root@server1 ~]# mysql -uroot -p (进入MySQL数据库)
mysql> show databases; (查看已存在数据库信息)
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql | (查看结果的现象,解释如下)
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql默认4个数据库
information_schema:定义访问数据库元数据的方式。数据库名和表名,列的数据类型、访问权限等。
mysql:核心数据库,负责存储数据库用户、权限、关键字等用户自己需要使用的控制和管理信息。
performance_schema:数据库的性能参数,存储引擎等。
sys:sys系统库下包含许多视图,它们以各种方式对preformance_schema表进行聚合计算展示。
1.2、查看数据库表信息
mysql> use mysql; (use是语句,加数据库名)
Database changed (现象为:数据库已更改)
mysql> show tables; (查看这个数据库中有哪些表)
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| engine_cost |
| event |
| func |
| general_log |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| server_cost |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
31 rows in set (0.00 sec) (一共31行,就是有31个表)
1.3、显示数据表的结构(字段)
mysql> describe user; (describe加表名称,就是查询数据表的结构字段)
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field (字段 | Type (字段信息) | Null(是否为空) | Key(主键值) | Default (默认字段) | Extra |(附加字段)
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(32) | NO | PRI | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
| Create_tablespace_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
| plugin | char(64) | NO | | mysql_native_password | |
| authentication_string | text | YES | | NULL | |
| password_expired | enum('N','Y') | NO | | N | |
| password_last_changed | timestamp | YES | | NULL | |
| password_lifetime | smallint(5) unsigned | YES | | NULL | |
| account_locked | enum('N','Y') | NO | | N | |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
45 rows in set (0.00 sec)
二、SQL语言概述
2.1、SQL语言简介
1、Structured Query Language的缩写,即结构化查询语言
2、关系型数据库的标准语言
3、用于维护管理数据库
包括数据查询、数据更新、访问控制、对象管理等功能
2.2、SQL分类
1、DDL:(Data Definition Language,数据定义语言):用来建立数据库、数据库对象和定义字段,如CERATE、ALTER、DROP。
2、DML:(Data Manipulation Language,数据操纵语言):用来插入、删除和修改数据库中的数据,如INSERT、UPDATE、DELETE。
3、DQL:(Data Query Language,数据查询语言):用来查询数据库中的数据,如SELECT。
4、DCL:(Data Control Language,数据控制语言):用来控制数据库组件的存取许可、存取权限等,如COMMIT、ROLLBACK、GRANT、REVOKE。
2.3创建数据库和表
1、DDL语句可用于创建数据库对象,如库、表、索引等
2、使用DDL语句新建库、表示例
mysql> create database xml; (创建新的数据库)
Query OK, 1 row affected (0.00 sec) (查询OK, 1行受影响(0.00秒))
mysql> use xml; (使用数据库xml)
mysql> create table info (id char(16) not null,passwd char(48) default'',primary key(id)); (创建新数据表)
mysql> desc xml.info; (查看数据表的结构字段)
+--------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| id | char(16) | NO | PRI | NULL | |
| passwd | char(48) | YES | | | |
+--------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
格式:
create table 表名(字段01名称 字段01类型 字段01约束,字段02名称 字段02类型 字段02约束,…)存储引擎,字符集
字段名称、类型、约束解释:
字段01名称:属性名称,自定义
字段01类型:int(4) 整型 代表0000-9999
double 浮点型
decimal(5,2)有效数字是5位,小数点后面保留2位 100.00;099.50
float 单精度浮点 4字节
char 字符
char (10)固定长度字符串,字符串要用单引号引起来
varchar(50)可变长度字符串
字段01约束:
非空约束:内容不允许为空 not null
主键约束:非空且唯一 标识 primary key(主键)
默认约束:假如没有填数据,默认预先设定的值填写 default ‘未知’
自增特性:id 1 2 3 4 auto_increment(自动增长)
存储引擎:myisam innodb
字符集:UTF-8
2.4、删除数据库和表
1、删除表
mysql> drop table xml.info; (删除数据表xml)
2、删除数据库
mysql> drop database xml; (删除数据库xml)
三、管理数据表中的数据
DML语句用于对表中的数据进行管理
包括的操作
insert:插入新数据
update:更新原有数据
delete:删除不需要的数据
注意:对数据的操作用DELETE,对库和表用drop
3.1、向数据表中插入新的数据内容
完整格式:insert into info (字段1,字段2) values (字段1的值,字段2的值)
1、加字段
2、不加字段,默认是所有字段,每个字段都要写
3、查看添加的信息

3.2、修改、更新数据表中的数据记录
格式:update 表名 set 字段名1=值1,字段名2=值2 where 条件表达式
修改用户密码

3.3、在数据库中删除指定的数据记录
格式:delete from 表名 where 条件表达式(不带where代表删除表中所有记录)

3.4、数据库高级操作
1、清空表
delete from info;
truncate table info;
truncate清空表,表还在;drop是删除表中所有记录。
truncate和delete是两者的新值初始id不同。
2、临时表
临时建立的表,用于保存一些临时数据,不会长期存在

mysql> create temporary table temp_info(id int(4) 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;
innodb 支持事务;写在括号外面的是对整张表的设定。
show tables;看不到临时表

3、克隆表
like方法:从info表完整复制结构生成test表

导入数据
新建一个tmp表,读取test表中的所有内容放入tmp表

3.5、数据库用户授权
1、DCL语句设置用户权限(用户不存在时,则新建用户)
#设置登录密码为abc123的lisi用户,可以从任意终端登录,对所有库和所有表有全部权限
#设置登录密码为abc123的tom用户,可以从本地终端登录,对mysql库中的user表有select权限

2、查看用户的权限
查看当前用户的权限

查看从本地登录的tom用户的权限
查看当前系统中的用户

3、撤销用户的权限

grant:当用户已存在时,直接提权。
当用户不存在时,先创建用户,再提权。
revoke:只撤销权限,不删除用户