1长踊、數(shù)據(jù)庫管理
1括儒、 連接數(shù)據(jù)庫
mysql -u root -p2 惕橙、查看所有的數(shù)據(jù)庫
show databases;3或杠、 創(chuàng)建數(shù)據(jù)庫
create database xiaocai default character set utf8; -- 指定默認(rèn)字符集創(chuàng)建數(shù)據(jù)庫4鱼鼓、 查看數(shù)據(jù)庫字符集
show create database xiaocai;5拟烫、 刪除數(shù)據(jù)庫
drop database xiaocai;6、 修改數(shù)據(jù)庫字符集
alter database xiaocai default character set gbk;7迄本、 使用某個數(shù)據(jù)庫
use xiaocai;8硕淑、 查看該數(shù)據(jù)庫中所有的表
show tables;9、 創(chuàng)建表
create table student(id int,name varchar(20),age int);10嘉赎、 查看表結(jié)構(gòu)
desc student;11喜颁、 刪除表
drop table student;12、 添加字段
alter table student add column gender varchar(2);13曹阔、 刪除字段
alter table student drop column gender;14半开、 修改字段類型
alter table student modify column name varchar(100);15、 修改字段名稱
alter table student change column name nickname varchar(10);16赃份、 修改表名稱
alter table student rename to user;
2寂拆、增刪改
1、 插入數(shù)據(jù)
insert into student values(1,'xiaocai',25); -- 不能少字段
insert into student(id,name) values(2,'xiaobai'); -- 插入指定數(shù)據(jù)2抓韩、 修改數(shù)據(jù)
update student set age=21; -- 整體修改
update student set age=25 where id = 1; -- 條件修改
update student set age=22,name='xiaobaicai' where id = 2; -- 修改多個字段-
3纠永、 刪除數(shù)據(jù)
delete from student; -- 整體刪除
delete from student where id = 2; -- 條件刪除truncate table student; -- 整體刪除
1)不能帶條件刪除 2)即可以刪除表的數(shù)據(jù),也可以刪除表的約束 3)使用truncate table刪除的數(shù)據(jù)不能回滾
與 delete 不同:
delete from: 可以全表刪除 1)可以帶條件刪除 2)只能刪除表的數(shù)據(jù)谒拴,不能刪除表的約束 3)使用delete from刪除的數(shù)據(jù)可以回滾(事務(wù))
3尝江、查
1、 查詢整個表所有
select * from student;2英上、 查詢指定列
select id,name from student; -- 只需要id和name的字段3炭序、 查詢的時候添加一個「常量列」
mysql> select id,name,'hello' from student;
+------+---------+-------+
| id | name | hello |
+------+---------+-------+
| 1 | xiaocai | hello |
| 1 | xiaobai | hello |
+------+---------+-------+
- 4、 查詢時合并列 (合并列只能合并數(shù)值類型的字段)
mysql> select * from student;
+------+---------+------+------+---------+
| id | name | age | math | english |
+------+---------+------+------+---------+
| 1 | xiaocai | 25 | 88 | 60 |
| 2 | baicai | 21 | 10 | 20 |
+------+---------+------+------+---------+
2 rows in set (0.00 sec)
mysql> select id,name,(math+english) as 'sum' from student;
+------+---------+------+
| id | name | sum |
+------+---------+------+
| 1 | xiaocai | 148 |
| 2 | baicai | 30 |
+------+---------+------+
- 5苍日、 查詢時去除重復(fù)項(xiàng)
mysql> select * from student;
+------+----------+------+------+---------+
| id | name | age | math | english |
+------+----------+------+------+---------+
| 1 | xiaocai | 25 | 88 | 60 |
| 2 | baicai | 21 | 10 | 20 |
| 3 | qingcai | 21 | 66 | 77 |
| 3 | dabaicai | 21 | 44 | 87 |
+------+----------+------+------+---------+
4 rows in set (0.00 sec)
mysql> select distinct age from student;
+------+
| age |
+------+
| 25 |
| 21 |
+------+
select distinct (age) from student; -- 也是一樣的
3惭聂、復(fù)雜查詢
- 與或查詢:and(與) or(或)
SELECT * FROM student WHERE id = 2 AND NAME = 'xiaobai';
- 與或查詢:and(與) or(或)
-
- 數(shù)值大小查詢
> < >= <= = <>(不等于) between and (等價(jià)于>= 且 <=)
SELECT * FROM student WHERE age >23;
SELECT * FROM student WHERE age >22 AND age <26;
SELECT * FROM student WHERE age BETWEEN 23 AND 26;
SELECT * FROM student WHERE NAME <> 'xiaocai'; -
- 判空條件
- is null
- is not null
- =''
-
<>''
SELECT * FROM student WHERE NAME IS NULL;
SELECT * FROM student WHERE NAME IS NULL OR NAME = '';
-
- 模糊查詢 like
- % : 表示任意個字符
- _ : 表示一個字符
SELECT * FROM student WHERE NAME LIKE '小%'; -- 查詢所有name為‘小’開頭的
id name age 5 小菜 25 7 小梁 25
SELECT * FROM student WHERE NAME LIKE '_菜'; -- 查詢所有name為‘一個任意字后跟著菜字的’
id name age 5 小菜 25 6 大菜 26
-
- 聚合查詢(使用聚合函數(shù)的查詢)
- sum() 總和
- avg() 平均
- max() 最大
- min() 最小
- count() 函數(shù)統(tǒng)計(jì)的數(shù)量不包含null的數(shù)據(jù)
SELECT SUM(age) AS '年齡之和' FROM student;
SELECT MIN(age) AS '最小年齡' FROM student;
SELECT AVG(age) AS '平均年齡' FROM student;
SELECT COUNT(NAME) AS '所有學(xué)生name為不空的個數(shù)(可以為NULL)' FROM student ; -
- 分頁查詢 『limit 起始行,查詢幾行』
- 起始行從0開始 『(當(dāng)前頁-1)*每頁顯示多少條』
- 分頁:每頁顯示多少條
SELECT * FROM student LIMIT (當(dāng)前頁-1)*每頁顯示多少條,每頁顯示多少條;
例如,每頁查詢個數(shù)為3相恃,查詢第一頁
SELECT * FROM student LIMIT 0,3;id name age 1 xiaocai 25 2 xiaobai 21 3 33
每頁查詢個數(shù)為3辜纲,查詢第二頁
SELECT * FROM student LIMIT 3,3;id name age 4 41 5 小菜 25 6 大菜 26
-
- 查詢排序(order by )
- asc: 順序,正序。數(shù)值:遞增耕腾,字母:自然順序(a-z)
- desc: 倒序见剩,反序。數(shù)值:遞減扫俺,字母:自然反序(z-a)
SELECT * FROM student ORDER BY age DESC; -- 年齡倒敘
查詢『年齡倒敘苍苞,當(dāng)年齡相同時id倒敘』排序
SELECT * FROM student ORDER BY age DESC,id DESC;id name age 4 41 3 33 6 大菜 26 7 小梁 25 5 小菜 25 1 xiaocai 25 2 xiaobai 21
-
- 分組查詢(group by)
分組查詢學(xué)生年齡,另加一行顯示每個年齡的人數(shù)
SELECT age AS '年齡',COUNT(*) FROM student GROUP BY age;年齡 count(*) 21 1 25 3 26 1 33 1 41 1
-
- 分組查詢后篩選 (having)
分組查詢 學(xué)生年齡和相同年齡的個數(shù) 且年齡大于 22 的
SELECT age,COUNT(age) AS '相同年齡個數(shù)' FROM student GROUP BY age HAVING age >22;
age 相同年齡個數(shù) 25 3 26 1 33 1 41 1
- having一般跟在group by之后牵舵,執(zhí)行記錄組選擇的一部分來工作的。
- where則是執(zhí)行所有數(shù)據(jù)來工作的倦挂。
- 分組查詢后篩選 (having)