代码收藏系列--mysql--创建数据库、数据表、函数、存储过程命令
创建mysql数据库
CREATE DATABASE IF NOT EXISTS `database_name` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
创建mysql数据表
drop table if exists `table_name`;
create table if not exists `table_name` (
id int auto_increment primary key comment '主键编号',
`name` varchar(32) not null default '' comment '名称',
`code` varchar(32) not null default '' comment '代码',
category_id int not null default 0 comment '类别编号',
create_time timestamp not null default CURRENT_TIMESTAMP comment '创建时间(年月日)',
INDEX idx_name (`name`), -- 普通索引
INDEX idx_name_category_id (`code`,category_id), -- 复合索引
UNIQUE INDEX idxu_code (`code`) -- 唯一索引
-- 注意,最后一行不能有逗号
) ENGINE=InnoDB DEFAULT CHARSET=utf8 comment '创建表\r\n2017-06-21';
补充说明:
1. MySQL数据库的varchar(M),M表示的是字符数量,而不是字节数量,占用的字节数和数据表使用的编码有关。(一个中文、英文、数字等都算一个字符)
2. MySQL要求一个行的定义长度不能超过65535字节,因此varchar的长度理论上最大是65535字节,编码若为gbk,每个字符最多占2个字节,最大长度不能超过32766个字符;编码若为utf8,每个字符最多占3个字节,最大长度不能超过21845个字符,即不论字母、数字或汉字,只能存储21785个
3. create_timestamp int not null default UNIX_TIMESTAMP() comment '创建时间(UNIX时间戳格式)' 这种语法不能通过,因为mysql默认值只能支持常量,变量是不被允许的,所有可以使用其他的方式,或者程序每次都插入时间戳来实现
文章参考:http://www.cnblogs.com/sochishun/p/7026762.html
例如:
1个中文用UTF8编码是3字节(Byte),用GBK编码是2字节(Byte)。1个英文或数字不管什么编码都是1字节(属于ASCII编码)。
'中文' 2个汉字的长度是 3byte * 2 = 6byte
'E文' 1个英文+1个汉字的长度是 1byte + 3byte = 4byte
'a0' 1个英文+1个数字的长度是 1byte + 1byte = 2byte
GBK的文字编码用双字节来表示,即不论中、英文字符均使用双字节来表示
'中文' 2个汉字的长度是 2byte * 2 = 4byte
'E文' 1个英文+1个汉字的长度是 1byte + 2byte = 3byte
'a0' 1个英文+1个数字的长度是 1byte + 1byte = 2byte
创建mysql视图
create or replace view `view_name` as select * from `table_name`;
创建mysql存储过程
/**
* mysql游标
* @since 1.0 2015-3-28 sochishun Added.
*/
DELIMITER ;;
drop procedure if exists proc_cursor_demo;;
create procedure proc_cursor_demo()
begin
declare vint_id int;
declare vstr_name varchar(32);
declare done boolean default false;
-- 计费游标
declare cur1 cursor for select `id`, `name` from `table_name` where id < 100;
-- 将结束标志绑定到游标
declare continue handler for not found set done = true; open cur1;
loop_label: loop
fetch cur1 into vint_id, vstr_name; -- 声明结束的时候
if done then
leave loop_label;
end if;
call proc_update_demo(vint_id, vstr_name);
end loop;
close cur1;
end;;
DELIMITER ;
创建mysql函数
/**
* 创建mysql函数
* @since 1.0 2016-2-18 by sochishun
* @example SIP/301-00000155
*/
DELIMITER ;;
drop function if exists fn_test_demo;;
create function fn_test_demo(pstr_channel varchar(32))
returns varchar(16) -- 函数返回定义写在这里
begin
declare vstr_prefix varchar(16);
declare vstr_out varchar(16);
set vstr_prefix=LEFT(pstr_channel,3);
if vstr_prefix='SIP' then
set vstr_out=SUBSTR(pstr_channel,5,POSITION('-' IN pstr_channel)-5);
elseif vstr_prefix='Loc' then
set vstr_out=SUBSTR(pstr_channel,7,POSITION('@' IN pstr_channel)-7);
else
set vstr_out=pstr_channel;
end if;
return vstr_out;
end;;
DELIMITER ;
查看系统信息命令
-- 查询所有数据库
select SCHEMA_NAME,DEFAULT_CHARACTER_SET_NAME,DEFAULT_COLLATION_NAME from information_schema.schemata where SCHEMA_NAME not in ('mysql','information_schema','performance_schema'); -- 查询数据库中所有表
select TABLE_NAME, TABLE_TYPE, ENGINE, DATA_LENGTH, CREATE_TIME, TABLE_COLLATION, TABLE_COMMENT from information_schema.tables where TABLE_SCHEMA='db_test_v1' AND TABLE_TYPE='BASE TABLE'; -- 查询存储过程和函数
select ROUTINE_NAME from information_schema.routines WHERE ROUTINE_SCHEMA='db_test_v1' AND ROUTINE_TYPE='FUNCTION';
select ROUTINE_NAME from information_schema.routines WHERE ROUTINE_SCHEMA='db_test_v1' AND ROUTINE_TYPE='PROCEDURE'; -- 查询所有视图
select TABLE_NAME from information_schema.views where TABLE_SCHEMA='db_test_v1';
select TABLE_NAME from information_schema.tables where TABLE_SCHEMA='db_test_v1' AND TABLE_TYPE='VIEW'; -- 查询所有字段
select COLUMN_NAME, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, EXTRA, COLUMN_COMMENT from information_schema.columns WHERE TABLE_SCHEMA='db_test_v1' AND TABLE_NAME='t_test'; -- 查询索引和主键
select * from information_schema.table_constraints where TABLE_SCHEMA='db_test_v1' AND TABLE_NAME='t_test'; -- 查询数据库全局变量
select VARIABLE_NAME, VARIABLE_VALUE FROM information_schema.global_variables;
|
版权声明:本文采用署名-非商业性使用-相同方式共享(CC BY-NC-SA 3.0 CN)国际许可协议进行许可,转载请注明作者及出处。 |
代码收藏系列--mysql--创建数据库、数据表、函数、存储过程命令的更多相关文章
- PHP创建数据库数据表
PHP创建数据库数据表 <?php $con = mysql_connect('localhost', 'root', 'root'); /************************在数据 ...
- MySQL处理数据库和表的常用命令
MySQL处理数据库和表的常用命令 [导读] 学习如何管理和导航MySQL数据库和表是要掌握的首要任务之一,下面的内容将主要对MySQL的数据库和表的一些常用命令进行总结,一些我们不得不掌握的命令,一 ...
- MYSQL 创建数据库以及表
创建数据库,表 创建一个数据库,再在数据库下创建一个或多个表,不难,记不住的同学可以直接copy,慢慢的用会即刻,懂的同学请看代码,没有太多基础的同学,除了看代码,请看最下方的知识点 创建数据库: C ...
- 数据库之mysql篇(3)—— mysql创建/修改数据表/操作表数据
创建数据表:create table 数据表名 1.创建表规范 create table 表名( 列名 数据类型 是否为空 自动排序/默认值 主键/外键/唯一键, 列名 数据类型 ...
- MySQL创建数据库和表的Demo
Demo: 创建数据库的语法 1.基本语法 create database tour character set gbk; use tour; 无主键自增长的 create table EMB_T_E ...
- PHP MySQL 创建数据库和表 之 Create
创建数据库 CREATE DATABASE 语句用于在 MySQL 中创建数据库. 语法 CREATE DATABASE database_name 为了让 PHP 执行上面的语句,我们必须使用 my ...
- MySQL操作数据库和表的常用命令新手教程
1.查看数据库 获取服务器上的数据库列表通常很有用.执行show databases;命令就可以搞定. mysql> show databases; 2.创建数据库 mysql> crea ...
- SQL创建数据库、表、存储过程及调用
--如果存在数据库PRogrammerPay 就删除 if exists (select * from sysdatabases where name='programmerPay') drop d ...
- mysql创建数据库、表、写数据
mysql> create database ceshi; Query OK, 1 row affected (0.01 sec) 给数据库授权,否则程序时无法连接ceshi数据库的,每次创建一 ...
随机推荐
- python-面向对象-内置方法补充
__del__item系列 __getitem__ __setitem__ __delitem____hash____eq__ 构造方法 申请一个空间析构方法 释放一个空间之前执行某对象借用了操作系统 ...
- dbtool一bug跟踪记
注:这篇日志是好多年前,我还在从兴公司时写的.现在都从从兴公司离职很久了,从兴也没落了,可惜.看了一下,虽然出现了部分代码,但不至于泄漏什么机密,查bug过程的原理也有可以让新手借鉴的地方,就原文照搬 ...
- Java EE平台介绍(译)
Java EE平台介绍 2.1 企业应用总览 这一部分将对企业应用及其设计和开发进行简单介绍. 就像之前说的,Java EE 平台是为了帮助开发者开发大规模.多层次.可伸缩.服务可靠.网络安全的应用而 ...
- 模拟IDE上的run过程
看了一下老陈写的模仿JDK动态代理,从中取一部分单独扩展,模拟一下IDE上的run过程(不愧是老陈,去年写的东西我要现在才能理解) 对run过程的猜想 在点击run的过程中应该做了不少事.先编译运行r ...
- 亮眼的购物季数据,高涨的 Amazon Prime
依照往年的惯例,亚马逊公布了 2013 购物季的销售数据.据 The Verge 的报道,今年,仅仅网购星期一(Cyber Monday)一天就在全球范围内销售出 3680 万件商品,而去年这一数字为 ...
- Linux学习——操作文件与目录
1. ls:列出文件及目录信息. 命令格式:ls [选项] ... 常用选项: -a 显示指定目录下所有子目录与文件,包括隐藏文件. -A 显示指定目录下所有子目录与文件,包括隐藏文件.但不列出“.” ...
- Linux下使用vim编辑C程序
这几天在系统能力班自学linux,加上最近大数据课上开始使用linux,我在这里总结一下,linux下使用vim编辑c程序的一些问题. 大数据课上是直接使用micro来编辑的,我这里只是简单的说明一下 ...
- Alpha发布用户使用报告【欢迎来怼】
目录 用户统计表 部分用户评论截图 用户统计图 总结 一.用户统计表 目前,博客园安卓版的用户已达到11位.为了采集到更加客观公正的用户评价,并没有将团队内部人员的评价统计进来.同时,为了更好地保护用 ...
- P4语法(4)Control block
Control block Control block之中用于放置设计好的Table和Action. 可以把control block认为是pipeline的一个模板,之前用的v1model中就是in ...
- Markdown的基本语法
Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的语法十分简单.常用的标记符号也不 ...