CREATE TABLE NAME ( id INT auto_increment, NAME CHAR (20), sid int, PRIMARY KEY (id, sid) ); 插入數據(1,'a',1),主鍵值爲:(1,1) ,插入(1,'b',2),主鍵爲(1,2),兩個主鍵值不徹底相等便可
CREATE TABLE name1 ( id INT auto_increment, NAME CHAR (20), UNIQUE qu_name (NAME), INDEX (id) )
三.自增mysql
CREATE TABLE `more2` (
`id` int(11) NOT NULL AUTO_INCREMENT, `pc_name` char(20) DEFAULT NULL, `owner_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uq_more2` (`owner_id`), CONSTRAINT `one2_more2` FOREIGN KEY (`owner_id`) REFERENCES `one2` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 1 | #步長
| auto_increment_offset | 1 | #數量默認起始值
+--------------------------+-------+sql
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 3 |
| auto_increment_offset | 5 |
+--------------------------+-------+數據庫
新建鏈接,查看自增起始值和步長服務器
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
+--------------------------+-------+session
咱們發送,經過修改session變量,僅本次鏈接有效,若是要使修改的值永久有效,須要修改global變量運維
2.4查看global自增相關變量值ide
show global variables like '%auto_inc%'; spa
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
+--------------------------+-------+設計
2.5 修改global變量code
set global auto_increment_increment=2; #修改自增步長
set global auto_increment_offset=2; #修改自增列起始值
2.6 新建鏈接查看,配置依舊生效 。可是不建議使用該方法進行修改
create table morekey( id int auto_increment, sid int, name char(20), PRIMARY KEY(id,sid) ); CREATE table morekey1( id1 INT, sid1 INT, name1 CHAR(20), CONSTRAINT fk_moremore FOREIGN KEY(id1,sid1) REFERENCES morekey(id,sid) )
create table morekey( id int auto_increment, sid int, name char(20), PRIMARY KEY(id,sid) ); CREATE table morekey1( id1 INT, sid1 INT, name1 CHAR(20), CONSTRAINT fk_moremore FOREIGN KEY(id1,sid1) REFERENCES morekey(id,sid) )
-- pc編號 CREATE TABLE hostinfo( id int auto_increment PRIMARY KEY, host_name CHAR(20) ); -- 用戶資產信息 CREATE TABLE employ( id int auto_increment PRIMARY KEY, name char(20), pc_id int, UNIQUE uq_hostinfo_employ (pc_id), CONSTRAINT fk_hostinfo_employ FOREIGN KEY (pc_id) REFERENCES hostinfo(id) );
-- 主機信息表 CREATE TABLE pcinfo( id int auto_increment PRIMARY KEY, host_name char(20) ); -- 管理員信息表 CREATE TABLE admininfo( id int auto_increment PRIMARY KEY, name char(20) ); -- 管理員主機對應表 CREATE TABLE admin_pc( id int auto_increment PRIMARY KEY, pc_id int , user_id int, UNIQUE uq_user_pc (pc_id,user_id), CONSTRAINT fk_admin_pc FOREIGN KEY(pc_id) REFERENCES pcinfo(id), CONSTRAINT fk_admin_user FOREIGN KEY(user_id) REFERENCES admininfo(id) );
五.操做表內容高級運用補充
1.笛卡爾積
笛卡爾積是關係代數裏的一個概念,表示兩個表中的每一行數據任意組合。例如A表中有三條數據,B表中有三條數據,則使用命令:
select * from A,B,則會產生九條結果。A表的每一個值都會和B表的每一個值產生一條對應的值。關係圖以下:
2.臨時表,將過濾出來的數據臨時當成一張表使用
命令格式:(SELECT 列名 FROM 表) as B 應用 連表操做: SELECT * FROM (SELECT sid FROM score) as B LEFT JOIN student on student.sid=B.sid; 把score表中過濾出來的數據和student表進行連表操做
3.insert插入過濾後的表內容
INSERT INTO class(caption) SELECT name FROM class2; ps:須要注意的是,插入的列要跟表的列一致
4.條件語句
句型:case when 條件 then 條件爲正返回 esle 條件爲假返回 end
case when id<10 then 1 else 0 end; #若是id小於10,則返回1,不然返回0
5.利用常量來統計
select count(1) from tablename groub by id;
6.插入動態值
SELECT student_id, (select num from score as s2 where s2.student_id=s1.student_id and course_id = 1) as 語文, (select num from score as s2 where s2.student_id=s1.student_id and course_id = 2) as 數學, (select num from score as s2 where s2.student_id=s1.student_id and course_id = 3) as 英語 from score as s1;
s1表的值能夠再內循環中使用。相似於:
for student_id in s1: for id in s2: s2=s1
7.三元運算
if(條件,爲真返回,爲假返回)
e.g:if (isnull(xx),0,1) 若是爲null,則返回0,不然返回1