Structured Query Language
的縮寫(結構化查詢語言)是一種定義、操做、管理關係數據庫的句法結構化查詢語言的工業標準由ANSI
(美國國家標準學會,ISO的成員之一)維護。java
優勢:最大的優勢共享數據、安全性有很大的保障,可是也不是絕對的安全(黑客)、操做數據很容易mysql
## 二、經常使用數據庫sql
Oracle DB2 Informix Sybase SQL Server ProstgreSQL面向對象數據庫 MySQL Access SQLite等數據庫
alter database mydb1 character set utf8
;create database mydb1 character set gbk
;show collation like '%gb%'
;gbk_bin
create database mydb2 character set gbk collate gbk_bin
;create table t( id int , name varchar(30) ) ;
show create table t ;
create table t4 ( id int , name varchar(30), optime timestamp ) ;
set character_set_client=gbk;
set character_set_results=gbk ; insert into t4(id,name) values(1,'張無忌') ; insert t4(id,name) values(2,'喬峯') ;
into 能夠省略insert t4 values(3,'楊過','2014-4-3') ;
update t4 set name='楊康' where id = 3 ;
update t4 set name = '東方不敗' ;
update t4 set id=6,name='蕭峯' where id = 2 ;
delete from t4 where id = 4 ;
delete from t4 ;
truncate table t4 ;
alter table t4 add address varchar(100) ;
alter table t4 drop column address ;
desc t4 ;
建立一個學生表安全
create table stu ( id int primary key, // 主鍵約束 name varchar(30) unique, // 惟一約束 sex char(2) not null, //非空約束 age int check (age > 0 and age < 100),// 檢查約束 address varchar(50) default '北京' //默認約束 ) ;
bash
insert into stu values(1,'張無忌','男',20,'北京') ; insert into stu values(2,'小龍女','女',18,'古墓') ; insert into stu values(3,'黃蓉','女',15,'桃花島') ; insert into stu values(4,'韋小寶','男',24,'揚州') ; insert into stu values(5,'喬峯','男',34,'雁門關') ; insert into stu values(6,'張果老','男',30,'雁門關') ; insert into stu values(7,'老張','男',38,'黒木崖') ; insert into stu values(8,'張','男',34,'桃花島') ; insert into stu values(9,'韋小寶','女',24,'新東方') ; insert into stu(id,name,sex,age) values(10,'令狐沖','男',27) ;
服務器
查看全部數據 select * from stu ;
函數
查看小龍女的信息 select * from stu where id = 2 ; select * from stu where name='小龍女' ;ui
查看年齡在20~30之間的人 select * from stu where age >=20 and age <=30 ; select * from stu where age between 20 and 30 ; # 包括20和30 #查看全部的的姓名 select name from stu ;spa
查看全部的的姓名,年齡,性別 select name,age,sex from stu ;
select * from stu where name like '張__' or name like '_張_' or name like '__張' ;
select distinct sex from stu ;
select distinct name,sex from stu ;
create table score ( id int primary key, sid int , china int, english int , history int, constraint sid_FK foreign key(sid) references stu(id) ) ;
insert into score values(1,1,68,54,81) ;
insert into score values(2,3,89,98,90) ;
insert into score values(3,4,25,60,38) ;
insert into score values(4,6,70,75,59) ;
insert into score values(5,8,60,65,80) ;
複製代碼
select id,china+10,english,history from score ;
select id as 編號,china as 語文,english as 英語,history as 歷史 from score ; select id 編號,china 語文,english 英語,history 歷史 from score ;
select id,china + english + history 總分 from score ;
select * from stu where address = '桃花島' or address = '黒木崖' ;
select * from stu where address in('桃花島','黒木崖') ;
select * from stu where address is null ;
select * from stu where address is not null ;
對考試的人的語文升序asc
排列 select * from score order by china asc;
對考試的人的歷史降序desc
排列 select * from score order by history desc;
根據多個字段進行排序(語文升序,對語文成績同樣的人再進行歷史降序類排)select * from score order by china asc,history desc;
根據考試總分降序進行排序 select *,china + english + history 總分 from score order by china + english + history desc ;
主鍵:惟一的去區分每一條記錄的一列或者多列的值. 特色:惟一,非空 Order by
指定排序的列,排序的列便可是表中的列名,也能夠是select 語句後指定的列名。 Asc
升序、Desc
降序 ORDER BY
子句應位於SELECT語句的結尾。
alter table score add constraint stu_score_FK foreign key(sid) references stu(id) ;
alter table score drop foreign key stu_score_FK ;
多表查詢
交叉查詢
查詢每一個人的考試成績 select * from stu s cross join score c on s.id = c.sid
;
查詢參加考試的人的成績 select name,china,english,history,china+english+history 總分 from stu s inner join score c on s.id = c.sid ;
查詢全部人的成績 select name,china,english,history,china+english+history 總分 from stu s left out join score c on s.id = c.sid ;
查詢沒有參加考試的人select * from stu where id not in(select sid from score) ;
查詢參加考試的人的成績select name,china,english,history,china+english+history 總分 from stu s,score c where s.id = c.sid ;
聚合函數 sum max,min avg ,count
分組函數select count(*) 數量,sex,name from stu group by sex,name ;
根據多個字段進行分組
分組條件select count(*),sex from stu where age >=16 group by sex having count(*) >1 ;
運算符 Like語句中,% 表明零個或多個任意字符,_ 表明一個字符,例first_name like ‘_a%’
primary key
惟一約束unique
檢查約束 MySQL不支持哦int check (age > 0 and age < 100)
非空約束not null
create table stu ( id int primary key, // 主鍵約束 name varchar(30) unique, // 惟一約束 sex char(2) not null, //非空約束 age int check (age > 0 and age < 100),// 檢查約束 address varchar(50) default '北京' //默認約束 ) ;
鏈接查詢
子查詢
SELECT * FROM orders WHERE customer_id=(SELECT id FROM customer WHERE name LIKE '%陳冠希%');
聯合查詢
報表查詢
數值類型
BIT(M) 位類型。M指定位數,默認值1,範圍1-64
TINYINT [UNSIGNED] [ZEROFILL] 帶符號的範圍是-128到127。無符號0到255。
BOOL,BOOLEAN 使用0或1表示真或假
SMALLINT [UNSIGNED] [ZEROFILL] 2的16次方
INT [UNSIGNED] [ZEROFILL] 2的32次方
BIGINT [UNSIGNED] [ZEROFILL] 2的64次方
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL] M指定顯示長度,d指定小數位數
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] 表示比float精度更大的小數
文本、二進制類型
時間日期
時間日期相關函數
select addtime(‘02:30:30’,‘01:01:01’);
注意:字符串、時間日期的引號問題 select date_add(entry_date,INTERVAL 2 year) from student;
//增長兩年 select addtime(time,‘1 1-1 10:09:09’) from student; 
//時間戳上增長,注意年後沒有 字符串相關函數
數學相關函數
數據庫備份: mysqldump -u root -psorry test>D:\test.sql
數據庫恢復:
mysql -u root -psorry test<test.sql