Mysql中对table的操作问题

今天利用一个mysql问题来对前期学习Mysql操作的一个小小的检验!!现在总结一下Mysql中对表格的建立、插入特定的数据、以及查询满足某一段条件的数据等等进行操作。

首先需要建立如下三个表(table);

客户表   customer:

cno            客户号

cname      客户名称

商品表   goods:

gno          商品号

gname      商品名称

订单表     orders:

data         日期(8位整数表示,如20160823)

ono          订单号

cno          客户号

gno         商品号

amount   数量

Mysql 对表格的建立代码:

 1 create database if not exists test;  //首先创建一个数据库
 2
 3 use test;  //进入数据库
 4
 5 create table customer( id int auto_increment primary key); //创建table id列自动 +1
 6
 7 alter table customer add column (cno varchar(20), cname varchar(20));   //添加cno列和cname列
 8
 9 insert into customer
10 (cno, cname)
11 values
12 ("001", "001"),
13 ("002", "002"); //这样创建好了customer表

customer表:

如此操作得到goods表以及orders表:

1.查询2015年没有被购买过的商品号和商品名称:

1  select goods.gno, goods.gname from goods
2 where goods.gno not in (select orders.gno from orders where orders.data between 20150101 and 20151231);

示列结果:

2.查询2016年的订单,显示订单的日期、订单号、客户名:

1 select orders.data, orders.ono, orders.cno from orders
2 where orders.data between 20160101 and 20161231;

示列结果:

3.删除2015年以前的订单:

1 delete from orders
2 where orders.data < 20150101;
3
4
5 select * from orders; //查询orders数据

示列结果:

4.查询订单数在4个以上商品号和总数量并按总数量降序排序:

1 select gno, amount from orders
2 where amount > 4 order by amount desc;

示列结果:

基本操作就是这样的,这几天一直在研究Mysql语法,脑袋感觉处于一种浆糊的感觉,还是需要一点点时间将这些东西慢慢吸收!

其中关于给订单创建一个合适的索引没有想到很明确的方法,我的思维是删除id主键,添加日期或者其他列作为新的索引;这样操作是因为我将id作为自动增加且主键吧

记录一下一些用到的语法:

 1 alter table tablename drop id;  //删除id列
 2
 3 alter table tablename add id int auto_increment primary key first;  // 将id列添加到第一列并且赋予主键索引
 4
 5
 6 delete from tablename where id =1;//删除id=1这一行
 7
 8 update tablename set column = values where  id = 1;//在id=1这行中将 values赋值给column列
 9
10 select * from tablename order by cast(column as signed/unsigned integer);//改变列属性将varchar改变成int
1 alter table tables add index(column);//创建索引
2
3 alter table tablename add primary key(column);//创建主键索引
时间: 2024-11-05 12:14:30

Mysql中对table的操作问题的相关文章

MySQL中create table as 与like的区别分析

这篇文章主要介绍了MySQL中create table as 与like的区别,结合实例分析了二者在使用中的具体区别与主要用途,需要的朋友可以参考下,具体如下: 对于mysql的复制相同表结构方法,有create table as 和create table like 两种,区别是什么呢? 代码如下: create table t2 as select * from t1 where 1=2; as创建出来的t2表(新表)缺少t1表(源表)的索引信息,只有表结构相同,没有索引. 代码如下: cr

mysql中OPTIMIZE TABLE的作用及使用

来看看手册中关于 OPTIMIZE 的描述: OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... 如果您已经删除了表的一大部分,或者如果您已经对含有可变长度行的表(含有VARCHAR, BLOB或TEXT列的表)进行了很多更改,则应使用OPTIMIZE TABLE.被删除的记录被保持在链接清单中,后续的INSERT操作会重新使用旧的记录位置.您可以使用OPTIMIZE TABLE来重新利用未使用的空间,并整理

mysql中OPTIMIZE TABLE的作用

在使用mysql的时候有时候,可能会发现尽管一张表删除了许多数据,但是这张表表的数据文件和索引文件却奇怪的没有变小.这是因为mysql在删除数据(特别是有Text和BLOB)的时候,会留下许多的数据空洞,这些空洞会占据原来数据的空间,所以文件的大小没有改变.这些空洞在以后插入数据的时候可能会被再度利用起来,当然也有可能一直存在.这种空洞不仅额外增加了存储代价,同时也因为数据碎片化降低了表的扫描效率. 1.先来看看多次删除插入操作后的表索引情况 mysql> SHOW INDEX FROM `tb

mysql中 show table status 获取表信息

用法 mysql>show table status; mysql>show table status like 'esf_seller_history'\G; mysql>show table status like 'esf_%'\G; 例子: mysql>show table status like 'esf_seller_history'\G; 1.Name 表名称 2.Engine: 表的存储引擎 3.Version: 版本号 4.Row_format 行格式. 对于My

详细讲述MySQL中的子查询操作 (来自脚本之家)

继续做以下的前期准备工作: 新建一个测试数据库TestDB: ? 1 create database TestDB; 创建测试表table1和table2: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 CREATE TABLE table1 (   customer_id VARCHAR(10) NOT NULL,   city VARCHAR(10) NOT NULL,   PRIMARY KEY(customer_id) )ENGINE=INNODB DEFAULT CH

mysql中修改密码的操作

注意:以管理员身份打开命令提示符 1登入并修改密码(在mysql.exe所在的bin目录中进行操作) F:\software\mysql-5.7.18-win32\bin>mysql -uroot -p //登录mysql Enter password: ************ //密码就是输入的密码 2.设置mysql密码 mysql> set password=password('123456'); //修改密码 Query OK, 0 rows affected, 1 warning

MySQL中进行update/delete操作时,发生 Error Code: 1175

问题为个人遇到记录,各位大牛免喷. 在MYSQL的一张表进行 update 操作时,发现不能操作,发生如下错误. 在对 对于此问题, 原因:MYSQL的安全机制造成的,默认是不允许随意进行 删改 数据. 解决办法 : 将安全机制降低, 执行如下语句即可  set sql_safe_updates = 0; 如图:可成功执行update语句

mySql中alter table的使用

1.修改表名:alter table 原表名 rename to 新表名; 2.新增列:alter table 表名 add column 列名 varchar(20) ; 3.删除列:alter table 表名 drop column 列名; 4.修改列名: alter table 表名 change 原列名 新列名 varchar(20) ; 5.修改列属性:alter table 表名 modify 列名 varchar(20) ;

MySQL中pymysql的具体操作

1.导入pymysql包 import pymysql 2.创建连接对象 pymysql.connect(参数列表) 3.获取游标对象 cursor =conn.cursor() 4.执行SQL语句 row_count = cursor.execute(sql) 5.获取查询结果集 result = cursor.fetchall() 6.将修改操作提交到数据库 conn.commit() 7.回滚数据 conn.rollback() 8.关闭游标 cursor.close() 9.关闭连接 c