mysql中表的练习

1.创建一个表:

主键id 用户名 性别 体重(kg) 生日 工资 上次登陆时间 个人简介
               

--术语:建表的过程就是声明字段过程。声明数据类型。

  1. CREATE TABLE homework(
  2. id INT(10) NOT NULL PRIMARY KEY
  3. )ENGINE=INNODB DEFAULT CHARSET=utf8;

-- 建表取名原则:

  • 表名、列名不能有空格和中文。
  • 不能以数字开头
  • 表一般都有前缀。以下划线分隔。
  • 列名要见名思议。
  • 列名带上注释。

2.创建一个表头并修改列

--在表中增加列:

ALTER TABLE 表名 ADD 列名 列数据类型(长度) 是否为空 DEFAULT

  1. ALTER TABLE homework ADD NAME VARCHAR(20)

--新增一列到指定的某一列后面

ALTER TABLE 表名 ADD 列名 数据类型(长度) AFTER 列名;

  1. ALTER TABLE homework ADD sex CHAR(1) AFTER NAME;

--最前面加上一列

ALTER TABLE 表名 ADD 列名  数据类型(长度) FIRST;

  1. ALTER TABLE homework ADD number INT(2) FIRST;

--修改表名

RENAME TABLE 旧表名 TO 新表名;

  1. RENAME TABLE homework TO homework1;

--删除一列

ALTER TABLE 表名 DROP 列名;

  1. ALTER TABLE homework DROP number;

--查看表的结构

DESC 表名;

  1. DESC homework;

--修改列类型

ALTER TABLE 表名 MODIFY 数据类型(长度);

  1. ALTER TABLE homework MODIFY weight DECIMAL(3,2);

--修改列名

ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型(长度);

  1. ALTER TABLE homework CHANGE jianjie jieshao VARCHAR(30);

数值类型:

浮点类型:

decimal(5,2) 5是精度,2是标度。精度表示保存值的主要位数,标度表示小数点后面可以保存的位数。

时间类型:

TIMESTAMP列用于INSERT或UPDATE操作时记录日期和时间。如果你不分配一个值,表中的第

一个TIMESTAMP列自动设置为最近操作的日期和时间。也可以通过分配一个NULL值,

将TIMESTAMP列设置为当前的日期和时间。

sysdate() 函数,获取数据库时间。

3.数据的处理

  • 新增(insert)

--向homework表中插入一条数据,只插入主键和姓名:

INSERT INTO表名(主键列名,姓名列名) VALUES(主键数据,‘姓名‘);

  1. INSERT INTO homework(id,NAME) VALUES(11,‘小明‘);

--向homework表中插入一条数据,所有值都插入值:

INSERT INTO homework VALUES(每一列的数据,用逗号隔开);

  1. INSERT INTO homework VALUES(77,‘小画‘,‘女‘,55.366,19990826,12233.346,SYSDATE(),‘经理‘);

#注意:

1.主键不能重复

2.非空的列必须要插入值。

3.所有列都插入值的话,表名后面可以不带括号。

  • 删除(delete)

--根据名字来删除homework表中的小明:

DELETE FROM 表名 WHERE 名字列名=‘数据名‘;

  1. DELETE FROM homework WHERE NAME=‘小明‘;

--根据id来删除homework表中的小伟:

DELETE FROM 表名 WHERE id列名=‘数据名‘;

#注意:id是主键,所以一个id代表一条数据。

--删除表中性别为女且都是经理的人:

DELETE FROM 表名 WHERE 性别列名=‘女‘ AND 列名=‘经理‘;

  1. DELETE FROM homework WHERE sex=‘女‘ AND jieshao=‘经理‘;

--删除表中生日为空的人:

DELETE FROM 表名 WHERE 生日列名 IS NULL;

  1. DELETE FROM homework WHERE birthday IS NULL;

--删除表中性别不为女性的人:

DELETE FROM 表名 WHERE 性别列名<>‘女‘;

  1. DELETE FROM homework WHERE sex<>‘女‘;

--删除表中体重超过65的人:

DELETE FROM 表名 WHERE 体重列名>65;

  1. DELETE FROM homework WHERE weight >65;

  • 更新 (update)

--更新表中姓名为小琴的人的体重:

UPDATE 表名 SET 体重列明=数据 姓名列名 =‘姓名‘ AND 主键=数据;

  1. UPDATE homework SET weight=60 WHERE NAME=‘小琴‘AND id=88;

--更新表中所有人的备注都为员工:

UPDATE 表名 SET 备注列名=‘数据‘;

  1. UPDATE homework SET jieshao=‘员工‘;

--更新表中小华的性别改为男、体重75、介绍为经理:

UPDATE 表名SET sex=‘男‘,weight=70,jieshao=‘经理‘ WHERE NAME=‘小华‘;

  1. UPDATE homework SET sex=‘男‘,weight=70,jieshao=‘经理‘WHERE NAME=‘小华‘;

  • 查询 (select)

--查询所有人的姓名:

SELECT 列名 FROM 表名;

  1. SELECT NAME FROM homework;

--查询所有人的信息:

SELECT * FROM 表名;

  1. SELECT * FROM homework;

--查询所有员工的姓名和性别:

SELECT 姓名列名 ,性别列名 FROM 表名 WHERE 列名=‘数据‘;

  1. SELECT NAME ,sex FROM homework WHERE jieshao=‘员工‘;

null

时间: 2024-12-07 07:37:21

mysql中表的练习的相关文章

mysql中表名是order的CRUD的错误

org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for t

解决mysql中表字符集gbk,列字符集Latin1,python查询乱码问题

最近在公司碰到一个异常蛋疼的情况,mysql数据库中,数据库和表的字符集都是'gbk',但是列的字符集却是'latin1',于是蛋疼的事情出现了. 无论我连接字符串的`charset`设置为`gbk`,`utf8`,`latin1`中的任意一种,查询出来的表中数据的中文都是乱码,在查询中加上如下代码也还是无济于事: SET NAMES latin1 在更换各种py链接库,然后疯狂的google和问了各路大神之后,终于找到解决思路如下: 1.通过hex(column)将列中的数据2进制转为16进制

Mysql中表名作为参数的问题

近期由于程序的异常,导致数据库中创建了大量的表(约4000个),纠结的是表中的数据还都是有用的. 需要合并到一个表中,首先想到的就是使用存储过程来处理,但由于表名都是动态生成的,需要解决在存储过程中处理以表名作为参数的问题. 1.用set或者declare语句将表名定义为变量,在sql中的表名位置使用变量,经验证行不通,数据库会把变量名当作表名. 2.要进行的操作直接用concat拼接出来,然后直接执行这个sql.可如何在存储过程中执行拼接的sql,经查找可使用PREPARE 来完成. 下面是示

在线批量修改mysql中表结构

1.获取要修改的表的表名称登录mysql库,查询出所有表 show tables; 将需要修改表结构的表名称存放到b.txt文件中2.执行修改修改表引擎为InnoDB for i in `cat b.txt`;do /usr/local/percona-toolkit/bin/pt-online-schema-change --user=root --password=123456 --host=localhost --charset=utf8 --alter="ENGINE=InnoDB&qu

MYsql中表的基本操作

基本的创建一张表 CREATE TABLE userinfo(        username CHAR(5) NOT NULL,        pwd VARCHAR(35),        age CHAR(1), sex SMALLINT(100)    ) 蓝色的代表是SQL中的关键字 CREATE TABLE userinfo是表名,字段的创建方式如 username CHAR(5),username代表字段名后面第二位的字段的数据类型括号里的是字段长度,NOT NULL 表的重命名

MySQL中表复制:create table like 与 create table as select

CREATE TABLE A LIKE B 此种方式在将表B复制到A时候会将表B完整的字段结构和索引复制到表A中来. CREATE TABLE A AS SELECT x,x,x,xx FROM B LIMIT 0 此种方式只会将表B的字段结构复制到表A中来,但不会复制表B中的索引到表A中来.这种方式比较灵活可以在复制原表表结构的同时指定要复制哪些字段,并且自身复制表也可以根据需要增加字段结构. 两种方式在复制表的时候均不会复制权限对表的设置.比如说原本对表B做了权限设置,复制后,表A不具备类似

MySQL中表复制:create table like 与 create table as select

1    CREATE TABLE A LIKE B此种方式在将表B复制到A时候会将表B完整的字段结构和索引复制到表A中来. 2.    CREATE TABLE A AS SELECT * FROM B 此种方式只会将表B的字段结构复制到表A中来,但不会复制表B中的索引到表A中来.这种方式比较灵活可以在复制原表表结构的同时指定要复制哪些字段,并且自身复制表也可以根据需要增加字段结构. 两种方式在复制表的时候均不会复制权限对表的设置.比如说原本对表B做了权限设置,复制后,表A不具备类似于表B的权

mysql中表触发器的简单使用

以前有接触过触发器,但没有亲自写过,所以在这里简单写个例子: 功能为:两张表t_test,t_emp;给t_test添加触发器让t_test每插入一条数据,就给t_emp中num字段值增1: 1,建立t_test表 2.另建表t_emp如下: 3.右键t_test表->设计表,然后如下: 4.t_emp初始化值为0,如下: 5.t_test添加一条记录: 6.打开t_emp表,发现num值自动变为1啦!如下: 当然也可以改为其他功能的触发器,在这里就不一一讲解啦,朋友若有兴趣就多去试试.

MySQL中表的复制

1.语法 create table 表名 select .. from 表名 where 条件; 2.示例 1.复制MOSHOU.sanguo表的全部记录和字段,sanguo2 create table sanguo2 select * from MOSHOU.sanguo; 2.复制MOSHOU.sanguo表的前3条记录,sanguo3 create table sanguo3 select * from MOSHOU.sanguo limit 3; 3.复制MOSHOU.sanguo表的i