【1】建立员工档案表
要求字段:员工员工编号,员工姓名,性别,工资,email,入职时间,部门。

【2】合理选择数据类型及字段修饰符,要求有NOT NULL,auto_increment, primary key等。

DROP TABLE IF EXISTS `workers_info`;
CREATE TABLE `workers_info` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`workername` varchar(20) NOT NULL,
`sex` enum(F,M,S),
`salary` int(11) DEFAULT '0',
`email` varchar(30),
`EmployedDates` date,
`department` varchar(30),
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

mysql> alter table workers_info ADD sex enum('F','M','S');

【3】查看表的结构

mysql> desc  workers_info;

【4】新增qq和tel字段,要求tel字段位于email前,要求入职时间是最后一个字段------添加字段

mysql> ALTER TABLE workers_info ADD tel varchar(15) after salary;

mysql> ALTER TABLE workers_info ADD qq int;
ALTER TABLE workers_info MODIFY EmployedDates date after qq;

alter table bops_bad_word add COLUMN `isDelete` enum('Y','N') DEFAULT 'N' COMMENT '是否删除(Y为已删除/N或空为正常)';

【5】把email字段修改成mailbox------修改字段名

mysql> ALTER TABLE workers_info CHANGE email mailbox varchar(30);

【6】向表里添加10条记录------添加数据

mysql> INSERT INTO workers_info (workername,salary,tel,mailbox,department,qq,EmployedDates) values('xing',10000,'1598232123','xing@qq.com','yanfa',736019646,20121221);

【7】修改其中两条记录的tel和mailbox------修改数据

mysql> UPDATE workers_info SET mailbox = 'haha@qq.com',tel='1246543423' WHERE id = 13;

【8】查看所添加记录------查询数据

mysql> select * from workers_info;

【9】查看姓名和入职时间记录

mysql> select workername,EmployedDates from workers_info;

【10】查询入职时间在2003年以前的------日期筛选

mysql> select * from workers_info where year(EmployedDates) < 2003;

【11】查询工资最高和最低的员工姓名------排序

mysql> select * from workers_info ORDER BY salary limit 1;
mysql> select * from workers_info ORDER BY salary desc limit 1;

【12】查询平均工资------平均函数

mysql> select avg(salary) from workers_info;

【13】统计男员工人数、女员工人数------总和函数

mysql> select count(1) from workers_info where sex="M";

【14】按照入职时间先后进行排序,并显示前5位员工姓名

mysql> select * from workers_info ORDER BY EmployedDates limit 5;

版权出自:http://blog.csdn.net/kakane/article/details/7401111

----------

Demo:

1、最简单的:

CREATE TABLE t1(
   id int not null,
   name char(20)
);

2、带主键的:

CREATE TABLE t1(
   id int not null primary key,
   name char(20)
);

  复合主键:

CREATE TABLE t1(
   id int not null,
   name char(20),
   primary key (id,name)
);

3、带默认值的:

primary key,
   name char(20) default '1'
);

转帖:

) ) ) ) ,
) ),
) ) ),
))
;

)   NOT NULL
                     CHECK(DIVISION IN ('first','second')),
        FOREIGN KEY   (PLAYERNO) REFERENCES PLAYERS (PLAYERNO))
;

),
 ),
        FOREIGN KEY (TEAMNO) REFERENCES TEAMS (TEAMNO),
        FOREIGN KEY (PLAYERNO) REFERENCES PLAYERS (PLAYERNO))
;

,)   ),
        FOREIGN KEY (PLAYERNO) REFERENCES PLAYERS (PLAYERNO))
;

),
        PRIMARY KEY   (PLAYERNO, BEGIN_DATE),
        FOREIGN KEY   (PLAYERNO) REFERENCES PLAYERS (PLAYERNO),
        CHECK(BEGIN_DATE < END_DATE),
        CHECK(BEGIN_DATE >= DATE('1990-01-01')))

;

mysql修改字段注释方法:

来源:http://blog.sina.com.cn/s/blog_72aace390102uwgg.html

1. 问题

     已经有很多数据的按照业务逻辑分表的一系列表修改一个字段(类型,如-1:默认值,1:表示'人员id',2:表示‘公司id’)的注释
 
2. 解决方法
 
     1> 使用alter table方法
ALTER TABLE table_name  MODIFY COLUMN column_name TINYINT(tinyint表示column类型)COMMENT '-1:默认值,1:人员id,2:公司id';
这种方法会重建表,如果数据量大,一个表100w数据,执行1min,如果分表数30个那就总共需要执行30min
 
     2> 使用元数据表
USE information_schema;
UPDATE COLUMNS t  SET t.column_comment  = '-1:默认值,1:人员id,2:公司id'  WHEREt.TABLE_SCHEMA='database_name' AND t.table_name='table_name'  ANDt.COLUMN_NAME='column_name ';
 查询语句,更新前可以查询一下
SELECT t.column_comment FROM COLUMNS t WHERE t.TABLE_SCHEMA='database_name' ANDt.TABLE_NAME='table_name' AND t.COLUMN_NAME='column_name ';
本想这种修改元数据的方法可以修改表的字段注释,但是没有权限执行,错误如下:
错误代码: 1044

Access denied for user 'usr'@'%' to database 'information_schema'

咦?这是为毛呢???!!!
想法很丰满,现实很骨感。
官方解释:
INFORMATION_SCHEMA是信息数据库,其中保存着关于MySQL服务器所维护的所有其他数据库的信息。在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。
每位MySQL用户均有权访问这些表,但仅限于表中的特定行,在这类行中含有用户具有恰当访问权限的对象。
事实上,尽管不需要生成名为INFORMATION_SCHEMA的文件,我们仍提供了名为INFORMATION_SCHEMA的新数据库。可以使用USE语句将INFORMATION_SCHEMA选择为默认数据库,但访问该数据库中所含表的唯一方式是使用SELECT语句。不能在其中插入内容,不能更新它们,也不能删除其中的内容。

更多信息请戳链接:
http://dev.mysql.com/doc/refman/5.1/zh/information-schema.html
     
网摘:
Mysql没有Oracle那么方便,修改注释的时候需要指定{type}(这是Mysql设计的不合理性!);系统数据字典表COLUMNS中有保存所有表的字段信息,但是系统字典表是只读的,无法修改注释;
所以,Mysql修改注释必须按照上面的格式对不同类型做判断,并且带有长度的字段必须指明length与decimals,否则更新注释的时候会修改length,decimals为默认值的;
修改Mysql注释是件麻烦的事情,但是也只能这样了
 
    3> 难道就没有别的方法了?
Are you kidding?!如果没有别的办法了我会写3!!!
当对于一个大表进行ALTER TABLE的时候,性能问题就产生了。MySQL大部分改动的步骤如下:根据新的表结构创建一个空表,从旧表中把数据取出来插入到新表中,在删除旧表。这是个非常漫长的过程。许多人ALTER TABLE之后,都有等待1小时或者1天的痛苦经历。
你可以这样,新建一个表,改变那个列的comment,然后原始实例关闭,替换.frm文件,再重启。
详情请咨询dba,这可是个技术活,我等rd表示一头雾水。可以参考
 
      4> 我等RD难道会因为改不了column注释就此放弃吗?
R U kidding again?!!
妥协方案,修改你的程序DB实体注释,大部分实体注释和DB注释一致,但是如果遇到频繁增加type类型这种情况。。。还是跟DB实体加注释吧,或者如果有枚举类型,枚举里描述清楚,这样起码让后来人能够不那么迷茫
 
吐槽:mysql真傻,真的...
 

SQL定时任务:

--- 新增自动收货天数字段
alter table `csc_order`.`order_current` drop column `automatic_receipt`,
add column `automaticReceipt` int(11) DEFAULT '15' NOT NULL COMMENT '发货后自动收货天数(默认15天,可延迟收货)' after `source`;

--- 新增自动收货定时任务
INSERT INTO csc_appframework.task(`projectId`, `taskName`, `taskCron`, `taskType`, `taskAddress`, `taskTime`, `addDate`, `modifyDate`, `status`)
VALUES('19','自动确认收货','0 0 0-23 * * ?','0','http://192.168.0.134:9108/order-app/order/automaticReceipt','0',NOW(),NOW(),'0');

MySQL创建和操作数据库表demo的更多相关文章

  1. MySQL-5.7创建及查看数据库表

    1.创建数据库表的三种语句 创建一个新表: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [tab ...

  2. SQL分类之DDL:操作数据库表

    DDL:操作数据库表 1.操作数据库:CRUD 1.C(Create):创建 创建数据库: create database 数据库名称 创建数据库,判断不存在,再创建: create database ...

  3. MySQL(2)数据库 表的查询操作

    来源参考https://www.cnblogs.com/whgk/p/6149009.html 跟着源博客敲一遍可以加深对数据库的理解,同时对其中一些代码做一些改变,可以验证自己的理解. 本文改动了其 ...

  4. MySQL(3) - 数据库表的相关操作

    1.数据库表的创建 逻辑库 1)创建逻辑库:CREATE DATABASE 逻辑库名称; 2)显示逻辑库:SHOW DATABASES; 3)删除逻辑库:DROP DATABASE 逻辑库名称; 数据 ...

  5. 创建access数据库表demo的封装

    1.创建类 public void CreateBiao(ADOX.Catalog catlog,ADOX.Table table) { //StuId Column(AutoIncrement ) ...

  6. mysql客户端的导出数据库表和数据库数据等相关操作

    1.navicat for mysql 11.0.10客户端 导出数据库里所有表中的所有数据,方法如下,选中表,在横向导航栏里面找到“导出向导”,选中sql,点击下一步,点击全选,并且选中“应用相同目 ...

  7. MySQL中的information_schema数据库表说明

    MySQL 中的 information_schema 数据库   版权声明:https://blog.csdn.net/kikajack/article/details/80065753 1. 概述 ...

  8. mysql一:操作数据库

    创建数据库是指在数据库空间中划出一块空间用来存储相关的数据,表就是存储在对应的数据库里面.首先来看下查看数据库的命令:show databases. 这个是用来查询数据库空间下所有的数据库,其中inf ...

  9. MySQl的库操作、表操作和数据操作

    一.库操作 1.1库的增删改查 (1)系统数据库: performance_schema:用来收集数据库服务器的性能参数,记录处理查询时发生的各种事件.锁等现象 mysql:授权库,主要存储系统用户的 ...

随机推荐

  1. IOS高德地图逆地理编码定位+网络判断

    先说下这功能的流程,  流程:判断用户是否联网--->获取用户地理位置经纬度--->通过经纬度去查询地理位置名称 //高德地图 @property (nonatomic, strong) ...

  2. Scalaz(52)- scalaz-stream: 并行运算-parallel processing concurrently by merging

    如果scalaz-stream真的是一个实用的数据流编程工具库的话,那它应该能处理同时从多个数据源获取数据以及把数据同时送到多个终点(Sink),最重要的是它应该可以实现高度灵活的多线程运算.但是:我 ...

  3. PHP mongodb AR

    <?php /** * @author xiaojiang */ abstract class MongoAr{ private $db = null; public function __co ...

  4. GJM :Sql 各种语句 以及函数 [转载]

    版权声明:本文原创发表于 [请点击连接前往] ,未经作者同意必须保留此段声明!如有侵权请联系我删帖处理! 1.更改数据库的名称 2.表中有数据的情况下再添加列.删除列 3.在SQLServer 中各种 ...

  5. 基于 jQuery 实现垂直滑动的手风琴效果

    今天我们要与大家分享一个漂亮而灵活的垂直 jQuery 手风琴效果.其主要思想是扩大手风琴片上的点击和显示更多的信息.其他内容片段将变得不那么透明.当使用一个导航箭头导航下一个片段,新的片会从顶部或底 ...

  6. Font Combiner – 自定义网页字体和图标生成工具

    Font Combiner 是一个功能丰富的 Web 字体生成工具和字体改进工具,提供字距调整.构造子集.各种提示选项和自定义字体字形组合.您可以生成您自己的自定义字体的格式和文件大小. 另外还有成千 ...

  7. 学习使用 SVG 创建材料设计涟漪(Ripple)效果

    Codrops 上面发布了一个深入的教程,就如何建立谷歌材料设计的径向操作规范中列出的涟漪效果,并基于 SVG 和 GreenSock 来实现.随着谷歌的材料设计的出现,带来了一个视觉语言,创建跨平台 ...

  8. 选中repeater表格中的一行使其变色

    //table表中点击行,选中的那一行颜色会变成浅蓝色(颜色可以自己设定) //其中sellerTable 为table的id, $("#sellerTable tbody tr" ...

  9. CSS3滚动条-webkit-scrollbar

    webkit现在支持拥有overflow属性的区域,列表框,下拉菜单,textarea的滚动条自定义样式. 如果你想跳过介绍,直接看demo的话,请点击demo 滚动条是一个伪元素,可以自定义样式.这 ...

  10. iframe父页面获取子页面的高度

    最近做项目中用到了iframe,子页面更改父页面的高度,经过九九八十一难,找到了解决的办法. $(window).load(function() {  var h=$(document).height ...