1. 程式人生 > >mysql(連線查詢和資料庫設計)

mysql(連線查詢和資料庫設計)

 

--建立學生表 create table students ( id int unsigned not null auto_increment primary key, name varchar(20) default '', age tinyint unsigned default 0, high decimal(5,2), gender enum('男', '女', '中性', '保密') default '保密', cls_id int unsigned default 0, is_delete bit default 0 );  

 

--建立班級表     create table classes( id int unsigned auto_increment primary key not null, name varchar(20) not null );

 

--往students表裡插入資料 insert into students values (0,'小明',18,180.00,2,1,0), (0,'小玥玥',19,180.00,2,2,0), (0,'彭于晏',28,185.00,1,1,0), (0,'劉德華',58,175.00,1,2,0), (0,'黃蓉',108,160.00,2,1,0), (0,'鳳姐',44,150.00,4,2,1), (0,'王祖賢',52,170.00,2,1,1), (0,'周杰倫兒',34,null,1,1,0), (0,'程坤',44,181.00,1,2,0), (0,'和珅',55,166.00,2,2,0), (0,'劉亦菲',29,162.00,3,3,0), (0,'金星',45,180.00,2,4,0), (0,'靜香',18,170.00,1,4,0), (0,'郭靜',22,167.00,2,5,0), (0,'周杰',33,178.00,1,1,0), (0,'錢小豪',56,178.00,1,1,0), (0,'謝霆鋒',38,175.00,1,1,0);

 

  --向classes表裡插入資料 insert into classes values (0, '雲唯_01期'),(0, '雲唯_02期');    

 

-- 連線查詢 -- inner join ... on -- 兩個表連線查詢 select * from students inner join classes -- 查詢能夠對應班級的學生以及班級資訊 select * from students inner join classes on students.cls_id=classes.id; -- 按照要求顯示姓名,班級 select students.*, classes.name from students inner join classes on students.cls_id=classes.id;   -- 給資料表起名字 select s.name, c.name from students as s inner join classes as c on s.cls_id=c.id;   -- 查詢 有能夠對應班級的學生以及班級資訊,顯示學生的所有資訊,只顯示班級名稱 select students.*, classes.name from students inner join classes on students.cls_id=classes.id;   -- 在以上查詢中將班級姓名顯示在第一列 select classes.name,students.* from students inner join classes on students.cls_id=classes.id;   -- 查詢有能夠對應班級的學生以及班級資訊,按照班級進行排序 select classes.id, students.* from students inner join classes on students.cls_id=classes.id order by classes.id;   -- 當是同一個班級的時候,按照學生的id從小到大 select classes.id, students.* from students inner join classes on students.cls_id=classes.id order by classes.id, students.id;  

 

-- 自關聯 create table areas( aid int primary key auto_increment, name varchar(20), pid int ); -- 查詢出河北省所有市 select * from areas as province inner join areas as city on province.aid=city.pid having name='河北省';

 

select province.name,city.name from areas as province inner join areas as city on province.aid=city.pid having province.name='河北省';   -- 子查詢 -- 標量子查詢 -- 查詢出北京市所有區的資訊 select * from areas where pid=(select aid from areas where name='北京市');     select * from areas where pid in (select aid from areas where name='北京市');  

資料庫設計

1.第一正規化(確保每列保持原子性)

第一正規化是最基本的正規化。如果資料庫表中的所有欄位值都是不可分解的原子值,就說明該資料庫表滿足了第一正規化。

2.第二正規化(確保表中的每列都和主鍵相關)

第二正規化在第一正規化的基礎之上更進一層。第二正規化需要確保資料庫表中的每一列都和主鍵相關,而不能只與主鍵的某一部分相關(主要針對聯合主鍵而言)。也就是說在一個數據庫表中,一個表中只能儲存一種資料,不可以把多種資料儲存在同一張資料庫表中。

3.第三正規化(確保每列都和主鍵列直接相關,而不是間接相關)

第三正規化需要確保資料表中的每一列資料都和主鍵直接相關,而不能間接相關。  
  • 1.1第一正規化

   
  •  2.1第二正規化  

  • 3.1第三正規化

   

相關推薦

mysql連線查詢資料庫設計

  --建立學生表 create table students ( id int unsigned not null auto_increment primary key, name varchar(20) default '',

連線查詢資料庫設計

-- 連線查詢 -- inner join ... on -- 兩個表連線查詢 select * from students inner join classes -- 查詢能夠對應班級的學生以及班級資訊 select * from students inner join classes on student

定時備份指令碼分享網站資料資料庫資料

1)網站資料備份 將網站資料/var/www/vhost/www.hqsb.com和/var/www/vhost/www.huanqiu.com分別備份到: /Data/code-backup/www.hqsb.com和/Data/code-backup/www.huanqiu.com下。 &nbs

資料層的多租戶淺談SAAS多租戶資料庫設計

在上一篇“淺析多租戶在 Java 平臺和某些 PaaS 上的實現”中我們談到了應用層面的多租戶架構,涉及到 PaaS、JVM、OS 等,與之相應的是資料層也有多租戶的支援。 資料層的多租戶綜述 多租戶(Multi Tenancy/Tenant)是一種軟體架構,其定義是: 在一臺伺服器上執行單個應用例項,

MySQL連線查詢,多表查詢適合練習初學

Join連線圖 針對以上的多表查詢,我們嘗試做以下的實驗: Join實驗: CREATE TABLE `t_dept` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `deptName` VARCHAR(30) DEFAULT

資料庫結構設計邏輯設計物理設計

1、資料庫結構設計的步驟 需求分析:全面瞭解產品設計的儲存需求 邏輯設計:設計資料的邏輯儲存結構 物理設計:根據所用的資料庫特點進行表結構設計                   關係型資料庫:

mysql連線查詢多表查詢

  1      連線查詢(多表查詢) 1.1交叉連線 語法: from  表1  [cross]  join  表2  ;    //可見交叉連線只是沒有on條

Mysql連線查詢交叉連線,內連線,外連線,using關鍵字使用場景

連線查詢 連線查詢:將多張表連到一起進行查詢(會導致記錄數行和欄位數列發生改變) 連線查詢的意義 在關係型資料庫設計過程中,實體(表)與實體之間是存在很多聯絡的。在關係型資料庫表的設計過程中,遵循著關係來設計:一對一,一對多和多對多,通常在實際操作的過程中,需要利用這層

資料庫設計---PowerDesigner物理模型概念模型

上一篇介紹了個工具建資料庫:PowerDesigner V16.5 安裝教程以及漢化(資料庫建模)?,現在我就說一下怎麼用這個建資料庫吧。 1、首先新建模型--選擇概念模型(CDM) 2、新建實體(學生和卡),設定相應的屬性

Mysql之DQL複雜查詢連線查詢

1、內連線查詢:inner join 表名2 別名2 on 別名2.有關係欄位名=別名1.有關係欄位名 有條件就用where 例子1:把參加考試的同學資訊查出來 select s.StudentName,r.StudentResult from st

mysql中分組查詢分組篩選講義

----分組查詢&篩選學習: --關鍵字:group by 分組欄位名,分組欄位名.... --注意1:使用了分組後,在select語句中只允許出現分組欄位和多行函式。 --注意2:如果是多欄位分組,則先按照第一欄位分組,

mysql的92查詢99查詢練習

1.列出所有僱員的姓名及其直接上級的姓名 2.列出部門名稱和這些部門的僱員,同時列出那些沒有僱員的部門; 3.顯示所有部門在"NEW YORK"(dept表 loc欄位)的員工姓名 4.顯示員工"SMITH"的姓名,部門名稱 5.顯示員工姓名,部門名稱,工資,工資級別(sal

java專案中資料庫連線使用mybatis不使用

(eclipse環境)首先介紹一下不使用mybatis框架(應該不會不知道的)來連線資料庫 先要寫出資料庫的基本資訊,建立資料庫連線connection,宣告切斷連線的close()函式,         public static final String DRIVER

資料庫查詢索引單個索引複合索引

當一條sql語句的查詢涉及到多個欄位,這個時候給每個欄位加索引,資料庫也只能夠使用其中的一個索引,這個時候使用複合索引就比較好了。這是為什麼呢? 這是因為:全表掃描/只使用一個索引的速度比起來,去分析兩個索引二叉樹更加耗費時間,所以絕大多數情況下資料庫都是是用

MySQL學習筆記20——自身連線無限分類資料表設計

自身連線 無限分類資料表設計: CREATE TABLE tdb_goods_types ( type_id SMALLINT UNSIGNED PRIMARY KEY AU

mysql insert多條資料max_allowed_packet查詢修改

mysql根據配置檔案會限制server接受的資料包大小。 有時候大的插入和更新會被max_allowed_packet 引數限制掉,導致失敗。 檢視目前配置 show VARIABLES like ‘%max_allowed_packet%’; 顯示的

java jdbc深入理解connection與threadlocal與資料庫連線事務實

1.jdbc連線資料庫,就這樣子Class.forName("com.mysql.jdbc.Driver"); java.sql.Connection conn = DriverManager.getConnection(jdbcUrl);2.通過傳入jdbc url用Drivermanager.getC

mysql中高效查詢left join group by,前提是加了索引

mysql犧牲了group by來增加left join的速度(前提是加了索引)。 user表:10萬資料 例項1: 200秒左右 SELECT U.id, A.favorite_count FR

Java學習筆記——設計模式之六.原型模式淺克隆深克隆

catch 新的 att over 引用變量 col logs implement pri That there‘s some good in this world, Mr. Frodo. And it‘s worth fighting for. 原型模式(prot

Linux下安裝mysql離線安裝在線安裝

命令 安裝 this glib leg rpm /usr node star 一:在線安裝mysql 1、首先檢測一下,mysql之前有沒有被安裝   命令:rpm -qa | grep mysql 2、刪除mysql的命令: rpm -e --nodeps `rpm -q