mysql 給axel資料建立表

來源:互聯網
上載者:User

標籤:

create table point(
id int primary key auto_increment ,
point_x double,

point_y double,

boundry bool

);

 

 

一、sql語句

1.操作資料庫
(1)建立資料庫
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]
create_specification:   
[DEFAULT] CHARACTER SET charset_name  | [DEFAULT] COLLATE collation_name

~建立一個名稱為mydb1的資料庫。
create database mydb1;
~建立一個使用gbk字元集的mydb2資料庫。
create database mydb2 character set gbk;
~建立一個使用utf8字元集,並帶校對規則的mydb3資料庫。
create database mydb3 character set utf-8 collate utf8_bin;
(2)查看資料庫
顯示資料庫語句:
SHOW DATABASES
顯示資料庫建立語句:
SHOW CREATE DATABASE db_name

~查看當前資料庫伺服器中的所有資料庫
show databases;
~查看前面建立的mydb2資料庫的定義資訊
show create database mydb3;
(3)修改資料庫
ALTER DATABASE [IF NOT EXISTS] db_name  [alter_specification [, alter_specification] ...]
alter_specification:   
[DEFAULT] CHARACTER SET charset_name  | [DEFAULT] COLLATE collation_name

~查看伺服器中的資料庫,並把其中mydb2字元集修改為utf8
alter database mydb2 character set utf8;
(4)刪除資料庫
DROP DATABASE [IF EXISTS] db_name

~刪除前面建立的mydb1資料庫 drop database mydb1;
drop database mydb1;
(5)選擇資料庫
進入資料庫:use db_name;
查看當前所選的資料庫: select database();
2.動作表
(1)建立表
CREATE TABLE table_name
(
field1 datatype,
field2 datatype,
field3 datatype,
)[character set 字元集] [collate 校對規則]
field:指定列名 datatype:指定列類型

~建立一個員工表employee
create table employee(
id int primary key auto_increment,
name varchar(20) unique,
gender bit not null,
birthday date,
entry_date date,
job varchar(40),
salary double,
resume text
);
(2)查看錶
查看錶結構:desc tabName
查看當前資料庫中所有表:show tables
查看當前資料庫表建表語句 show create table tabName;


(3)修改表
ALTER TABLE table ADD/MODIFY/DROP/CHARACTER SET/CHANGE (column datatype [DEFAULT expr][, column datatype]...);
*修改表的名稱:rename table 表名 to 新表名;

~在上面員工表的基本上增加一個image列。
alter table employee add image blob;
~修改job列,使其長度為60。
alter table employee modify job varchar(60);
~刪除gender列。
alter table employee drop gender;
~表名改為user。
rename table employee to user;
~修改表的字元集為gbk
alter table user character set gbk;
~列名name修改為username
alter table user change name username varchar(20);
(4)刪除表
DROP TABLE tab_name;

~刪除user表
drop table user;
3.動作表記錄CRUD
(1)INSERT
INSERT INTO table [(column [, column...])] VALUES (value [, value...]);

插入的資料應與欄位的資料類型相同。
資料的大小應在列的規定範圍內,例如:不能將一個長度為80的字串加入到長度為40的列中。
在values中列出的資料位元置必須與被加入的列的排列位置相對應。
字元和日期型資料應包含在單引號中。
插入空值:不指定或insert into table value(null)
如果要插入所有欄位可以省寫列列表,直接按表中欄位順序寫值列表


~使用insert語句向表中插入三個員工的資訊
insert into employee (id,name,gender,birthday,entry_date,job,salary,resume)values (null,‘張飛‘,1,‘1999-09-09‘,‘1999-10-01‘,‘打手‘,998.0,‘老大的三弟,真的很能打‘);
insert into employee values (null,‘關羽‘,1,‘1998-08-08‘,‘1998-10-01‘,‘財神爺‘,9999999.00,‘老大的二弟,公司掙錢都指著他了‘);
insert into employee values (null,‘劉備‘,0,‘1990-01-01‘,‘1991-01-01‘,‘ceo‘,100000.0,‘公司的老大‘),(null,‘趙雲‘,1,‘2000-01-01‘,‘2001-01-01‘,‘保鏢‘,1000.0,‘老大貼身人‘);
(2)UPDATE
UPDATE tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition]  

UPDATE文法可以用新值更新原有表行中的各列。
SET子句指示要修改哪些列和要給予哪些值。
WHERE子句指定應更新哪些行。如沒有WHERE子句,則更新所有的行

~將所有員工薪水修改為5000元。
update employee set salary = 5000;
~將姓名為’張飛’的員工薪水修改為3000元。
update employee set salary = 3000 where name=‘張飛‘;
~將姓名為’關羽’的員工薪水修改為4000元,job改為ccc。
update employee set salary=4000,job=‘ccc‘ where name=‘關羽‘;
~將劉備的薪水在原有基礎上增加1000元。
update employee set salary=salary+1000 where name=‘劉備‘;

 
(3)DELETE

如果不使用where子句,將刪除表中所有資料。
Delete語句不能刪除某一列的值(可使用update)
使用delete語句僅刪除記錄,不刪除表本身。如要刪除表,使用drop table語句。
同insert和update一樣,從一個表中刪除記錄將引起其它表的參照完整性問題,在修改資料庫資料時,頭腦中應該始終不要忘記這個潛在的問題。
外鍵約束
刪除表中資料也可使用TRUNCATE TABLE 語句,它和delete有所不同,參看mysql文檔。


delete from tbl_name [WHERE where_definition]   
~刪除表中名稱為’張飛’的記錄。
delete from employee where name=‘張飛‘;
~刪除表中所有記錄。
delete from employee;
~使用truncate刪除表中記錄。
truncate table employee;
(4)SELECT
~1.基本查詢
SELECT [DISTINCT] *|{column1, column2. column3..} FROMtable;

~查詢表中所有學生的資訊。
select * from exam;
~查詢表中所有學生的姓名和對應的英語成績。
select name,english from exam;
~過濾表中重複資料
select distinct english from exam;
~在所有學生分數上加10分特長分顯示。
select name , math+10,english+10,chinese+10 from exam;
~統計每個學生的總分。
select name ,english+math+chinese from exam;
使用別名表示學生總分。
select name as 姓名 ,english+math+chinese as 總成績 from exam;
select name 姓名 ,english+math+chinese 總成績 from exam;
select name english from exam;

~2.使用where子句進行過濾查詢
~查詢姓名為張飛的學產生績
select * from exam where name=‘張飛‘;
~查詢英語成績大於90分的同學
select * from exam where english > 90;
~查詢總分大於230分的所有同學
select name 姓名,math+english+chinese 總分 from exam where math+english+chinese>230;
~查詢英語分數在 80-100之間的同學。
select * from exam where english between 80 and 100;
~查詢數學分數為75,76,77的同學。
select * from exam where math in(75,76,77);
~查詢所有姓張的學產生績。
select * from exam where name like ‘張%‘;
select * from exam where name like ‘張__‘;
~查詢數學分>70,語文分>80的同學。
select * from exam where math>70 and chinese>80;

~3.使用order by關鍵字對查詢結果進行排序操作
SELECT column1, column2. column3.. FROMtable where... order by column asc|desc;
asc 升序 -- 預設就是升序
desc 降序

~對語文成績排序後輸出。
select name,chinese from exam order by chinese desc;
~對總分排序按從高到低的順序輸出
select name 姓名,chinese+math+english 總成績 from exam order by 總成績 desc;
~對姓張的學產生績排序輸出
select name 姓名,chinese+math+english 總成績 from exam where name like ‘張%‘ order by 總成績 desc;
~4.彙總函式
(1)Count -- 用來統計合格行的個數
~統計一個班級共有多少學生?
select count(*) from exam;
~統計數學成績大於90的學生有多少個?
select count(*) from exam where math>70;
~統計總分大於230的人數有多少?
select count(*)from exam where math+english+chinese > 230;
(2)SUM -- 用來將合格記錄的指定列進行求和操作
~統計一個班級數學總成績?
select sum(math) from exam;
~統計一個班級語文、英語、數學各科的總成績
select sum(math),sum(english),sum(chinese) from exam;
~統計一個班級語文、英語、數學的成績總和
select sum(ifnull(chinese,0)+ifnull(english,0)+ifnull(math,0)) from exam;
在執行計算時,只要有null參與計算,整個計算的結構都是null
此時可以用ifnull函數進行處理
~統計一個班級語文成績平均分
select sum(chinese)/count(*) 語文平均分 from exam;
(3)AVG -- 用來計算合格記錄的指定列的值的平均值
~求一個班級數學平均分?
select avg(math) from exam;
~求一個班級總分平均分?
select avg(ifnull(chinese,0)+ifnull(english,0)+ifnull(math,0)) from exam;

(4)MAX/MIN -- 用來擷取合格所有記錄指定列的最大值和最小值
~求班級最高分和最低分
select max(ifnull(chinese,0)+ifnull(english,0)+ifnull(math,0)) from exam;
select min(ifnull(chinese,0)+ifnull(english,0)+ifnull(math,0)) from exam;
~5.分組查詢
~對訂單表中商品歸類後,顯示每一類商品的總價
select product,sum(price) from orders group by product;
~詢購買了幾類商品,並且每類總價大於100的商品
select product 商品名,sum(price)商品總價 from orders group by product having sum(price)>100;

where子句和having子句的區別:
where子句在分組之前進行過濾having子句在分組之後進行過濾
having子句中可以使用彙總函式,where子句中不能使用
很多情況下使用where子句的地方可以使用having子句進行替代

~查詢單價小於100而總價大於150的商品的名稱
select product from orders where price<100 group by product having sum(price)>150;

~~sql語句書寫順序:
select from where groupby having orderby
~~sql語句執行順序:
from where select group by having order by



~~備份恢複資料庫
備份:在cmd視窗下 mysqldump -u root -p dbName>c:/1.sql
恢複:方式1:在cmd視窗下 mysql -u root -p dbName<c:/1.sql
方式2:在mysql命令下, source c:/1.sql
要注意恢複資料只能恢複資料本身,資料庫沒法恢複,需要先自己建立出資料後才能進行恢複.


二、多表設計多表查詢
1.外鍵約束
表是用來儲存顯示生活中的資料的,而現實生活中資料和資料之間往往具有一定的關係,我們在使用表來儲存資料時,可以明確的聲明表和表之前的依賴關係,命令資料庫來幫我們維護這種關係,向這種約束就叫做外鍵約束


create table dept(
id int primary key auto_increment,
name varchar(20)
);
insert into dept values(null,‘財務部‘),(null,‘人事部‘),(null,‘銷售部‘),(null,‘行政部‘);

create table emp(
id int primary key auto_increment,
name varchar(20),
dept_id int,
foreign key(dept_id) references dept(id)
);
insert into emp values(null,‘奧巴馬‘,1),(null,‘哈利傳輸速率‘,2),(null,‘本拉登‘,3),(null,‘樸乾‘,3);

2.多表設計
一對多:在多的一方儲存一的一方的主鍵做為外鍵
一對一:在任意一方儲存另一方的主鍵作為外鍵
多對多:建立第三方關係表儲存兩張表的主鍵作為外鍵,儲存他們對應關係

3.多表查詢
笛卡爾積查詢:
將兩張表的記錄進行一個相乘的操作查詢出來的結果就是笛卡爾積查詢,如果左表有n條記錄,右表有m條記錄,笛卡爾積查詢出有n*m條記錄,其中往往包含了很多錯誤的資料,所以這種查詢方式並不常用
select * from dept,emp;

內串連查詢:查詢的是左邊表和右邊表都能找到對應記錄的記錄
select * from dept,emp where dept.id = emp.dept_id;
select * from dept inner join emp on dept.id=emp.dept_id;

外串連查詢:
左外串連查詢:在內串連的基礎上增加左邊表有而右邊表沒有的記錄
select * from dept left join emp on dept.id=emp.dept_id;

右外串連查詢:在內串連的基礎上增加右邊表有而左邊表沒有的記錄
select * from dept right join emp on dept.id=emp.dept_id;
全外串連查詢:在內串連的基礎上增加左邊表有而右邊表沒有的記錄和右邊表有而左表表沒有的記錄
select * from dept full join emp on dept.id=emp.dept_id; -- mysql不支援全外串連
可以使用union關鍵字類比全外串連:
select * from dept left join emp on dept.id = emp.dept_id
union
select * from dept right join emp on dept.id = emp.dept_id;

mysql 給axel資料建立表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.