mysql单表,mysql单表最大行数

by admin on 2019年11月6日

生机勃勃:在新表已经济建设立好的状态下

mysql通过一张表更新另一张表,mysql一张另一张表

【mysql】关于不时表,【mysql】

mysql单表,mysql单表最大行数

数据库的创设和删除
  黑窗口运行数据库服务:net start mysql
  关闭数据库服务:net stop mysql

创造数据库
动用首要字create database
格式:
create database 数据库名;
create database 数据库名 character set 字符集;

查阅mysql中具有的数据库
show databases;

查阅有个别数据库的定义音信
show create database 数据库名 例:show create database mybase;

切换数据库
use 数据库名 例:use test;

查看正在选取的数据库
select database;

除去数据库
drop database 数据库名称 例:drop database test;

成立数据库中的表.

行使首要字create table
[]在数据库中是可选的意趣,能够有,能够未有
格式:
create table 表名(
  字段名 数据类型[长度] [约束],
  字段名 数据类型[长度] [约束],
  ……
  字段名 数据类型[长度] [约束](最终三个不可能有逗号)
);
例:创立商品分类表category
create table category(
  cid int primary key,
  cname varchar(100)
);

查看当前数据库中享有的表
show tables;

查看表结构
desc 表名 例:desc category;

删除表
格式:drop table 表名
例:drop table category;

改过表增多列
alter table 表名 add 列名 类型[长度] [约束];
例:alter table category add name int ;

修正表修正列的种类长度及限定
alter table 表名 modify 列名 类型[长度] [约束];
当心:如若有数据 ,必得注意数据类型varchar–>轻巧有错误数据
例:alter table category modify description int;
alter table category modify description varchar(20) not null;

修改列名以至数据类型和封锁
alter tble 表名 drop 列名;
瞩目:要是列中有数据 数据就能够一齐删除了 需稳重
例:alter table category drop descr;

改良表名
rename table 表名 to 新表名
例:rename table category to student;

校正表的字符集
alter table 表名 character set 字符集
注意:不提议进行 有极大可能率会发出乱码
例:alter table category character set gbk;

往数据库表中插入数据
使用首要字insert [into]
格式:
满含主键:insert into 表名(字段1,字段2,….) values (值1,值2,….);
主键自增,省略主键:insert into 表名 (不分包主键) values (不分包主键);
注意事项:
1.字段和值应当要挨个对应(个数,数据类型)
2.除了数值类型(int ,double),别的的数据类型都亟需利用引号包裹起来
能够行使”.也能够动用””,提出采用”
含蓄主键:insert into 表名 (字段1,字段2,…) values (值1,值2,….);
例:insert into category (cid,cname) values (1,”服装”);
insert into category (cid,cname) values (1,”彩电”);

创立category表主键自增auto_increment(主键本身丰裕,自身压实)
例:create table category(
  cid int primary key auto_increment,
  cname varchar(100)
);
主键自增,省略主键:insert into 表名 (不带有主键) values (不含有主键);
例:insert into category (cname) values (“彩电”);

 

批量安顿数据
格式:
含有主键:insert into 表名 (字段1,字段2,…) values
(值1,值2,…),(值1,值2,…),(值1,值2,…);
主键自增,省略主键:insert into 表名 (不分包主键) values
(值1,值2,…),(值1,值2,…)..;
insert into category (cid,cname) values (3,’空调’),(4,’洗衣机’);
insert into category (cname) values (‘微波炉’),(‘电磁炉’);

省略字段名格式:必得付出全体字段的值(富含主键)
格式:
insert into 表名 values (全部字段的值);
insert into 表名 values (全体字段的值),(全体字段的值),..;
例:insert into category values(7,’冰箱’);
insert into category values(8,’台式机Computer’),(‘台式机’);

加上数码,记不住主键的处境下,能够动用null ,sql会自行测算主键
例:insert into category values (null,’小米6′);

更新表数据,使用首要字update(更新,改良) set(设置)
格式:
不带条件过滤,一回改善列中存有的数据
update 表名 set 字段名=字段值,字段名=字段值,…;
带条件过滤,使用主要字where
update 表名 set 字段名=字段值,字段名=字段值,…where 过滤条件;
不低标准过滤(慎用)
例:update category set cname=’全体制纠正过’;
带条件过滤,使用主要字where
update category set cname=’黑白电视机机’ where cid=4;

删去表数据 使用重要字delete from
格式:
delete from 表名 [where 条件过滤];
delete from 表名 删除表中的兼具数据,不过不会删除主键自增
truncate table
表名;删除表中的富有数据,会删除主键自增,让主键自增重新苏醒设置从1方始
delete from 表名 [where 条件过滤];
例:delete from category where cid=4;
delete from 表名
例:delete from category;
动用delete删除之后插入数据,主键会冒出断号,未有后边的序号
insert into category (cname) values (‘手机’);
delete from category where cid=12;
insert into category (cid,cname) values(12,’手动插入钦定的主键列’);

truncate table 表名
例:truncate table category

主键节制
选用主要primary key
作用:
封锁主键列不能够为null
不能够再一次
各样表都必需有八个主键,且一定要有三个主键
主键不能够使用工作数据

累计主键的首先种艺术
在列名之后一直抬高
create table persons(
  Id_p int primary key,
  LastName varchar(255),
  FirstName varchar(255),
  Address varchar(255),
  City varchar(255)
);
insert into persons(Id_p,LastName) values (1,’张’);
insert into persons(Id_p,LastName) values (null,’张’);– 非空
insert into persons(Id_p,LastName) values (1,’张’);– 重复

拉长主键的第三种办法
使用constraint区域
格式:
[constraint 名称] primary key (字段列表)
CREATE TABLE persons(
  Id_P INT,
  LastName VARCHAR(255),
  FirstName VARCHAR(255),
  Address VARCHAR(255),
  City VARCHAR(255),
  CONSTRAINT pk_id_p PRIMARY KEY(Id_P)
);
constraint假使不提交主键的名字,能够简轻巧单关键字constraint
CREATE TABLE persons(
  Id_P INT,
  LastName VARCHAR(255),
  FirstName VARCHAR(255),
  Address VARCHAR(255),
  City VARCHAR(255),
  PRIMARY KEY(Id_P)
);

加上主键的第两种办法
创制表之后,通过修正表结构,增多主键的率先种艺术
alter table 表名 add [constraint 名称] primary key (字段列表);
CREATE TABLE persons(
  Id_P INT,
  LastName VARCHAR(255),
  FirstName VARCHAR(255),
  Address VARCHAR(255),
  City VARCHAR(255)
);
ALTER TABLE persons ADD PRIMARY KEY(Id_P);

删去主键
alter table persons drop primary key;

三头主键
利用七个以上的字段为主键
CREATE TABLE persons(
  Id_P INT,
  LastName VARCHAR(255),
  FirstName VARCHAR(255),
  Address VARCHAR(255),
  City VARCHAR(255),
  PRIMARY KEY(LastName,FirstName)
);

非空约束
使用首要字not null
功能:强制节制某一列不能够为null(不选拔null值)

开创非空限定的第生机勃勃种格式,创设表示,字段后直接交给
CREATE TABLE persons(
  Id_P INT PRIMARY KEY AUTO_INCREMENT,
  LastName VARCHAR(255),
  FirstName VARCHAR(255),
  Address VARCHAR(255),
  City VARCHAR(255) NOT NULL
);
丰裕数据
INSERT INTO persons(lastname,city) VALUES(‘张’,’雄县’);
INSERT INTO persons(lastname,city) VALUES(‘李’,’null’);
INSERT INTO persons(lastname,city) VALUES(‘王’,”);
INSERT INTO persons(lastname,city) VALUES(‘赵’,NULL);– Column ‘City’
cannot be null

java看破尘凡
String s =””;s=”null” s=null; void

成立非空约束措施二
改正表结构
alter table 表名 modify 列名 类型[长度] [约束];
CREATE TABLE persons(
  Id_P INT PRIMARY KEY AUTO_INCREMENT,
  LastName VARCHAR(255),
  FirstName VARCHAR(255),
  Address VARCHAR(255),
  City VARCHAR(255)
);
ALTER TABLE persons MODIFY city VARCHAR(255)NOT NULL;

除去非空节制
alter table persons modify city varchar(255);

 

唯风流倜傥约束
应用首要字unique
成效:加多了唯豆蔻梢头节制的字段,无法再度

创设独一限定的率先种格式,创造表时,在字段后直接提交
CREATE TABLE persons(
  Id_P INT PRIMARY KEY AUTO_INCREMENT,
  LastName VARCHAR(255),
  FirstName VARCHAR(255),
  Address VARCHAR(255),
  City VARCHAR(255) UNIQUE
);
INSERT INTO persons (lastname,city) VALUES(‘张’,’长滩岛’);
— Duplicate entry ‘东极岛’ for key ‘City’
INSERT INTO persons (lastname,city) VALUES(‘王’,’阿萨Teague岛’);

创设唯生龙活虎节制的第二种格式,创立表时接纳[constraint 名称] unique
(字段列表)

CREATE TABLE persons(
  Id_P INT PRIMARY KEY AUTO_INCREMENT,
  LastName VARCHAR(255),
  FirstName VARCHAR(255),
  Address VARCHAR(255),
  City VARCHAR(255),
  CONSTRAINT UNIQUE(City)
);

成立唯生龙活虎限制的第两种格式,创建表之后,校订表数据
alter table 表名 modify 列名 类型[长度] [约束];
CREATE TABLE persons(
  Id_P INT PRIMARY KEY AUTO_INCREMENT,
  LastName VARCHAR(255),
  FirstName VARCHAR(255),
  Address VARCHAR(255),
  City VARCHAR(255)
);
ALTER TABLE persons MODIFY city VARCHAR(255) UNIQUE;
alter table 表名 add [constraint 名称] unique (字段列表)
CREATE TABLE persons(
  Id_P INT PRIMARY KEY AUTO_INCREMENT,
  LastName VARCHAR(255),
  FirstName VARCHAR(255),
  Address VARCHAR(255),
  City VARCHAR(255)
);
ALTER TABLE persons ADD UNIQUE(City);

去除唯生龙活虎约束
alert table persons drop index 名称
概念限制的时候,若无成立名称,则名字为字符串
alter table persons drop index city;

默许节制
给字段加多一个默许值,借使字段没有插入值,则运用私下认可值
行使首要字default值
创制默许约束措施大器晚成,成立表,列数据类型前面 default ‘暗中认可值’
CREATE TABLE persons(
  Id_P INT PRIMARY KEY AUTO_INCREMENT,
  LastName VARCHAR(255),
  FirstName VARCHAR(255),
  Address VARCHAR(255),
  City VARCHAR(255)DEFAULT ‘中国’
);
INSERT INTO persons (lastname) VALUES(‘张’);
INSERT INTO persons (lastname,city) VALUES(‘张’,’加拿大’);

数据库的创设和删除
黑窗口运营数据库服务:net start mysql 关闭数据库服务:net stop mysql
创造数量库 使用主要字…

mysql用三个表更新另一个表的点子,mysql更新另叁个表

Solution 1:  修改1列

update student s, city c
set s.city_name = c.name
where s.city_code = c.code;

Solution 2:  改正四个列

update  a,  b

set a.title=b.title, a.name=b.name
where a.id=b.id

Solution 3: 接收子查询

update student s set city_name = (select name from city where code =
s.city_code);

以上那篇mysql用一个表更新另叁个表的措施正是小编共享给我们的全部内容了,希望能给大家八个参照,也冀望我们多多点拨帮客之家。

Solution 1: 修改1列 update student s, city c set s.city_name = c.name
where s.city_code = c.code; Solution…

1,拷贝全数的字段

 

在mysql中,通过一张表的列更改另一张关联表中的内容:

1:  修改1列

update student s, city c
   set s.city_name = c.name
 where s.city_code = c.code;

 

2:  改善三个列

update a, b 
set a.title=b.title, a.name=b.name
where a.id=b.id

 

3: 选用子查询

update student s set city_name = (select name from city where code = s.city_code);

 

REF:

在mysql中,通过一张表的列校订另一张关联表中的内容: 1: 修正1列 update
student s, city c s…

mysql官方的牵线

In some cases, the server creates internal temporary tables while
processing queries. Such a table can be held in memory and processed by
the MEMORY storage engine, or stored on disk and processed by
the MyISAM storage engine. The server may create a temporary table
initially as an in-memory table, then convert it to an on-disk table if
it becomes too large. Users have no direct control over when the server
creates an internal temporary table or which storage engine the server
uses to manage it

以下两种状态会创制临时表

  • UNION查询
  • 用到TEMPTABLE算法大概是UNION查询中的视图
  • 在JOIN查询中,OENVISIONDEPRADO BY大概GROUP BY使用了不是第三个表的列
    比方:SELECT * from TableA, TableB ORDER BY TableA.price GROUP by
    TableB.name
  • 表连接中,OCR-VDEXC90 BY的列不是驱动表中的
  • DISTINCT查询而且拉长O景逸SUVDERAV4 BY时
  • SQL中用到SQL_SMALL_RESULT选项时
  • FROM中的子查询
  • 子查询或然semi-join时创建的表
  • 多表更新sql
  • GROUP_CONCAT() or COUNT(DISTINCT) evaluation

在偏下三种情况下,会创制磁盘有时表

  • 表包含TEXT或者BLOB列
  • 在 GROUP BY 恐怕 DSTINCT 的列中有超越 512字符 的字符类型列(恐怕超过512字节的 二进制类型列,在5.6.15事先只管是不是超过512字节卡塔 尔(阿拉伯语:قطر‎
  • 在SELECT、UNION、UNION
    ALL查询中,存在最大尺寸超越512的列(对于字符串类型是513个字符,对于二进制类型则是512字节卡塔尔
  • 实施SHOW
    COLUMNS/FIELDS、DESCGL450IBE等SQL命令,因为它们的实施结果用到了BLOB列类型

有的时候表相关安插

tmp_table_size:钦赐系统创建的内部存款和储蓄器有的时候表最大尺寸

max_heap_table_size: 钦命顾客成立的内部存款和储蓄器表的最大尺寸

The maximum size for in-memory temporary tables is the minimum of
thetmp_table_size and max_heap_table_size values

insert into new_table select * from old_table

优化提议 

日常要幸免选拔有时表

1、在O安德拉DEEscort BY可能GROUP BY的列上创制索引

2、TEXT、BLOB等大字段,拆分表

 

从5.7.5最初,新增贰个系统选项 internal_tmp_disk_storage_engine 可定义磁盘一时表的内燃机类型为
InnoDB,而在这里早前,只可以动用 MyISAM。

在5.6.3之后新添的系统筛选 default_tmp_storage_engine 是调控 CREATE
TEMPORAQashqaiY
TABLE 创建的有的时候表的发动机类型,在这里前暗中认可是MEMOWranglerY,不要把这两侧混淆了

ysql> show variables like 'default_tmp%'; 
+----------------------------+--------+
| Variable_name              | Value  |
+----------------------------+--------+
| default_tmp_storage_engine | InnoDB |
+----------------------------+--------+
1 row in set (0.00 sec)

mysql> create temporary table tmp1(id int not null);  
Query OK, 0 rows affected (0.17 sec)

mysql> show create table tmp1 \G
*************************** 1. row ***************************
       Table: tmp1
Create Table: CREATE TEMPORARY TABLE `tmp1` (
  `id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

mysql> set default_tmp_storage_engine = myisam;
Query OK, 0 rows affected (0.00 sec)

mysql> create temporary table tmp2 (id int(11) unsigned not null comment 'primary key' );
Query OK, 0 rows affected (0.01 sec)

mysql> show create table tmp2 \G
*************************** 1. row ***************************
       Table: tmp2
Create Table: CREATE TEMPORARY TABLE `tmp2` (
  `id` int(11) unsigned NOT NULL COMMENT 'primary key'
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)


mysql> set default_tmp_storage_engine = memory;
Query OK, 0 rows affected (0.00 sec)

mysql> create temporary table tmp3 (id int(11) unsigned not null comment 'primary key' ); 
Query OK, 0 rows affected (0.00 sec)
mysql> show create table tmp3 \G
*************************** 1. row ***************************
       Table: tmp3
Create Table: CREATE TEMPORARY TABLE `tmp3` (
  `id` int(11) unsigned NOT NULL COMMENT 'primary key'
) ENGINE=MEMORY DEFAULT CHARSET=utf8

 

参考: 

mysql官方的介绍 In
some cases, the server creates internal temporary tables while
processing queries. Such a table can be held in memo…

2,拷贝部分字段表

insert into new_table(id,name,sex) select id,name,sex from old_table

3,拷贝部分的行

insert into new_table select  *  from old_table where id=”1″

4,拷贝部分的行和字段

insert into new_table(id,name,sex) select id,name,sex form old_table
where id=’1′

二:在新表还并未有建的气象下

方案一:

create table new_table (select * from old_table)

这种方案建的话,只是拷贝的询问的结果,新表不会有主键和目录

方案二:

create table new_table LIKE old_table

该方案必须要拷贝表结构到新表中,不会拷贝数据

方案三:

要是要真正的复制三个数额到新表,大家得以向来推行上边包车型客车说话

create table new_table LIKE old_table;

insert into new_table select * from old_table;

三:我们也能够操作其余的数据库中的表

create table new_table LIKE ortherdatabase.old_table;

insert into new_table select * from ortherdatabase.old_table;

ortherdatabase.old_table中的ortherdatabase是钦命的多少库名

四:我们也足以在新建表时改名字

create table new_table (select id,name as username from old_table)

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图