一般軟件開發人員涉及到數據庫,比較多的是數據的增刪改查;畢竟我們不是數據庫管理人員(數據庫的高級優化,災難性的回覆等);
SQL介紹
全稱:Structured Query Language 中文名稱:結構化查詢語言;
功能:是一種定義,操作,管理關係數據庫的句法。大多數關係型數據庫都支持;
組成:DQL:數據查詢語言;DML:數據操作語言;DDL:數據定義語言;DCL:數據控制語言;TPL:事務處理語言;CCL:指針控制語言;
數據庫
定義:存儲數據倉庫
特點:數據共享,相對安全;
數據庫模型分類:關係型數據庫是主流,層狀型數據庫,網狀型數據庫;
數據庫管理系統(DBMS)
常見關係型數據庫管理系統(DBMS):Oracle、MySql、SQLite、SQL Server、Access、DB2、Informix、Prostgre SQL
注意:通常我們說的MySql數據庫其實是MySql數據庫管理系統
MySql中的SQL語句
首先要安裝MySql軟件,安裝之後才能在CMD命令行中或者其他數據庫可視化工具中使用SQL語句操作數據;
以下內容都是CMD命令行中使用SQL語句;cmd進入命令行,輸入命令:mysql -u用戶名 -p密碼 進入mysql客戶端;
DDL:數據庫和表的創建
全拼:Data Definition Language 數據定義語言,主要是創建數據庫和表的結構;關鍵字:Create Alter Drop Truncate
數據庫的操作
1,創建數據庫
create database test;#注意要有分號,數據庫名test
2,查看創建數據庫的語句
show create database test;
3,查看創建的數據庫
#查詢所有創建的數據庫
show databases;
4,使用數據庫
#使用某個數據庫
use test;
5,刪除數據庫
drop database test;
6,創建數據庫並指定字符集
create database test character set gbk;
7,查看數據庫中所有的校驗規則
show collation;
8,查看數據庫中部分校驗規則
show collation like '%gb%'; #like模糊查詢
9,設置校驗規格和字符集
create database mydb character set gbk collate gbk_bin;
10,修改字符集
alter database mydb character set utf8; #注意不要寫成utf-8了
MySql中數據類型:bit, tinyint, bool 或者 boolean,smallint, int , bigint, float, double, char, varchar, blob或longblob, text, data/datatime/timestamp;
表的操作
1,創建表
use mydb; #進入要創建表的數據庫
create table test(id int,name varchar(20)); #表名test
2,查看創建表的語句
show create table test;
3,創建表並指定字符集
create table test2(id int ,name varchar(20)) character set utf8;
4,插入數據
insert into test2(id,name) values(22,'你好');
#簡寫 insert test2 values(33,'妹子'); 省略字段,意味着所有字段都必須給值(自增自減除外)
如果報錯可能是沒有設置Mysql客戶端字符集,設置客戶端字符集
set character_set_client = gbk; #設置客戶端字符集爲gbk
5,查詢表中的數據
select * from test2;
如果顯示的中文還是亂碼,可是沒有設置Mysql客戶端結果集的字符集
set character_set_results = gbk;
6,更新數據
update test2 set name = '張三' where id =22; #把id =22行中的name 的值改爲:張三
6.1,將表中所有的name字段改爲:王五;
update test2 set name = '王五';
6.2,修改多個字段
update test2 set name = '張三' id = 1 where id =22;
7,刪除數據
delete from test2 where id =22; #刪除id=22的數據
7.1,刪除所有數據
delete from test2 ;
7.2,刪除所有記錄
truncate table test2;
8,更改表的結構
alter table t1 add time varchar(20); #添加一個time列
8.1,刪除某列
alter table t1 drop column time;
8.2,查看錶的結構
desc t1;
9,刪除表
drop table test2;
DQL
全拼:Database Query Language 中文名:數據查詢語言
作用:查詢數據
1,查看所有數據
select * from t1; # 其中t1是表名 *代表所有的字段
2,查看某條數據,一般根據id查詢,因爲id一般唯一;
select * from t1 where id = 5; #查詢id=2的這條記錄
3,查詢id在 2 - 5之間的數據
select * from t1 where id>=2 and id<=5 ;
或者
select * from t1 where id between 2 and 5;#包括2和5
4,參看所有的某個字段的數據;
select name from t1;
5,參看所有的某些字段的數據;
select id,name from t1; # id,name查詢的字段名 t1表名
6,模糊查詢
表達式:select * from 表名 where 字段名 like 字段表達式 (%表示任意字符數,_表示任意的一個字符,[ ] 表示在某個區間)
6.1,查詢名字以‘張’開頭的數據
select * from t1 where name like '張%';
6.2,查詢名字中含有‘趙’,且名字的長度是3
select * from t1 where name like '趙__' or name like '_趙_'or name like '__趙' ; #注意下劃線的個數
7,查詢表中名字(某個字段)不同的記錄
select distinct name from t1;
8,查詢表中(某些字段)不同的記錄
select distinct name,id from t1; # 查詢id 和 name 都不相同的記錄
9,字段可以有表達式
select id +10 ,name from t1; #查詢出id是加10後的
10,給字段起別名
select id as '序號' , name as '名字' from t1;
或者:省略as
select id '序號' , name '名字' from t1;
11,幾個int 數據類型的字段可以加減算法
select id, a + b + c from t2;
12,查詢中in關鍵字使用 in:查詢在in列表中的值
select * from t1 where address in('北京','上海');
13,排序(order by)
13.1,升序排序
select * from t2 order by a asc; #asc代表升序 可以省略,默認是升序
13.2,降序
select * from t2 order by a desc; #desc代表降序