mysql 数据库

数据库的操作

五个单位

  • 数据库服务器 Linux或者 windows
  • 数据库
  • 数据表
  • 数据字段
  • 数据行

连接数据库

1.windows  win+R 打开cmd  mysql -u root -p  -u 用户名 -p 密码linux  也是 mysql -u root -p2. 可视化工具  navicat

创建数据库 database

mysql> create database python06;    #分号结束  如果不写代表一直输入 直到 遇到分号
Query OK, 1 row affected (0.01 sec)  ok表示创建成功

查看数据库

show databases; #查看数据库  databases 全部数据库  这里是复数  

选中数据库

use 数据库名字;mysql> use python1806;
Database changed   #表示被选中

查看数据库中的数据表 table 表

1.先选中数据库
2.show tables;#列出所有的数据表

删除数据库

drop database 数据库名;
mysql> drop database python06;
Query OK, 0 rows affected (0.06 sec

数据表的操作

创建表

create table 表名(字段名 类型(长度),字段1 类型(长度));mysql> create table users(id int(11),name char(64),age int(4));
Query OK, 0 rows affected (0.02 sec)

查看表结构

mysql> desc user;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(64) | YES  |     | NULL    |       |
| age   | int(4)      | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

删除表

mysql> drop table users;
Query OK, 0 rows affected (0.07 sec)

创建表 指定 引擎 和 字符集

mysql 引擎  myisam  innodb
字符集  utf-8
create table 表名(id int(11))engine=MyISAM default charset=utf8;
mysql> create table user(id int(11),name varchar(64),age int(4))engine=Myisam default charset=utf8;
Query OK, 0 rows affected (0.22 sec)mysql> show create table user;  #查看表的创建过程
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                           |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| user  | CREATE TABLE `user` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(64) DEFAULT NULL,
  `age` int(4) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)mysql> show create table info;#如果说创建表 不指定引擎  mysql5.7的默认引擎是 innodb  5.7以前是myisam
+-------+---------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                              |
+-------+---------------------------------------------------------------------------------------------------------------------------+
| info  | CREATE TABLE `info` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(64) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+---------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

数据字段的操作 alter table 表名

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(64) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
field  字段名
type   字段类型
null   是否为空
key    是否为主键
default 默认值
extra   额外信息 备注信息 desc 表名;查看表结构  

增加表字段 add column

mysql> alter table info add column age int(4);
alter table 表名 add column 字段名 类型(长度);

增加表字段的时候 控制字段顺序 after

alter table 表名 add 字段名  字段类型(长度) after 指定字段名;mysql> alter table info add sex int(1) after name;  将新增加的字段 添加到 name后边 新增字段 放到第一个位置  mysql> alter table info add infoid int(11) first; #不加first 会添加到最后一行   

删除表字段 drop column

alter table 表示 drop column 字段名;
mysql> alter table info drop column infoid;

表字段改名 change

mysql> alter table info change infos infomations char(64);
alter table 表名 change 原字段名 新字段名 类型(长度);

修改表字段类型 modify 修改类型

alter table 表名 modify 字段名 新类型(长度);
mysql> alter table info modify name char(32);

调整字段的顺序 modify

mysql> alter table info modify infomations char(64) first; #没有second  last alter table 表名 modify 字段名 类型(长度) first;   #这里的类型长度不需要非得原来的类型和长度  可以自己重新定义  但是不要瞎自定义  

修改表名 rename

alter table 表名 rename 新名字;

mysql 数据类型

  • 数值类型(整型 浮点型)
  • 字符串
  • 日期时间
  • 符合类型
  • 空间类型 (用来科学计算)

整型

类型 所占字节 范围
int 4
tinyint 1 -128~127
smallint 2 -32768-32767
mediumint 3
bigint 8

在开发过程中 性别 不存男女 存 0 男 1 女 2 未知

年龄 没有负数

浮点型

类型 所占字节 范围
float(m,d) 4 单精度 m 表示长度 d 小数点位数
double(m,d) 8 双精度 m表示长度 d表示小数点位数
decimal ‘123.456789’ 存储字符串的浮点数

decimal定点数 如果某个字段 精度要求比较高 比如银行金额 就选用decimal

字符类型

类型 所占字节 长度
char 0-255 定长
varchar 0-255 变长
tinyblob 0-255 二进制短文本字符串
blob 0-65535 二进制形式的长文本数据
text 0-65535 长文本数据
tinytext 0-255 短文本数据
mediumtext 中等长度文本
mediumblob 中等二进制形式文本
longtext 极长文本
longblob 极长二进制文本

char 定长 占据0-255 字节超过 被忽略 不足255 用空格填补上

varchar 也是占据0-255个字节 超过255 个字节被忽略 不足255个字节 不用空格补 能够节约磁盘空间 提高效率

可以根据实际内容 动态的修改 存储的长度

blob 图像 声音 二进制类型 可以使用blob 来存储 blob 里边内容严格区分大小写

text 不区分大小

时间类型

数据类型 所占字节 范围
date 3 2018-09-04
time 3 11:35:43
datetime 8 2018-09-04 11:35:43
timestamp 4 自动存储记录修改的时间
year 1 年份

一般存储时间 不存储 2018-09-04 11:35:43 存时间戳

土豪 也可以用 datetime 直接存储

复合类型

类型 说明 举例
set 集合类型 set(“member1”,”member2”,”member3”)
enum 枚举类型

enum只能从集合中取 一个值 单选框

set 允许从集合中取任意多个值

类型的使用

unsigned 无符号的意思 表示该字段 只能是整数 比如 id age id int(11) unsigned

zerofill age int(4) zerofill

not null id int(11) not null

null 精确说法是无 不是空字符串 0 一般在创建整型或者浮点型字段的时候 声明 not null 即可

字符集

中文 英语 法语 俄语 德语 日语 需要对常用的符号进行编码 这个编码就是字符集 字符集就相当于 计算机中 人类的语言

比如 说的英文 用英文存储 说过说的是中文 用英文来存储的话 看不懂

  • 常用的字符集
  • 数据库用什么字符集即可

ASCII码 单字节

GBK 双字节

Unicode 4个字节 万国码 容纳世界上 所有文字和符号的字符编码方案 能够跨语言 跨平台

utf-8 1-6分字节 针对 Unicode 可变字符编码

实际工作用 需要的 编码

  • gbk_chinese_ci 简体中文 不区分大小写
  • utf8_general_ci unicode 多语言 不区分大小写

表 引擎

引擎名称 说明
myisam 常用引擎 读的效率高 不支持事务 表锁 支持全文索引
innodb 支持事务 数据安全性高 行锁

如果你这张表 用来 读 写 那 选择myisam 引擎

如果你这张表 经常更新 删除 选择 innodb 引擎

索引

  • 普通索引 最基本的索引 没有任何限制
  • 唯一索引 要求该字段对应的列 不能有重复值 年龄 性别 不能添加唯一索引
  • 主键索引 特殊的唯一索引 要求这一列不能有重复值 不能为空
  • 复合索引 所谓的复合索引就是 对多个字段同时添加索引
  • 全文索引 需要对数据全局搜索 需要添加全文索引

普通索引

alter table 表名  add index(字段);mysql> alter table user add index(name);
show index from 表名;查看数据表所有的索引
mysql> alter table user drop index name; #删除索引
mysql> alter table user add index in_name(name); #添加索引的同时 起名字
mysql> alter table user drop index in_name;

唯一索引

 alter table user add unique(name);mysql> alter table user add unique un_name(name);  un_name 是索引的名字
Query OK, 0 rows affected (0.08 sec)
Records: 0  Duplicates: 0  Warnings: 0show index from 表名\G   \G表示最佳阅读体验阅读   写了\G就不要写;

主键索引

alter table user drop primary key; #删除主键索引 如果说 主键自动递增  会删不掉
需要先 消除主键自增   mysql> alter table user modify id int(11) unsigned not null;#消除自增
mysql> alter table user drop primary key; #再次删除  ok
mysql> alter table user add primary key(id); #添加主键索引   mysql> alter table user modify id int(11)  unsigned not null auto_increment;#让主键自动递增
auto_increment 要放到 unsigned 后面

全文索引

mysql> alter table user add column contents text;alter table  user add fulltext(字段名);
mysql> alter table user add fulltext(contents);
mysql> alter table user drop index contents;

创建表的时候直接声明索引

create table test(id int(11) unsigned not null,username varchar(20) not null,password char(32) not null,content text,primary key(id),index pw(password),unique un_name(username),fulltext quanwen(content)
)engine=myisam default charset=utf8;

语句的操作 增删改查

增 insert

1.insert into 表名 values(值1,值2,值3,值4);  有多少个字段  就必须插入多少个值  一个不能多 一个不能少  如果有默认值  你不想传 写null 即可  2.insert into 表名(字段1,字段2,字段3,字段4) values(值1,值2,值3,值4);
本来有5个字段   其中一个字段有默认值   可以只写 4个字段   对应的值 写4个即可  mysql> insert into test values(1,'hahahaha','123abc','太阳出来东方亮');
Query OK, 1 row affected (0.00 sec)mysql> insert into test(id,password) values(2,'123321');
Query OK, 1 row affected (0.00 sec)

批量插入

create table users(id int(11) unsigned not null primary key auto_increment,username char(64) not null,password char(60),email char(64) not null,sex tinyint not null)engine=innodb default charset=utf8;mysql> insert into users(username,email,sex) values
('canglaoshi','cang@126.com',1),
('sicong','cong@wanda.com',1),
('dongge','dong@jd.com',1),
('mochameimei','mocha@126.com',1);

查询 select

select 'zelinx'; #类似于Linux中的 echo 'zelinx';
create table money(id int(11) unsigned not null primary key auto_increment,username varchar(50) not null,balance float(8,2) not null,province varchar(20) not null,age tinyint unsigned not null,sex tinyint not null
)engine=Myisam default charset=utf8; INSERT INTO `money` (`id`, `username`, `balance`, `province`, `age`, `sex`) VALUES ('9', '薛之谦', '88888.12', '上海', '30', '0');

基础查询

select * from 表名;
* 正则表达式写法  匹配所有   显示所有字段的信息 mysql> select * from money;
+----+--------------+-----------+-----------+-----+-----+
| id | username     | balance   | province  | age | sex |
+----+--------------+-----------+-----------+-----+-----+
|  1 | 泽林兄       |  88888.12 | 辽宁      |  19 |   0 |
|  2 | 秋林兄       |  66666.45 | 黑龙江    |  18 |   0 |
|  3 | 王思聪       |  99999.99 | 北京      |  30 |   0 |
|  4 | 刘强东       |  99999.66 | 江苏      |  40 |   0 |
|  5 | 抹茶妹妹     |  77777.66 | 浙江      |  30 |   1 |
|  6 | 范冰冰       |  77777.31 | 山东      |  40 |   1 |
|  7 | 李晨         | 666666.12 | 北京      |  30 |   0 |
|  8 | 魏缨络       |   7777.13 | 上海      |  29 |   1 |
|  9 | 薛之谦       |  88888.12 | 上海      |  30 |   0 |
+----+--------------+-----------+-----------+-----+-----+
9 rows in set (0.00 sec)

 指定字段查询 

mysql> select id,username,balance from money;
+----+--------------+-----------+
| id | username     | balance   |
+----+--------------+-----------+
|  1 | 泽林兄       |  88888.12 |
|  2 | 秋林兄       |  66666.45 |
|  3 | 王思聪       |  99999.99 |
|  4 | 刘强东       |  99999.66 |
|  5 | 抹茶妹妹     |  77777.66 |
|  6 | 范冰冰       |  77777.31 |
|  7 | 李晨         | 666666.12 |
|  8 | 魏缨络       |   7777.13 |
|  9 | 薛之谦       |  88888.12 |
+----+--------------+-----------+
9 rows in set (0.00 sec)

2000条 及以内数据 查询 不需要添加索引 添加索引反而累赘

2000条以上的数据要是提高查询速度 需要添加索引   

查询 单个字段 不重复记录

mysql> select distinct age from money;
+-----+
| age |
+-----+
|  19 |
|  18 |
|  30 |
|  40 |
|  29 |
+-----+
5 rows in set (0.00 sec)mysql> select distinct age,id,username from money; #不重复失效
+-----+----+--------------+
| age | id | username     |
+-----+----+--------------+
|  19 |  1 | 泽林兄       |
|  18 |  2 | 秋林兄       |
|  30 |  3 | 王思聪       |
|  40 |  4 | 刘强东       |
|  30 |  5 | 抹茶妹妹     |
|  40 |  6 | 范冰冰       |
|  30 |  7 | 李晨         |
|  29 |  8 | 魏缨络       |
|  30 |  9 | 薛之谦       |
+-----+----+--------------+
9 rows in set (0.00 sec)

条件查询

mysql> select * from money where age=30;
+----+--------------+-----------+----------+-----+-----+
| id | username     | balance   | province | age | sex |
+----+--------------+-----------+----------+-----+-----+
|  3 | 王思聪       |  99999.99 | 北京     |  30 |   0 |
|  5 | 抹茶妹妹     |  77777.66 | 浙江     |  30 |   1 |
|  7 | 李晨         | 666666.12 | 北京     |  30 |   0 |
|  9 | 薛之谦       |  88888.12 | 上海     |  30 |   0 |
+----+--------------+-----------+----------+-----+-----+
4 rows in set (0.00 sec)

where 条件

符号 说明
>
<

=

<=
!=
=
or 或者
and 并且
mysql> select id,username from money where id<9 and province='北京';
+----+-----------+
| id | username  |
+----+-----------+
|  3 | 王思聪    |
|  7 | 李晨      |
+----+-----------+

结果集排序 order by

  • desc 倒序排列
  • asc 正序排列
mysql> select id,username,balance,province from money order by balance desc;
+----+--------------+-----------+-----------+
| id | username     | balance   | province  |
+----+--------------+-----------+-----------+
|  7 | 李晨         | 666666.12 | 北京      |
|  3 | 王思聪       |  99999.99 | 北京      |
|  4 | 刘强东       |  99999.66 | 江苏      |
|  1 | 泽林兄       |  88888.12 | 辽宁      |
|  9 | 薛之谦       |  88888.12 | 上海      |
|  5 | 抹茶妹妹     |  77777.66 | 浙江      |
|  6 | 范冰冰       |  77777.31 | 山东      |
|  2 | 秋林兄       |  66666.45 | 黑龙江    |
|  8 | 魏缨络       |   7777.13 | 上海      |
+----+--------------+-----------+-----------+
9 rows in set (0.00 sec)

多字段 排序

mysql> select id,username,balance,age,province from money order by balance desc,age asc;
+----+--------------+-----------+-----+-----------+
| id | username     | balance   | age | province  |
+----+--------------+-----------+-----+-----------+
|  7 | 李晨         | 666666.12 |  30 | 北京      |
|  3 | 王思聪       |  99999.99 |  30 | 北京      |
|  4 | 刘强东       |  99999.66 |  40 | 江苏      |
|  1 | 泽林兄       |  88888.12 |  19 | 辽宁      |
|  9 | 薛之谦       |  88888.12 |  30 | 上海      |
|  5 | 抹茶妹妹     |  77777.66 |  30 | 浙江      |
|  6 | 范冰冰       |  77777.31 |  40 | 山东      |
|  2 | 秋林兄       |  66666.45 |  18 | 黑龙江    |
|  8 | 魏缨络       |   7777.13 |  29 | 上海      |
+----+--------------+-----------+-----+-----------+
9 rows in set (0.00 sec)上面 按照 余额 降序  年龄升序
如果  第一个字段  已经拍好了  那么第二个字段就失效
如果第一个字段 排不好  第二个就生效   

限制结果集 limit 数据行 行数

mysql> select id,username,balance,age,province from money order by balance desc,age asc limit 5;
+----+-----------+-----------+-----+----------+
| id | username  | balance   | age | province |
+----+-----------+-----------+-----+----------+
|  7 | 李晨      | 666666.12 |  30 | 北京     |
|  3 | 王思聪    |  99999.99 |  30 | 北京     |
|  4 | 刘强东    |  99999.66 |  40 | 江苏     |
|  1 | 泽林兄    |  88888.12 |  19 | 辽宁     |
|  9 | 薛之谦    |  88888.12 |  30 | 上海     |
+----+-----------+-----------+-----+----------+
5 rows in set (0.00 sec)将结果限制为 5行 

mysql 数据库1相关推荐

  1. .net连接mysql数据_.net连接MYSQL数据库的方法及示例!

    连接MYSQL数据库的方法及示例 方法一: 使用MYSQL推出的MySQL Connector/Net is an ADO.NET driver for MySQL 该组件为MYSQL为ADO.NET ...

  2. MySQL数据库+命令大全+常用操作

    格式:mysql -h主机地址 -u用户名 -p用户密码 1. 例:连接到本机上的MYSQL 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示 ...

  3. mysql数据库是一个软件呐_15款好用的mysql管理软件

    1. Induction Induction是一款用于理解数据关系的开源管理工具,它可用来探索行/列,运行查询和数据可视化等方面.该工具支持多种数据库,包括PostgreSQL,MySQL,SQLit ...

  4. c语言连接数据库例子,c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual help).doc...

    这是精心收集的精品经典资料,值得下载保存阅读! c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual h ...

  5. C语言对mysql数据库的操作

    C语言对mysql数据库的操作 原文:C语言对mysql数据库的操作 这已经是一相当老的话题.不过今天我才首次使用,把今天的一些体会写下来,也许能给一些新手带来一定的帮助,更重要的是供自己今后忘记的怎 ...

  6. JDBC连接MySQL数据库及演示样例

    JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...

  7. python用django连接mysql_三分钟了解Django如何连接Mysql数据库

    处理用户注册请求.Django连接MysqL数据库相关配置.数据库迁移命令: my_Dproject/app01/views.py    在views函数文件中添加register函数,来处理用户注册 ...

  8. mysql数据库比对视频教程_MySQL数据库全学习实战视频教程(27讲 )

    一)mySQL数据库简介:MySQL属于关系型数据库,是当前最流行的关系型数据库管理系统之一,在WEB项目使用方面,MySQL是最好的 RDBMS应用软件. 二)本mySQL数据库视频教程目录如下:  ...

  9. eclipse关闭mysql数据库,有关于用eclipse连接mysql数据库出现的问题以及解决办法

    写帖子是为了让更多的程序员减少再调试bug中的时间,也希望大家能一起把自己遇到的错误及解决方法写出来.我是一个刚开始学java的大二学生,用的是<java开发实战经典>.在写p646的程序 ...

  10. bd2和mysql语法区别,经验:在MySQL数据库中,这4种方式可以避免重复的插入数据!...

    最常见的方式就是为字段设置主键或唯一索引,当插入重复数据时,抛出错误,程序终止,但这会给后续处理带来麻烦,因此需要对插入语句做特殊处理,尽量避开或忽略异常,下面我简单介绍一下,感兴趣的朋友可以尝试一下 ...

最新文章

  1. [项目实施失败讨论Case] “凭心而论,在这家公司很敬业的工作了3年多,老板最后给我下的评语,大家都看看吧,千万别和我走同一条路!”(摘自csdn)...
  2. WebService基于SoapHeader实现安全认证[webservice][.net][安全][soapheader]
  3. 音频管理_人力资源管理师考试历年真题试卷+视频教程+音频讲义合集分享
  4. ubuntu下安装mysql
  5. 2019 Flink Forward 大会最全视频来了!(附PPT下载) | 5大专题不容错过
  6. oracle同步数据adg_数据库周刊31丨华为openGauss 正式开源;7月数据库排行榜发布......
  7. 六石管理学:流程是为工作服务的
  8. SharePlex数据库复制解决方案
  9. 40_ZYNQ7020开发板RS485协议通信
  10. Spring Boot 实现在线Web SSH( Java Web版本的Xsehll)
  11. 《圈子圈套3》读后感
  12. 20分钟让你阅读速度提高3倍
  13. 广告条幅制作html,一种广告设计用的条幅收卷装置的制作方法
  14. signingConfigs
  15. 智能多模式,视线追踪控制界面的应用(翻译)
  16. 网红KOL营销怎么做?如何寻找合适的网红KOL?
  17. 新版Edge检查项F12控制台改为英文
  18. 在Docker中使用Python Selenium和Headless Chrome进行网站自动化测试的方法
  19. 井柏然自己的字体,手写语录合集
  20. Java实现简易计算器

热门文章

  1. 深度学习 计算机视觉中的注意力机制
  2. Java Servlet 详解:(三)在 IDES 中开发 Servlet-多图警告
  3. Rails部署云环境配置(Passenger+Apache)
  4. 基于LSTM + keras 的古诗生成器
  5. Mtk WIFI常用调试命令
  6. 华为路由器联动_老旧空调不用拆,95块入手华为智选空调伴侣,秒变智能空调透心凉...
  7. 到底什么才是边缘计算?
  8. 计算机word画铁路,利用WORD画地图
  9. 机器学习算法面经(阿里京东拼多多百度等)
  10. URL 的参数(query)是什么,以及如何解析获取