使用mysql -h hostname -P port -u username -p 输入密码登入进到mysql的命令行;注意一下,这里的-P port P是大小的;
目录
一、查看数据库总体的信息
1.常看mysql服务器的总体状况 status
如下,可一.常看数据库总体的信息;以看到mysql server的具体版本 默认的字符集,端口等信息
mysql> status;
Connection id: 46
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.25 MySQL Community Server (GPL)
Protocol version: 10
Connection: 127.0.0.1 via TCP/IP
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 6 days 1 hour 36 min 41 sec
Threads: 2 Questions: 1879 Slow queries: 0 Opens: 333 Flush tables: 2 Open tables: 189 Queries per second avg: 0.003
--------------
2.常看数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
5 rows in set (0.01 sec)
3.常看当前的的事物隔离级别
mysql> select @@tx_isolation;
+-----------------+
| @@tx_isolation |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set, 1 warning (0.00 sec)
4.查看系统相关的配置参数
show variables like "%time_zone"; “character” 等等;
二、创建具体的数据库相关
1.创建数据库
mysql> create database mydata;
Query OK, 1 row affected (0.00 sec)
2.使用该数据库
mysql> use mydata;
Database changed
3.查看当前使用的数据库
mysql> select database();
+------------+
| database() |
+------------+
| mydata |
+------------+
1 row in set (0.00 sec)
4.查看当前数据库使用的字符集,可以看到mydata数据库使用的字符集不是lantin 1
mysql> show create database mydata;
+----------+-------------------------------------------------------------------+
| Database | Create Database |
+----------+-------------------------------------------------------------------+
| mydata | CREATE DATABASE `mydata` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+-------------------------------------------------------------------+
1 row in set (0.00 sec)
5.修改数据库的字符集
mysql> alter database mydata default character set utf8;
Query OK, 1 row affected (0.00 sec)
6.全局修改 字符集的配置,只在当前会话session中有效
/*建立连接使用的编码*/ set character_set_connection=utf8; /*数据库的编码*/ set character_set_database=utf8; /*结果集的编码*/ set character_set_results=utf8; /*数据库服务器的编码*/ set character_set_server=utf8;
7.删除某个数据库,aaaa为数据库的名称
drop database aaaa;
三、表相关的创建、修改表、删除表
1.创建表
mysql> create table user(name varchar(20));
2.查看表结构
mysql> desc user;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
1 row in set (0.00 sec)
3.为已创建的表增加comment
mysql> alter table user comment="这是表的注释";
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
4.查看表的注释,这里解释一下,在mysql中information_schema库中的表tables含有创建表的信息
mysql> select table_name,table_comment from information_schema.tables where table_schema = 'mydata' and table_name ='user';
+------------+--------------------+
| table_name | table_comment |
+------------+--------------------+
| user | 这是表的注释 |
+------------+--------------------+
1 row in set (0.00 sec)
5.查看表的字符集
mysql> show create table user;
+-------+---------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+---------------------------------------------------------------------------------------------------------------------------+
| user | CREATE TABLE `user` (
`name` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='这是表的注释' |
+-------+---------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
6.修改表的字符集
alter table user default character set utf8;
7.给表增加一列
mysql> alter table user add age int;
8.更改现有列的数据类型
alter table user modify age varchar(20);
9.更改现有列的名称及其他
mysql> alter table user change age birthday varchar(50);
10.表中字段的常见数据类型
整数类型 :tinyint (1个字节) smallint(2个字节) mediumint (3个字节) int(4个字节) bigint(8个字节)
注意默认的int 类型时,使用desc user 会显示 int(11) 这个11是显示数据的长度,在 无符号unsigned的时候,可以使用0来补全,
但并不会限制数据的本身存储大小,即int类型还是可以存储int类型的大小的数据
比如int(5) 当你存放1的时候,可以使用无符号0补全 则得到的是00001
mysql> alter table user add tiny tinyint, add small smallint, add medium mediumint, add normal int, add big bigint;
浮点型:float, double ,decimal
alter table user add f float , add d double, add de decimal;
字符串型:
CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 各SET等多种字符串类型
这里最常用的就是varchar(n)这个n表示的存放字符的个数,并不是字节的个数,比如varchar(20) 字符集为utf8的话,就可以存放20个汉字,并不是20个字节,一个汉字占用3个字节.
varchar 和char 的区别就是varchar是变长的
varchar的最大长度为 varchar(21845) 21845是65535/3得来的,当还不满足需求的时候可以使用 text blob
日期类型: data time year timestamp datetime
mysql> alter table user add testdatetime datetime,add testtimestamp timestamp;
至此常用的数据结构如下
mysql> desc user;
+---------------+---------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------------+------+-----+-------------------+-----------------------------+
| name | varchar(20) | YES | | NULL | |
| birthday | varchar(50) | YES | | NULL | |
| tiny | tinyint(4) | YES | | NULL | |
| small | smallint(6) | YES | | NULL | |
| medium | mediumint(9) | YES | | NULL | |
| normal | int(11) | YES | | NULL | |
| big | bigint(20) | YES | | NULL | |
| f | float | YES | | NULL | |
| d | double | YES | | NULL | |
| de | decimal(10,0) | YES | | NULL | |
| testdatetime | datetime | YES | | NULL | |
| testtimestamp | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+---------------+---------------+------+-----+-------------------+-----------------------------+
需要的说明的是timestamp这种数据类型比较特殊,他是根据时区转换的,更改mysql 的时区,则他的值为改变,而datatime
更像是转化后以字符串的方式存储的,不会根据时区改变 ;
11.删除表
mysql> drop table mydrop;
表结构都删掉了
truncate tablename;
只删除数据,不删除表结构
四、关于表中数据的约束
1.主键,主键不能空,不能重复 ,一个表中只能有一个主键
添加一个主键
mysql> alter table user add primary key(name);
删除主键
mysql> alter table user drop primary key;
建立联合主键,两者都不能为空,各个参与的属性都不同的时候才算不同
alter table user add primary key(normal,name);
2.唯一约束 ,只能作用在一个列上
添加唯一性约束
mysql> alter table user add unique(f);
查看 唯一约束,和主键约束
show keys from user;
删除唯一性约束
drop index f on user;
3.一般索引
索引包括唯一索引、主键索引、一般索引,组合索引,全文索引;
唯一索引和主键索引已经介绍过了;
一般索引
创建索引
alter table user add index(f) 或 alter table user add index index_name (f) 默认的索引名就是该字段名
删除索引
drop index myindex on user;
组合索引的创建d,f列的组合索引
alter table user add index d_f (d,f);
注意一般的索引,可以相等,可以为null
4.tiny字段自增
alter table user modify tiny tinyint auto_increment;
5.设置默认值,是否为null,
alter table user modify small smallint not null default 111;