1. 程式人生 > >數據庫模塊(2天)sql基礎

數據庫模塊(2天)sql基礎

數據行 級別 input sdfas bsp 授權 spl aps hostname

技術分享圖片
節回顧:
    1. 以ATM引出DBMS
    2. MySQL
        - 服務端
        - 客戶端
    3. 通信交流
        - 授權
        - SQL語句
            - 數據庫
                create database db1; ?
                drop database db1;
                
            - 數據表
                先創建tb2部門表
                    
                create table tb1用戶表(
                    id int 
not null auto_increment primary key, name char(10), department_id int, p_id int, constraint fk_1 foreign key (department_id,p_id) references tb2(tid,xid) )engine=innodb default charset=utf8; 創建外鍵可以()寫多個,註意裏面的多列是一個主鍵 補充:主鍵 一個表只能有一個主鍵 主鍵可以由多列組成 補充:外鍵 ? CREATE TABLE t5 ( nid int(
11) NOT NULL AUTO_INCREMENT, pid int(11) not NULL, num int(11), primary key(nid,pid)這兩列組成一個主鍵,多列組成的主鍵不常用,但是要知道 ) ENGINE=InnoDB DEFAULT CHARSET=utf8; create table t6( id int auto_increment primary key, name char(
10), id1 int, id2 int, CONSTRAINT fk_t5_t6 foreign key (id1,id2) REFERENCES t1(nid,pid) )engine=innodb default charset=utf8; - 數據行 insert into tb1(name,age) values(alex,18); delete from tb1;自增列計數不會清空 truncate table tb1;自增列計數清空 delete from tb1 where id > 10 update tb1 set name=root where id > 10 select * from tb; select id,name from tb; 4 對於自增補充: desc t10; show create table t10; show create table t10 \G; alter table t10 AUTO_INCREMENT=20;修改表的自增來 MySQL: 自增步長 基於會話級別: show session variables like auto_inc%; 查看全局變量 set session auto_increment_increment=2; 設置會話步長 # set session auto_increment_offset=10; 基於全局級別: show global variables like auto_inc%; 查看全局變量 set global auto_increment_increment=2; 設置會話步長 # set global auto_increment_offset=10; SqlServer:自增步長: 基礎表級別: CREATE TABLE `t5` ( `nid` int(11) NOT NULL AUTO_INCREMENT, `pid` int(11) NOT NULL, `num` int(11) DEFAULT NULL, PRIMARY KEY (`nid`,`pid`) ) ENGINE=InnoDB AUTO_INCREMENT=4, 步長=2 DEFAULT CHARSET=utf8 CREATE TABLE `t6` ( `nid` int(11) NOT NULL AUTO_INCREMENT, `pid` int(11) NOT NULL, `num` int(11) DEFAULT NULL, PRIMARY KEY (`nid`,`pid`) ) ENGINE=InnoDB AUTO_INCREMENT=4, 步長=20 DEFAULT CHARSET=utf8 今日內容: 0. 唯一索引(可以聯合唯一索引) 語法 create table t1( id int ...., num int, xx int, unique 唯一索引名稱 (列名,列名), constraint .... ) # 1 1 1 2 1 2 唯一索引的主要作用PS: 唯一: 約束不能重復(可以為空) PS: 主鍵不能重復(不能為空) 作用是加速查找,如果以後有用到唯一但是為不為空不限制 就可以考慮主鍵和約束 1. 外鍵的變種 a. 用戶表和部門表 用戶: 1 alex 1 2 root 1 3 egon 2 4 laoyao 3 部門: 1 服務 2 保安 3 公關 ===》 一對多 b. 用戶表和博客表 用戶表: 1 alex 2 root 3 egon 4 laoyao 博客表: FK() + 唯一 1 /yuanchenqi/ 4 2 /alex3714/ 1 3 /asdfasdf/ 3 4 /ffffffff/ 2 ===> 一對一 create table userinfo1( id int auto_increment primary key, name char(10), gender char(10), email varchar(64) )engine=innodb default charset=utf8; create table admin( id int not null auto_increment primary key, username varchar(64) not null, password VARCHAR(64) not null, user_id int not null, unique uq_u1 (user_id), CONSTRAINT fk_admin_u1 FOREIGN key (user_id) REFERENCES userinfo1(id) )engine=innodb default charset=utf8; c. 用戶表(百合網) 相親記錄表 示例1: 用戶表 相親表 示例2: 用戶表 主機表 用戶主機關系表 ===》多對多 create table userinfo2( id int auto_increment primary key, name char(10), gender char(10), email varchar(64) )engine=innodb default charset=utf8; create table host( id int auto_increment primary key, hostname char(64) )engine=innodb default charset=utf8; create table user2host( id int auto_increment primary key, userid int not null, hostid int not null, unique uq_user_host (userid,hostid), CONSTRAINT fk_u2h_user FOREIGN key (userid) REFERENCES userinfo2(id), CONSTRAINT fk_u2h_host FOREIGN key (hostid) REFERENCES host(id) )engine=innodb default charset=utf8; 2. SQL語句數據行操作補充 create table tb12( id int auto_increment primary key, name varchar(32), age int )engine=innodb default charset=utf8; 增 insert into tb11(name,age) values(alex,12); 單條 insert into tb11(name,age) values(alex,12),(root,18);多條 insert into tb12(name,age) select name,age from tb11;把某個表,查出來放到另一個表 刪 delete from tb12; delete from tb12 where id !=2 delete from tb12 where id =2 delete from tb12 where id > 2 delete from tb12 where id >=2 delete from tb12 where id >=2 or name=alex 改 update tb12 set name=alex where id>12 and name=xx update tb12 set name=alex,age=19 where id>12 and name=xx 增刪改就那幾種最要還是查的多 查 select * from tb12; select id,name from tb12; select id,name from tb12 where id > 10 or name =xxx; select id,name as cname from tb12 where id > 10 or name =xxx; as起別名 select name,age,11 from tb12;額外的常量列11 其他: select * from tb12 where id != 1 select * from tb12 where id in (1,5,12); select * from tb12 where id not in (1,5,12); select * from tb12 where id in (select id from tb11) where後面的select只能寫一列 select * from tb12 where id between 5 and 12; 通配符: select * from tb12 where name like "a%" %表示任務多個字符(0個或多個) select * from tb12 where name like "a_" _代指一個字符 分頁: select * from tb12 limit 10; select * from tb12 limit 0,10; 從0開始後面取10條 select * from tb12 limit 10,10; 前面的是起始位置 select * from tb12 limit 20,10; select * from tb12 limit 10 offset 20; 從20開始取10條 結合python分頁 # page = input(‘請輸入要查看的頁碼‘) # page = int(page) # (page-1) * 10 # select * from tb12 limit 0,10; 1 # select * from tb12 limit 10,10;2 排序: select * from tb12 order by id desc; 大到小 select * from tb12 order by id asc; 小到大 select * from tb12 order by age desc,id desc; 取後10條數據 select * from tb12 order by id desc limit 10;
View Code

數據庫模塊(2天)sql基礎