,總結出常用指令,寫給那些一些剛入行的朋友,之后會持續更新,關于Python學習的基礎知識點
數據庫管理系統(Data Base Management System,DBMS)是管理和維護數據庫的系統軟件。常用的DBMS有:Oracle、DB2、SqlServer、MySql等
Oracle(甲骨文) 性能超群,技術領先,主要應用在大型的企業數據庫領域
SQL Server:Microsoft的產品,界面友好,易學易用,操作性和交互性方面獨樹一幟
MySQL:中小型應用系統,體積小,速度快,總體擁有成本低,開發源代碼,2009年SUN被 Oracle收購
DB2:IBM(國際商業機器公司)的產品,伸縮性比較強
sql是結構化查詢語言
查看mysql服務端的狀態
檢查MySQL的狀態:sudo service mysql status
開啟MySQL服務器:sudo service mysql start
關閉MySQL服務器:sudo service mysql stop
重啟mysql服務: service mysql restart
DDL【Data Definition Language】,數據定義語言,用戶創建、修改、刪除表結構
數據庫基本操作
創建一個數據庫,
Cerate database 數據庫名 charset = utf8;
查看正在使用的數據庫的信息
select database();
查看當前數據庫管理系統中所有的數據庫
show databases;
切換數據庫
use xxx;
刪除數據庫
drop database xxx;
退出數據庫
quit/exit
表格處理
創建一個表格,
Create table 表名(
Id int auto_increment primaary key,
Name varchar(20) not null,
age int,
Gender bit not null
);
顯示當前數據庫中所有的表
show tables;
刪除表格
dorp table 表格名;
表格重命名
rename table原表名to新表名;
展示表結構
desc表名;
添加表格中的列
alter table表名add|change|drop;
DML【Data Manipulation Language】,數據操作語言,用于對數據表進行增刪改的操作
數據操作
1 增
全列插入:
insert into表名values(...) 說明主鍵列是自動增長,但是在全列插入時需要占位,通常使 用0,插入成功后以實際數據為準
實例:inert into student values(0,"tom",19,1,"北京",0)
缺省插入:
格式:insert into表名(列1,列2,.....) values(值1,值2....)
事例;insert into student(name,age,address)values("lily",19,"上海")
同時插入:
格式:insert into表名values(...),(...),(...)
2 刪
格式:delete from表名where條件;
事例:delete from student where id=4;
注意:不加條件全部刪除
3 修改
格式:update表名set列1=值1,列2=值2,....where條件(一般拿id為條件,id=7)
實例:update student set age=16 where id=7;
注意:沒有條件修改全列,慎用
DQL【Data Query Language】,數據查詢語言,用于負責數據表的查詢工作
4 查
1,基本語法
格式select * from表名
1.查詢所有列
mysql> select * from student;
2.查詢指定列
mysql>select id,name,gender from student;
3.條件查詢
mysql>select * from student where gender='female' and age=20;
4,查詢id為1,2,3的行
mysql>select * from student where id in('1','2','3');
5.模糊查詢
查詢姓名由3個字符組成的記錄,并且最后一個字母為c的記錄
mysql>select * from student where name like '__c';
%表示可匹配多個字符
6.去重查詢,消除重復行
mysql>select distinct id from student;
7.降序升序排列
1.查詢所有的記錄,按照年齡升序排序
mysql>select * from student order by age asc;
2.查詢所有學生記錄,按照年齡降序排序, 如果年齡相等,則按照編號進行升序排序
mysql>select * from student order by age desc,id asc;
8.聚合函數
1.查詢年齡大于20
mysql>select count() from student where age>20;
2.查詢所有學生的年齡和
mysql>select sum(age) from student;
3.求最大年齡和最小年齡
mysql>select max(age),min(age) from student;
4.查詢所有學生的平均年齡
mysql>select avg(age) from student;
9.范圍查詢
表示在一個非連續的范圍內
mysql>select * from student where id in (1,2,3);
表示在一個連續的范圍內
mysql>select * from student where id between 6 and 8;
10.分組
語法:Select 列1,列2, 聚合,,,, from 表名 group by 列1,列2 , ,,,,
需求:查詢女生的人數
示例:select gender,count() from student group by gender;
分組后的數據篩選::Select 列1,列2, 聚合,,,, from 表名 group by 列1,列2 , ,,,, having 列 1,列2,聚合....
事例:select gender,count(*) from student group by gender having gender;
11.分頁
作用,全打出來太多,分頁,一頁頁的看.
語法:select * from 表名 limit start,count;
事例:select * from student where gender=1 limit 3,6
說明:(看男生的3-6條)
DCL【Data Control Language】:數據控制語言,用來定義訪問權限
創建一個數據庫和一個表格的完整流程
CREATE DATABASE zuoye charset utf8; (創建一個數據庫zuoye)
mysql>show databases; (查看當前數據庫管理系統中所有的數據庫)
mysql>use zuoye; (進入數據庫zuoye)
mysql>create table student(
->sno varchar(20),
->sname varchar(20),
->ssex varchar(20),
->sbirthday datetime,
->class varchar(20)
->); (添加數據庫中的內容,在第一行顯示)
?mysql>insert into student values('108','曾華','男','1977-09-01','95033');
?Query OK,1 row affected(1.04 sec)
?mysql>insert into student values('105','匡明','男','1975-10-02','95031');
?Query OK,1 row affected(0.06 sec)
?mysql>insert into student values('107','王麗','女','1976-01-23','95033');
?(補充表格內容)
?mysql>selectfrom student;
?(完整展示student表格的內容)
?mysql>select sname,ssex,class from student;
?(查詢Student表中的所有記錄的Sname、Ssex和Class列)
?mysql>selectfrom score where degree>=60 and degree<=80;
?查詢Score表中成績在60到80之間的所有記錄
?mysql>selectfrom score where degree=85 or degree=86 or degree=88;
?查詢Score表中成績為85,86或88的記錄
?mysql>selectfrom student where class=95031 and ssex="女";
?查詢Student表中“95031”班或性別為“女”的同學記錄
?mysql>selectfrom student order by class desc;
?以Class降序查詢Student表的所有記錄
?mysql>selectfrom score order by cno asc,degree desc;
?以Cno升序、Degree降序查詢Score表的所有記錄
?mysql>select count(*)from student where class=95031;
?查詢“95031”班的學生人數
?update student(可換)set class=9500(可換)
?把class全成9500