MYSOL里面创建数据库时defaultapppool是什么是什么意思

当前访客身份:游客 [
这个人很懒,啥也没写
:引用来自“Leon_wy”的评论我的邮箱 ...
:你好能否参考下你weiboProvider和QqProvider的代...
:引用来自“”的评论大神你好,同求wei...
:引用来自“Leon_wy”的评论已经搞定了 引用来自“...
:引用来自“Leon_wy”的评论已经搞定了你好,能否...
:大神你好,同求weiboProvider和QqProvider这2个类...
:大神,WeiboProvider,QqProvider两个类能发玩邮...
:${WeiboProviderUrl}链接是放在casLoginView.js...
:OAuthBindJdbcCheckAction ,QqProvider这两个类...
今日访问:71
昨日访问:24
本周访问:71
本月访问:1225
所有访问:45156
MySQL 5.f 参数说明
发表于1年前( 10:47)&&
阅读(4453)&|&评论()
0人收藏此文章,
#&以下选项会被MySQL客户端应用读取。
#&注意只有MySQL附带的客户端应用程序保证可以读取这段内容。
#&如果你想你自己的MySQL应用程序获取这些值。
#&需要在MySQL客户端库初始化的时候指定这些选项。
#password&=&[your_password]
port&=&@MYSQL_TCP_PORT@
socket&=&@MYSQL_UNIX_ADDR@
#&***&应用定制选项&***
#&MySQL&服务端
#&一般配置选项
port&=&@MYSQL_TCP_PORT@
socket&=&@MYSQL_UNIX_ADDR@
#&back_log&是操作系统在监听队列中所能保持的连接数,
#&队列保存了在&MySQL&连接管理器线程处理之前的连接.
#&如果你有非常高的连接率并且出现&“connection&refused”&报错,
#&你就应该增加此处的值.
#&检查你的操作系统文档来获取这个变量的最大值.
#&如果将back_log设定到比你操作系统限制更高的值,将会没有效果
back_log&=&300
#&不在&TCP/IP&端口上进行监听.
#&如果所有的进程都是在同一台服务器连接到本地的&mysqld,
#&这样设置将是增强安全的方法
#&所有&mysqld&的连接都是通过&Unix&Sockets&或者命名管道进行的.
#&注意在&Windows下如果没有打开命名管道选项而只是用此项
#&(通过&“enable-named-pipe”&选项)&将会导致&MySQL&服务没有任何作用!
#skip-networking
#&MySQL&服务所允许的同时会话数的上限
#&其中一个连接将被&SUPER&权限保留作为管理员登录.
#&即便已经达到了连接数的上限.
max_connections&=&3000
#&每个客户端连接最大的错误允许数量,如果达到了此限制.
#&这个客户端将会被&MySQL&服务阻止直到执行了&“FLUSH&HOSTS”&或者服务重启
#&非法的密码以及其他在链接时的错误会增加此值.
#&查看&“Aborted_connects”&状态来获取全局计数器.
max_connect_errors&=&50
#&所有线程所打开表的数量.
#&增加此值就增加了&mysqld&所需要的文件描述符的数量
#&这样你需要确认在&[mysqld_safe]&中&“open-files-limit”&变量设置打开文件数量允许至少等于&table_cache&的值
table_open_cache&=&4096
#&允许外部文件级别的锁.&打开文件锁会对性能造成负面影响
#&所以只有在你在同样的文件上运行多个数据库实例时才使用此选项(注意仍会有其他约束!)
#&或者你在文件层面上使用了其他一些软件依赖来锁定&MyISAM&表
#external-locking
#&服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小(当与大的&BLOB&字段一起工作时相当必要)
#&每个连接独立的大小,大小动态增加
max_allowed_packet&=&32M
#&在一个事务中&binlog&为了记录&SQL&状态所持有的&cache&大小
#&如果你经常使用大的,多声明的事务,你可以增加此值来获取更大的性能.
#&所有从事务来的状态都将被缓冲在&binlog&缓冲中然后在提交后一次性写入到&binlog&中
#&如果事务比此值大,&会使用磁盘上的临时文件来替代.
#&此缓冲在每个连接的事务第一次更新状态时被创建
binlog_cache_size&=&4M
#&独立的内存表所允许的最大容量.
#&此选项为了防止意外创建一个超大的内存表导致永尽所有的内存资源.
max_heap_table_size&=&128M
#&随机读取数据缓冲区使用内存(read_rnd_buffer_size):和顺序读取相对应,
#&当&MySQL&进行非顺序读取(随机读取)数据块的时候,会利用&这个缓冲区暂存读取的数据
#&如根据索引信息读取表数据,根据排序后的结果集与表进行&Join&等等
#&总的来说,就是当数据块的读取需要满足&一定的顺序的情况下,MySQL&就需要产生随机读取,进而使用到&read_rnd_buffer_size&参数所设置的内存缓冲区
read_rnd_buffer_size&=&16M
#&排序缓冲被用来处理类似&ORDER&BY&以及&GROUP&BY&队列所引起的排序
#&如果排序后的数据无法放入排序缓冲,一个用来替代的基于磁盘的合并分类会被使用
#&查看&“Sort_merge_passes”&状态变量.
#&在排序发生时由每个线程分配
sort_buffer_size&=&16M
#&此缓冲被使用来优化全联合(FULL&JOINS&不带索引的联合).
#&类似的联合在极大多数情况下有非常糟糕的性能表现,但是将此值设大能够减轻性能影响.
#&通过&“Select_full_join”&状态变量查看全联合的数量
#&当全联合发生时,在每个线程中分配
join_buffer_size&=&16M
#&我们在&cache&中保留多少线程用于重用
#&当一个客户端断开连接后,如果&cache&中的线程还少于&thread_cache_size,则客户端线程被放入cache&中.
#&这可以在你需要大量新连接的时候极大的减少线程创建的开销
#&(一般来说如果你有好的线程模型的话,这不会有明显的性能提升.)
thread_cache_size&=&16
#&此允许应用程序给予线程系统一个提示在同一时间给予渴望被运行的线程的数量.
#&此值只对于支持&thread_concurrency()&函数的系统有意义(&例如Sun&Solaris).
#&你可可以尝试使用&[CPU数量]*(2..4)&来作为&thread_concurrency&的值
thread_concurrency&=&8
#&查询缓冲常被用来缓冲&SELECT&的结果并且在下一次同样查询的时候不再执行直接返回结果.
#&打开查询缓冲可以极大的提高服务器速度,&如果你有大量的相同的查询并且很少修改表.
#&查看&“Qcache_lowmem_prunes”&状态变量来检查是否当前值对于你的负载来说是否足够高.
#&注意:&在你表经常变化的情况下或者如果你的查询原文每次都不同,
#&查询缓冲也许引起性能下降而不是性能提升.
query_cache_size&=&128M
#&只有小于此设定值的结果才会被缓冲
#&此设置用来保护查询缓冲,防止一个极大的结果集将其他所有的查询结果都覆盖.
query_cache_limit&=&4M
#&被全文检索索引的最小的字长.
#&你也许希望减少它,如果你需要搜索更短字的时候.
#&注意在你修改此值之后,你需要重建你的&FULLTEXT&索引
ft_min_word_len&=&8
#&如果你的系统支持&memlock()&函数,你也许希望打开此选项用以让运行中的&mysql&在在内存高度紧张的时候,数据在内存中保持锁定并且防止可能被&swapping&out
#&此选项对于性能有益
#&当创建新表时作为默认使用的表类型,
#&如果在创建表示没有特别执行表类型,将会使用此值
default_table_type&=&InnoDB
#&线程使用的堆大小.&此容量的内存在每次连接时被预留.
#&MySQL&本身常不会需要超过&64K&的内存
#&如果你使用你自己的需要大量堆的&UDF&函数或者你的操作系统对于某些操作需要更多的堆,你也许需要将其设置的更高一点.
thread_stack&=&512K
#&设定默认的事务隔离级别.可用的级别如下:
#&READ-UNCOMMITTED,&READ-COMMITTED,&REPEATABLE-READ,&SERIALIZABLE
transaction_isolation&=&REPEATABLE-READ
#&内部(内存中)临时表的最大大小
#&如果一个表增长到比此值更大,将会自动转换为基于磁盘的表.
#&此限制是针对单个表的,而不是总和.
tmp_table_size&=&128M
#&打开二进制日志功能.
#&在复制(replication)配置中,作为&MASTER&主服务器必须打开此项
#&如果你需要从你最后的备份中做基于时间点的恢复,你也同样需要二进制日志.
log-bin=mysql-bin
#&如果你在使用链式从服务器结构的复制模式&(A-&B-&C),
#&你需要在服务器B上打开此项.
#&此选项打开在从线程上重做过的更新的日志,&并将其写入从服务器的二进制日志.
#log_slave_updates
#&打开全查询日志.&所有的由服务器接收到的查询&(甚至对于一个错误语法的查询)
#&都会被记录下来.&这对于调试非常有用,&在生产环境中常常关闭此项.
#&将警告打印输出到错误&log&文件.&如果你对于&MySQL&有任何问题
#&你应该打开警告&log&并且仔细审查错误日志,查出可能的原因.
#log_warnings
#&记录慢速查询.&慢速查询是指消耗了比&“long_query_time”&定义的更多时间的查询.
#&如果&log_long_format&被打开,那些没有使用索引的查询也会被记录.
#&如果你经常增加新查询到已有的系统内的话.&一般来说这是一个好主意,
log_slow_queries
#&所有的使用了比这个时间(以秒为单位)更多的查询会被认为是慢速查询.
#&不要在这里使用“1″,&否则会导致所有的查询,甚至非常快的查询页被记录下来(由于&MySQL&目前时间的精确度只能达到秒的级别).
long_query_time&=&6
#&在慢速日志中记录更多的信息.
#&一般此项最好打开.
#&打开此项会记录使得那些没有使用索引的查询也被作为到慢速查询附加到慢速日志里
log_long_format
#&此目录被MySQL用来保存临时文件.例如,
#&它被用来处理基于磁盘的大型排序,和内部排序一样.
#&以及简单的临时表.
#&如果你不创建非常大的临时文件,将其放置到&swapfs/tmpfs&文件系统上也许比较好
#&另一种选择是你也可以将其放置在独立的磁盘上.
#&你可以使用”;”来放置多个路径
#&他们会按照&roud-robin&方法被轮询使用.
#tmpdir&=&/tmp
#&***&主从复制相关的设置
#&唯一的服务辨识号,数值位于&1&到&2^32-1之间.
#&此值在master和slave上都需要设置.
#&如果&“master-host”&没有被设置,则默认为1,&但是如果忽略此选项,MySQL不会作为master生效.
server-id&=&1
#&复制的Slave&(去掉master段的注释来使其生效)
#&为了配置此主机作为复制的slave服务器,你可以选择两种方法:
#&1)&使用&CHANGE&MASTER&TO&命令&(在我们的手册中有完整描述)&-
#&语法如下:
#&CHANGE&MASTER&TO&MASTER_HOST=,&MASTER_PORT=,
#&MASTER_USER=,&MASTER_PASSWORD=&;
#&你需要替换掉&,&,&等被尖括号包围的字段以及使用master的端口号替换&(默认3306).
#&CHANGE&MASTER&TO&MASTER_HOST=’125.564.12.1′,&MASTER_PORT=3306,
#&MASTER_USER=’joe’,&MASTER_PASSWORD=’secret’;
#&2)&设置以下的变量.&不论如何,&在你选择这种方法的情况下,&然后第一次启动复制(甚至不成功的情况下,
#&例如如果你输入错密码在master-password字段并且slave无法连接),
#&slave会创建一个&&文件,并且之后任何对于包含在此文件内的参数的变化都会被忽略
#&并且由&&文件内的内容覆盖,&除非你关闭slave服务,&删除&&并且重启slave&服务.
#&由于这个原因,你也许不想碰一下的配置(注释掉的)&并且使用&CHANGE&MASTER&TO&(查看上面)&来代替
#&所需要的唯一id号位于&2&和&2^32&–&1之间
#&(并且和master不同)
#&如果master-host被设置了.则默认值是2
#&但是如果省略,则不会生效
#server-id&=&2
#&复制结构中的master&–&必须
#master-host&=
#&当连接到master上时slave所用来认证的用户名&–&必须
#master-user&=
#&当连接到master上时slave所用来认证的密码&–&必须
#master-password&=
#&master监听的端口.
#&可选&–&默认是3306
#master-port&=
#&使得slave只读.只有用户拥有SUPER权限和在上面的slave线程能够修改数据.
#&你可以使用此项去保证没有应用程序会意外的修改slave而不是master上的数据
#read_only
#***&MyISAM&相关选项
#&关键词缓冲的大小,&一般用来缓冲&MyISAM&表的索引块.
#&不要将其设置大于你可用内存的30%,
#&因为一部分内存同样被OS用来缓冲行数据
#&甚至在你并不使用&MyISAM&表的情况下,&你也需要仍旧设置起&8-64M&内存由于它同样会被内部临时磁盘表使用.
key_buffer_size&=&128M
#&用来做&MyISAM&表全表扫描的缓冲大小.
#&当全表扫描需要时,在对应线程中分配.
read_buffer_size&=&8M
#&当在排序之后,从一个已经排序好的序列中读取行时,行数据将从这个缓冲中读取来防止磁盘寻道.
#&如果你增高此值,可以提高很多&ORDER&BY&的性能.
#&当需要时由每个线程分配
read_rnd_buffer_size&=&64M
#&MyISAM&使用特殊的类似树的&cache&来使得突发插入
#&(这些插入是,INSERT&…&SELECT,&INSERT&…&VALUES&(…),&(…),&…,&以及&LOAD&DATA&INFILE)&更快.
#&此变量限制每个进程中缓冲树的字节数.
#&设置为&0&会关闭此优化.
#&为了最优化不要将此值设置大于&“key_buffer_size”.
#&当突发插入被检测到时此缓冲将被分配.
bulk_insert_buffer_size&=&256M
#&此缓冲当&MySQL&需要在&REPAIR,&OPTIMIZE,&ALTER&以及&LOAD&DATA&INFILE&到一个空表中引起重建索引时被分配.
#&这在每个线程中被分配.所以在设置大值时需要小心.
myisam_sort_buffer_size&=&256M
#&MySQL&重建索引时所允许的最大临时文件的大小&(当&REPAIR,&ALTER&TABLE&或者&LOAD&DATA&INFILE).
#&如果文件大小比此值更大,索引会通过键值缓冲创建(更慢)
myisam_max_sort_file_size&=&10G
#&如果被用来更快的索引创建索引所使用临时文件大于制定的值,那就使用键值缓冲方法.
#&这主要用来强制在大表中长字串键去使用慢速的键值缓冲方法来创建索引.
myisam_max_extra_sort_file_size&=&10G
#&如果一个表拥有超过一个索引,&MyISAM&可以通过并行排序使用超过一个线程去修复他们.
#&这对于拥有多个&CPU&以及大量内存情况的用户,是一个很好的选择.
myisam_repair_threads&=&1
#&自动检查和修复没有适当关闭的&MyISAM&表.
myisam_recover
#&默认关闭&Federated
skip-federated
#&***&BDB&相关选项&***
#&如果你运行的MySQL服务有BDB支持但是你不准备使用的时候使用此选项.&这会节省内存并且可能加速一些事.
#&***&INNODB&相关选项&***
#&如果你的&MySQL&服务包含&InnoDB&支持但是并不打算使用的话,
#&使用此选项会节省内存以及磁盘空间,并且加速某些部分
#skip-innodb
#&附加的内存池被&InnoDB&用来保存&metadata&信息(5.6中不再推荐使用)
#&如果&InnoDB&为此目的需要更多的内存,它会开始从&OS&这里申请内存.
#&由于这个操作在大多数现代操作系统上已经足够快,&你一般不需要修改此值.
#&SHOW&INNODB&STATUS&命令会显示当先使用的数量.
innodb_additional_mem_pool_size&=&64M
#&InnoDB使用一个缓冲池来保存索引和原始数据,&不像&MyISAM.
#&这里你设置越大,这能保证你在大多数的读取操作时使用的是内存而不是硬盘,在存取表里面数据时所需要的磁盘&I/O&越少.
#&在一个独立使用的数据库服务器上,你可以设置这个变量到服务器物理内存大小的80%
#&不要设置过大,否则,由于物理内存的竞争可能导致操作系统的换页颠簸.
#&注意在32位系统上你每个进程可能被限制在&2-3.5G&用户层面内存限制,
#&所以不要设置的太高.
innodb_buffer_pool_size&=&6G
#&InnoDB&将数据保存在一个或者多个数据文件中成为表空间.
#&如果你只有单个逻辑驱动保存你的数据,一个单个的自增文件就足够好了.
#&其他情况下.每个设备一个文件一般都是个好的选择.
#&你也可以配置&InnoDB&来使用裸盘分区&–&请参考手册来获取更多相关内容
innodb_data_file_path&=&ibdata1:10M:autoextend
#&设置此选项如果你希望InnoDB表空间文件被保存在其他分区.
#&默认保存在MySQL的datadir中.
#innodb_data_home_dir&=
#&用来同步IO操作的IO线程的数量.
#&此值在Unix下被硬编码为8,但是在Windows磁盘I/O可能在一个大数值下表现的更好.
innodb_file_io_threads&=&8
#&如果你发现&InnoDB&表空间损坏,&设置此值为一个非零值可能帮助你导出你的表.
#&从1开始并且增加此值知道你能够成功的导出表.
#innodb_force_recovery=1
#&在&InnoDb&核心内的允许线程数量.
#&最优值依赖于应用程序,硬件以及操作系统的调度方式.
#&过高的值可能导致线程的互斥颠簸.
innodb_thread_concurrency&=&16
#&如果设置为1&,InnoDB&会在每次提交后刷新(fsync)事务日志到磁盘上,
#&这提供了完整的&ACID&行为.
#&如果你愿意对事务安全折衷,&并且你正在运行一个小的事物,&你可以设置此值到0或者2来减少由事务日志引起的磁盘I/O
#&0代表日志只大约每秒写入日志文件并且日志文件刷新到磁盘.
#&2代表日志写入日志文件在每次提交后,但是日志文件只有大约每秒才会刷新到磁盘上.
innodb_flush_log_at_trx_commit&=&2
(说明:如果是游戏服务器,建议此值设置为2;如果是对数据安全要求极高的应用,建议设置为1;设置为0性能最高,但如果发生故障,数据可能会有丢失的危险!默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。特别是使用电池供电缓存(Battery&backed&up&cache)时。设成2对于很多运用,特别是从MyISAM表转过来的是可以的,它的意思是不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬盘,所以你一般不会丢失超过1-2秒的更新。设成0会更快一点,但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系统挂了时才可能丢数据。)
#&加速&InnoDB&的关闭.&这会阻止&InnoDB&在关闭时做全清除以及插入缓冲合并.
#&这可能极大增加关机时间,&但是取而代之的是&InnoDB&可能在下次启动时做这些操作.
#innodb_fast_shutdown
#&用来缓冲日志数据的缓冲区的大小.
#&当此值快满时,&InnoDB&将必须刷新数据到磁盘上.
#&由于基本上每秒都会刷新一次,所以没有必要将此值设置的太大(甚至对于长事务而言)
innodb_log_buffer_size&=&16M
#&在日志组中每个日志文件的大小.
#&你应该设置日志文件总合大小到你缓冲池大小的25%~100%
#&来避免在日志文件覆写上不必要的缓冲池刷新行为.
#&不论如何,&请注意一个大的日志文件大小会增加恢复进程所需要的时间.
innodb_log_file_size&=&512M
#&在日志组中的文件总数.
#&通常来说2~3是比较好的.
innodb_log_files_in_group&=&3
#&InnoDB&的日志文件所在位置.&默认是&MySQL&的&datadir.
#&你可以将其指定到一个独立的硬盘上或者一个RAID1卷上来提高其性能
#innodb_log_group_home_dir
#&在&InnoDB&缓冲池中最大允许的脏页面的比例.
#&如果达到限额,&InnoDB&会开始刷新他们防止他们妨碍到干净数据页面.
#&这是一个软限制,不被保证绝对执行.
innodb_max_dirty_pages_pct&=&90
#&InnoDB&用来刷新日志的方法.
#&表空间总是使用双重写入刷新方法
#&默认值是&“fdatasync”,&另一个是&“O_DSYNC”.
#&一般来说,如果你有硬件&RAID&控制器,并且其独立缓存采用&write-back&机制,并有着电池断电保护,那么应该设置配置为&O_DIRECT
#&否则,大多数情况下应将其设为&fdatasync
#innodb_flush_method=fdatasync
#&在被回滚前,一个&InnoDB&的事务应该等待一个锁被批准多久.
#&InnoDB&在其拥有的锁表中自动检测事务死锁并且回滚事务.
#&如果你使用&LOCK&TABLES&指令,&或者在同样事务中使用除了&InnoDB&以外的其他事务安全的存储引擎
#&那么一个死锁可能发生而&InnoDB&无法注意到.
#&这种情况下这个&timeout&值对于解决这种问题就非常有帮助.
innodb_lock_wait_timeout&=&120
#&这项设置告知InnoDB是否需要将所有表的数据和索引存放在共享表空间里(innodb_file_per_table&=&OFF)&或者为每张表的数据单独放在一个.ibd文件(innodb_file_per_table&=&ON)
#&每张表一个文件允许你在drop、truncate或者rebuild表时回收磁盘空间
#&这对于一些高级特性也是有必要的,比如数据压缩,但是它不会带来任何性能收益
innodb_file_per_table&=&on
[mysqldump]
#&不要在将内存中的整个结果写入磁盘之前缓存.&在导出非常巨大的表时需要此项
max_allowed_packet&=&32M
no-auto-rehash
#&仅仅允许使用键值的&UPDATEs&和&DELETEs&.
#safe-updates
[myisamchk]
key_buffer&=&16M
sort_buffer_size&=&16M
read_buffer&=&8M
write_buffer&=&8M
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
#&增加每个进程的可打开文件数量.
#&警告:&确认你已经将全系统限制设定的足够高!
#&打开大量表需要将此值设大
open-files-limit&=&8192
更多开发者职位上
1)">1)">1" ng-class="{current:{{currentPage==page}}}" ng-repeat="page in pages"><li class='page' ng-if="(endIndex<li class='page next' ng-if="(currentPage
相关文章阅读MySQL心得2--命令行方式建库和表
&使用create database或create schema命令可以创建数据库。
create database 库名
create database if not exists 库名(创建库并检验创建的库是否存在,不存在则建,存在就不建了)
MySQL不允许两个数据库使用相同的名字,使用ifnot exists从句可以不显示错误信息
显示所有数据库: & &
显示创建数据库的定义信息: show create dabasese 库名
2. 创建了数据库之后使用USE命令可指定当前数据库。
语法格式:use &db_
说明:这个语句也可以用来从一个数据库&跳转&到另一个数据库,在用create database语句创建了数据库之后,该数据库不会自动成为当前数据库,需要用这条USE语句来指定。
注意:在MySQL中,每一条SQL语句都以&;&作为结束标志。
mySQL语法中不区分大小写。创建数据库的必须是系统管理员,或者拥有用户级别的create权限。在安装MySQL的过程中已经创建了系统管理员,名为root,假设密码为root。
3.创建库的同时指定字符集,校对规则:
create database mydb character set utf8
collate utf8-general_
character set:指定数据库字符集(Charset),collate:指定字符集的校对规则
4.修改数据库,只能改参数
数据库创建后,如果需要修改数据库的参数,可以使用alter database命令。
语法格式:
alter {database | schema} [db_name]
& &alter_specification [, alter_specification] ...
其中alter_specification: & &
[default] character set charset_name
& &| [default] collate collation_name
alter database用于更改数据库的全局特性,这些特性储存在数据库目录中的db.opt文件中。用户必须有对数据库进行修改的权限,才可以使用 alterdatabase。修改数据库的选项与创建数据库相同,功能不再重复说明。如果语句中数据库名称忽略,则修改当前(默认)数据库。
5.删除数据库
drop database 库名
drop database if exists 库名(避免删除不存在的数据库时出现的MySQL错误信息。)
注意:这个命令必须小心使用,因为它将删除指定的整个数据库,该数据库的所有表(包括其中的数据)也将永久删除。
创建表就是创建表的结构:包含哪些字段(属性),字段名,字段类型
create table 表名
(字段名1 类型,
&字段名2 &类型,
举例:创建一个学生表 &
use 库名(确定你的表建在哪个库中,把此库变为当前数据库);
create table xs
& & & &id int,
& & & &name char(10),
& & & &sex char(2)
Create [temporary] table [if not exists] tbl_name
& &[ ( [column_definition] , ... | [index_definition] ) ]
& &[table_option] [select_statement];
● &temporary:该关键字表示用create命令新建的表为临时表。不加该关键字创建的表通常称为持久表,在数据库中持久表一旦创建将一直存在,多个用户或者多个应用程序可以同时使用持久表。有时候需要临时存放数据,例如,临时存储复杂的select语句的结果。此后,可能要重复地使用这个结果,但这个结果又不需要永久保存。这时,可以使用临时表。用户可以像操作持久表一样操作临时表。只不过临时表的生命周期较短,而且只能对创建它的用户可见,当断开与该数据库的连接时,MySQL会自动删除它们。
● &创建表时也可使用if not exists语句来判断创建的表是否已存在,避免出现错误。
● &要创建的表的表名(tbl_name)必须符合标志符规则,如果有MySQL保留字必须用单引号括起来。
● &column_definition:列定义,包括列名、数据类型,可能还有一个空值声明和一个完整性约束。
● &index_definition:表索引项定义,主要定义表的索引、主键、外键等,具体定义将在后面讨论。 & &
● &table_option:用于描述表的选项。
● &select_statement:可以在create table语句的末尾添加一个select语句,在一个表的基础上创建表
7.修改表结构:增加字段 & 修改旧字段 & 删除字段
alter table 表名
add 字段名 类型(宽度) & & & & //增加字段
modify 旧字段 类型 & & & & & & //修改旧字段
drop 字段名 & & & & & & & & & //删除字段
change 旧字段名 新字段内容 & & //改列名
order by col_name & & & & & &//排序
&convert &to character set charset_name [字符集名] & &//将字符集转换为二进制
&[default]character set charset_name [字符集名] & //修改默认字符集
举例:在学生表中增加birthday字段、修改name字段、修改字段name的名;
alter table xs
modify name varchar(20);
change name sname varchar(20);
8.修改表名
rename table 旧名 to 新名
tinint [unsigned] [zerofill]
bool,boolean&
smallint [unsigned] [zerofill]
int [unsigned] [zerofill]
bigint [unsigned] [zerofill]
float[(M,D)][unsigned][zerofill] &&
double[(M,D)][unsigned][zerofill] &&
位类型。M指定位数,默认值1,范围1-64
带符号的范围是-128到127。无符号0到255。
使用0或1表示真或假
M指定显示长度,d指定小数位数
表示比float精度更大的小数
文本、二进制类型
char(size) char(20)
varchar(size) &varchar(20)
blob & &longblob
text(clob) & &longtext(longclob)
固定长度字符串
可变长度字符串
二进制数据
date/datetime/TimeStamp
日期类型(YYYY-MM-DD) &(YYYY-MM-DD HH:MM:SS),TimeStamp表示时间戳,它可用于自动记录insert、update操作的时间
注意: 在字符数据类型和数值数据类型之后,MySQL允许指定一个数据类型选项用来改变数据类型的属性和功能。
对于字符数据类型,MySQL支持两种数据类型选项:characterset和collate。如果要区分字符的大小写情况,可以在字符类型后面加上bingary。
对于除bit以外的数值数据类型,MySQL允许添加一个或多个数据类型选项。unsigned:不允许负值。zerofill:当插入的值长度小于字段设定的长度时,剩余部分用0填补。
与int有关的类型与java中的bit、short、int、long分别对应。
varchar、bolb和text类是变长类型。每个类型的存储需求取决于列值的实际长度。
9. &列定义column_definition格式如下:
col_name &type &[not null | null] [default default_value]
& &[auto_increment] [unique [key] | [primary] key]
& &[comment &#39;string&#39;] [reference_definition]
说明: & &
● &col_name:表中列的名字。列名必须符合标志符规则,长度不能超过64个字符,而且在表中要唯一。如果有MySQL保留字必须用单引号括起来。
● &type:列的数据类型,有的数据类型需要指明长度n,并用括号括起,MySQL支持的数据类型在附录C中介绍。
● &auto_increment:设置自增属性,只有整型列才能设置此属性。当插入null值或0到一个auto_increment列中时,列被设置为value+1,在这里value是此前表中该列的最大值。auto_increment顺序从1开始。每个表只能有一个auto_increment列,并且它必须被索引。
● not null | null:指定该列是否允许为空。如果不指定,则默认为null。
● &default default_value:为列指定默认值,默认值必须为一个常数。其中,BLOB和TEXT列不能被赋予默认值。如果没有为列指定默认值,MySQL自动地分配一个。如果列可以取NULL值,默认值就是NULL。如果列被声明为NOT NULL,默认值取决于列类型:
(1)对于没有声明auto_increment属性的数字类型,默认值是0。对于一个auto_increment列,默认值是在顺序中的下一个值。
(2)对于除timestamp以外的日期和时间类型,默认值是该类型适当的&零&值。对于表中第一个timestamp列,默认值是当前的日期和时间。
(3)对于除enum的字符串类型,默认值是空字符串。对于enum,默认值是第一个枚举值。
● &unique key | primary key:两者都表示字段中的值是唯一的。primary key表示设置为主键,一个表只能定义一个主键,主键一定要为notnull。
● &comment &#39;string&#39;:对于列的描述,string是描述的内容。
● &reference_definition:指定参照的表和列。
10. (1).复制表 : create table 表名 like 表名1
语法格式:
create [temporary] table[if not exists] tbl_name
& & [ ( )like old_ name [ ] ]
& & | [as (select_statement)] ;
使用LIKE关键字创建一个与old _name表相同结构的新表,列名、数据类型、空指定和索引也将复制,但是表的内容不会复制,因此创建的新表是一个空表。使用as关键字可以复制表的内容,但索引和完整性约束是不会复制的。select_statement表示一个表达式,例如,可以是一条select语句。
(2).删除表 : drop table 表名(这个命令将表的描述、表的完整性约束、索引及和表相关的权限等都全部删除) & &
(3).修改表名 : rename子句,语法格式:
rename table old_name to new_name
new_tbl_name是新表名。例如,将表a改名为b:alter table &除了上面的alter table命令,还可以直接用renametable语句来更改表的名字。
● &order by子句(以后介绍):用于在创建新表时,让各行按一定的顺序排列。注意,在插入和删除后,表不会仍保持此顺序。在对表进行了大的改动后,通过使用此选项,可以提高查询效率。在有些情况下,如果表按列排序,对于MySQL来说,排序可能会更简单。
● &table_options:修改表选项,具体定义与create table语句中一样。
可以在一个alter table语句里写入多个add、alter、drop和chang子句,中间用逗号分开。这是MySQL相对于标准SQL的扩展。在标准SQL中,每个alter table语句中每个子句只允许使用一次。
11.说明:表中大多数的选项涉及的是表数据如何存储及存储在何处。多数情况下,不必指定表选项。engine选项是定义表的存储引擎,具体在附录E中介绍。
USE mydb1;
CREATE TABLE XS
& &学号 & & &char(6) & &NOTNULL &primary KEY,
& &姓名 & & &char(8) & &NOTNULL ,
专业名 &char(10) &NOT NULL ,
性别 & &tinyint(1) NOT NULL default &1
) engine=InnoDB;
说明:&primary KEY&表示将&学号&字段定义为主键。&default 1&表示&性别&的默认值为1。&engine=InnoDB&表示采用的存储引擎是InnoDB,InnoDB是MySQL在Windows平台默认的存储引擎,所以&engine=InnoDB&可以省略。
● &ignore:是MySQL相对于标准SQL的扩展。若在修改后的新表中存在重复关键字,如果没有指定ignore,当重复关键字错误发生时操作失败。如果指定了ignore,则对于有重复关键字的行只使用第一行,其他有冲突的行被删除。
● &column_definition:定义列的数据类型和属性,具体内容在create table的语法中已做说明。
● &first| after col_name:表示在某列的前或后添加,不指定则添加到最后。
注意:若表中该列所存数据的数据类型与将要修改的列的类型冲突,则发生错误。例如,原来char类型的列要修改成int类型,而原来列值中有字符型数据&a&,则无法修改。
13. & 1). &空值(NULL)概念
空值通常表示未知、不可用或将在以后添加的数据。若一个列允许为空值,则向表中输入记录值时可不为该列给出具体值;而一个列若不允许为空值,则在输入时必须给出该列的具体值。
注意:表的关键字不允许为空值。空值不能与数值数据0或字符类型的空字符混为一谈。任意两个空值都不相等。 & &
2). &列的IDENTITY(标志)属性
对任何表都可创建包含系统所生成序号值的一个标志列,该序号值唯一标志表中的一列,可以作为键值。每个表只能有一个列设置为标志属性,该列只能是decimal、int、numeric、smallint、bigint 或tinyint 数据类型。定义标志属性时,可指定其种子(即起始)值、增量值,二者的默认值均为 1。系统自动更新标志列值,标志列不允许空值。
在下列情况下,MySQL隐含地改变在一个CREATE TABLE语句给出的一个列类型(这也可能在ALTER TABLE语句上出现)。
14.MySQL隐含地改变列类型:
(1)长度小于4的varchar被改变为char。
(2)如果在一个表中的任何列有可变长度,结果使整个行是变长。
因此,如果一张表包含任何变长的列(varchar、text或Blob),所有大于3个字符的char列被改变为varchar列。这在任何方面都不影响用户如何使用列。在MySQL中这种改变可以节省空间并且使表操作更快捷。
(3)timestamp的显示尺寸必须是偶数且在2~14的范围内。如果指定0显示尺寸或比14大,尺寸被强制为14。从1~13范围内的奇数值尺寸被强制为下一个更大的偶数。
(4)不能在一个timestamp列里面存储一个NULL,将它设为NULL默认为当前的日期和时间。
如果想要知道MySQL是否使用了除指定的以外的一种列类型,在创建表之后,使用一个DESCRIBE语句即可。DESCRIBE语句在3.1.4节介绍。
15 type定义如下:
说明:在字符数据类型和数值数据类型之后,MySQL允许指定一个数据类型选项用来改变数据类型的属性和功能。
对于字符数据类型,MySQL支持两种数据类型选项:CHARACTERSET和COLLATE。如果要区分字符的大小写情况,可以在字符类型后面加上BINGARY。
对于除BIT以外的数值数据类型,MySQL允许添加一个或多个数据类型选项。UNSIGNED:不允许负值。ZEROFILL:当插入的值长度小于字段设定的长度时,剩余部分用0填补。
spatial_type是空间类型数据。
16. &表选项table_option定义如下:
{engine | type} = engine_name & & & & & & //存储引擎
| auto_increment = value & & & & & & & //初始值
| auto_increment = value & & & & & & & //表的平均行长度
| [default] charcter set charset_name [collatecollation_name] &//默认字符集和校对
| checksum = {0 | 1} & & & & & & &//设置为1表示求校验和
| comment= &#39;string&#39; & & & & & & & //注释
| connection = &#39;connect_string&#39; & & //连接字符串
| MAX_ROWS = value & & & & & & & //行的最大数
| MIN_ROWS = value & & & & & & & //列的最小数
| PACK_KEYS = {0 | 1 | DEFAULT}
| password = &#39;string&#39; & & & & & & & //对.frm文件
| delay_key_write = {0 | 1} & & & & & //对关键字的更新
|row_format={DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT} & & & & & & & & & & //定义各行应如何储存 & &
| union = (tbl_name[,tbl_name]...) & &//表示哪个表应该合并
| insert_method = { NO | FIRST | LAST}//是否执行INSERT语句
|data directory = &#39;absolute path todirectory&#39; & & //数据文件的路径
| index directory = &#39;absolute path todirectory& //索引的路径
作者 tianyazaiheruan

我要回帖

更多关于 数据库default value 的文章

 

随机推荐