sql---->sql-summary&mysql-summary
数据库操作:
1。创建数据库,并修改默认字符编码
create database 数据库名 [charset=字符编码];
ee:
create database dog charset=utf8;
ps:
1.1。如果数据库已经存在,那么会报错。可以通过下面的语句来创建数据库:
create database if not exists 数据库名;
其实就是在创建数据库的时候判断一下是否之前已经存在该数据库了。
1.2。如果想要创建一个用关键字命名的数据库,可以用反引号来创建。反引号的位置在数字1的左边,
一定要在英语半角格式下使用才生效。
ee:
create database `database`;
2。查询数据库
show databases;
ps:
database是复数的,不然会报错。
3。显示数据的创建语句,可以看到编码格式的
show create database 数据库名;
ee:
4。更改数据库
字符编码和数据库引擎
alter database 数据库名 [目标参数]
ee:
alter database dog charset=gbk;
5。删除数据库
drop database 数据库名;
ee:
drop database dog;
ps:
如果删除不存在的数据库会报错,最好是在操作之前先判断一把。
drop database if exists 数据库名;
6。选择数据库
use 数据库名;
ee:
use dog;
数据库表的操作
关系: 行---记录 列---字段
1。创建表
create table 表名(
主键字段 数据类型1 [null/not null] [default] [auto_increment] [primary key],
非主键字段 数据类型2,
...........
);
ps:
主键:非空唯一
数据库中只有字符,没有字符串的概念
用关键字做表名需要加反引号,用关键字做字段名需要加反引号,跟上面用关键字做数据库名做法一致.
数据类型: int /char(定长) /varchar(可变长)/text(大文本)/decimal(总位数,小数点后位数)
ee:
1.1 电话号码---varchar //性别---char //年龄---int/tinyint(max:255) //照片---不用binary,数据中只存储照片的路径
薪水---decimal //QQ---varchar //手机号---char
1.2 姓名---not null // 地址---not null //邮件---null //成绩---null
2。查看表
show tables;
ps:
tables是复数的。
3。查看已创建表(可显示表的详细信息)
show create table 表名 \G
ee:
show create table dog \G
ps:
\G: 表示table字段和create table字段的排列方式变成竖立的形式
未使用\G 时的表的明细截图:(ps:不加";")
从创建数据库到创建表过程截图:
漏了一点,还有就是能知道创建表的名字
4。显示表结构
describe 表名;
或者使用缩写形式的指令查询,效果是一样的:
desc 表名;
ee:
desc dog;
5。删除表
drop table 表名;
可以删除多个表,当有外键关系约束时,要注意删除顺序,先删除包含外键的从表,再删除主表。
drop table 表名1,表名2,...;
ee:
drop table dog;
drop table t1,t2,t3;
ps:
latin 2个字符一个中文
utf8 1个字符一个中文
latin编码环境下输入中文会导致无效值
6。查询字符编码:
show variables like 'character_set_%';
数据操作
1。插入数据(增)
insert into 表名(字段名1,字段名2,......,字段名n) values(值1,值2,......,值n)
或者:(必须插入的值和数据表的字段顺序和个数都一致):
insert into 表名 values(值1,值2,......,值n)
自动增长主键id插入数据:(主键必须设置为null):
insert into 表名(id,字段名2,......,字段名n) values(null,值2,......,值n)
ps:
细节:
1.1。插入的字段可以和数据库中的字段顺序不一致,但是值必须和插入的字段的顺序保持高度一致,否则会报错。
ee:
insert into dog(id,name) values(1,'tom');
1.2。插入字段是可以省略的,插入的值和数据表的字段顺序和个数都一致
ee:
insert into dog values(1,'tom');
1.3。自动增长的主键id,在插入数据时可以id字段用null表示
ee:
insert into dog values(null,'tom');
1.4。插入默认值(字段有指明使用默认值的时候)
ee:
insert into dog values(2,default);
2。删除数据(删)
delete from 表名 where 条件
delete和drop的区别
delete表示将表中的数据全部删除,但是表的字段仍存在。
drop表示表的所有信息全部被删除。
ps:
auto_increment 这个机制,当表中的记录被删除时,自动增长的记录不将再是被删除的记录的id号,
被删除得那条记录可以通过数据库的日志恢复
3。查询数据(查)
select 列名 from 表名 [where 条件] [order by 排序 asc|desc] [limit 分页参数(起始位置,查询的记录数)];
模糊查询:
select 列名 from 表名 where 字段名1 like '%参数%';
ps:
* 表示所有字段
asc 表示升序
desc 表示降序
(默认是按照升序排列)
模糊查询时,模糊部分必须加单引号!!!
limit 的使用细节
ee:
select * from dog limit 3; #限制取前3条记录
select * from dog limit 0,3; #和上面的语句等价
数据库中第一条记录的位置是标记为0.
补充: mysql运算符
比较运算符:>, >=, <, <=, =, <>(不等于)
逻辑运算符:and,or,not
4。修改数据(改)
update 表名 set 字段名1=值1,字段名2=值2,字段名3=值3 where 条件
一些问题:
主键列输入的数值,不允许为空;
一个表不可以有多个主键,但是主键可以由多个列组成;
标识列(自动增长列)不能为字符数据类型(数字自动增长);
聚合函数
sum(),avg(),max(),min(),count()
括号内带参数,参数是数据库表的字段名
查看本机上数据库的位置:
show global variables like "%datadir%";
2019-02-25 13:01:36
数据定义语言(DDL,data definition language) ,操作对象是数据库和表。
修改表的语句,修改的粒度:表名,字段,字符集。
1 修改表的名称(rename to)
alter table 原表名 rename to 新表名;
rename table 原表名 to 新表名;
例: alter table user rename to users;
2 修改表的编码字符集。(character set )
alter table 表名 character set 字符集;
例:alter table users character set gbk;
3 向表中添加新的列。(add)
alter table 表名 add <column> 列名 列的数据类型 [<列的完整性约束>];//column可省略
例: alter table user add `like` varchar(256); //注意字段处的引号
4 修改表中的某一列。
a)修改表中某一列的列名(同时可修改列的数据类型)(change)
mysql>alter table 表名 change 原列名 新列名 原列数据类型; // 必须指定原列的数据类型
例, alter table user change `like` `likes` varchar(256);
b)修改表中某一列的数据类型(modify)
alter table 表名 modify 列名 列新的数据类型;
例,alter table user modify `likes` varchar(128);
5 删除表中的某一列。(drop)
alter table 表名 drop <column> 列名; //column可省略
例: alter table user drop `likes`;
修改表的字符集时,将表的字符集设置为gbk,但是出现一个问题,字段的字符集仍然使用的是utf-8
使用下面的语句可以将所有字段和表的字符集设置成utf-8:
alter table user convert to character set utf8;
如果想设置成字符集是gbk,只要将上面的语句utf8换成gbk即可。
参考博客:
https://blog.csdn.net/luo4105/article/details/50804148
https://blog.csdn.net/ylyang12/article/details/53241629
2018-10-19 14:49:59
MySQL函数
FIND_IN_SET(str,strlist):字符串str在字符串列表strlist中,则返回该字符串在字符串列表中的位置(1到N之间,N为字符串列表长度)。
str 是某字段名,类型是字符串,strlist是某变量名,类型是字符串,由英文逗号连接的字符串
例如,SELECT FIND_IN_SET('1','1,2,3,4'); //返回值为1,即第1个值
SELECT FIND_IN_SET('b','a,d,c,b,e'); //返回值为4,即第4个值
场景:根据一堆id值查询激活的key,使用MyBatis查询MySQL
@Select("select `key` from " + TABLE_ACTIVE + " where FIND_IN_SET(id, #{ids}) <> 0") List<String> getActiveKeys(@Param("ids")List<Integer> ids);
2018-10-06 22:35:37
mysql查询系统时间
select current_date; # 显示系统的日期 select now(); #显示系统的日期和时间
mysql注释
单行注释使用符号"#",单行注释的另一种写法:两个横杠加一个空格,"-- "
多行注释使用符号 "/*这是多行注释的写法!!!*/"
mysql几个关于筛选的条件的关键字的使用
from,where,group by,having,order by
最基本的组合:from+where
组合使用:group by和having???
where==having???
2018-08-29 23:45:56
创建简单表:
create table user ( id int primary key auto_increment not null, name ) not null, sex ) not null )engine=InnoDB charset=utf8;
创建关联表:
create table employee ( id ) primary key not null auto_increment, dep_id ), --定义外键dep_id name ) default null, pwd ) default null, phone ) default null, email ) default null, foreign key(dep_id) references department(id) --外键dep_id关联另一个表的主键 ) engine=InnoDB default charset=utf8; create table department ( id ) primary key not null auto_increment, name ) default null, ) defaul null ) engine=InnoDB default charset=utf8;
mysql5.7.22-64免安装版配置:
使用mysqld命令时要初始化:
mysqld --user=mysqli --basedir=D:\softwareInstall\softwareDev\mysqli --datadir=D:\softwareInstall\softwareDev\mysqli\data --initialize-insecure
使用my.ini不起作用,直接在控制台用指令指定其作用。
安装mysql服务:
mysqld install MYSQLi --defaults-file="D:\softwareInstall\softwareDev\mysqli\my.ini"
修改注册表,regedit.exe调出,找到MYSQLi服务的名称,修改它的ImagePath值
原先它是这样的:
D:\softwareInstall\softwareDev\mysql\bin\mysqld --defaults-file=D:\softwareInstall\softwareDev\mysqli\my.ini MYSQLi
标志红色的部分跟默认端口的mysql的安装路径是一样的,需要把它改成端口是3307的mysql的安装路径。
修改后是这样的:
D:\softwareInstall\softwareDev\mysqli\bin\mysqld --defaults-file=D:\softwareInstall\softwareDev\mysqli\my.ini MYSQLi
和原来的只差一个字母。
修改密码:
D:\softwareInstall\softwareDev\mysqli\bin>mysql -uroot; mysql> use mysql; mysql") WHERE user='root'; # 报错4 mysql> UPDATE user SET authentication_string=PASSWORD("123456") WHERE user='root';#生效
如何在cmd启动另一mysql呢?只要指定它的端口就可以了。默认端口3306是不用指定的。
C:\Users\rui # -P(P是大写的,表示端口号) 通过"-P"指定windows中的另一个mysql的端口号
2018-09-05 19:10:37
windows访问linux mysql:(环境:centos6.8)
# 启动mysql service mysqld start mysql -uroot -p use mysql update user set host = '%' where user = 'root'; flush privileges; #开放防火墙端口 vim /etc/sysconfig/iptables14 -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT1516 service iptables restart
疑惑:
1、pojo 定义id为String类型,user表定义id为int类型,系统没有报错,是如何转化的?
2、user表必须定义id为auto_increment,否则需要指定id值,还会报错!?
数据类型:数字,日期和时间,字符串
整型:tinyint,smallint,mediumint,int,bigint
可以有符号或者无符号
tinyint | smallint | mediumint | int | bigint | |
有符号 | -128到127 | -32768到32767 | -8388608至8388607 | -2147483648到2147483647 | -9223372036854775808到9223372036854775807 |
无符号 | 0到255 | 0到65535 | 0到16777215 | 0到4294967295 | 0到18446744073709551615 |
字节长度 | 1个字节 | 2个字节 | 3个字节 | 4个字节 | 8个字节 |
浮点数:float(m,d)[默认为float(10,2),占4个字节],double(m,d)[默认为float(16,4),占8个字节],decimal(m,d)
m表示数字的总位数(包括小数的位数),d表示小数位数
时间和日期类型
date | datetime | timestamp | time | year(m) | |
格式 | YYYY-MM-DD | YYYY-MM-DD HH:MM:SS | YYYYMMDDHHMMSS | HH:MM:SS | |
范围 | 1000-01-01和9999-12-31之间 | 1000-01-01 00:00:00 到9999-12-31 23:59:59 | 1970年1月1日到2037的时间戳 |
m=2:1970至2069(70〜69) m=4:1901-2155(默认) |
|
示例 | 2018年1月1日将被存储为2018-01-01 | 2018年01月01日下午1:10,会被存储为2018-01-01 13:10:00 |
字符串类型
char(m) | varchar(m) |
blog/ text |
tinyblog/ tinytext |
mediumblog/ mediumtext |
longblog/ longtext |
enum | |
范围 | 固定长度,1到255个字符长度,默认为1 | 可变长度,1到255个字符长度,需要定义长度 |
最大为65536个字符长度,text不分大小写,不用指定长度 |
255个字符长度,不用指定长度 | 最大为16777215个字符长度,不用指定长度 | 最大为4294967295个字符长度,不用指定长度 | 列表 |
note:
v1.1(2018-05-15 21:33:16)
增加了查看数据库物理位置的指令
v1.2(2018-06-10 23:40:20)
增加了如何安装另一个mysql的方法,以及启动另一个mysql server的方法
sql---->sql-summary&mysql-summary的更多相关文章
- dapper之连接数据库(Oracle,SQL Server,MySql)
因为项目需求,需要项目同时可以访问三个数据库,因此本人经过一番研究,得出以下代码. 1.建立公共连接抽象类(DataBase) public abstract class DataBase { /// ...
- SQL Server、MySQL主从搭建,EF Core读写分离代码实现
一.SQL Server的主从复制搭建 1.1.SQL Server主从复制结构图 SQL Server的主从通过发布订阅来实现 1.2.基于SQL Server2016实现主从 新建一个主库&quo ...
- How to Disable Strict SQL Mode in MySQL 5.7
If your app was written for older versions of MySQL and is not compatible with strict SQL mode in My ...
- 通过sql server 连接mysql
图文:通过sql server 连接mysql 1.在SQL SERVER服务器上安装MYSQL ODBC驱动; 驱动下载地址:http://dev.mysql.com/downloads/con ...
- 如何用SQL语句实现Mysql数据库的备份与还原
以前一直做android客户端的项目,根本没有开发asp.net mvc的开发,现阶段做了一个模块,参数设置,以及数据库的备份与还原.其需求如下: 参数设置 本项参数设置为对自动数据备份进行设置,管理 ...
- 数据库 SQL Server 到 MySQL 迁移方法总结
最近接手一起老项目数据库 SQL Server 到 MySQL 的迁移.因此迁移前进行了一些调查和总结.下面是一些 SQL Server 到 MySQL 的迁移方法. 1. 使用 SQLyog 迁移 ...
- Monitor All SQL Queries in MySQL (alias mysql profiler)
video from youtube: http://www.youtube.com/watch?v=79NWqv3aPRI one blog post: Monitor All SQL Querie ...
- sql server和my sql 命令(语句)的差别,sql server与mysql的比較
sql与mysql的比較 1.连接字符串 sql :Initial Catalog(database)=x; --数据库名称 Data Source(source)=x; ...
- sql点滴42—mysql中的时间转换
原文:sql点滴42-mysql中的时间转换 UNIX时间戳转换为日期用函数: FROM_UNIXTIME() select FROM_UNIXTIME(1156219870); 日期转换为UNIX时 ...
- sql点滴42—mysql中的数据结构
原文:sql点滴42-mysql中的数据结构 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小 ...
随机推荐
- 辅助模块:udp_sweep
辅助模块:udp_sweep 模块介绍 使用udp对指定IP地址主机进行udp扫描 实践过程 利用该模块填写目的IP来对目的IP地址进行扫描 从结果可以看到扫描结果显示扫描过程放出了13个探针,发现了 ...
- Windows 登录用户的类型
转载:http://blog.csdn.net/chenlycly/article/details/45419259 1.登录的是超级管理员Administrator 默认情况下,超级管理员Admin ...
- ODAC(V9.5.15) 学习笔记(十四)TCRBatchMove
名称 类型 说明 AbortOnKeyViol Boolean 在处理数据时,如果发生主键冲突或主键校验失败时,是否中断 AbortOnProblem Boolean 发生问题时是否中断 Change ...
- openwrt源码下的feeds.conf.default有何作用?
答: 可以往openwrt下添加一些最新的软件包,这样make menuconfig后就可以发现很多软件包了. 该文件中的内容格式如下例: src-git packages https://git.l ...
- 在Linux安装和使用LinuxBrew
简介 LinuxBrew是流行的Mac OS X的一个Linux叉自制包管理器. LinuxBrew是包管理软件,它能从源(在Debian / Ubuntu的如"易/ DEB",并 ...
- 论文阅读:CNN-RNN: A Unified Framework for Multi-label Image Classification
CNN-RNN: A Unified Framework for Multi-label Image Classification Updated on 2018-08-07 22:30:41 Pap ...
- [jsp] - jsp引入c标签出错
jsp引入c标签出错, 因为之前使用thymeleaf,将jsp的依赖删除了.(这里应该采用注释而非删除,但以为项目就一直用thymeleaf了) <%@ taglib uri="ht ...
- 【C#】Using的一个比较好的语言文字解释
其实很早就开始使用using了.但是对这个语法糖我自己一直没有总结也没有一个很好的文字描述解释.今天看其他的博文的时候发现有人对其做了简单的解释我觉得很好,很适合一种讲解.于是抄录下来 using ( ...
- 集成算法——Ensemble learning
目的:让机器学习效果更好,单个不行,群殴啊! Bagging:训练多个分类器取平均 Boosting:从弱学习器开始加强,通过加权来进行训练 (加入一棵树,比原来要强) Stacking:聚合多个分类 ...
- 小程序之根据参数更改title
是这样的,今天呢在写中英文切换功能,哇 从psd图里面去复制英文在去对应,真的是太难受了 okok 切回正题 当用户选择英文的时候 我的title也要是英文怎么办呢 wx.setNaviga ...