日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql基础命令语句以及使用方法:

發布時間:2023/12/16 数据库 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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基础命令语句以及使用方法:的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。