在mysql 中为表的字段添加唯一性约束的语句怎么写

建表时加上唯一性约束:

CREATE TABLE `t_user` (

`Id` int(11) NOT NULL AUTO_INCREMENT,  — 自增

`username` varchar(18) NOT NULL unique,  — 唯一性约束

`password` varchar(18) NOT NULL,

PRIMARY KEY (`Id`)

) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=gbk;

MySQL是一个关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

扩展资料:

MySQL 作为数据库,系统特性:

1、使用 C和 C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。

2、支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。

3、为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby,.NET和 Tcl 等。

4、优化的 SQL查询算法,有效地提高查询速度。

5、提供多语言支持,常见的编码如中文的 GB 2312、BIG5,日文的 Shift_JIS等都可以用作数据表名和数据列名。提供 TCP/IP、ODBC 和 JDBC等多种数据库连接途径。

6、支持大型的数据库。可以处理拥有上千万条记录的大型数据库。支持多种存储引擎。

参考资料:百度百科-mySQL

mysql 查询语言 一张表的数据插入另一张表的sql语句

示例:

INSERTINTOTPersonnelChange(

UserId,

DepId,

SubDepId,

PostionType,

AuthorityId,

ChangeDateS,

InsertDate,

UpdateDate,

SakuseiSyaId

)SELECT

UserId,

DepId,

SubDepId,

PostionType,

AuthorityId,

DATE_FORMAT(EmployDate,’%Y%m%d’),

NOW(),

NOW(),

1

FROM

TUserMstWHERE

`Status`=0

ANDQuitFlg=0

ANDUserId>2

扩展资料

mysql从一张表查数据并插入另一张表

INSERTINTOtable1(table1_field1,table1_field2,…)selecttable2_filed1,table2_field2,…fromtable2wherecondition1andcondition2…;

//一张表符合条件的数据插入另一张表对应字段中

insertintoshelve_goods_info(product_id,`name`,image,original_amount,amount,spec_id,spec_str,sync_time,last_updtime)selectDISTINCTproduct_id,`name`,image,original_amount,amount,spec_id,spec_str,sync_time,NOW()fromjingguo_order_goodsgroupbyproduct_idorderbysync_timedesc;

//根据一张表的数据修改另一张表的数据

updateshelve_goods_infoass,ttastsets.print_title=t.newname,s.price=t.newprice,original_price=Ceil(t.newprice*10/8)wheres.name=t.orname;

如何使用mysql语句向表中插入数据

在mysql中要向数据库中保存数据我们最常用的一种方法就是直接使用Insert into语句来实现了,下面我来给大家详细介绍Insert into语句用法

INSERT用于向一个已有的表中插入新行。INSERT…VALUES语句根据明确指定的值插入行。让我们先来看一下insert语句标准的定义,放在[]内的都是可以省略的:

语法

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]

[INTO] tbl_name [(col_name,…)]

VALUES ({expr | DEFAULT},…),(…),…

[ ON DUPLICATE KEY UPDATE col_name=expr, … ]

实例

create table links (name varchar(255) not null default ”, address varchar(255) not null default ”);

最简单的插入方法

代码如下

复制代码

Mysql>insert into worker values(‘tom’,’tom@yahoo.com’),(‘paul’,’paul@yahoo.com’);

insert into links values(‘jerichen’,’gdsz’);

批量保存数据

假如我们想一次性的往数据库里插入多条数据咋办?一定要写多条语句吗?肯定是不会的,因为MySQL设计的还是很人性的。其提供insert语句的

一种非标准格式,即,values(字段值1,字段值2,字段值3),(另一个字段1的值,另一个字段2的值,另一个字段3的值);

# 同时插入两条数据,看语法说明,那个into被我省略了

代码如下

复制代码

insert links (name,url) values(‘jerichen’,’gdsz’),(‘alone’,’gdgz’);

使用INSERT…SELECT语句插入从其他表选择的行

当我们在上一节学习创建表时,知道可以使用select从其它表来直接创建表,甚至可以同时复制数据记录。如果你已经拥有了一个表,你同样可以从select语句的配合中获益。

从其它表中录入数据,例如:

代码如下

复制代码

mysql>insert into tbl_name1(col1,col2) select col3,col4 from tbl_name2;

你也可以略去目的表的列列表,如果你每一列都有数据录入。

代码如下

复制代码

mysql>insert into tbl_name1 select col3,col4 from tbl_name2;

INSERT INTO … SELECT语句满足下列条件:

查询不能包含一个ORDER BY子句。

MYSql 建表的同时添加外键的语句

ALTER TABLE B

ADD CONSTRAINT fk_B_A

FOREIGN KEY (ordersId)

REFERENCES orderts(ordersId);

如果你还不是很明白的话, 下面是详细的例子:

— 创建测试主表. ID 是主键.

CREATE TABLE test_main (

id INT NOT NULL,

value VARCHAR(10),

PRIMARY KEY(id)

);

— 创建测试子表.

CREATE TABLE test_sub (

id INT NOT NULL,

main_id INT ,

value VARCHAR(10),

PRIMARY KEY(id)

);

— 插入测试主表数据.

INSERT INTO test_main(id, value) VALUES (1, ‘ONE’);

INSERT INTO test_main(id, value) VALUES (2, ‘TWO’);

— 插入测试子表数据.

INSERT INTO test_sub(id, main_id, value) VALUES (1, 1, ‘ONEONE’);

INSERT INTO test_sub(id, main_id, value) VALUES (2, 2, ‘TWOTWO’);注意,MySQL 建立表的时候,需要确认引擎,是否是 InnoDB 。

Innodb存储引擎支持FOREIGN KEY和REFERENCES子句。

Innodb存储引擎执行ADD [CONSTRAINT [symbol]] FOREIGN KEY (…) REFERENCES … (…)。请参见15.2.6.4节,“FOREIGN KEY约束”。

对于其它存储引擎,这些子句会被分析,但是会被忽略。

注意,MySQL 外键,必须指定 主表的列名称

mysql> ALTER TABLE test_sub

-> ADD CONSTRAINT main_id_cons

-> FOREIGN KEY (main_id)

-> REFERENCES test_main(id);

-> //

Query OK, 2 rows affected (0.17 sec)

Records: 2 Duplicates: 0 Warnings: 0

mysql> DELETE FROM

-> test_main

-> WHERE

-> id = 1;

-> //

ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constrai

nt fails (`test`.`test_sub`, CONSTRAINT `main_id_cons` FOREIGN KEY (`main_id`) R

EFERENCES `test_main` (`id`))

mysql中查询数据库中表名称和结构的sql语句是什么啊啊

TABLE 语句

具体语法:TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]

其实从语法上看,可以排序,也可以过滤记录集,不过比较简单,没有 SELECT 那么强大。

示例 1

简单的建一张很小的表 y1,记录数为 10 条。表 t1,插入 10 条记录

mysql-(ytt/3305)->create table t1 (r1 int,r2 int);

Query OK, 0 rows affected (0.02 sec)

mysql-(ytt/3305)->insert into t1

with recursive aa(a,b) as (

select 1,1

union all

select a+1,ceil(rand()*20) from aa where a < 10

) select * from aa;

Query OK, 10 rows affected (0.00 sec)

Records: 10  Duplicates: 0  Warnings: 0

简单全表扫描mysql-(ytt/3305)->select * from t1;+——+——+| r1   | r2   |+——+——+|    1 |    1 ||    2 |    9 ||    3 |    9 ||    4 |   17 ||    5 |   17 ||    6 |   16 ||    7 |    6 ||    8 |    1 ||    9 |   10 ||   10 |    3 |+——+——+10 rows in set (0.00 sec)

TABLE 结果mysql-(ytt/3305)->table t1;+——+——+| r1   | r2   |+——+——+|    1 |    1 ||    2 |    9 ||    3 |    9 ||    4 |   17 ||    5 |   17 ||    6 |   16 ||    7 |    6 ||    8 |    1 ||    9 |   10 ||   10 |    3 |+——+——+10 rows in set (0.00 sec)

看下 table 的执行计划mysql-(ytt/3305)->explain table t1 order by r1 limit 2\G*************************** 1. row ***************************           id: 1  select_type: SIMPLE        table: t1   partitions: NULL         type: ALLpossible_keys: NULL          key: NULL      key_len: NULL          ref: NULL         rows: 10     filtered: 100.00        Extra: Using filesort1 row in set, 1 warning (0.00 sec)

其实可以看到 TABLE 内部被 MySQL 转换为 SELECT 了。mysql-(ytt/3305)->show warnings\G*************************** 1. row ***************************  Level: Note   Code: 1003Message: /* select#1 */ select `ytt`.`t1`.`r1` AS `r1`,`ytt`.`t1`.`r2` AS `r2` from `ytt`.`t1` order by `ytt`.`t1`.`r1` limit 21 row in set (0.00 sec)

那其实从上面简单的例子可以看到 TABLE 在内部被转成了普通的 SELECT 来处理。示例 2应用于子查询里的子表。这里要注意,内表的字段数量必须和外表过滤的字段数量一致。克隆表 t1 结构mysql-(ytt/3305)->create table t2 like t1;Query OK, 0 rows affected (0.02 sec)

克隆表 t1 数据mysql-(ytt/3305)->insert into t2 table t1;Query OK, 10 rows affected (0.00 sec)Records: 10  Duplicates: 0  Warnings: 0

table t1 被当做内表,表 t1 有两个字段,必须同时满足 t2 检索时过滤的字段也是两个。mysql-(ytt/3305)->select * from t2 where (r1,r2) in (table t1);+——+——+| r1   | r2   |+——+——+|    1 |    1 ||    2 |    9 ||    3 |    9 ||    4 |   17 ||    5 |   17 ||    6 |   16 ||    7 |    6 ||    8 |    1 ||    9 |   10 ||   10 |    3 |+——+——+10 rows in set (0.00 sec)

注意:这里如果过滤的字段数量和子表数量不一致,则会报错。

mysql怎么用语句建表

mysql使用create语句进行创建数据库表,具体语法:

CREATE TABLE table_name (column_name column_type);

其中需要表名,表中字段名,字段属性;示例:创建一个学生信息表 sql如下

CREATE TABLE IF NOT EXISTS `student`(

`student_id` INT UNSIGNED AUTO_INCREMENT,

`student_name` VARCHAR(100) NOT NULL,

`student_age` int(3) NOT NULL,

PRIMARY KEY ( `student_id` ))ENGINE=InnoDB DEFAULT CHARSET=utf8;