Mysql之二
MySQL的数据类型
SQL接口
- 标准:
- ANSI SQL:SQL-86--------SQL-89--------SQL-99---------SQL-03
- 数据类型
- 字符型:
- CHAR(不区分字母大小写),BINARY(不区分字母大小写):定长数据类型
- VARCHARE(不区分字母大小写),VARBINARY(不区分字母大小写):变长数据类型;需要结束符
- TEXT系列(不区分字符大小写):TINYTEXT,TEXT,MEDIUMTEXT,LONGTEXT
- BLOB系列:TINYBLOB,BLOB,MEDIUMBLOB,LONGBLOB
- ENUM(枚举),SET(集合)
- 数值型
- 精确数值型:
- 整型:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT
- 十进制
- 近似数值型:
- 浮点型:FLOAT,DOUBLE
- 时间日期型
- DATE
- TIME
- DATETIME
- YEAR(2),YEAR(4)
- 内建类型
- ENUM
- SET
数据类型详解:
- 字符型:

- 字符型修饰符:
- NOT NULL:非空约束
- NULL
- DEFAUL ‘STRING’:默认值
- CHARATER SET ‘UTF8’ :使用的字符集
- COLLATION:使用的排序规则
MariaDB [(none)]> show character set; #查看支持的字符集
MariaDB [(none)]> show collation; #查看支持的字符集
- 整型数据
- 整形数据修饰符
- NOT NULL
- NULL
- AUTO_INCREDENT:
- UNSINED
- PRIMARY KEY | UNIQUE KEY
MariaDB [(none)]> select last_insert_id(); #查看最后一个插入数值的ID
+------------------+
| last_insert_id() |
+------------------+
| 0 |
+------------------+
1 row in set (0.00 sec)
- 内建类型set和人enum的修饰符
- NULL
- NOT NULL
- DEFAULT
MariaDB [tt]> create table enum_set (en ENUM('a','','1'),se SET('a','1'));
- MariaDB [tt]> insert into enum_set (en,en) values("a","a");
MariaDB [tt]> insert into enum_set (en,se) values("a","a");
- MariaDB [tt]> insert into enum_set (en,se) values("a","b");
- MariaDB [tt]> insert into enum_set (en,se) values("b","a");
- MariaDB [tt]> select * from enum_set;
+------+------+
| en | se |
+------+------+
| a | a |
| a | |
| | a |
+------+------+
3 rows in set (0.00 sec)
- SQL MODE:定义MySQL对约束等的响应行为
- 常用的SQL_MODE:TRADITIONAL,STATIC_TRANS_TABLES,STATIC_ALL_TABLES
MariaDB [tt]> show global variables like "sql_mode"; #sql_mode查询
- +---------------+--------------------------------------------+
| Variable_name | Value |
+---------------+--------------------------------------------+
| sql_mode | NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+--------------------------------------------+
1 row in set (0.00 sec)- MariaDB [tt]> show global variables like "sql_%"; #模糊匹配查询方式
+------------------------+--------------------------------------------+
| Variable_name | Value |
+------------------------+--------------------------------------------+
| sql_auto_is_null | OFF |
| sql_big_selects | ON |
| sql_buffer_result | OFF |
| sql_log_bin | ON |
| sql_log_off | OFF |
| sql_mode | NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
| sql_notes | ON |
| sql_quote_show_create | ON |
| sql_safe_updates | OFF |
| sql_select_limit | 18446744073709551615 |
| sql_slave_skip_counter | 0 |
| sql_warnings | OFF |
+------------------------+--------------------------------------------+
12 rows in set (0.00 sec)
MariaDB [tt]> set global sql_mode='MODE';
MariaDB [tt]> set @@global.sql_mode='MODE';
MariaDB [tt]> set session sql_mode='MODE';
MariaDB [tt]> set @@session.sql_mode='MODE';
MariaDB [mydbl]> create database ttt;
MariaDB [mydbl]> use ttt;
- MariaDB [ttt]> create table t1 (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,name CHAR(5) NOT NULL);
- MariaDB [ttt]> insert into t1 (name) values('wang'),('xuexusd'); #没修改之前会有警告,但不报错
- MariaDB [mydbl]> set sql_mode='TRADITIONAL'; #改之后,超过字符限制就会报错
- Query OK, 2 rows affected, 2 warnings (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 2- MariaDB [ttt]> insert into t1 (name) values('wang'),('xufsdsexu');
- ERROR 1406 (22001): Data too long for column 'name' at row 1 #错误信息
SQL语言
- DDL:数据定义语言
- create alter drop
- DB组件:数据库,表,索引,视图,用户,存储过程,存储函数,触发器,事件调度器等
- create相关的常用命令
MariaDB [ttt]> help create;
- Many help items for your request exist.
To make a more specific request, please type 'help <item>',
where <item> is one of the following
topics:
CREATE DATABASE
CREATE EVENT
CREATE FUNCTION
CREATE FUNCTION UDF
CREATE INDEX
CREATE PROCEDURE
CREATE SERVER
CREATE TABLE
CREATE TABLESPACE
CREATE TRIGGER
CREATE USER
CREATE VIEW
SHOW
SHOW CREATE DATABASE
SHOW CREATE EVENT
SHOW CREATE FUNCTION
SHOW CREATE PROCEDURE
SHOW CREATE TABLE
SPATIAL
- DML:数据操作语言
- insert delete update select
- 数据库相关指令:
- create,alter,drop {database|schema} [if exists] [if not exists]
- 表:二维关系
- 设计表:遵循规范
- 定义:字段,索引
- 字段:字段名(不区分大小写),字段数据类型,修饰符
- 约束:索引(
- 1.应该创建在查询条件最多的字段上;
- 2.实现级别在存储引擎;
- 3.分类:
- 稠密索引;稀疏索引;
- B+索引;hash索引;R树索引;FULLTEXT索引
- 聚集索引;非聚集索引
- 创建表:
- 直接创建
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(create_definition,...)
[table_options]
[partition_options]
- 根据已经存在的表创建,新表会被直接插入查询而来的数据
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[(create_definition,...)]
[table_options]
[partition_options]
select_statement
- 根据已经存在的表结构创建,不复制数据
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
{ LIKE old_tbl_name | (LIKE old_tbl_name) }
- 查看表
MariaDB [ttt]> desc t1; #查看表结构
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | char(5) | NO | | NULL | |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)MariaDB [ttt]> show tables; #查看表个数
+---------------+
| Tables_in_ttt |
+---------------+
| t1 |
+---------------+
1 row in set (0.00 sec)
- MariaDB [ttt]> show table status like 't1'\G; #查看表状态
*************************** 1. row ***************************
Name: t1
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 2
Avg_row_length: 8192 #平均每行宝库奥的字节数
Data_length: 16384 #表中数据的大小
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: 3
Create_time: 2017-01-07 13:51:08
Update_time: NULL
Check_time: NULL
Collation: utf8mb4_general_ci #排序规则
Checksum: NULL #表的校验和(性能优化)
Create_options: #额外选项
Comment: #注释信息
1 row in set (0.00 sec)
- 修改表:alter table
- 删除表:drop table
Mysql之二的更多相关文章
- MySQL优化二(连接优化和缓存优化)
body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-top: 10 ...
- 从零开始搭建框架SSM+Redis+Mysql(二)之MAVEN项目搭建
从零开始搭建框架SSM+Redis+Mysql(二)之MAVEN项目搭建 废话不说,直接撸步骤!!! 1.创建主项目:ncc-parent 选择maven创建项目,注意在创建项目中,packing选择 ...
- python/MySQL练习题(二)
python/MySQL练习题(二) 查询各科成绩前三名的记录:(不考虑成绩并列情况) select score.sid,score.course_id,score.num,T.first_num,T ...
- Python/MySQL(二、表操作以及连接)
Python/MySQL(二.表操作以及连接) mysql表操作: 主键:一个表只能有一个主键.主键可以由多列组成. 外键 :可以进行联合外键,操作. mysql> create table y ...
- mysql进阶(二十九)常用函数
mysql进阶(二十九)常用函数 一.数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) 返回大于x的最小整数值 EXP ...
- mysql进阶(二十八)MySQL GRANT REVOKE用法
mysql进阶(二十八)MySQL GRANT REVOKE用法 MySQL的权限系统围绕着两个概念: 认证->确定用户是否允许连接数据库服务器: 授权->确定用户是否拥有足够的权限执 ...
- mysql进阶(二十七)数据库索引原理
mysql进阶(二十七)数据库索引原理 前言 本文主要是阐述MySQL索引机制,主要是说明存储引擎Innodb. 第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础. ...
- mysql进阶(二十六)MySQL 索引类型(初学者必看)
mysql进阶(二十六)MySQL 索引类型(初学者必看) 索引是快速搜索的关键.MySQL 索引的建立对于 MySQL 的高效运行是很重要的.下面介绍几种常见的 MySQL 索引类型. 在数 ...
- mysql优化二之锁机制
mysql优化二之锁机制 mysql提供了锁机制和MVCC机制来保证并发操作的安全性,这里主要讨论锁机制, MVCC见下篇文章 mysql的锁按照锁粒度可分为行锁与表锁,按照操作类型划分可读锁和写锁 ...
- MySQL基准测试(二)--方法
MySQL基准测试(二)--方法 目的: 方法不是越高级越好.而应该善于做减法.至简是一种智慧,首先要做的是收集MySQL的各状态数据.收集到了,不管各个时间段出现的问题,至少你手上有第一时间的状态数 ...
随机推荐
- PLS-00103: 出现符号 ...
Oracle存储过程: create or replace procedure update_people(in_name ), in_status in nvarchar2) as begin up ...
- WINCE6.0远程桌面显示修改
备注:用RDP表示远程桌面 WINCE6.0自带的远程桌面在我们显示屏分辨率为240*320上有一部分内容无法显示出来,所以就需要调整界面让这些内容可见. 1. PB6.0不支持对远程桌面资 ...
- 浏览器兼容问题系列---使IE支持CSS3 Media Quary
兼容是一件很让前端攻城师头疼的事情,笔者今天在做一个Demo的时候就碰到了一个问题(大牛就不要拍砖了,谢谢!) 经常做移动互联网前端的攻城师想必对于css3 media quary已经很熟悉了,但是碰 ...
- 5个难以置信的VS 2015预览版新特性
Visual Studio 2015 Preview包含了很多强大的新特性,无论你是从事WEB应用程序开发,还是桌面应用程序开发,甚至是移动应用开发,VS 2015都将大大提高你的开发效率.有几个特性 ...
- JVM的参数设置与OutOfMemoryError异常关系
Java堆中存放Object对象数据,例如new出来的Object.当没有任何引用指向某对象时,该对象可能被垃圾回收.有关垃圾回收算法,可参考其他有关文章,网上很多.关于对象引用,按强弱还有强引用,软 ...
- TortoiseGit连接github不用每次输入用户名和密码的方法
每次git clone 和push 都要输入用户名和密码.虽然安全,但在本机上每次都输有些麻烦,如何记住用户名和密码呢? 当你配置好git后,在C:\Documents and Settings\Ad ...
- 使用SignalR 提高B2C商城用户体验1
vs2010 使用SignalR 提高B2C商城用户体验(一) 1.需求简介,做为新时代的b2c商城,没有即时通讯,怎么提供用户粘稠度,怎么增加销量,用户购物的第一习惯就是咨询,即时通讯,应运而生.这 ...
- NopCommerce架构分析之参考资料
http://www.cnblogs.com/RobbinHan/archive/2011/11/30/2269537.html 依赖注入框架Autofac的简单使用 http://www.cnblo ...
- POJ 1067 取石子游戏
题意:有两堆个数分别为a和b的石子,两个人轮流取石子,一次可以取一堆中任意个数的石子,或者在两堆中取相同个数的石子,最先没有石子可以取的人输,你先取,赢为1输为0. 解法:威佐夫博弈.看完题先找规律, ...
- 使用Spring Profile和Mybatis进行多个数据源(H2和Mysql)的切换
最近在做WebMagic的后台,遇到一个问题:后台用到了数据库,本来理想情况下是用Mysql,但是为了做到开箱即用,也整合了一个嵌入式 数据库H2.这里面就有个问题了,如何用一套代码,提供对Mysql ...