数据库的五个基本单位

  1. 数据库服务器 db
  2. 数据库
  3. 数据表
  4. 数据字段
  5. 数据行

1数据库的操作命令

  • mysql -u root -h ip地址 -p 输入密码
  • -u 用户名
  • -p密码
  • -h ip地址

1.1数据库的创建

1创建数据库 如果存在报错
create database 数据库名称;

2如果数据库不存在创建,存在就不创建不报错 
create database if not exists 数据库名;

1.2查看数据库

1查看所有的数据库
show databases;

1.3删除数据库

警告不要删除mysql数据库密码权限都在里面
警告不要删除mysql数据库密码权限都在里面
警告不要删除mysql数据库密码权限都在里面


1删除数据库
show database 数据库名字;

1.4选中数据库

1在操作数据库时第一步先选中
use 数据库名称;

下方出现  这个代表选中成功
Database changed

2数据表操作

2.1查看数据表

1查看当前数据库下所有的数据表
show databases;  

2 desc 标明 查看表结构
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(10) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
						|外键否?|	
  字段名|  字段类型|可否为空| 主键否?|默认值|附加功能


3查看指定表的创建语句(也叫查看表结构)
show create table 表明;


+---------+-------------------------------------------------------------------------------------------+
| Table   | Create Table                                                                              |
+---------+-------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
  `id` int(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+---------+-------------------------------------------------------------------------------------------+
ENGINE 数据表用的搜索引擎 5.5.5以后默认 InnoDB
CHARSET  字符集编码

2.2数据表的创建

if not exists 有就不创建 没有就创建

1创建表(表结构)
creat table if not exists 表命(
字段名1 字段类型(字段长度) 限制条件(可有可无),
字段名2 字段类型(字段长度) 限制条件(可有可无),.....
字段名n 字段类型(字段长度) 限制条件(可有可无
);


我的栗子
 create table dog(
     dogid int(11)unsigned primary key auto_increment,
     dogname varchar(20) not null default "狗东西",
     dogmasterid int(11) not null unique,
     dogmastername char(14) comment "我有心爱的狗东西"
     )engine=INNODB CHARSET=utf8mb4;
     

字段限制  unsigned 数值无符号(int本来是(-2 147 483 648,2 147 483 647)加了无符号之后(0,4 294 967 295))
		 not null 非空
		 unique   唯一
		 comment  字段注释
		 primary key  主键 (自带唯一非空) auto_increment 自增
		 default 默认值
		 engine 指定表引擎默认就是5.5.5以上innodb
		 charset 设置编码字符集
	
		CASE       
			WHEN OD_DAYS =0 THEN "值1"	
			WHEN OD_DAYS BETWEEN 0 and 89 THEN "值n"
			else "值3" 
			END as 表字段,
		和if一样但是可以用来建表字段		

常用字段类型 
#整数
int()
float()
#字符串
char() 定长   说几个位置就占几个位子
varchar() 变长  说了很多位置  自己没用的补分可以给别人用

常用字符集
utf8_general_ci Unicode 多语言 不区分大小写

2.3删除数据表

1删除数据表
drop table 表名;

3数据表字段操作

  • column 可写可不写无意义
  • 修改表的操作 都是 alter table 开头
  • 修改表名 alter table oldname rename newname;

3.1增加表字段

mysql> desc dog;
+---------------+------------------+------+-----+---------+----------------+
| Field         | Type             | Null | Key | Default | Extra          |
+---------------+------------------+------+-----+---------+----------------+
| dogid         | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| dogname       | varchar(20)      | NO   |     | 狗东西  |                |
| dogmasterid   | int(11)          | NO   | UNI | NULL    |                |
| dogmastername | char(14)         | YES  |     | NULL    |                |
+---------------+------------------+------+-----+---------+----------------+

1 在指定字段后面增加字段 after 字段名 
alter table dog add money int(10) after dogid;

mysql> desc dog;
+---------------+------------------+------+-----+---------+----------------+
| Field         | Type             | Null | Key | Default | Extra          |
+---------------+------------------+------+-----+---------+----------------+
| dogid         | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| money         | int(10)          | YES  |     | NULL    |                |
| dogname       | varchar(20)      | NO   |     | 狗东西  |                |
| dogmasterid   | int(11)          | NO   | UNI | NULL    |                |
| dogmastername | char(14)         | YES  |     | NULL    |                |
+---------------+------------------+------+-----+---------+----------------+

2将字段添加到最上面
alter table dog add dogson enum("有崽子","没有崽子") not null  first;

mysql> desc dog;
+---------------+---------------------------+------+-----+---------+----------------+
| Field         | Type                      | Null | Key | Default | Extra          |
+---------------+---------------------------+------+-----+---------+----------------+
| dogson        | enum('有崽子','没有崽子') | NO   |     | NULL    |                |
| dogid         | int(11) unsigned          | NO   | PRI | NULL    | auto_increment |
| money         | int(10)                   | YES  |     | NULL    |                |
| dogname       | varchar(20)               | NO   |     | 狗东西  |                |
| dogmasterid   | int(11)                   | NO   | UNI | NULL    |                |
| dogmastername | char(14)                  | YES  |     | NULL    |                |
+---------------+---------------------------+------+-----+---------+----------------+

3.2修改表字段

mysql> desc dog;
+---------------+---------------------------+------+-----+---------+----------------+
| Field         | Type                      | Null | Key | Default | Extra          |
+---------------+---------------------------+------+-----+---------+----------------+
| dogson        | enum('有崽子','没有崽子') | NO   |     | NULL    |                |
| dogid         | int(11) unsigned          | NO   | PRI | NULL    | auto_increment |
| money         | int(10)                   | YES  |     | NULL    |                |
| dogname       | varchar(20)               | NO   |     | 狗东西  |                |
| dogmasterid   | int(11)                   | NO   | UNI | NULL    |                |
| dogmastername | char(14)                  | YES  |     | NULL    |                |
+---------------+---------------------------+------+-----+---------+----------------+

1重写表字段  关键词(change)
alter table dog change dogson dogeye varchar(16) default "黑森" first;

mysql> desc dog;
+---------------+------------------+------+-----+---------+----------------+
| Field         | Type             | Null | Key | Default | Extra          |
+---------------+------------------+------+-----+---------+----------------+
| dogeye        | varchar(16)      | YES  |     | 黑森    |                |
| dogid         | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| money         | int(10)          | YES  |     | NULL    |                |
| dogname       | varchar(20)      | NO   |     | 狗东西  |                |
| dogmasterid   | int(11)          | NO   | UNI | NULL    |                |
| dogmastername | char(14)         | YES  |     | NULL    |                |
+---------------+------------------+------+-----+---------+----------------+

2不改变表字段名字只修改表字段类型 关键词(modify)
alter table dog modify dogeye char(10) not null default "紫色";
mysql> desc dog;

+---------------+------------------+------+-----+---------+----------------+
| Field         | Type             | Null | Key | Default | Extra          |
+---------------+------------------+------+-----+---------+----------------+
| dogeye        | char(10)         | NO   |     | 紫色    |                |
| dogid         | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| money         | int(10)          | YES  |     | NULL    |                |
| dogname       | varchar(20)      | NO   |     | 狗东西  |                |
| dogmasterid   | int(11)          | NO   | UNI | NULL    |                |
| dogmastername | char(14)         | YES  |     | NULL    |                |
+---------------+------------------+------+-----+---------+----------------+

数据表中数据的操作

  • show engines 查看数据库中所有支持的引擎
  • \G 以最佳体验观看
myisam、innodb 区别
  1. myisam不支持事务 表锁 支持全文索引 不支持外键 读取效率高 如果你这张表读的多那么选择 myisam 引擎 更好
  2. myisam只缓存索引文件 数据文件的缓存 由 操作系统来完成
  3. innodb 支持事务、行锁 、支持外键

mysql 查出来的数据显示整数 mysql如何显示001_mysql 查出来的数据显示整数