mysql基础命令语句以及使用方法:
生活随笔
收集整理的這篇文章主要介紹了
mysql基础命令语句以及使用方法:
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
'''SQL語句主要分為:
DQL^:數據查詢語句,用于數據進行查詢
DML^:數據操作語言,對數據進項增加,修改,刪除,如insert,update,delete
TPL:事務處理語言,對事物進行處理,包括begin transaction , commit , rollback
DCL:數據控制語言,進行授權與權限回收,如 grant,revoke
DDL:數據定義語言,進行數據庫,表的管理等,如declare , drop
CGL:指針控制語句,通過控制指針完成表的操作,如declare cursor
'''
'''MySQL數據類型:
整型:int ,bit
小數:decimal
字符串:varchar ,char
日期時間:date, time, datetime
枚舉類型:enum
特別說明:decimal 表示浮點數,如decimal(5,2)表示共存5位數,小數占兩位char 表示固定長度的字符串,如char(3),如果填充“ab”時會補一個空格位‘tab’varchar 表示可變長度的字符串,如varchar(3),填充“ab”時就會存儲‘ab’字符串text表示存儲大文本,當字符大于4000時推薦使用對于圖片,音頻,視頻等文件,不存儲在數據庫中,而是上傳到某個服務器,然后在表中存在該文件的地址
''''''命令語句:
鏈接數據庫:mysql -u root -pmysql -u root -p123456
退出:exit/quit/ctrl+d
顯示當前所有數據庫:show databases;
顯示時間:select now();
顯示數據庫版本:select version();
查看當前使用的數據庫:select database();
創建數據庫:create database databasename; # 默認編碼格式-拉丁create database databasename charset=utf8; #確定編碼格式
查看創建數據庫的語句show create database databasename;
刪除數據庫:drop database databasename;`` 相當于把文件確定位一個整體,而不是具備特殊含義使用數據庫:use databasename;數據表的操作:
查看當前數據庫中的表:show tables;
修改表名:alter table tablename rename to newtablename;
創建數據表:#create table tablename(id int, name varchar(30));create table tablename(id int primary key not null auto_increment,name varchar(30) not null);示例:創建學生表(學號,姓名,性別,年齡,生日,班級)## 自增一定要設置主鍵,主鍵才能設置自增 ##create table student(id int(11) unsigned not null auto_increment primary key,name varchar(30),gender enum('男','女') default "男",age tinyint unsigned default 0,birthday date default '2000-01-01',cls_id int(11) unsigned );
查看數據表的結構:show create table tablename;插入數據:--插入一條數據insert into tablename value(xxxx,xxxx);--插入多條數據:insert into tablename values(id,name,xx...),(xxx,xxx,xxx),...;修改表-添加字段:alter table tablename add 列名 類型;示例:alter table student add birthday datetime;
修改表-修改字段:重命名alter table 表名 change 原名 新名 類型及約束;示例:alter table student change birthday birth datetime;
修改表-修改字段alter table 表名 modify 列名 類型及約束;示例:alter table student modify birth date not null;
修改表-刪除字段:alter table 表名 drop 列名;示例:alter table student drop birth;
刪除表:drop table tablename;查看表的創建語句:show create table 表名;使用 desc 查看表的結構:desc tablename;'''
# 數據的增刪改查 練習
'''增刪改查
--增加--全列插入-- insert [into] 表名 values()--向學生信息表student中插入信息+----------+---------------------+------+-----+------------+----------------+| Field | Type | Null | Key | Default | Extra |+----------+---------------------+------+-----+------------+----------------+ | id | int(11) unsigned | NO | PRI | NULL | auto_increment || name | varchar(30) | YES | | NULL | || gender | enum('男','女') | YES | | 男 | || age | tinyint(3) unsigned | YES | | 0 | || birthday | date | YES | | 2000-01-01 | || cls_id | int(11) unsigned | YES | | NULL | |+----------+---------------------+------+-----+------------+----------------+insert into student value(0,'nike','男',18,'2000-01-01',1);insert into student value(null,'nike','男',18,'2000-01-01',1);insert into student value(default,'nike','男',18,'2000-01-01',1);--枚舉中的下標從 1 開始 1-->男 2-->女 ...insert into student value(0,'nike',1,18,'2000-01-01',1)注:輸入的內容不在枚舉之內,則報錯--部分插入--插入一個insert into student(name,gender) values('tony',1);--插入多行insert into student values(id,name,age,gender,birthday),(id,name,age,gender,birthday),(id,name,age,gender,birthday);--修改--update 表明 set 列1=值1,列2=值2....where 條件;update student set gender=1; # 全部都改update student set gender=1 where id =2;update student set gender=1,name='amie' where id=2;--刪除--物理刪除--delete from 表名 where 條件delete from student;delete from student where name='nike';--邏輯刪除--給一個字段來表示,這條信息是否已經不在使用了--alter table student add is_delete字段 bit 類型--update student set is_delete=1 where id=6;--查詢--查詢所有列--select * from 表民;select * from student;--指定條件查詢select * from student where name='nike'; --查詢 name 為 Nike的所有信息select * from student where id>3; -- 查詢id大于3的全部信息--查詢指定列--select 列1,列2,....from 表名;select id,name from student;--字段的順序--可以使用as位列或表指定別名--select 字段[as 別名] ,字段[as 別名] from 數據表 where ....;select name as '姓名' ,gender as '年齡' from student;''''''
# 創建數據庫
create database python_test charset=utf-8;# 使用數據庫
use python_test;# 顯示當前數據是哪個:
select database();# 創建一個數據表:
create table student(id int unsigned primary key not null auto_increment,
name varchar(30) default '',
age tinyint unsigned default 0,
# height decimal(5,2),
gender enum('男','女','中性','未知') default '未知',
cla_id int unsigned default 0,
is_delete bit default 0
);
create table classes(
id int not null primary key auto_increment unsigned,
name varchar(30) not null default ''
);# 插入數據:
insert into student values
(0,'張美',50,2,1,0),
(0,'王紅',36,2,1,0),
(0,'王剛',40,1,1,0),
(0,'錢張',28,3,1,0),
(0,'阿凡',18,2,1,0),
(0,'陳杰',22,1,1,0),
(0,'陳宇航',22,1,1,0),
(0,'洪興',30,1,1,0);
''''''
查詢--查詢所有列--select * from 表民;select * from student;select id,name from student;--指定條件查詢select * from student where name='nike'; --查詢 name 為 Nike的所有信息select * from student where id>3; -- 查詢id大于3的全部信息--查詢指定列--select 列1,列2,....from 表名;select id,name from student;--select 表名.字段 ... from 表名;select student.name ,student.id from student;--可以使用as給字段指定別名--select 字段[as 別名] ,字段[as 別名] from 數據表 where ....;select name as '姓名' ,gender as '年齡' from student;select id as '編號',name as '姓名' from student;--可以使用as給表起別名select id ,name from student as s;注:select student.id,student.name from student as s;錯誤:起別名必須使用別名來指定查詢的字段注:select id ,name from student as '學生表'; 存在錯誤錯誤:ERROR 1064 (42000): You have an error in your SQL syntax;check the manual that corresponds to your MySQL server version for the right syntax to use near ''學生表'' at line 1--消除重復段 distinct select distinct age from student;條件查詢--比較運算符--select .... from 表名 where .....-- >select * from student where age>18;--<select * from student where age<18;-- >=select * from student where age>=18;--<=select * from student where age<=18;--=select * from student where age=18;--!= (python2中 <> 也是不等于)select * from student where age!=18;--邏輯運算符--and--查詢年齡在 18 到 28 之間的select * from student where age>18 and age<28;# 錯誤用法 :select * from student where age>18 and <28; # 條件必須寫全-- 查詢 18 歲以上的女性select * from student where age >18 and gender =2;--or --查詢男性或者中性的select * from student where gender=1 or gender =3;--not-- 查詢不在28歲以上的女性select * from student where not (age>28 and gender=2);--查詢年齡小于或者等于18并且式女性select * from student where (not age<= 18) and gender =2;--模糊查詢-- like-- % 替換1個或者多個-- _ 替換1個-- 查詢姓名以‘小’開始的名字select * from student where name like '小_';-- 查詢有兩個字的名字select * from student where name like '__';-- 查詢有三個字的名字select * from student where name like '___';-- 查詢至少有兩個字的名字select * from student where name like '__%';-- rlike 正則表法式-- 查詢以 n 開頭的名字select * from student where name rlike '^小.*紅$';--范圍查詢-- in (1,3,7) 表示在一個非連續的范圍內 -- 查詢年齡20 ,30 ,40, 50 的姓名select name from student where age in (20,30,40,50);-- not in (1,2,3,4) 表示不在這個非連續的范圍之內的select name from student where age not in (20,30,40,50);-- between ... and ... 表示在一個連續的范圍內select * from student where age between 18 and 30;-- not between ... and ... 表示不在這個連續范圍內的select * from student where age not between 18 and 30;select * from student where not age between 18 and 30;--錯誤:select * from student where age not (between 18 and 30);--空判斷-- 判斷 is null-- 查詢刪除標記信息是否為空select * from student where age is null; --判斷非空 is not null select * from student where is_delete is not null; --排序-- order by 字段-- asc 從小到大排序,及升序-- desc 從大到小排序,及降序-- 查詢年齡在18到50歲之間的女性,id從大到小進行排序select * from student where age between 18 and 50 and gender =2 order by id desc;--order by 多個字段-- 查詢年齡在18到50之間的人,性別從男到中性排,性別相同則根據id從大到小排select * from student where age between 18 and 50 order by gender , id desc;--按照年齡從小到大ID從大到小進行排序select * from student order by age ,id desc;-- 聚合查詢-- 總數 count -- 查詢男性有多少人,女性有多少人,中性有多少人select count(*) as '男性人數:' from student where gender=1;select count(*) as '女性人數:' from student where gender=2;select count(*) as '中性人數:' from student where gender=3;-- 最大值 max-- 查詢最大年齡select max(age) from student;-- 最小值 min-- 查詢年齡最小select min(age) from student; -- 求和 sum-- 求全部年齡總和select sum(age) from student;--平均值 avg-- 計算平均年齡select avg(age) from student;select sum(age)/count(*) from student;--四舍五入 round(123.12,2) 保留2位小數-- 計算平均年齡,并且保留兩位小數,小數存在誤差,要是存儲小數將小數擴大100或者1000倍進行儲存select round(sum(age)/count(*),2) from student;select round(avg(age),2) from student;-- 分組-- group by --按照性別分組,查詢所有性別select gender from student group by gender;-- 計算每種性別的人數select gender,count(*) from student group by gender;--計算男性的人數select gender,count(*) from student where gender = 1 group by gender;--group_concat() -- 查詢同種性別中的姓名select gender,group_concat(name) from student group by gender;select gender,count(*),group_concat(name) from student group by gender;select gender ,count(*),group_concat(id,'-',name,'-',age) from student group by gender; select age from student group by age;select age,count(*),group_concat(name) from student group by age;--having 對分組進行判斷--查詢平均年齡超過30歲的性別,以及姓名 having avg(age)>22select gender ,group_concat(name) from student group by gender having avg(age)>22;select gender ,avg(age),group_concat(name) from student group by gender having avg(age)>22;select gender ,avg(age),count(*),group_concat(name) from student group by gender having avg(age)>22;-- 查詢每種性別中人數多于5個的信息select gender from student group by gender having count(gender)>5;select gender,group_concat(name),count(*) from student group by gender having count(gender)>5;select gender, count(*) from student group by gender ;where 和 having 的區別1、where將單個行過濾到查詢結果中,而having將分組過濾到查詢結果中2、having中使用的列名必須出現在group by列表中,或包括在聚集函數中。-- 分頁-- limit ,start ,count-- limit 限制查詢出來的個數 # 在 where ,order by ,group by中 ,limit 只能放在最后select * from student limit 2;select * from student where gender=1 limit 2;-- limit 查詢前五個 數據1 表示起始位置,數據2 表示顯示個數select * from student limit 0,5;-- limit 查詢顯示五個,第二頁select * from student limit 5,5;-- 查詢所有女性信息,年齡從大到小只顯示兩個進行排序select * from student where gender = 2 order by age desc limit 0,2;-- 連接查詢 (連接多個表,取表中共同的東西)--內連接查詢:查詢的結果為兩個表匹配的數據--右連接查詢:查詢的結果為兩個表匹配到的數據,對于左表中不存在的數據--左連接查詢:查詢的結果為兩個表匹配到的數據,左表有的數據,右表中不存在-- select * from 表1 inner/left/right join 表2 on 表1.列 = 表2.列;##行:row 列:column##-- select .... from table1 inner join table2 on table1.column_name = table2.column_name ; -- 查詢又能夠對應班級的學生以及班級信息select * from student inner join classes on student.cls_id = classes.id;--按要求顯示姓名 ,班級select s.name ,c.name from student as s inner join classes as c on s.cls_id = c.id;--給表起別名select s.name ,c.name from student as s inner join classes as c on s.cls_id = c.id;--查詢有能夠對應班級的學生以及班級信息,顯示學生的的所有信息,只顯示班級名稱select * , classes.name from student inner join classes on student.cls_id = classes.id;--在以上查詢中,將班級姓名顯示在第1列select from student as s inner join classes as c on s.cls_id = c.id;--查詢有能夠對應班級的學生以及班級信息,按照班級進行排序select c.name ,s.* from student as s inner join classes as c on s.cls_id = c.id order by c.id;--但同一個班級的時候,按照學生的id進行從小到大的排序select c.name ,s.* from student as s inner join classes as c on s.cls_id = c.id order by c.id,s.id;--右連接 以右邊的表為基準-- left join .... on -- 查詢美味學生對應的班級信息select * from student left join classes on student.cls_id = classes.id; -- 查詢沒有對應班級信息的學生 -- 如果從原表中判斷結果 用 whereselect ... from ... left join ... on ... where ... ;select * from student left join classes on student.cls_id = classes.id where classes.id is Null; -- 如果把查詢出來的結果單座一個新的集 則用 havingselect ... from ... left join ... on ... having ... ;select * from student left join classes on student.cls_id = classes.id having classes.id is null;--左連接 以左邊的表為基準-- right join .... on-- 和右連接使用類似-- 自聯結 一個表中的內容和表中的id相關聯-- 查看省對應下的市select a.name,p.name from areas as a inner join areas as p on a.aid = p.pid ;select a.name,p.name from areas as a inner join areas as p on a.aid = p.pid order by a.aid;--查看河南省下的市select a.name ,p.name from areas as a inner join areas as p on a.aid = p.pid having a.name='河南省';-- 子查詢-- 再查詢里 放查詢條件select * from student where age = (select max(age) from student);'''
?
總結
以上是生活随笔為你收集整理的mysql基础命令语句以及使用方法:的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js域名验证
- 下一篇: springboot hikari数据库